From 53fd8328bcc6520b75412c093689d421a3249274 Mon Sep 17 00:00:00 2001 From: BENKE Charlene <1179011+defrance@users.noreply.github.com> Date: Sat, 9 Nov 2019 15:20:36 +0100 Subject: [PATCH 001/336] add certificate if present on document folder --- .../core/modules/facture/doc/pdf_crabe.modules.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 8ee898b5a4e..986b0de2b88 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -357,6 +357,20 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("PdfInvoiceTitle")." ".$outputlangs->convToOutputCharset($object->thirdparty->name)); if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false); + $cert=file_get_contents(DOL_DATA_ROOT."/users/".$user->id."/certificates/signature.crt"); + // si l'utilisateur n'a pas de certificat, on prend le certificat + if (!$cert) + $cert=file_get_contents(DOL_DATA_ROOT."/mycompany/certificates/signature.crt"); + if ($cert) { + $info = array( + 'Name' => $this->emetteur->name, + 'Location' => getCountry($this->emetteur->country_code, 0), + 'Reason' => 'FACTURE', + 'ContactInfo' => $this->emetteur->email + ); + $pdf->setSignature($cert, $cert, $this->emetteur->name, '', 2, $info); + } + $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right // Set $this->atleastonediscount if you have at least one discount From 8777033bff422bbfa2e301c6181b945bb1378214 Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Thu, 20 Feb 2020 22:18:34 +0100 Subject: [PATCH 002/336] Update list.php --- htdocs/commande/list.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 845bc4603cd..877eb1becd6 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -75,6 +75,7 @@ $search_user = GETPOST('search_user', 'int'); $search_sale = GETPOST('search_sale', 'int'); $search_total_ht = GETPOST('search_total_ht', 'alpha'); $search_total_ttc = GETPOST('search_total_ttc', 'alpha'); +$search_warehouse = GETPOST('search_warehouse', 'int'); $search_login = GETPOST('search_login', 'alpha'); $search_categ_cus = trim(GETPOST("search_categ_cus", 'int')); $optioncss = GETPOST('optioncss', 'alpha'); @@ -328,7 +329,8 @@ if ($search_sale > 0) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$s if ($search_user > 0) $sql .= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user; if ($search_total_ht != '') $sql .= natural_search('c.total_ht', $search_total_ht, 1); if ($search_total_ttc != '') $sql .= natural_search('c.total_ttc', $search_total_ttc, 1); -if ($search_login) $sql .= natural_search("u.login", $search_login); +if ($search_warehouse != '') $sql .= natural_search('c.fk_warehouse', $search_warehouse, 1); +if ($search_login) $sql .= natural_search("u.login", $search_login); if ($search_project_ref != '') $sql .= natural_search("p.ref", $search_project_ref); if ($search_project != '') $sql .= natural_search("p.title", $search_project); if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus); @@ -424,7 +426,8 @@ if ($resql) if ($search_total_ht != '') $param .= '&search_total_ht='.urlencode($search_total_ht); if ($search_total_vat != '') $param .= '&search_total_vat='.urlencode($search_total_vat); if ($search_total_ttc != '') $param .= '&search_total_ttc='.urlencode($search_total_ttc); - if ($search_login) $param .= '&search_login='.urlencode($search_login); + if ($search_warehouse != '') $param .= '&search_warehouse='.urlencode($search_warehouse); + if ($search_login) $param .= '&search_login='.urlencode($search_login); if ($search_project_ref >= 0) $param .= "&search_project_ref=".urlencode($search_project_ref); if ($search_town != '') $param .= '&search_town='.urlencode($search_town); if ($search_zip != '') $param .= '&search_zip='.urlencode($search_zip); @@ -573,6 +576,14 @@ if ($resql) $moreforfilter .= $formother->select_categories('customer', $search_categ_cus, 'search_categ_cus', 1); $moreforfilter .= ''; } + if (!empty($conf->expedition->enabled)){ + require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php'; + $formproduct = new FormProduct($db); + $moreforfilter .= '
'; + $moreforfilter .= $langs->trans('Warehouse').': '; + $moreforfilter .= $formproduct->selectWarehouses($search_warehouse, 'search_warehouse', '', 1); + $moreforfilter .= '
'; + } $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint; From 5520df4e4fef35deda1384210e0e5846b06a401f Mon Sep 17 00:00:00 2001 From: Anthony Berton <34568357+bb2a@users.noreply.github.com> Date: Mon, 2 Mar 2020 08:25:18 +0100 Subject: [PATCH 003/336] Update list.php --- htdocs/commande/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 877eb1becd6..34730711535 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -576,7 +576,7 @@ if ($resql) $moreforfilter .= $formother->select_categories('customer', $search_categ_cus, 'search_categ_cus', 1); $moreforfilter .= ''; } - if (!empty($conf->expedition->enabled)){ + if (!empty($conf->expedition->enabled) && $conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER = 1){ require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php'; $formproduct = new FormProduct($db); $moreforfilter .= '
'; From 41c0575a5d608d43ffbf1a5efb70ca8cdad101f2 Mon Sep 17 00:00:00 2001 From: Tobias Sekan Date: Mon, 16 Mar 2020 09:51:12 +0100 Subject: [PATCH 004/336] Fix not working sorting in contact view --- htdocs/core/tpl/contacts.tpl.php | 88 ++++++++++++++++---------------- 1 file changed, 43 insertions(+), 45 deletions(-) diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index eca100731ac..104ffe81bc6 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -162,72 +162,74 @@ print "
"; // TODO: replace this with direct SQL string to use $db->sort($sortfield, $sortorder) $list = array(); -foreach (array('internal', 'external') as $source) +foreach(array('internal', 'external') as $source) { - $tmpobject = $object; - if (($object->element == 'shipping' || $object->element == 'reception') && is_object($objectsrc)) { - $tmpobject = $objectsrc; + $contactlist = $objectsrc->liste_contact(-1, $source); + } + else + { + $contactlist = $object->liste_contact(-1, $source); } - $tab = $tmpobject->liste_contact(-1, $source); - $num = count($tab); - - $i = 0; - while ($i < $num) + foreach ($contactlist as $contact) { $entry = new stdClass(); + $entry->id = $contact['rowid']; + $entry->type = $contact['libelle']; + $entry->nature = ""; + $entry->thirdparty_html = ""; + $entry->thirdparty_name = ""; + $entry->contact_html = ""; + $entry->contact_name = ""; + $entry->status = ""; - $entry->id = $tab[$i]['rowid']; - $entry->type = $tab[$i]['libelle']; - - if ($tab[$i]['source'] == 'internal') + if ($contact['source'] == 'internal') { $entry->nature = $langs->trans("User"); } - elseif ($tab[$i]['source'] == 'external') + else if ($contact['source'] == 'external') { $entry->nature = $langs->trans("ThirdPartyContact"); } - if ($tab[$i]['socid'] > 0) + if ($contact['socid'] > 0) { - $companystatic->fetch($tab[$i]['socid']); - $entry->thirdparty = $companystatic->getNomUrl(1); + $companystatic->fetch($contact['socid']); + $entry->thirdparty_html = $companystatic->getNomUrl(1); + $entry->thirdparty_name = strtolower($companystatic->getFullName($langs)); } - elseif ($tab[$i]['socid'] < 0) + else if ($contact['socid'] < 0) { - $entry->thirdparty = $conf->global->MAIN_INFO_SOCIETE_NOM; - } - elseif (!$tab[$i]['socid']) - { - $entry->thirdparty = ""; + $entry->thirdparty_html = $conf->global->MAIN_INFO_SOCIETE_NOM; + $entry->thirdparty_name = strtolower($conf->global->MAIN_INFO_SOCIETE_NOM); } - if ($tab[$i]['source'] == 'internal') + if ($contact['source'] == 'internal') { - $userstatic->fetch($tab[$i]['id']); - $entry->contact = $userstatic->getNomUrl(-1, '', 0, 0, 0, 0, '', 'valignmiddle'); + $userstatic->fetch($contact['id']); + $entry->contact_html = $userstatic->getNomUrl(-1, '', 0, 0, 0, 0, '', 'valignmiddle'); + $entry->contact_name = strtolower($userstatic->getFullName($langs)); } - elseif ($tab[$i]['source'] == 'external') + else if ($contact['source'] == 'external') { - $contactstatic->fetch($tab[$i]['id']); - $entry->contact = $contactstatic->getNomUrl(1, '', 0, '', 0, 0); + $contactstatic->fetch($contact['id']); + $entry->contact_html = $contactstatic->getNomUrl(1, '', 0, '', 0, 0); + $entry->contact_name = strtolower($contactstatic->getFullName($langs)); } - if ($tab[$i]['source'] == 'internal') + if ($contact['source'] == 'internal') { - $entry->status = $userstatic->LibStatut($tab[$i]['statuscontact'], 3); + $entry->status = $userstatic->LibStatut($contact['statuscontact'], 3); } - elseif ($tab[$i]['source'] == 'external') + else if ($contact['source'] == 'external') { - $entry->status = $contactstatic->LibStatut($tab[$i]['statuscontact'], 3); + $entry->status = $contactstatic->LibStatut($contact['statuscontact'], 3); } - $i++; $list[] = $entry; - } + } } @@ -255,9 +257,6 @@ $param = 'id='.$object->id.'&mainmenu=home'; /** * Show list */ - -print '
'; - print '
'; print ''; print ''; @@ -272,10 +271,10 @@ print ''; print ''; print_liste_field_titre($arrayfields['nature']['label'], $_SERVER["PHP_SELF"], "nature", "", $param, "", $sortfield, $sortorder); -print_liste_field_titre($arrayfields['thirdparty']['label'], $_SERVER["PHP_SELF"], "thirdparty", "", $param, "", $sortfield, $sortorder); -print_liste_field_titre($arrayfields['contact']['label'], $_SERVER["PHP_SELF"], "contact", "", $param, "", $sortfield, $sortorder); +print_liste_field_titre($arrayfields['thirdparty']['label'], $_SERVER["PHP_SELF"], "thirdparty_name", "", $param, "", $sortfield, $sortorder); +print_liste_field_titre($arrayfields['contact']['label'], $_SERVER["PHP_SELF"], "contact_name", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['type']['label'], $_SERVER["PHP_SELF"], "type", "", $param, "", $sortfield, $sortorder); -print_liste_field_titre($arrayfields['status']['label'], $_SERVER["PHP_SELF"], "statut", "", $param, "", $sortfield, $sortorder, 'center '); +print_liste_field_titre($arrayfields['status']['label'], $_SERVER["PHP_SELF"], "statut", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['link']['label'], $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder, 'center maxwidthsearch '); print ""; @@ -284,10 +283,10 @@ foreach ($list as $entry) print ''; print ''.$entry->nature.''; - print ''.$entry->thirdparty.''; - print ''.$entry->contact.''; + print ''.$entry->thirdparty_html.''; + print ''.$entry->contact_html.''; print ''.$entry->type.''; - print ''.$entry->status.''; + print ''.$entry->status.''; if ($permission) { @@ -307,7 +306,6 @@ foreach ($list as $entry) } print ""; -print ""; print "
"; print ""; From 711aff9ff7c63d3e3bca76ec38bb7286370c38e1 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 16 Mar 2020 08:56:10 +0000 Subject: [PATCH 005/336] Fixing style errors. --- htdocs/core/tpl/contacts.tpl.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index 104ffe81bc6..9e57a2c5746 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -189,7 +189,7 @@ foreach(array('internal', 'external') as $source) { $entry->nature = $langs->trans("User"); } - else if ($contact['source'] == 'external') + elseif ($contact['source'] == 'external') { $entry->nature = $langs->trans("ThirdPartyContact"); } @@ -200,7 +200,7 @@ foreach(array('internal', 'external') as $source) $entry->thirdparty_html = $companystatic->getNomUrl(1); $entry->thirdparty_name = strtolower($companystatic->getFullName($langs)); } - else if ($contact['socid'] < 0) + elseif ($contact['socid'] < 0) { $entry->thirdparty_html = $conf->global->MAIN_INFO_SOCIETE_NOM; $entry->thirdparty_name = strtolower($conf->global->MAIN_INFO_SOCIETE_NOM); @@ -212,7 +212,7 @@ foreach(array('internal', 'external') as $source) $entry->contact_html = $userstatic->getNomUrl(-1, '', 0, 0, 0, 0, '', 'valignmiddle'); $entry->contact_name = strtolower($userstatic->getFullName($langs)); } - else if ($contact['source'] == 'external') + elseif ($contact['source'] == 'external') { $contactstatic->fetch($contact['id']); $entry->contact_html = $contactstatic->getNomUrl(1, '', 0, '', 0, 0); @@ -223,7 +223,7 @@ foreach(array('internal', 'external') as $source) { $entry->status = $userstatic->LibStatut($contact['statuscontact'], 3); } - else if ($contact['source'] == 'external') + elseif ($contact['source'] == 'external') { $entry->status = $contactstatic->LibStatut($contact['statuscontact'], 3); } From 79caae91231d0474fb4c95476728fe13faff0b4c Mon Sep 17 00:00:00 2001 From: Tobias Sekan Date: Mon, 16 Mar 2020 09:59:58 +0100 Subject: [PATCH 006/336] fix wrongly remoived center attributes --- htdocs/core/tpl/contacts.tpl.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index 9e57a2c5746..f5b625d92df 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -274,7 +274,7 @@ print_liste_field_titre($arrayfields['nature']['label'], $_SERVER["PHP_SELF"], " print_liste_field_titre($arrayfields['thirdparty']['label'], $_SERVER["PHP_SELF"], "thirdparty_name", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['contact']['label'], $_SERVER["PHP_SELF"], "contact_name", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['type']['label'], $_SERVER["PHP_SELF"], "type", "", $param, "", $sortfield, $sortorder); -print_liste_field_titre($arrayfields['status']['label'], $_SERVER["PHP_SELF"], "statut", "", $param, "", $sortfield, $sortorder); +print_liste_field_titre($arrayfields['status']['label'], $_SERVER["PHP_SELF"], "statut", "", $param, "", $sortfield, $sortorder, 'center '); print_liste_field_titre($arrayfields['link']['label'], $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder, 'center maxwidthsearch '); print ""; @@ -286,7 +286,7 @@ foreach ($list as $entry) print ''.$entry->thirdparty_html.''; print ''.$entry->contact_html.''; print ''.$entry->type.''; - print ''.$entry->status.''; + print ''.$entry->status.''; if ($permission) { From 7d72fc70c783404696b8ab91d3adc237de3cfec9 Mon Sep 17 00:00:00 2001 From: Tobias Sekan Date: Thu, 26 Mar 2020 11:36:53 +0000 Subject: [PATCH 007/336] New tree-view for sub-categories --- htdocs/categories/viewcat.php | 164 +++++++++++++++++++++++++--------- 1 file changed, 121 insertions(+), 43 deletions(-) diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index c7242077da4..ad82b7c4438 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -51,7 +51,6 @@ $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'myo $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') - // Load variable for pagination $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); @@ -196,7 +195,6 @@ if ($type == Categorie::TYPE_PRODUCT && $elemid && $action == 'addintocategory' } - /* * View */ @@ -204,18 +202,21 @@ if ($type == Categorie::TYPE_PRODUCT && $elemid && $action == 'addintocategory' $form = new Form($db); $formother = new FormOther($db); +$arrayofjs=array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.js', '/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js'); +$arrayofcss=array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.css'); $helpurl = ''; -llxHeader("", $langs->trans("Categories"), $helpurl); +llxHeader("", $langs->trans("Categories"), $helpurl, '', 0, 0, $arrayofjs, $arrayofcss); -if ($type == Categorie::TYPE_PRODUCT) $title = $langs->trans("ProductsCategoryShort"); -elseif ($type == Categorie::TYPE_SUPPLIER) $title = $langs->trans("SuppliersCategoryShort"); -elseif ($type == Categorie::TYPE_CUSTOMER) $title = $langs->trans("CustomersCategoryShort"); -elseif ($type == Categorie::TYPE_MEMBER) $title = $langs->trans("MembersCategoryShort"); -elseif ($type == Categorie::TYPE_CONTACT) $title = $langs->trans("ContactCategoriesShort"); -elseif ($type == Categorie::TYPE_ACCOUNT) $title = $langs->trans("AccountsCategoriesShort"); -elseif ($type == Categorie::TYPE_PROJECT) $title = $langs->trans("ProjectsCategoriesShort"); -elseif ($type == Categorie::TYPE_USER) $title = $langs->trans("UsersCategoriesShort"); -else $title = $langs->trans("Category"); +if ($type == Categorie::TYPE_PRODUCT) { $title=$langs->trans("ProductsCategoriesArea"); $typetext='product'; } +elseif ($type == Categorie::TYPE_SUPPLIER) { $title=$langs->trans("SuppliersCategoriesArea"); $typetext='supplier'; } +elseif ($type == Categorie::TYPE_CUSTOMER) { $title=$langs->trans("CustomersCategoriesArea"); $typetext='customer'; } +elseif ($type == Categorie::TYPE_MEMBER) { $title=$langs->trans("MembersCategoriesArea"); $typetext='member'; } +elseif ($type == Categorie::TYPE_CONTACT) { $title=$langs->trans("ContactsCategoriesArea"); $typetext='contact'; } +elseif ($type == Categorie::TYPE_ACCOUNT) { $title=$langs->trans("AccountsCategoriesArea"); $typetext='bank_account'; } +elseif ($type == Categorie::TYPE_PROJECT) { $title=$langs->trans("ProjectsCategoriesArea"); $typetext='project'; } +elseif ($type == Categorie::TYPE_USER) { $title=$langs->trans("UsersCategoriesArea"); $typetext='user'; } +elseif ($type == Categorie::TYPE_WAREHOUSE) { $title=$langs->trans("StocksCategoriesArea"); $typetext='warehouse'; } +else { $title=$langs->trans("CategoriesArea"); $typetext='unknown'; } $head = categories_prepare_head($object, $type); @@ -304,55 +305,133 @@ if (! empty($user->rights->categorie->creer)) print ""; } + +/* + * Sub-category tree view of this category + */ + +print '
'; +print ''; + +print ''; +print ''; +print ''; +print ''; +print ''; + $cats = $object->get_filles(); if ($cats < 0) { dol_print_error($db, $cats->error, $cats->errors); } +else if(count($cats) < 1) +{ + print ''; + print ''; + print ''; +} else { - print "
"; - print "
'.$langs->trans("SubCats").''; + +if (!empty($conf->use_javascript_ajax)) +{ + print ''; +} + +print '
'.$langs->trans("NoSubCat").'
\n"; - print ""; - print "\n"; - if (count($cats) > 0) + + // Define data (format for treeview) + $data = array(); + $data[] = array('rowid'=>0, 'fk_menu'=>-1, 'title'=>"racine", 'mainmenu'=>'', 'leftmenu'=>'', 'fk_mainmenu'=>'', 'fk_leftmenu'=>''); + foreach ($fulltree as $key => $val) { - foreach ($cats as $cat) + $categstatic->id = $val['id']; + $categstatic->ref = $val['label']; + $categstatic->color = $val['color']; + $categstatic->type = $type; + $desc = dol_htmlcleanlastbr($val['description']); + + $counter = 0; + + if($conf->global->CATEGORY_SHOW_COUNTS) { - print "\t".''."\n"; - print "\t\t".'\n"; - print "\t\t".'\n"; + // we need only a count of the elements, so it is enough to consume only the id's from the database + $elements = $type == Categorie::TYPE_ACCOUNT + ? $categstatic->getObjectsInCateg("account", 1) // Categorie::TYPE_ACCOUNT is "bank_account" instead of "account" + : $categstatic->getObjectsInCateg($type, 1); - /* - if ($cat->visible == 1) - { - print "\t\t\n"; - } - else - { - print "\t\t\n"; - } - */ - - print "\t\n"; + $counter = is_countable($elements) ? count($elements) : 0; } + + $color = $categstatic->color ? ' style="background: #'.$categstatic->color.';"' : ' style="background: #aaa"'; + + $entry = '
".$langs->trans("SubCats").''; - if ($user->rights->categorie->creer) + $categstatic = new Categorie($db); + + $fulltree = $categstatic->get_full_arbo($typetext, $object->id, 1); + + // Load possible missing includes + if($conf->global->CATEGORY_SHOW_COUNTS) { - print ""; - print img_picto($langs->trans("Create"), 'filenew'); - print ""; + if ($type == Categorie::TYPE_MEMBER) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; + if ($type == Categorie::TYPE_ACCOUNT) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + if ($type == Categorie::TYPE_PROJECT) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; + if ($type == Categorie::TYPE_USER) require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; } - print "
'; - print "".$cat->label.""; - print "'.$cat->description."".$langs->trans("ContentsVisibleByAllShort")."".$langs->trans("ContentsNotVisibleByAllShort")."
'; + $entry .= ''; + + $entry .= ''; + + $entry .= ''; + + $entry .= ''; + + $entry .= ''; + $entry .= '
'; + $entry .= ''.$categstatic->getNomUrl(1, '', 60).''; + $entry .= ''.$counter.''; + $entry .= ''.img_view().''; + $entry .= '
'; + + $data[] = array('rowid' => $val['rowid'], 'fk_menu' => $val['fk_parent'], 'entry' => $entry); + } + + if ((count($data) - 1)) + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php'; + print ''; + print ''; + + // $data[0] is the current shown category, to don'T show the current category use $data[1] instead + tree_recur($data, $data[1], 0); + + print ''; + print ''; } else { - print ''.$langs->trans("NoSubCat").''; + print ''; + print ''; + print ''; + + print ''; + print ''; + print ''; + print ''; + print ''; + + print '
'.img_picto_common('', 'treemenu/branchbottom.gif').''.$langs->trans("NoCategoryYet").' 
'; + print ''; + print ''; } - print "\n"; } +print ""; +print "
"; // List of mass actions available $arrayofmassactions = array( @@ -363,7 +442,6 @@ $arrayofmassactions = array( ); $massactionbutton = $form->selectMassAction('', $arrayofmassactions); - // List of products or services (type is type of category) if ($type == Categorie::TYPE_PRODUCT) { From 2bf054364d7fa89ca5d34f52c1c08b42d0c4987f Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 26 Mar 2020 11:48:45 +0000 Subject: [PATCH 008/336] Fixing style errors. --- htdocs/categories/viewcat.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index ad82b7c4438..513d411d188 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -335,7 +335,7 @@ if ($cats < 0) { dol_print_error($db, $cats->error, $cats->errors); } -else if(count($cats) < 1) +elseif(count($cats) < 1) { print ''; print ''.$langs->trans("NoSubCat").''; From 9a92545d8d78ac5d82e25d4fcc17358c0d868373 Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Mon, 30 Mar 2020 14:27:32 +0200 Subject: [PATCH 009/336] FIX missing default accountancy product buy code --- htdocs/product/card.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 27bf63f08fd..25700920d58 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1211,7 +1211,13 @@ else // Accountancy_code_buy print ''.$langs->trans("ProductAccountancyBuyCode").''; print ''; - print $formaccounting->select_account(GETPOST('accountancy_code_buy', 'alpha'), 'accountancy_code_buy', 1, null, 1, 1, ''); + if($type == 0) + { + $accountancy_code_buy = (GETPOST('accountancy_code_buy', 'alpha')?(GETPOST('accountancy_code_buy', 'alpha')):$conf->global->ACCOUNTING_PRODUCT_BUY_ACCOUNT); + } else { + $accountancy_code_buy = GETPOST('accountancy_code_buy', 'alpha'); + } + print $formaccounting->select_account($accountancy_code_buy, 'accountancy_code_buy', 1, null, 1, 1, ''); print ''; } else // For external software From d9614ac6fc91703d6009ee70809fca2e23c74199 Mon Sep 17 00:00:00 2001 From: "jove@bisquerra.com" Date: Mon, 30 Mar 2020 20:05:45 +0200 Subject: [PATCH 010/336] Integrate Cash Control in TakePOS --- .../compta/cashcontrol/cashcontrol_card.php | 26 ++++++++++- htdocs/langs/en_US/cashdesk.lang | 5 ++- htdocs/takepos/admin/setup.php | 7 +++ htdocs/takepos/index.php | 43 ++++++++++++++++++- 4 files changed, 77 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 8dd3eca5e33..a6f68b31330 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -54,6 +54,12 @@ $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortfield) $sortfield = 'rowid'; if (!$sortorder) $sortorder = 'ASC'; +$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'thirdpartylist'; + +if ($contextpage == 'takepos') +{ + $_GET['optioncss'] = 'print'; +} // Security check if (!$user->rights->cashdesk->run && !$user->rights->takepos->run) @@ -178,6 +184,13 @@ elseif ($action == "add") $action = "view"; } } + if ($contextpage == 'takepos'){ + print " + "; + exit; + } } if ($action == "valid") // validate = close @@ -211,6 +224,13 @@ if ($action == "valid") // validate = close $db->commit(); } + if ($contextpage == 'takepos'){ + print " + "; + exit; + } $action = "view"; } @@ -364,6 +384,7 @@ if ($action == "create" || $action == "start" || $action == 'close') print '
'; print ''; + if ($contextpage == 'takepos') print ''; if ($action == 'start' && GETPOST('posnumber', 'int') != '' && GETPOST('posnumber', 'int') != '' && GETPOST('posnumber', 'int') != '-1') { print ''; @@ -668,7 +689,7 @@ if (empty($action) || $action == "view" || $action == "close") if ($object->status == CashControl::STATUS_DRAFT) { - print ''; + print ''; print ''; } else { @@ -677,10 +698,11 @@ if (empty($action) || $action == "view" || $action == "close") print ''; - print '
'; + if ($contextpage != 'takepos') print '
'; } else { print ''; print ''; + if ($contextpage == 'takepos') print ''; if ($action == 'start' && GETPOST('posnumber', 'int') != '' && GETPOST('posnumber', 'int') != '' && GETPOST('posnumber', 'int') != '-1') { print ''; diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index c492417e2a8..f2bab886b64 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -97,4 +97,7 @@ TakeposNumpadUsePaymentIcon=Use payment icon on numpad CashDeskRefNumberingModules=Numbering module for cash desk CashDeskGenericMaskCodes6 =
{TN} tag is used to add the terminal number TakeposGroupSameProduct=Group same products lines -StartAParallelSale=Start a new parallel sale \ No newline at end of file +StartAParallelSale=Start a new parallel sale +ControlCashOpening=Control cash box at opening pos +CloseCashFence=Close cash fence +CashReport=Cash report \ No newline at end of file diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index d21936bdaef..bdc40934a16 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -370,6 +370,13 @@ if (is_array($formmail->lines_model)) { print $form->selectarray('TAKEPOS_EMAIL_TEMPLATE_INVOICE', $arrayofmessagename, $conf->global->TAKEPOS_EMAIL_TEMPLATE_INVOICE, 'None', 1, 0, '', 0, 0, 0, '', '', 1); print "\n"; +// Control cash box at opening pos +print ''; +print $langs->trans('ControlCashOpening'); +print ''; +print ajax_constantonoff("TAKEPOS_CONTROL_CASH_OPENING", array(), $conf->entity, 0, 0, 1, 0); +print "\n"; + // Numbering module //print ''; //print $langs->trans("BillsNumberingModule"); diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index 9f3a259e441..1012e62f65d 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -50,7 +50,7 @@ if ($setterminal > 0) $_SESSION["urlfrom"] = '/takepos/index.php'; -$langs->loadLangs(array("bills", "orders", "commercial", "cashdesk", "receiptprinter")); +$langs->loadLangs(array("bills", "orders", "commercial", "cashdesk", "receiptprinter", "banks")); $categorie = new Categorie($db); @@ -661,6 +661,21 @@ function MoreActions(totalactions){ } } +function ControlCashOpening() +{ + $.colorbox({href:"../compta/cashcontrol/cashcontrol_card.php?action=create&contextpage=takepos", width:"90%", height:"60%", transition:"none", iframe:"true", title:"trans("NewCashFence"); ?>"}); +} + +function CloseCashFence(rowid) +{ + $.colorbox({href:"../compta/cashcontrol/cashcontrol_card.php?id="+rowid+"&contextpage=takepos", width:"90%", height:"90%", transition:"none", iframe:"true", title:"trans("NewCashFence"); ?>"}); +} + +function CashReport(rowid) +{ + $.colorbox({href:"../compta/cashcontrol/report.php?id="+rowid+"&contextpage=takepos", width:"60%", height:"90%", transition:"none", iframe:"true", title:"trans("CashReport"); ?>"}); +} + // Popup to select the terminal to use function TerminalsDialog() { @@ -708,6 +723,18 @@ $( document ).ready(function() { if ($conf->global->TAKEPOS_NUM_TERMINALS == "1") $_SESSION["takeposterminal"] = 1; else print "TerminalsDialog();"; } + if ($conf->global->TAKEPOS_CONTROL_CASH_OPENING) + { + $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."pos_cash_fence WHERE "; + $sql .= "date(date_creation) = CURDATE() "; + $sql .= ""; + $resql = $db->query($sql); + if ($resql) { + $obj = $db->fetch_object($resql); + // If there is no cash control from today open it + if ($obj->rowid == null) print "ControlCashOpening();"; + } + } ?> }); @@ -872,6 +899,20 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "receiptprinter") { ); } +$sql = "SELECT rowid, status FROM ".MAIN_DB_PREFIX."pos_cash_fence WHERE "; +$sql .= "date(date_creation) = CURDATE() "; +$resql = $db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + if ($num) + { + $obj = $db->fetch_object($resql); + $menus[$r++] = array('title'=>'
'.$langs->trans("CashReport").'
', 'action'=>'CashReport('.$obj->rowid.');'); + if ($obj->status == 0) $menus[$r++] = array('title'=>'
'.$langs->trans("CloseCashFence").'
', 'action'=>'CloseCashFence('.$obj->rowid.');'); + } +} + $hookmanager->initHooks(array('takeposfrontend')); $reshook = $hookmanager->executeHooks('ActionButtons'); if (!empty($reshook)) { From fbf7375fe52c6eff216574ba387f5b34abd66e84 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Mon, 30 Mar 2020 21:10:27 +0200 Subject: [PATCH 011/336] NEW compatibility of translabel with more dict --- htdocs/api/class/api_setup.class.php | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 2afca6aedb5..20148205203 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -230,7 +230,7 @@ class Setup extends DolibarrApi if ($country->fetch($obj->rowid) > 0) { // Translate the name of the country if needed // and then apply the filter if there is one. - $this->translateLabel($country, $lang); + $this->translateLabel($country, $lang, 'Country'); if (empty($filter) || stripos($country->label, $filter) !== false) { $list[] = $this->_cleanObjectDatas($country); @@ -318,7 +318,7 @@ class Setup extends DolibarrApi throw new RestException(404, 'country not found'); } - $this->translateLabel($country, $lang); + $this->translateLabel($country, $lang, 'Country'); return $this->_cleanObjectDatas($country); } @@ -403,14 +403,15 @@ class Setup extends DolibarrApi } /** - * Translate the name of the country to the given language. + * Translate the name of the object to the given language. * - * @param Ccountry $country Country - * @param string $lang Code of the language the name of the - * country must be translated to + * @param object $object Object with label to translate + * @param string $lang Code of the language the name of the object must be translated to + * @param string $modprefix Prefix for translation + * * @return void */ - private function translateLabel($country, $lang) + private function translateLabel($object, $lang, $prefix) { if (!empty($lang)) { // Load the translations if this is a new language. @@ -420,11 +421,12 @@ class Setup extends DolibarrApi $this->translations->setDefaultLang($lang); $this->translations->load('dict'); } - if ($country->code) { - $key = 'Country'.$country->code; + if ($object->code) { + $key = $prefix.$object->code; + $translation = $this->translations->trans($key); if ($translation != $key) { - $country->label = html_entity_decode($translation); + $object->label = html_entity_decode($translation); } } } From 74096426365c319fedf896a9fc6c04f1f92cb7d5 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 30 Mar 2020 19:12:29 +0000 Subject: [PATCH 012/336] Fixing style errors. --- htdocs/api/class/api_setup.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 20148205203..34ad9badc69 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -408,7 +408,7 @@ class Setup extends DolibarrApi * @param object $object Object with label to translate * @param string $lang Code of the language the name of the object must be translated to * @param string $modprefix Prefix for translation - * + * * @return void */ private function translateLabel($object, $lang, $prefix) @@ -423,7 +423,7 @@ class Setup extends DolibarrApi } if ($object->code) { $key = $prefix.$object->code; - + $translation = $this->translations->trans($key); if ($translation != $key) { $object->label = html_entity_decode($translation); From 3a95beac66e149947b209d0c4dc06da83aaf01c1 Mon Sep 17 00:00:00 2001 From: oscim Date: Tue, 31 Mar 2020 09:20:48 +0200 Subject: [PATCH 013/336] Update livraison.class.php add in fetch_lines method item for determine weight and dimension , and unit for all lines --- htdocs/livraison/class/livraison.class.php | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/htdocs/livraison/class/livraison.class.php b/htdocs/livraison/class/livraison.class.php index 88a7a7372ad..3f0c591e706 100644 --- a/htdocs/livraison/class/livraison.class.php +++ b/htdocs/livraison/class/livraison.class.php @@ -775,8 +775,9 @@ class Livraison extends CommonObject $this->lines = array(); $sql = "SELECT ld.rowid, ld.fk_product, ld.description, ld.subprice, ld.total_ht, ld.qty as qty_shipped, ld.fk_origin_line, "; - $sql.= " cd.qty as qty_asked, cd.label as custom_label,"; - $sql.= " p.ref as product_ref, p.fk_product_type as fk_product_type, p.label as product_label, p.description as product_desc"; + $sql.= " cd.qty as qty_asked, cd.label as custom_label, cd.fk_unit ,"; + $sql.= " p.ref as product_ref, p.fk_product_type as fk_product_type, p.label as product_label, p.description as product_desc,"; + $sql.= " p.weight, p.weight_units, p.width, p.width_units, p.length, p.length_units, p.height, p.height_units, p.surface, p.surface_units, p.volume, p.volume_units, p.tobatch as product_tobatch"; $sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd, ".MAIN_DB_PREFIX."livraisondet as ld"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on p.rowid = ld.fk_product"; $sql.= " WHERE ld.fk_origin_line = cd.rowid"; @@ -812,6 +813,23 @@ class Livraison extends CommonObject $line->price = $obj->price; $line->total_ht = $obj->total_ht; + // Add + $line->weight = $obj->weight; + $line->weight_units = $obj->weight_units; + $line->width = $obj->width; + $line->width_units = $obj->width_units; + $line->height = $obj->height; + $line->height_units = $obj->height_units; + $line->length = $obj->length; + $line->length_units = $obj->length_units; + $line->surface = $obj->surface; + $line->surface_units = $obj->surface_units; + $line->volume = $obj->volume; + $line->volume_units = $obj->volume_units; + + + $line->fk_unit = $obj->fk_unit; + $this->lines[$i] = $line; $i++; From fb80199713bf1045b98e2b8096d4df47626a9b34 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 31 Mar 2020 07:23:36 +0000 Subject: [PATCH 014/336] Fixing style errors. --- htdocs/livraison/class/livraison.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/livraison/class/livraison.class.php b/htdocs/livraison/class/livraison.class.php index 3f0c591e706..e96a9d36035 100644 --- a/htdocs/livraison/class/livraison.class.php +++ b/htdocs/livraison/class/livraison.class.php @@ -813,7 +813,7 @@ class Livraison extends CommonObject $line->price = $obj->price; $line->total_ht = $obj->total_ht; - // Add + // Add $line->weight = $obj->weight; $line->weight_units = $obj->weight_units; $line->width = $obj->width; @@ -826,10 +826,10 @@ class Livraison extends CommonObject $line->surface_units = $obj->surface_units; $line->volume = $obj->volume; $line->volume_units = $obj->volume_units; - - + + $line->fk_unit = $obj->fk_unit; - + $this->lines[$i] = $line; $i++; From 04564e83ea8f01eccd12bf148155302cdbc6c5fe Mon Sep 17 00:00:00 2001 From: gauthier Date: Tue, 31 Mar 2020 10:31:18 +0200 Subject: [PATCH 015/336] FIX : picture migration script from doli 9.0 --- scripts/user/migrate_picture_path.php | 129 ++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100755 scripts/user/migrate_picture_path.php diff --git a/scripts/user/migrate_picture_path.php b/scripts/user/migrate_picture_path.php new file mode 100755 index 00000000000..f478c42b865 --- /dev/null +++ b/scripts/user/migrate_picture_path.php @@ -0,0 +1,129 @@ +#!/usr/bin/env php + + * Copyright (C) 2015 Jean Heimburger + * + * 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 . + */ + +/** + * \file scripts/product/migrate_picture_path.php + * \ingroup scripts + * \brief Migrate pictures from old system prior to 3.7 to new path for 3.7+ + */ +$sapi_type = php_sapi_name(); +$script_file = basename(__FILE__); +$path = __DIR__ . '/'; + +// Test if batch mode +if (substr($sapi_type, 0, 3) == 'cgi') { + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); +} + +@set_time_limit(0); // No timeout for this script +define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to lock your script when dolibarr setup is "locked to admin user only". + +// Include and load Dolibarr environment variables +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/user/class/user.class.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/files.lib.php"; +// After this $db, $mysoc, $langs, $conf and $hookmanager are defined (Opened $db handler to database will be closed at end of file). +// $user is created but empty. + +// $langs->setDefaultLang('en_US'); // To change default language of $langs +$langs->load("main"); // To load language file for default language + +// Global variables +$version = DOL_VERSION; +$error = 0; +$forcecommit = 0; + +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); + +if (! isset($argv[1]) || $argv[1] != 'user') { + print "Usage: $script_file user\n"; + exit(- 1); +} + +print '--- start' . "\n"; + +// Case to migrate products path +if ($argv[1] == 'user') { + $u = new User($db); + + $sql = "SELECT rowid as uid from " . MAIN_DB_PREFIX . "user"; // Get list of all products + $resql = $db->query($sql); + if ($resql) { + while ($obj = $db->fetch_object($resql)) { + $u->fetch($obj->uid); + print " migrating user id=" . $u->id . " ref=" . $u->ref . "\n"; + migrate_user_filespath($u); + } + } else { + print "\n sql error " . $sql; + exit(); + } +} + +$db->close(); // Close $db database opened handler + +exit($error); + +/** + * Migrate file from old path to new one for user $u + * + * @param User $u Object user + * @return void + */ +function migrate_user_filespath($u) +{ + global $conf; + + // Les fichiers joints des users sont toujours sur l'entité 1 + $dir = $conf->user->dir_output; + $origin = $dir . '/' . get_exdir($u->id, 2, 0, 0, $u, 'user'); + $destin = $dir . '/' . $u->id; + + $error = 0; + + $origin_osencoded = dol_osencode($origin); + $destin_osencoded = dol_osencode($destin); + dol_mkdir($destin); + + if (dol_is_dir($origin)) { + + $handle = opendir($origin_osencoded); + if (is_resource($handle)) { + while (($file = readdir($handle)) !== false) { + if ($file != '.' && $file != '..' && is_dir($origin_osencoded . '/' . $file)) { + $thumbs = opendir($origin_osencoded . '/' . $file); + if (is_resource($thumbs)) { + dol_mkdir($destin . '/' . $file); + while (($thumb = readdir($thumbs)) !== false) { + dol_move($origin . '/' . $file . '/' . $thumb, $destin . '/' . $file . '/' . $thumb); + } + // dol_delete_dir($origin.'/'.$file); + } + } else { + if (dol_is_file($origin . '/' . $file)) { + dol_move($origin . '/' . $file, $destin . '/' . $file); + } + } + } + } + } +} From 5895858546d0f1d7b73e1ad1c45ab48c3ad7fe29 Mon Sep 17 00:00:00 2001 From: oscim Date: Tue, 31 Mar 2020 10:54:14 +0200 Subject: [PATCH 016/336] Update expedition.class.php report fk_unit line in fetch_line methode --- htdocs/expedition/class/expedition.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 52540901c33..ed701d9d2bf 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1389,7 +1389,7 @@ class Expedition extends CommonObject // TODO: recuperer les champs du document associe a part $this->lines = array(); - $sql = "SELECT cd.rowid, cd.fk_product, cd.label as custom_label, cd.description, cd.qty as qty_asked, cd.product_type"; + $sql = "SELECT cd.rowid, cd.fk_product, cd.label as custom_label, cd.description, cd.qty as qty_asked, cd.product_type, cd.fk_unit"; $sql .= ", cd.total_ht, cd.total_localtax1, cd.total_localtax2, cd.total_ttc, cd.total_tva"; $sql .= ", cd.vat_src_code, cd.tva_tx, cd.localtax1_tx, cd.localtax2_tx, cd.localtax1_type, cd.localtax2_type, cd.info_bits, cd.price, cd.subprice, cd.remise_percent,cd.buy_price_ht as pa_ht"; $sql .= ", cd.fk_multicurrency, cd.multicurrency_code, cd.multicurrency_subprice, cd.multicurrency_total_ht, cd.multicurrency_total_tva, cd.multicurrency_total_ttc, cd.rang"; @@ -1470,7 +1470,8 @@ class Expedition extends CommonObject $line->surface_units = $obj->surface_units; $line->volume = $obj->volume; $line->volume_units = $obj->volume_units; - + $line->fk_unit = $obj->fk_unit; + $line->pa_ht = $obj->pa_ht; // Local taxes From 24c5f57da2680e82899dfc1f145cfe682528f657 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 31 Mar 2020 08:56:26 +0000 Subject: [PATCH 017/336] Fixing style errors. --- htdocs/expedition/class/expedition.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index ed701d9d2bf..677fcfa3d41 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1471,7 +1471,7 @@ class Expedition extends CommonObject $line->volume = $obj->volume; $line->volume_units = $obj->volume_units; $line->fk_unit = $obj->fk_unit; - + $line->pa_ht = $obj->pa_ht; // Local taxes From f66c90ca8b2fc833a3fc1acc6b49d58308146735 Mon Sep 17 00:00:00 2001 From: oscim Date: Tue, 31 Mar 2020 10:57:52 +0200 Subject: [PATCH 018/336] Update expedition.class.php report usage multicurrency of thirdparty in fetch method expedition for use in other process --- htdocs/expedition/class/expedition.class.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 52540901c33..82b5072fa88 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -622,7 +622,14 @@ class Expedition extends CommonObject // Retreive extrafields $this->fetch_optionals(); - + + // Fix Get multicurrency param for transmited + if (!empty($conf->multicurrency->enabled)) + { + if (!empty($this->multicurrency_code)) $this->multicurrency_code = $this->thirdparty->multicurrency_code; + if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($objectsrc->multicurrency_tx)) $this->multicurrency_tx = $this->thirdparty->multicurrency_tx; + } + /* * Lines */ From 73f6c9210fa4e020870a4188af05086c76f34b58 Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Tue, 31 Mar 2020 11:01:01 +0200 Subject: [PATCH 019/336] FIX multicurrency manage on hidden conf SUPPLIER_PROPOSAL_UPDATE_PRICE_ON_SUPPlIER_PROPOSAL --- .../class/supplier_proposal.class.php | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index e528b5ae5e7..6ad2dd1a2df 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -1848,11 +1848,12 @@ class SupplierProposal extends CommonObject */ public function createPriceFournisseur($product, $user) { + global $conf; + if(!empty($conf->multicurrency->enabled)) include_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php'; $price=price2num($product->subprice*$product->qty, 'MU'); $qty=price2num($product->qty); $unitPrice = price2num($product->subprice, 'MU'); $now=dol_now(); - $values = array( "'".$this->db->idate($now)."'", $product->fk_product, @@ -1864,9 +1865,27 @@ class SupplierProposal extends CommonObject $product->tva_tx, $user->id ); + if(!empty($conf->multicurrency->enabled)) { + $multicurrency = new MultiCurrency($this->db); //need to fetch because empty fk_multicurrency and rate + if(!empty($product->multicurrency_code)) { + $multicurrency->fetch(0, $product->multicurrency_code); + if(! empty($multicurrency->id)) { + $values[] = $multicurrency->id; + $values[] = "'".$product->multicurrency_code."'"; + $values[] = $product->multicurrency_subprice; + $values[] = $product->multicurrency_total_ht; + $values[] = $multicurrency->rate->rate; + } + else { + for($i = 0; $i < 5; $i++) $values[] = 'NULL'; + } + } + } $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'product_fournisseur_price '; - $sql .= '(datec, fk_product, fk_soc, ref_fourn, price, quantity, unitprice, tva_tx, fk_user) VALUES ('.implode(',', $values).')'; + $sql .= '(datec, fk_product, fk_soc, ref_fourn, price, quantity, unitprice, tva_tx, fk_user'; + if(!empty($conf->multicurrency->enabled) && !empty($product->multicurrency_code)) $sql .= ',fk_multicurrency, multicurrency_code, multicurrency_unitprice, multicurrency_price, multicurrency_tx'; + $sql .= ') VALUES ('.implode(',', $values).')'; $resql = $this->db->query($sql); if (!$resql) { From 5a62da101d62cc9b1be960d8244b6a8f7cfbb223 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 31 Mar 2020 09:04:46 +0000 Subject: [PATCH 020/336] Fixing style errors. --- htdocs/expedition/class/expedition.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 82b5072fa88..c0ac5eb262e 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -622,14 +622,14 @@ class Expedition extends CommonObject // Retreive extrafields $this->fetch_optionals(); - + // Fix Get multicurrency param for transmited if (!empty($conf->multicurrency->enabled)) { if (!empty($this->multicurrency_code)) $this->multicurrency_code = $this->thirdparty->multicurrency_code; if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($objectsrc->multicurrency_tx)) $this->multicurrency_tx = $this->thirdparty->multicurrency_tx; } - + /* * Lines */ From 3b8a16e3fd38c10b44e824a4a927f25f38a8482a Mon Sep 17 00:00:00 2001 From: oscim Date: Tue, 31 Mar 2020 11:05:21 +0200 Subject: [PATCH 021/336] Update modCommande.class.php add extrafileds company in export orders --- htdocs/core/modules/modCommande.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php index bfb6eb169b1..5d1db854793 100644 --- a/htdocs/core/modules/modCommande.class.php +++ b/htdocs/core/modules/modCommande.class.php @@ -241,9 +241,12 @@ class modCommande extends DolibarrModules include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; + $keyforselect='societe'; $keyforelement='company'; $keyforaliasextra='extra4'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; if (empty($user->rights->societe->client->voir)) $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe_commerciaux as sc ON sc.fk_soc = s.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe_extrafields as extra4 ON s.rowid = extra4.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON s.fk_departement = d.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande as c'; From 5658d783d6b2536ad1e78854c997e9e967da851e Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Tue, 31 Mar 2020 12:04:34 +0200 Subject: [PATCH 022/336] fix advtargetemailing : fatal call to static attribut (that is not static: table_element) --- htdocs/core/tpl/advtarget.tpl.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/tpl/advtarget.tpl.php b/htdocs/core/tpl/advtarget.tpl.php index b3b6b5d1bf1..07b7744e2f8 100644 --- a/htdocs/core/tpl/advtarget.tpl.php +++ b/htdocs/core/tpl/advtarget.tpl.php @@ -263,7 +263,8 @@ if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) { // Standard Extrafield feature if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) { - $elementtype = Societe::$table_element; + $socstatic=new Societe($db); + $elementtype = $socstatic->table_element; // fetch optionals attributes and labels dol_include_once('/core/class/extrafields.class.php'); $extrafields = new ExtraFields($db); From e3dfe60567ccd1d6da1c020a1878a5cdb0a10a20 Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Tue, 31 Mar 2020 14:51:30 +0200 Subject: [PATCH 023/336] uniformize update buyprice + some fixes --- .../fourn/class/fournisseur.product.class.php | 4 ++-- .../class/supplier_proposal.class.php | 24 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index f11f88464f3..04527e21e33 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -428,7 +428,7 @@ class ProductFournisseur extends Product $sql .= " ".($newdefaultvatcode?"'".$this->db->escape($newdefaultvatcode)."'":"null").","; $sql .= " " . $newnpr . ","; $sql .= $conf->entity . ","; - $sql .= $delivery_time_days . ","; + $sql .= ($delivery_time_days != '' ? $delivery_time_days : 'null') . ","; $sql .= (empty($supplier_reputation) ? 'NULL' : "'" . $this->db->escape($supplier_reputation) . "'") . ","; $sql .= (empty($barcode) ? 'NULL' : "'" . $this->db->escape($barcode) . "'") . ","; $sql .= (empty($fk_barcode_type) ? 'NULL' : "'" . $this->db->escape($fk_barcode_type) . "'"); @@ -447,7 +447,7 @@ class ProductFournisseur extends Product if (! $error && empty($conf->global->PRODUCT_PRICE_SUPPLIER_NO_LOG)) { // Add record into log table // $this->product_fourn_price_id must be set - $result = $this->logPrice($user, $now, $buyprice, $qty, $multicurrency_buyprice, $multicurrency_unitBuyPrice, $multicurrency_tx, $fk_multicurrenc, $multicurrency_code); + $result = $this->logPrice($user, $now, $buyprice, $qty, $multicurrency_buyprice, $multicurrency_unitBuyPrice, $multicurrency_tx, $fk_multicurrency, $multicurrency_code); if ($result < 0) { $error++; } diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index e528b5ae5e7..32ac6104c90 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -1792,25 +1792,25 @@ class SupplierProposal extends CommonObject */ public function updateOrCreatePriceFournisseur($user) { - $productsupplier = new ProductFournisseur($this->db); + global $conf; dol_syslog(get_class($this)."::updateOrCreatePriceFournisseur", LOG_DEBUG); foreach ($this->lines as $product) { if ($product->subprice <= 0) continue; + $productsupplier = new ProductFournisseur($this->db); - $idProductFourn = $productsupplier->find_min_price_product_fournisseur($product->fk_product, $product->qty); - $res = $productsupplier->fetch($idProductFourn); + $multicurrency_tx = 1; + $fk_multicurrency = 0; - if ($productsupplier->id) { - if ($productsupplier->fourn_qty == $product->qty) { - $this->updatePriceFournisseur($productsupplier->product_fourn_price_id, $product, $user); - } else { - $this->createPriceFournisseur($product, $user); - } - } else { - $this->createPriceFournisseur($product, $user); - } + if(empty($this->thirdparty)) $this->fetch_thirdparty(); + + $ref_fourn = $product->ref_fourn; + if(empty($ref_fourn)) $ref_fourn = $product->ref_supplier; + if(!empty($conf->multicurrency->enabled) && !empty($product->multicurrency_code)) list($fk_multicurrency, $multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $product->multicurrency_code); + $productsupplier->id = $product->fk_product; + + $productsupplier->update_buyprice($product->qty, $product->subprice, $user, 'HT', $this->thirdparty, '', $ref_fourn, $product->tva_tx, 0, 0, 0, $product->info_bits, '', '', array(), '', $product->multicurrency_subprice, 'HT', $multicurrency_tx, $product->multicurrency_code, '', '', '' ); } return 1; From 1f5da36fdb779e4ec8a0372bc058155cc0b05a9a Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 31 Mar 2020 13:02:44 +0000 Subject: [PATCH 024/336] Fixing style errors. --- htdocs/supplier_proposal/class/supplier_proposal.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 32ac6104c90..e0f464e76a1 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -1810,7 +1810,7 @@ class SupplierProposal extends CommonObject if(!empty($conf->multicurrency->enabled) && !empty($product->multicurrency_code)) list($fk_multicurrency, $multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $product->multicurrency_code); $productsupplier->id = $product->fk_product; - $productsupplier->update_buyprice($product->qty, $product->subprice, $user, 'HT', $this->thirdparty, '', $ref_fourn, $product->tva_tx, 0, 0, 0, $product->info_bits, '', '', array(), '', $product->multicurrency_subprice, 'HT', $multicurrency_tx, $product->multicurrency_code, '', '', '' ); + $productsupplier->update_buyprice($product->qty, $product->subprice, $user, 'HT', $this->thirdparty, '', $ref_fourn, $product->tva_tx, 0, 0, 0, $product->info_bits, '', '', array(), '', $product->multicurrency_subprice, 'HT', $multicurrency_tx, $product->multicurrency_code, '', '', ''); } return 1; From 3797080ab5395607f5f4a1c4b4cd70b056a2a121 Mon Sep 17 00:00:00 2001 From: Fabian Palacios Date: Tue, 31 Mar 2020 09:29:59 -0500 Subject: [PATCH 025/336] #13446 fix loop for dislplay of OthersNotLinkedToThirdParty --- htdocs/projet/index.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index e590e4ad82b..0e81ae398a8 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -307,7 +307,6 @@ if ($resql) else { print $langs->trans("OthersNotLinkedToThirdParty"); - $i--; } print ''; print ''; From db18226493ba0440e24af735d7c58d6f5113df5c Mon Sep 17 00:00:00 2001 From: Fabian Palacios Date: Tue, 31 Mar 2020 10:08:37 -0500 Subject: [PATCH 026/336] Chart of accounts to Ecuador --- htdocs/install/mysql/data/llx_accounting_abc.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/install/mysql/data/llx_accounting_abc.sql b/htdocs/install/mysql/data/llx_accounting_abc.sql index 64c49b7a901..d3f9ad5fd69 100644 --- a/htdocs/install/mysql/data/llx_accounting_abc.sql +++ b/htdocs/install/mysql/data/llx_accounting_abc.sql @@ -143,3 +143,6 @@ INSERT INTO llx_accounting_system (fk_country, pcg_version, label, active) VALUE -- Description of chart of account NL NL-VERKORT INSERT INTO llx_accounting_system (fk_country, pcg_version, label, active) VALUES ( 17, 'NL-VERKORT', 'Verkort rekeningschema', 1); + +-- Description of chart of account EC EC-SUPERCIAS +INSERT INTO llx_accounting_system (fk_country, pcg_version, label, active) VALUES ( 84, 'EC-SUPERCIAS', 'Plan de cuentas Ecuador', 1); \ No newline at end of file From ae4fb855d776317a39fa07d70f6707c1d1c40336 Mon Sep 17 00:00:00 2001 From: Fabian Palacios Date: Tue, 31 Mar 2020 10:10:22 -0500 Subject: [PATCH 027/336] chart of accounts to Ecuador --- .../mysql/data/llx_accounting_account_ec.sql | 478 ++++++++++++++++++ 1 file changed, 478 insertions(+) create mode 100644 htdocs/install/mysql/data/llx_accounting_account_ec.sql diff --git a/htdocs/install/mysql/data/llx_accounting_account_ec.sql b/htdocs/install/mysql/data/llx_accounting_account_ec.sql new file mode 100644 index 00000000000..a57f49b2d54 --- /dev/null +++ b/htdocs/install/mysql/data/llx_accounting_account_ec.sql @@ -0,0 +1,478 @@ +-- Copyright (C) 2001-2004 Rodolphe Quiedeville +-- Copyright (C) 2003 Jean-Louis Bergamo +-- Copyright (C) 2004-2009 Laurent Destailleur +-- Copyright (C) 2004 Benoit Mortier +-- Copyright (C) 2004 Guillaume Delecourt +-- Copyright (C) 2005-2009 Regis Houssin +-- Copyright (C) 2007 Patrick Raguin +-- Copyright (C) 2011-2017 Alexandre Spangaro +-- Copyright (C) 2017 Juanjo Menent +-- +-- 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 . +-- + +-- +-- Ne pas placer de commentaire en fin de ligne, ce fichier est parsé lors +-- de l'install et tous les sigles '--' sont supprimés. +-- + +-- Description of chart of account EC EC-SUPERCIAS +-- ID 1 - 445 +-- ADD 45000 to rowid # Do no remove this comment -- + +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,1,'EC-SUPERCIAS','Activo','1',0,'ACTIVO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,2,'EC-SUPERCIAS','Activo','101',1,'ACTIVO CORRIENTE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,3,'EC-SUPERCIAS','Activo','10101',2,'EFECTIVO Y EQUIVALENTES AL EFECTIVO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,4,'EC-SUPERCIAS','Activo','10102',2,'ACTIVOS FINANCIEROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,5,'EC-SUPERCIAS','Activo','1010201',4,'ACTIVOS FINANCIEROS A VALOR RAZONABLE CON CAMBIOS EN RESULTADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,6,'EC-SUPERCIAS','Activo','1010202',4,'ACTIVOS FINANCIEROS DISPONIBLES PARA LA VENTA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,7,'EC-SUPERCIAS','Activo','1010203',4,'ACTIVOS FINANCIEROS MANTENIDOS HASTA EL VENCIMIENTO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,8,'EC-SUPERCIAS','Activo','1010204',4,'(-) PROVISION POR DETERIORO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,9,'EC-SUPERCIAS','Activo','1010205',4,'DOCUMENTOS Y CUENTAS POR COBRAR CLIENTES NO RELACIONADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,10,'EC-SUPERCIAS','Activo','101020501',9,'DE ACTIVIDADES ORDINARIAS QUE GENEREN INTERESES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,11,'EC-SUPERCIAS','Activo','101020502',9,'DE ACTIVIDADES ORDINARIAS QUE NO GENEREN INTERESES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,12,'EC-SUPERCIAS','Activo','1010206',4,'DOCUMENTOS Y CUENTAS POR COBRAR CLIENTES RELACIONADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,13,'EC-SUPERCIAS','Activo','1010207',4,'OTRAS CUENTAS POR COBRAR RELACIONADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,14,'EC-SUPERCIAS','Activo','1010208',4,'OTRAS CUENTAS POR COBRAR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,15,'EC-SUPERCIAS','Activo','1010209',4,'(-) PROVISIÓN CUENTAS INCOBRABLES Y DETERIORO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,16,'EC-SUPERCIAS','Activo','10103',2,'INVENTARIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,17,'EC-SUPERCIAS','Activo','1010301',16,'INVENTARIOS DE MATERIA PRIMA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,18,'EC-SUPERCIAS','Activo','1010302',16,'INVENTARIOS DE PRODUCTOS EN PROCESO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,19,'EC-SUPERCIAS','Activo','1010303',16,'INVENTARIOS DE SUMINISTROS O MATERIALES A SER CONSUMIDOS EN EL PROCESO DE PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,20,'EC-SUPERCIAS','Activo','1010304',16,'INVENTARIOS DE SUMINISTROS O MATERIALES A SER CONSUMIDOS EN LA PRESTACIÓN DE SERVICIO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,21,'EC-SUPERCIAS','Activo','1010305',16,'INVENTARIOS DE PRODUCTOS TERMINADOS Y MERCADERIA EN ALMACÉN - PRODUCIDO POR LA COMPAÑÍA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,22,'EC-SUPERCIAS','Activo','1010306',16,'INVENTARIOS DE PRODUCTOS TERMINADOS Y MERCADERIA EN ALMACÉN - COMPRADO DE TERCEROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,23,'EC-SUPERCIAS','Activo','1010307',16,'MERCADERÍAS EN TRÁNSITO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,24,'EC-SUPERCIAS','Activo','1010308',16,'OBRAS EN CONSTRUCCION',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,25,'EC-SUPERCIAS','Activo','1010309',16,'OBRAS TERMINADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,26,'EC-SUPERCIAS','Activo','1010310',16,'MATERIALES O BIENES PARA LA CONSTRUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,27,'EC-SUPERCIAS','Activo','1010311',16,'INVENTARIOS REPUESTOS, HERRAMIENTAS Y ACCESORIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,28,'EC-SUPERCIAS','Activo','1010312',16,'OTROS INVENTARIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,29,'EC-SUPERCIAS','Activo','1010313',16,'(-) PROVISIÓN POR VALOR NETO DE REALIZACIÓN Y OTRAS PÉRDIDAS EN EL INVENTARIO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,30,'EC-SUPERCIAS','Activo','10104',2,'SERVICIOS Y OTROS PAGOS ANTICIPADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,31,'EC-SUPERCIAS','Activo','1010401',30,'SEGUROS PAGADOS POR ANTICIPADO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,32,'EC-SUPERCIAS','Activo','1010402',30,'ARRIENDOS PAGADOS POR ANTICIPADO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,33,'EC-SUPERCIAS','Activo','1010403',30,'ANTICIPOS A PROVEEDORES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,34,'EC-SUPERCIAS','Activo','1010404',30,'OTROS ANTICIPOS ENTREGADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,35,'EC-SUPERCIAS','Activo','10105',2,'ACTIVOS POR IMPUESTOS CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,36,'EC-SUPERCIAS','Activo','1010501',35,'CRÉDITO TRIBUTARIO A FAVOR DE LA EMPRESA (IVA)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,37,'EC-SUPERCIAS','Activo','1010502',35,'CRÉDITO TRIBUTARIO A FAVOR DE LA EMPRESA ( I. R.)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,38,'EC-SUPERCIAS','Activo','1010503',35,'ANTICIPO DE IMPUESTO A LA RENTA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,39,'EC-SUPERCIAS','Activo','10106',2,'ACTIVOS NO CORRIENTES MANTENIDOS PARA LA VENTA Y OPERACIONES DISCONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,40,'EC-SUPERCIAS','Activo','10107',2,'CONSTRUCCIONES EN PROCESO (NIC 11 Y SECC.23 PYMES)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,41,'EC-SUPERCIAS','Activo','10108',2,'OTROS ACTIVOS CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,42,'EC-SUPERCIAS','Activo','102',1,'ACTIVO NO CORRIENTE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,43,'EC-SUPERCIAS','Activo','10201',42,'PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,44,'EC-SUPERCIAS','Activo','1020101',43,'TERRENOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,45,'EC-SUPERCIAS','Activo','1020102',43,'EDIFICIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,46,'EC-SUPERCIAS','Activo','1020103',43,'CONTRUCCIONES EN CURSO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,47,'EC-SUPERCIAS','Activo','1020104',43,'INSTALACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,48,'EC-SUPERCIAS','Activo','1020105',43,'MUEBLES Y ENSERES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,49,'EC-SUPERCIAS','Activo','1020106',43,'MAQUINARIA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,50,'EC-SUPERCIAS','Activo','1020107',43,'NAVES, AERONAVES, BARCAZAS Y SIMILARES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,51,'EC-SUPERCIAS','Activo','1020108',43,'EQUIPO DE COMPUTACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,52,'EC-SUPERCIAS','Activo','1020109',43,'VEHÍCULOS, EQUIPOS DE TRANSPORTE Y EQUIPO CAMINERO MÓVIL',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,53,'EC-SUPERCIAS','Activo','1020110',43,'OTROS PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,54,'EC-SUPERCIAS','Activo','1020111',43,'REPUESTOS Y HERRAMIENTAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,55,'EC-SUPERCIAS','Activo','1020112',43,'(-) DEPRECIACIÓN ACUMULADA PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,56,'EC-SUPERCIAS','Activo','1020113',43,'(-) DETERIORO ACUMULADO DE PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,57,'EC-SUPERCIAS','Activo','1020114',43,'ACTIVOS DE EXPLORACIÓN Y EXPLOTACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,58,'EC-SUPERCIAS','Activo','102011401',57,'ACTIVOS DE EXPLORACIÓN Y EXPLOTACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,59,'EC-SUPERCIAS','Activo','102011402',57,'(-) AMORTIZACIÓN ACUMULADA DE ACTIVOS DE EXLORACIÓN Y EXPLOTACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,60,'EC-SUPERCIAS','Activo','102011403',57,'(-) DETERIORO ACUMULADO DE ACTIVOS DE EXPLORACIÓN Y EXPLOTACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,61,'EC-SUPERCIAS','Activo','10202',42,'PROPIEDADES DE INVERSIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,62,'EC-SUPERCIAS','Activo','1020201',61,'TERRENOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,63,'EC-SUPERCIAS','Activo','1020202',61,'EDIFICIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,64,'EC-SUPERCIAS','Activo','1020203',61,'(-) DEPRECIACION ACUMULADA DE PROPIEDADES DE INVERSIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,65,'EC-SUPERCIAS','Activo','1020204',61,'(-) DETERIORO ACUMULADO DE PROPIEDADES DE INVERSIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,66,'EC-SUPERCIAS','Activo','10203',42,'ACTIVOS BIOLOGICOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,67,'EC-SUPERCIAS','Activo','1020301',66,'ANIMALES VIVOS EN CRECIMIENTO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,68,'EC-SUPERCIAS','Activo','1020302',66,'ANIMALES VIVOS EN PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,69,'EC-SUPERCIAS','Activo','1020303',66,'PLANTAS EN CRECIMIENTO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,70,'EC-SUPERCIAS','Activo','1020304',66,'PLANTAS EN PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,71,'EC-SUPERCIAS','Activo','1020305',66,'(-) DEPRECIACIÓN ACUMULADA DE ACTIVOS BIOLÓGICOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,72,'EC-SUPERCIAS','Activo','1020306',66,'(-) DETERIORO ACUMULADO DE ACTIVOS BIOLÓGICOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,73,'EC-SUPERCIAS','Activo','10204',42,'ACTIVO INTANGIBLE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,74,'EC-SUPERCIAS','Activo','1020401',73,'PLUSVALÍAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,75,'EC-SUPERCIAS','Activo','1020402',73,'MARCAS, PATENTES, DERECHOS DE LLAVE, CUOTAS PATRIMONIALES Y OTROS SIMILARES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,76,'EC-SUPERCIAS','Activo','1020403',73,'ACTIVOS DE EXPLORACION Y EXPLOTACION',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,77,'EC-SUPERCIAS','Activo','1020404',73,'(-) AMORTIZACIÓN ACUMULADA DE ACTIVO INTANGIBLE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,78,'EC-SUPERCIAS','Activo','1020405',73,'(-) DETERIORO ACUMULADO DE ACTIVO INTANGIBLE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,79,'EC-SUPERCIAS','Activo','1020406',73,'OTROS INTANGIBLES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,80,'EC-SUPERCIAS','Activo','10205',42,'ACTIVOS POR IMPUESTOS DIFERIDOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,81,'EC-SUPERCIAS','Activo','10206',42,'ACTIVOS FINANCIEROS NO CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,82,'EC-SUPERCIAS','Activo','1020601',81,'ACTIVOS FINANCIEROS MANTENIDOS HASTA EL VENCIMIENTO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,83,'EC-SUPERCIAS','Activo','1020602',81,'(-) PROVISIÓN POR DETERIORO DE ACTIVOS FINANCIEROS MANTENIDOS HASTA EL VENCIMIENTO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,84,'EC-SUPERCIAS','Activo','1020603',81,'DOCUMENTOS Y CUENTAS POR COBRAR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,85,'EC-SUPERCIAS','Activo','1020604',81,'(-) PROVISIÓN CUENTAS INCOBRABLES DE ACTIVOS FINANCIEROS NO CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,86,'EC-SUPERCIAS','Activo','10207',42,'OTROS ACTIVOS NO CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,87,'EC-SUPERCIAS','Activo','1020701',86,'INVERSIONES SUBSIDIARIAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,88,'EC-SUPERCIAS','Activo','1020702',86,'INVERSIONES ASOCIADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,89,'EC-SUPERCIAS','Activo','1020703',86,'INVERSIONES NEGOCIOS CONJUNTOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,90,'EC-SUPERCIAS','Activo','1020704',86,'OTRAS INVERSIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,91,'EC-SUPERCIAS','Activo','1020705',86,'(-) PROVISIÓN VALUACIÓN DE INVERSIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,92,'EC-SUPERCIAS','Activo','1020706',86,'OTROS ACTIVOS NO CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,93,'EC-SUPERCIAS','Pasivo','2',0,'PASIVO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,94,'EC-SUPERCIAS','Pasivo','201',93,'PASIVO CORRIENTE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,95,'EC-SUPERCIAS','Pasivo','20101',94,'PASIVOS FINANCIEROS A VALOR RAZONABLE CON CAMBIOS EN RESULTADO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,96,'EC-SUPERCIAS','Pasivo','20102',94,'PASIVOS POR CONTRATOS DE ARRENDAMIENTO FINANCIEROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,97,'EC-SUPERCIAS','Pasivo','20103',94,'CUENTAS Y DOCUMENTOS POR PAGAR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,98,'EC-SUPERCIAS','Pasivo','2010301',97,'LOCALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,99,'EC-SUPERCIAS','Pasivo','2010302',97,'DEL EXTERIOR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,100,'EC-SUPERCIAS','Pasivo','20104',94,'OBLIGACIONES CON INSTITUCIONES FINANCIERAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,101,'EC-SUPERCIAS','Pasivo','2010401',100,'LOCALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,102,'EC-SUPERCIAS','Pasivo','2010402',100,'DEL EXTERIOR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,103,'EC-SUPERCIAS','Pasivo','20105',94,'PROVISIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,104,'EC-SUPERCIAS','Pasivo','2010501',103,'LOCALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,105,'EC-SUPERCIAS','Pasivo','2010502',103,'DEL EXTERIOR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,106,'EC-SUPERCIAS','Pasivo','20106',94,'PORCIÓN CORRIENTE DE OBLIGACIONES EMITIDAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,107,'EC-SUPERCIAS','Pasivo','20107',94,'OTRAS OBLIGACIONES CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,108,'EC-SUPERCIAS','Pasivo','2010701',107,'CON LA ADMINISTRACIÓN TRIBUTARIA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,109,'EC-SUPERCIAS','Pasivo','2010702',107,'IMPUESTO A LA RENTA POR PAGAR DEL EJERCICIO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,110,'EC-SUPERCIAS','Pasivo','2010703',107,'CON EL IESS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,111,'EC-SUPERCIAS','Pasivo','2010704',107,'POR BENEFICIOS DE LEY A EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,112,'EC-SUPERCIAS','Pasivo','2010705',107,'PARTICIPACIÓN TRABAJADORES POR PAGAR DEL EJERCICIO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,113,'EC-SUPERCIAS','Pasivo','2010706',107,'DIVIDENDOS POR PAGAR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,114,'EC-SUPERCIAS','Pasivo','20108',94,'CUENTAS POR PAGAR DIVERSAS – RELACIONADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,115,'EC-SUPERCIAS','Pasivo','20109',94,'OTROS PASIVOS FINANCIEROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,116,'EC-SUPERCIAS','Pasivo','20110',94,'ANTICIPOS DE CLIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,117,'EC-SUPERCIAS','Pasivo','20111',94,'PASIVOS DIRECTAMENTE ASOCIADOS CON LOS ACTIVOS NO CORRIENTES Y OPERACIONES DISCONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,118,'EC-SUPERCIAS','Pasivo','20112',94,'PORCIÓN CORRIENTE DE PROVISIONES POR BENEFICIOS A EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,119,'EC-SUPERCIAS','Pasivo','2011201',118,'JUBILACIÓN PATRONAL',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,120,'EC-SUPERCIAS','Pasivo','2011202',118,'OTROS BENEFICIOS A LARGO PLAZO PARA LOS EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,121,'EC-SUPERCIAS','Pasivo','20113',94,'OTROS PASIVOS CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,122,'EC-SUPERCIAS','Pasivo','202',93,'PASIVO NO CORRIENTE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,123,'EC-SUPERCIAS','Pasivo','20201',122,'PASIVOS POR CONTRATOS DE ARRENDAMIENTO FINANCIERO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,124,'EC-SUPERCIAS','Pasivo','20202',122,'CUENTAS Y DOCUMENTOS POR PAGAR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,125,'EC-SUPERCIAS','Pasivo','2020201',124,'LOCALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,126,'EC-SUPERCIAS','Pasivo','2020202',124,'DEL EXTERIOR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,127,'EC-SUPERCIAS','Pasivo','20203',122,'OBLIGACIONES CON INSTITUCIONES FINANCIERAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,128,'EC-SUPERCIAS','Pasivo','2020301',127,'LOCALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,129,'EC-SUPERCIAS','Pasivo','2020302',127,'DEL EXTERIOR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,130,'EC-SUPERCIAS','Pasivo','20204',122,'CUENTAS POR PAGAR DIVERSAS / RELACIONADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,131,'EC-SUPERCIAS','Pasivo','2020401',130,'LOCALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,132,'EC-SUPERCIAS','Pasivo','2020402',130,'DEL EXTERIOR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,133,'EC-SUPERCIAS','Pasivo','20205',122,'OBLIGACIONES EMITIDAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,134,'EC-SUPERCIAS','Pasivo','20206',122,'ANTICIPOS DE CLIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,135,'EC-SUPERCIAS','Pasivo','20207',122,'PROVISIONES POR BENEFICIOS A EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,136,'EC-SUPERCIAS','Pasivo','2020701',135,'JUBILACIÓN PATRONAL',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,137,'EC-SUPERCIAS','Pasivo','2020702',135,'OTROS BENEFICIOS NO CORRIENTES PARA LOS EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,138,'EC-SUPERCIAS','Pasivo','20208',122,'OTRAS PROVISIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,139,'EC-SUPERCIAS','Pasivo','20209',122,'PASIVO DIFERIDO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,140,'EC-SUPERCIAS','Pasivo','2020901',139,'INGRESOS DIFERIDOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,141,'EC-SUPERCIAS','Pasivo','2020902',139,'PASIVOS POR IMPUESTOS DIFERIDOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,142,'EC-SUPERCIAS','Pasivo','20210',122,'OTROS PASIVOS NO CORRIENTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,143,'EC-SUPERCIAS','Patrimonio','3',0,'PATRIMONIO NETO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,144,'EC-SUPERCIAS','Patrimonio','30',0,'PATRIMONIO ATRIBUIBLE A LOS PROPIETARIOS DE LA CONTROLADORA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,145,'EC-SUPERCIAS','Patrimonio','301',143,'CAPITAL',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,146,'EC-SUPERCIAS','Patrimonio','30101',145,'CAPITAL SUSCRITO o ASIGNADO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,147,'EC-SUPERCIAS','Patrimonio','30102',145,'(-) CAPITAL SUSCRITO NO PAGADO, ACCIONES EN TESORERÍA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,148,'EC-SUPERCIAS','Patrimonio','302',143,'APORTES DE SOCIOS O ACCIONISTAS PARA FUTURA CAPITALIZACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,149,'EC-SUPERCIAS','Patrimonio','303',143,'PRIMA POR EMISION PRIMARIA DE ACCIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,150,'EC-SUPERCIAS','Patrimonio','304',143,'RESERVAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,151,'EC-SUPERCIAS','Patrimonio','30401',150,'RESERVA LEGAL',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,152,'EC-SUPERCIAS','Patrimonio','30402',150,'RESERVAS FACULTATIVA Y ESTATUTARIA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,153,'EC-SUPERCIAS','Patrimonio','305',143,'OTROS RESULTADOS INTEGRALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,154,'EC-SUPERCIAS','Patrimonio','30501',153,'SUPERAVIT DE ACTIVOS FINANCIEROS DISPONIBLES PARA LA VENTA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,155,'EC-SUPERCIAS','Patrimonio','30502',153,'SUPERAVIT POR REVALUACIÓN DE PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,156,'EC-SUPERCIAS','Patrimonio','30503',153,'SUPERAVIT POR REVALUACION DE ACTIVOS INTANGIBLES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,157,'EC-SUPERCIAS','Patrimonio','30504',153,'OTROS SUPERAVIT POR REVALUACION',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,158,'EC-SUPERCIAS','Patrimonio','306',143,'RESULTADOS ACUMULADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,159,'EC-SUPERCIAS','Patrimonio','30601',158,'GANACIAS ACUMULADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,160,'EC-SUPERCIAS','Patrimonio','30602',158,'(-) PÉRDIDAS ACUMULADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,161,'EC-SUPERCIAS','Patrimonio','30603',158,'RESULTADOS ACUMULADOS PROVENIENTES DE LA ADOPCIÓN POR PRIMERA VEZ DE LAS NIIF',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,162,'EC-SUPERCIAS','Patrimonio','30604',158,'RESERVA DE CAPITAL',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,163,'EC-SUPERCIAS','Patrimonio','30605',158,'RESERVA POR DONACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,164,'EC-SUPERCIAS','Patrimonio','30606',158,'RESERVA POR VALUACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,165,'EC-SUPERCIAS','Patrimonio','30607',158,'SUPERÁVIT POR REVALUACIÓN DE INVERSIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,166,'EC-SUPERCIAS','Patrimonio','307',143,'RESULTADOS DEL EJERCICIO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,167,'EC-SUPERCIAS','Patrimonio','30701',166,'GANANCIA NETA DEL PERIODO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,168,'EC-SUPERCIAS','Patrimonio','30702',166,'(-) PÉRDIDA NETA DEL PERIODO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,169,'EC-SUPERCIAS','Patrimonio','31',0,'PARTICIPACIÓN NO CONTROLADORA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,170,'EC-SUPERCIAS','Ingresos','41',0,'INGRESOS DE ACTIVIDADES ORDINARIAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,171,'EC-SUPERCIAS','Ingresos','4101',170,'VENTA DE BIENES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,172,'EC-SUPERCIAS','Ingresos','4102',170,'PRESTACIÓN DE SERVICIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,173,'EC-SUPERCIAS','Ingresos','4103',170,'CONTRATOS DE CONSTRUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,174,'EC-SUPERCIAS','Ingresos','4104',170,'SUBVENCIONES DEL GOBIERNO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,175,'EC-SUPERCIAS','Ingresos','4105',170,'REGALÍAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,176,'EC-SUPERCIAS','Ingresos','4106',170,'INTERESES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,177,'EC-SUPERCIAS','Ingresos','410601',176,'INTERESES GENERADOS POR VENTAS A CRÉDITO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,178,'EC-SUPERCIAS','Ingresos','410602',176,'OTROS INTERESES GENERADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,179,'EC-SUPERCIAS','Ingresos','4107',170,'DIVIDENDOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,180,'EC-SUPERCIAS','Ingresos','4108',170,'GANANCIA POR MEDICIÓN A VALOR RAZONABLE DE ACTIVOS BIOLÓGICOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,181,'EC-SUPERCIAS','Ingresos','4109',170,'OTROS INGRESOS DE ACTIVIDADES ORDINARIAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,182,'EC-SUPERCIAS','Ingresos','4110',170,'(-) DESCUENTO EN VENTAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,183,'EC-SUPERCIAS','Ingresos','4111',170,'(-) DEVOLUCIONES EN VENTAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,184,'EC-SUPERCIAS','Ingresos','4112',170,'(-) BONIFICACIÓN EN PRODUCTO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,185,'EC-SUPERCIAS','Ingresos','4113',170,'(-) OTRAS REBAJAS COMERCIALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,186,'EC-SUPERCIAS','Ingresos','42',0,'GANANCIA BRUTA --> Subtotal A (41 - 51)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,187,'EC-SUPERCIAS','Ingresos','43',0,'OTROS INGRESOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,188,'EC-SUPERCIAS','Ingresos','4301',187,'DIVIDENDOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,189,'EC-SUPERCIAS','Ingresos','4302',187,'INTERESES FINANCIEROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,190,'EC-SUPERCIAS','Ingresos','4303',187,'GANANCIA EN INVERSIONES EN ASOCIADAS / SUBSIDIARIAS Y OTRAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,191,'EC-SUPERCIAS','Ingresos','4304',187,'VALUACIÓN DE INSTRUMENTOS FINANCIEROS A VALOR RAZONABLE CON CAMBIO EN RESULTADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,192,'EC-SUPERCIAS','Ingresos','4305',187,'OTRAS RENTAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,193,'EC-SUPERCIAS','Egresos','51',0,'COSTO DE VENTAS Y PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,194,'EC-SUPERCIAS','Egresos','5101',193,'MATERIALES UTILIZADOS O PRODUCTOS VENDIDOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,195,'EC-SUPERCIAS','Egresos','510101',194,'(+) INVENTARIO INICIAL DE BIENES NO PRODUCIDOS POR LA COMPAÑÍA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,196,'EC-SUPERCIAS','Egresos','510102',194,'(+) COMPRAS NETAS LOCALES DE BIENES NO PRODUCIDOS POR LA COMPAÑÍA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,197,'EC-SUPERCIAS','Egresos','510103',194,'(+) IMPORTACIONES DE BIENES NO PRODUCIDOS POR LA COMPAÑÍA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,198,'EC-SUPERCIAS','Egresos','510104',194,'(-) INVENTARIO FINAL DE BIENES NO PRODUCIDOS POR LA COMPAÑÍA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,199,'EC-SUPERCIAS','Egresos','510105',194,'(+) INVENTARIO INICIAL DE MATERIA PRIMA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,200,'EC-SUPERCIAS','Egresos','510106',194,'(+) COMPRAS NETAS LOCALES DE MATERIA PRIMA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,201,'EC-SUPERCIAS','Egresos','510107',194,'(+) IMPORTACIONES DE MATERIA PRIMA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,202,'EC-SUPERCIAS','Egresos','510108',194,'(-) INVENTARIO FINAL DE MATERIA PRIMA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,203,'EC-SUPERCIAS','Egresos','510109',194,'(+) INVENTARIO INICIAL DE PRODUCTOS EN PROCESO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,204,'EC-SUPERCIAS','Egresos','510110',194,'(-) INVENTARIO FINAL DE PRODUCTOS EN PROCESO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,205,'EC-SUPERCIAS','Egresos','510111',194,'(+) INVENTARIO INICIAL PRODUCTOS TERMINADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,206,'EC-SUPERCIAS','Egresos','510112',194,'(-) INVENTARIO FINAL DE PRODUCTOS TERMINADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,207,'EC-SUPERCIAS','Egresos','5102',193,'(+) MANO DE OBRA DIRECTA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,208,'EC-SUPERCIAS','Egresos','510201',207,'SUELDOS Y BENEFICIOS SOCIALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,209,'EC-SUPERCIAS','Egresos','510202',207,'GASTO PLANES DE BENEFICIOS A EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,210,'EC-SUPERCIAS','Egresos','5103',193,'(+) MANO DE OBRA INDIRECTA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,211,'EC-SUPERCIAS','Egresos','510301',210,'SUELDOS Y BENEFICIOS SOCIALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,212,'EC-SUPERCIAS','Egresos','510302',210,'GASTO PLANES DE BENEFICIOS A EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,213,'EC-SUPERCIAS','Egresos','5104',193,'(+) OTROS COSTOS INDIRECTOS DE FABRICACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,214,'EC-SUPERCIAS','Egresos','510401',213,'DEPRECIACIÓN PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,215,'EC-SUPERCIAS','Egresos','510402',213,'DETERIORO O PÉRDIDAS DE ACTIVOS BIOLÓGICOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,216,'EC-SUPERCIAS','Egresos','510403',213,'DETERIORO DE PROPIEDAD, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,217,'EC-SUPERCIAS','Egresos','510404',213,'EFECTO VALOR NETO DE REALIZACIÓN DE INVENTARIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,218,'EC-SUPERCIAS','Egresos','510405',213,'GASTO POR GARANTÍAS EN VENTA DE PRODUCTOS O SERVICIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,219,'EC-SUPERCIAS','Egresos','510406',213,'MANTENIMIENTO Y REPARACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,220,'EC-SUPERCIAS','Egresos','510407',213,'SUMINISTROS MATERIALES Y REPUESTOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,221,'EC-SUPERCIAS','Egresos','510408',213,'OTROS COSTOS DE PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,222,'EC-SUPERCIAS','Egresos','52',0,'GASTOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,223,'EC-SUPERCIAS','Egresos','5201',222,'GASTOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,224,'EC-SUPERCIAS','Egresos','520101',223,'SUELDOS, SALARIOS Y DEMÁS REMUNERACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,225,'EC-SUPERCIAS','Egresos','520102',223,'APORTES A LA SEGURIDAD SOCIAL (incluido fondo de reserva)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,226,'EC-SUPERCIAS','Egresos','520103',223,'BENEFICIOS SOCIALES E INDEMNIZACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,227,'EC-SUPERCIAS','Egresos','520104',223,'GASTO PLANES DE BENEFICIOS A EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,228,'EC-SUPERCIAS','Egresos','520105',223,'HONORARIOS, COMISIONES Y DIETAS A PERSONAS NATURALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,229,'EC-SUPERCIAS','Egresos','520106',223,'REMUNERACIONES A OTROS TRABAJADORES AUTÓNOMOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,230,'EC-SUPERCIAS','Egresos','520107',223,'HONORARIOS A EXTRANJEROS POR SERVICIOS OCASIONALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,231,'EC-SUPERCIAS','Egresos','520108',223,'MANTENIMIENTO Y REPARACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,232,'EC-SUPERCIAS','Egresos','520109',223,'ARRENDAMIENTO OPERATIVO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,233,'EC-SUPERCIAS','Egresos','520110',223,'COMISIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,234,'EC-SUPERCIAS','Egresos','520111',223,'PROMOCIÓN Y PUBLICIDAD',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,235,'EC-SUPERCIAS','Egresos','520112',223,'COMBUSTIBLES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,236,'EC-SUPERCIAS','Egresos','520113',223,'LUBRICANTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,237,'EC-SUPERCIAS','Egresos','520114',223,'SEGUROS Y REASEGUROS (primas y cesiones)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,238,'EC-SUPERCIAS','Egresos','520115',223,'TRANSPORTE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,239,'EC-SUPERCIAS','Egresos','520116',223,'GASTOS DE GESTIÓN (agasajos a accionistas, trabajadores y clientes)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,240,'EC-SUPERCIAS','Egresos','520117',223,'GASTOS DE VIAJE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,241,'EC-SUPERCIAS','Egresos','520118',223,'AGUA, ENERGÍA, LUZ Y TELECOMUNICACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,242,'EC-SUPERCIAS','Egresos','520119',223,'NOTARIOS Y REGISTRADORES DE LA PROPIEDAD O MERCANTILES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,243,'EC-SUPERCIAS','Egresos','520121',223,'DEPRECIACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,244,'EC-SUPERCIAS','Egresos','52012101',243,'PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,245,'EC-SUPERCIAS','Egresos','52012102',243,'PROPIEDADES DE INVERSIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,246,'EC-SUPERCIAS','Egresos','520122',223,'AMORTIZACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,247,'EC-SUPERCIAS','Egresos','52012201',246,'INTANGIBLES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,248,'EC-SUPERCIAS','Egresos','52012202',246,'OTROS ACTIVOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,249,'EC-SUPERCIAS','Egresos','520123',223,'GASTO DETERIORO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,250,'EC-SUPERCIAS','Egresos','52012301',249,'PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,251,'EC-SUPERCIAS','Egresos','52012306',249,'OTROS ACTIVOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,252,'EC-SUPERCIAS','Egresos','520124',223,'GASTOS POR CANTIDADES ANORMALES DE UTILIZACIÓN EN EL PROCESO DE PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,253,'EC-SUPERCIAS','Egresos','52012401',252,'MANO DE OBRA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,254,'EC-SUPERCIAS','Egresos','52012402',252,'MATERIALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,255,'EC-SUPERCIAS','Egresos','52012403',252,'COSTOS DE PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,256,'EC-SUPERCIAS','Egresos','520125',223,'GASTO POR REESTRUCTURACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,257,'EC-SUPERCIAS','Egresos','520126',223,'VALOR NETO DE REALIZACIÓN DE INVENTARIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,258,'EC-SUPERCIAS','Egresos','520128',223,'OTROS GASTOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,259,'EC-SUPERCIAS','Egresos','5202',222,'GASTOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,260,'EC-SUPERCIAS','Egresos','520201',259,'SUELDOS, SALARIOS Y DEMÁS REMUNERACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,261,'EC-SUPERCIAS','Egresos','520202',259,'APORTES A LA SEGURIDAD SOCIAL (incluido fondo de reserva)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,262,'EC-SUPERCIAS','Egresos','520203',259,'BENEFICIOS SOCIALES E INDEMNIZACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,263,'EC-SUPERCIAS','Egresos','520204',259,'GASTO PLANES DE BENEFICIOS A EMPLEADOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,264,'EC-SUPERCIAS','Egresos','520205',259,'HONORARIOS, COMISIONES Y DIETAS A PERSONAS NATURALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,265,'EC-SUPERCIAS','Egresos','520206',259,'REMUNERACIONES A OTROS TRABAJADORES AUTÓNOMOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,266,'EC-SUPERCIAS','Egresos','520207',259,'HONORARIOS A EXTRANJEROS POR SERVICIOS OCASIONALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,267,'EC-SUPERCIAS','Egresos','520208',259,'MANTENIMIENTO Y REPARACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,268,'EC-SUPERCIAS','Egresos','520209',259,'ARRENDAMIENTO OPERATIVO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,269,'EC-SUPERCIAS','Egresos','520210',259,'COMISIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,270,'EC-SUPERCIAS','Egresos','520212',259,'COMBUSTIBLES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,271,'EC-SUPERCIAS','Egresos','520213',259,'LUBRICANTES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,272,'EC-SUPERCIAS','Egresos','520214',259,'SEGUROS Y REASEGUROS (primas y cesiones)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,273,'EC-SUPERCIAS','Egresos','520215',259,'TRANSPORTE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,274,'EC-SUPERCIAS','Egresos','520216',259,'GASTOS DE GESTIÓN (agasajos a accionistas, trabajadores y clientes)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,275,'EC-SUPERCIAS','Egresos','520217',259,'GASTOS DE VIAJE',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,276,'EC-SUPERCIAS','Egresos','520218',259,'AGUA, ENERGÍA, LUZ Y TELECOMUNICACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,277,'EC-SUPERCIAS','Egresos','520219',259,'NOTARIOS Y REGISTRADORES DE LA PROPIEDAD O MERCANTILES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,278,'EC-SUPERCIAS','Egresos','520220',259,'IMPUESTOS, CONTRIBUCIONES Y OTROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,279,'EC-SUPERCIAS','Egresos','520221',259,'DEPRECIACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,280,'EC-SUPERCIAS','Egresos','52022101',279,'PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,281,'EC-SUPERCIAS','Egresos','52022102',279,'PROPIEDADES DE INVERSIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,282,'EC-SUPERCIAS','Egresos','520222',259,'AMORTIZACIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,283,'EC-SUPERCIAS','Egresos','52022201',282,'INTANGIBLES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,284,'EC-SUPERCIAS','Egresos','52022202',282,'OTROS ACTIVOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,285,'EC-SUPERCIAS','Egresos','520223',259,'GASTO DETERIORO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,286,'EC-SUPERCIAS','Egresos','52022301',285,'PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,287,'EC-SUPERCIAS','Egresos','52022302',285,'INVENTARIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,288,'EC-SUPERCIAS','Egresos','52022303',285,'INSTRUMENTOS FINANCIEROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,289,'EC-SUPERCIAS','Egresos','52022304',285,'INTANGIBLES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,290,'EC-SUPERCIAS','Egresos','52022305',285,'CUENTAS POR COBRAR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,291,'EC-SUPERCIAS','Egresos','52022306',285,'OTROS ACTIVOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,292,'EC-SUPERCIAS','Egresos','520224',259,'GASTOS POR CANTIDADES ANORMALES DE UTILIZACIÓN EN EL PROCESO DE PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,293,'EC-SUPERCIAS','Egresos','52022401',292,'MANO DE OBRA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,294,'EC-SUPERCIAS','Egresos','52022402',292,'MATERIALES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,295,'EC-SUPERCIAS','Egresos','52022403',292,'COSTOS DE PRODUCCIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,296,'EC-SUPERCIAS','Egresos','520225',259,'GASTO POR REESTRUCTURACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,297,'EC-SUPERCIAS','Egresos','520226',259,'VALOR NETO DE REALIZACIÓN DE INVENTARIOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,298,'EC-SUPERCIAS','Egresos','520227',259,'GASTO IMPUESTO A LA RENTA (ACTIVOS Y PASIVOS DIFERIDOS)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,299,'EC-SUPERCIAS','Egresos','520228',259,'OTROS GASTOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,300,'EC-SUPERCIAS','Egresos','5203',222,'GASTOS FINANCIEROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,301,'EC-SUPERCIAS','Egresos','520301',300,'INTERESES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,302,'EC-SUPERCIAS','Egresos','520302',300,'COMISIONES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,303,'EC-SUPERCIAS','Egresos','520303',300,'GASTOS DE FINANCIAMIENTO DE ACTIVOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,304,'EC-SUPERCIAS','Egresos','520304',300,'DIFERENCIA EN CAMBIO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,305,'EC-SUPERCIAS','Egresos','520305',300,'OTROS GASTOS FINANCIEROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,306,'EC-SUPERCIAS','Egresos','5204',222,'OTROS GASTOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,307,'EC-SUPERCIAS','Egresos','520401',306,'PERDIDA EN INVERSIONES EN ASOCIADAS / SUBSIDIARIAS Y OTRAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,308,'EC-SUPERCIAS','Egresos','520402',306,'OTROS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,309,'EC-SUPERCIAS','Orden','60',0,'GANANCIA (PÉRDIDA) ANTES DE 15% A TRABAJADORES E IMPUESTO A LA RENTA DE OPERACIONES CONTINUADAS --> Subtotal B (A + 43 - 52)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,310,'EC-SUPERCIAS','Orden','61',0,'15% PARTICIPACIÓN TRABAJADORES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,311,'EC-SUPERCIAS','Orden','62',0,'GANANCIA (PÉRDIDA) ANTES DE IMPUESTOS --> Subtotal C (B - 61)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,312,'EC-SUPERCIAS','Orden','63',0,'IMPUESTO A LA RENTA CAUSADO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,313,'EC-SUPERCIAS','Orden','64',0,'GANANCIA (PÉRDIDA) DE OPERACIONES CONTINUADAS ANTES DEL IMPUESTO DIFERIDO --> Subtotal D (C - 63)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,314,'EC-SUPERCIAS','Orden','65',0,'(-) GASTO POR IMPUESTO DIFERIDO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,315,'EC-SUPERCIAS','Orden','66',0,'(+) INGRESO POR IMPUESTO DIFERIDO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,316,'EC-SUPERCIAS','Orden','67',0,'GANANCIA (PÉRDIDA) DE OPERACIONES CONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,317,'EC-SUPERCIAS','Orden','71',0,'INGRESOS POR OPERACIONES DISCONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,318,'EC-SUPERCIAS','Orden','72',0,'GASTOS POR OPERACIONES DISCONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,319,'EC-SUPERCIAS','Orden','73',0,'GANANCIA (PÉRDIDA) ANTES DE 15% A TRABAJADORES E IMPUESTO A LA RENTA DE OPERACIONES DISCONTINUADAS --> Subtotal E (71 - 72)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,320,'EC-SUPERCIAS','Orden','74',0,'15% PARTICIPACIÓN TRABAJADORES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,321,'EC-SUPERCIAS','Orden','75',0,'GANANCIA (PÉRDIDA) ANTES DE IMPUESTOS DE OPERACIONES DISCONTINUADAS --> Subtotal F (E - 74)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,322,'EC-SUPERCIAS','Orden','76',0,'IMPUESTO A LA RENTA CAUSADO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,323,'EC-SUPERCIAS','Orden','77',0,'GANANCIA (PÉRDIDA) DE OPERACIONES DISCONTINUADAS --> Subtotal G (F - 76)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,324,'EC-SUPERCIAS','Orden','79',0,'GANANCIA (PÉRDIDA) NETA DEL PERIODO --> Subtotal H (D + G)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,325,'EC-SUPERCIAS','Orden','7901',324,'PROPIETARIOS DE LA CONTROLADORA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,326,'EC-SUPERCIAS','Orden','7902',324,'PARTICIPACIÓN ATRIBUIBLE A LA NO CONTROLADORA (informativo)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,327,'EC-SUPERCIAS','Orden','81',0,'COMPONENTES DEL OTRO RESULTADO INTEGRAL',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,328,'EC-SUPERCIAS','Orden','8101',327,'DIFERENCIA DE CAMBIO POR CONVERSIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,329,'EC-SUPERCIAS','Orden','8102',327,'VALUACIÓN DE ACTIVOS FINANCIEROS DISPONIBLES PARA LA VENTA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,330,'EC-SUPERCIAS','Orden','8103',327,'GANANCIAS POR REVALUACIÓN DE PROPIEDADES, PLANTA Y EQUIPO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,331,'EC-SUPERCIAS','Orden','8104',327,'GANANCIAS (PÉRDIDAS) ACTUARIALES POR PLANES DE BENEFICIOS DEFINIDOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,332,'EC-SUPERCIAS','Orden','8105',327,'REVERSIÓN DEL DETERIORO (PÉRDIDA POR DETERIORO) DE UN ACTIVO REVALUADO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,333,'EC-SUPERCIAS','Orden','8106',327,'PARTICIPACIÓN DE OTRO RESULTADO INTEGRAL DE ASOCIADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,334,'EC-SUPERCIAS','Orden','8107',327,'IMPUESTO SOBRE LAS GANACIAS RELATIVO A OTRO RESULTADO INTEGRAL',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,335,'EC-SUPERCIAS','Orden','8108',327,'OTROS (DETALLAR EN NOTAS)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,336,'EC-SUPERCIAS','Orden','82',0,'RESULTADO INTEGRAL TOTAL DEL AÑO --> Subtotal I (H + 81)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,337,'EC-SUPERCIAS','Orden','8201',336,'PROPIETARIOS DE LA CONTROLADORA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,338,'EC-SUPERCIAS','Orden','8202',336,'PARTICIPACIÓN NO CONTROLADORA (informativo)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,339,'EC-SUPERCIAS','Orden','90',0,'GANANCIA POR ACCIÓN (SOLO EMPRESAS QUE COTIZAN EN BOLSA)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,340,'EC-SUPERCIAS','Orden','9001',339,'GANANCIA POR ACCIÓN BÁSICA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,341,'EC-SUPERCIAS','Orden','900101',340,'GANANCIA POR ACCIÓN BÁSICA EN OPERACIONES CONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,342,'EC-SUPERCIAS','Orden','900102',340,'GANANCIA POR ACCIÓN BÁSICA EN OPERACIONES DISCONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,343,'EC-SUPERCIAS','Orden','9002',339,'GANANCIA POR ACCIÓN DILUÍDA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,344,'EC-SUPERCIAS','Orden','900201',343,'GANANCIA POR ACCIÓN DILUÍDA EN OPERACIONES CONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,345,'EC-SUPERCIAS','Orden','900202',343,'GANANCIA POR ACCIÓN DILUÍDA EN OPERACIONES DISCONTINUADAS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,346,'EC-SUPERCIAS','Orden','91',0,'UTILIDAD A REINVERTIR (INFORMATIVO)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,347,'EC-SUPERCIAS','Orden','95',0,'INCREMENTO NETO (DISMINUCIÓN) EN EL EFECTIVO Y EQUIVALENTES AL EFECTIVO, ANTES DEL EFECTO DE LOS CAMBIOS EN LA TASA DE CAMBIO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,348,'EC-SUPERCIAS','Orden','9501',347,'FLUJOS DE EFECTIVO PROCEDENTES DE (UTILIZADOS EN) ACTIVIDADES DE OPERACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,349,'EC-SUPERCIAS','Orden','950101',348,'CLASES DE COBROS POR ACTIVIDADES DE OPERACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,350,'EC-SUPERCIAS','Orden','95010101',349,'Cobros procedentes de las ventas de bienes y prestación de servicios',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,351,'EC-SUPERCIAS','Orden','95010102',349,'Cobros procedentes de regalías, cuotas, comisiones y otros ingresos de actividades ordinarias',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,352,'EC-SUPERCIAS','Orden','95010103',349,'Cobros procedentes de contratos mantenidos con propósitos de intermediación o para negociar',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,353,'EC-SUPERCIAS','Orden','95010104',349,'Cobros procedentes de primas y prestaciones, anualidades y otros beneficios de pólizas suscritas',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,354,'EC-SUPERCIAS','Orden','95010105',349,'Otros cobros por actividades de operación',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,355,'EC-SUPERCIAS','Orden','950102',348,'CLASES DE PAGOS POR ACTIVIDADES DE OPERACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,356,'EC-SUPERCIAS','Orden','95010201',355,'Pagos a proveedores por el suministro de bienes y servicios',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,357,'EC-SUPERCIAS','Orden','95010202',355,'Pagos procedentes de contratos mantenidos para intermediación o para negociar',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,358,'EC-SUPERCIAS','Orden','95010203',355,'Pagos a y por cuenta de los empleados',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,359,'EC-SUPERCIAS','Orden','95010204',355,'Pagos por primas y prestaciones, anualidades y otras obligaciones derivadas de las pólizas suscritas',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,360,'EC-SUPERCIAS','Orden','95010205',355,'Otros pagos por actividades de operación',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,361,'EC-SUPERCIAS','Orden','950103',348,'Dividendos pagados',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,362,'EC-SUPERCIAS','Orden','950104',348,'Dividendos recibidos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,363,'EC-SUPERCIAS','Orden','950105',348,'Intereses pagados',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,364,'EC-SUPERCIAS','Orden','950106',348,'Intereses recibidos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,365,'EC-SUPERCIAS','Orden','950107',348,'Impuestos a las ganancias pagados',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,366,'EC-SUPERCIAS','Orden','950108',348,'Otras entradas (salidas) de efectivo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,367,'EC-SUPERCIAS','Orden','9502',347,'FLUJOS DE EFECTIVOS PROCEDENTES DE (UTILIZADOS EN) ACTIVIDADES DE INVERSIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,368,'EC-SUPERCIAS','Orden','950201',367,'Efectivo procedentes de la venta de acciones en subsidiarias u otros negocios',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,369,'EC-SUPERCIAS','Orden','950202',367,'Efectivo utilizado para adquirir acciones en subsidiarias u otros negocios para tener el control',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,370,'EC-SUPERCIAS','Orden','950203',367,'Efectivo utilizado en la compra de participaciones no controladoras',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,371,'EC-SUPERCIAS','Orden','950204',367,'Otros cobros por la venta de acciones o instrumentos de deuda de otras entidades',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,372,'EC-SUPERCIAS','Orden','950205',367,'Otros pagos para adquirir acciones o instrumentos de deuda de otras entidades',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,373,'EC-SUPERCIAS','Orden','950206',367,'Otros cobros por la venta de participaciones en negocios conjuntos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,374,'EC-SUPERCIAS','Orden','950207',367,'Otros pagos para adquirir participaciones en negocios conjuntos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,375,'EC-SUPERCIAS','Orden','950208',367,'Importes procedentes por la venta de propiedades, planta y equipo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,376,'EC-SUPERCIAS','Orden','950209',367,'Adquisiciones de propiedades, planta y equipo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,377,'EC-SUPERCIAS','Orden','950210',367,'Importes procedentes de ventas de activos intangibles',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,378,'EC-SUPERCIAS','Orden','950211',367,'Compras de activos intangibles',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,379,'EC-SUPERCIAS','Orden','950212',367,'Importes procedentes de otros activos a largo plazo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,380,'EC-SUPERCIAS','Orden','950213',367,'Compras de otros activos a largo plazo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,381,'EC-SUPERCIAS','Orden','950214',367,'Importes procedentes de subvenciones del gobierno',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,382,'EC-SUPERCIAS','Orden','950215',367,'Anticipos de efectivo efectuados a terceros',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,383,'EC-SUPERCIAS','Orden','950216',367,'Cobros procedentes del reembolso de anticipos y préstamos concedidos a terceros',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,384,'EC-SUPERCIAS','Orden','950217',367,'Pagos derivados de contratos de futuro, a término, de opciones y de permuta financiera',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,385,'EC-SUPERCIAS','Orden','950218',367,'Cobros procedentes de contratos de futuro, a término, de opciones y de permuta financiera',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,386,'EC-SUPERCIAS','Orden','950219',367,'Dividendos recibidos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,387,'EC-SUPERCIAS','Orden','950220',367,'Intereses recibidos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,388,'EC-SUPERCIAS','Orden','950221',367,'Otras entradas (salidas) de efectivo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,389,'EC-SUPERCIAS','Orden','9503',347,'FLUJOS DE EFECTIVO PROCEDENTES DE (UTILIZADOS EN) ACTIVIDADES DE FINANCIACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,390,'EC-SUPERCIAS','Orden','950301',389,'Aporte en efectivo por aumento de capital',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,391,'EC-SUPERCIAS','Orden','950302',389,'Financiamiento por emisión de títulos valores',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,392,'EC-SUPERCIAS','Orden','950303',389,'Pagos por adquirir o rescatar las acciones de la entidad',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,393,'EC-SUPERCIAS','Orden','950304',389,'Financiación por préstamos a largo plazo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,394,'EC-SUPERCIAS','Orden','950305',389,'Pagos de préstamos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,395,'EC-SUPERCIAS','Orden','950306',389,'Pagos de pasivos por arrendamientos financieros',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,396,'EC-SUPERCIAS','Orden','950307',389,'Importes procedentes de subvenciones del gobierno',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,397,'EC-SUPERCIAS','Orden','950308',389,'Dividendos pagados',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,398,'EC-SUPERCIAS','Orden','950309',389,'Intereses recibidos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,399,'EC-SUPERCIAS','Orden','950310',389,'Otras entradas (salidas) de efectivo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,400,'EC-SUPERCIAS','Orden','9504',347,'EFECTOS DE LA VARIACIÓN EN LA TASA DE CAMBIO SOBRE EL EFECTIVO Y EQUIVALENTES AL EFECTIVO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,401,'EC-SUPERCIAS','Orden','950401',400,'Efectos de la variación en la tasa de cambio sobre el efectivo y equivalentes de efectivo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,402,'EC-SUPERCIAS','Orden','9505',347,'INCREMENTO (DISMINUCIÓN) NETO DE EFECTIVO Y EQUIVALENTES AL EFECTIVO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,403,'EC-SUPERCIAS','Orden','9506',347,'EFECTIVO Y EQUIVALENTES AL EFECTIVO AL PRINCIPIO DEL PERIODO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,404,'EC-SUPERCIAS','Orden','9507',347,'EFECTIVO Y EQUIVALENTES AL EFECTIVO AL FINAL DEL PERIODO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,405,'EC-SUPERCIAS','Orden','96',0,'GANANCIA (PÉRDIDA) ANTES DE 15% A TRABAJADORES E IMPUESTO A LA RENTA',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,406,'EC-SUPERCIAS','Orden','97',0,'AJUSTE POR PARTIDAS DISTINTAS AL EFECTIVO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,407,'EC-SUPERCIAS','Orden','9701',406,'Ajustes por gasto de depreciación y amortización',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,408,'EC-SUPERCIAS','Orden','9702',406,'Ajustes por gastos por deterioro (reversiones por deterioro) reconocidas en los resultados del periodo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,409,'EC-SUPERCIAS','Orden','9703',406,'Pérdida (ganancia) de moneda extranjera no realizada',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,410,'EC-SUPERCIAS','Orden','9704',406,'Pérdidas en cambio de moneda extranjera',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,411,'EC-SUPERCIAS','Orden','9705',406,'Ajustes por gastos en provisiones',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,412,'EC-SUPERCIAS','Orden','9706',406,'Ajuste por participaciones no controladoras',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,413,'EC-SUPERCIAS','Orden','9707',406,'Ajuste por pagos basados en acciones',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,414,'EC-SUPERCIAS','Orden','9708',406,'Ajustes por ganancias (pérdidas) en valor razonable',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,415,'EC-SUPERCIAS','Orden','9709',406,'Ajustes por gasto por impuesto a la renta',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,416,'EC-SUPERCIAS','Orden','9710',406,'Ajustes por gasto por participación trabajadores',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,417,'EC-SUPERCIAS','Orden','9711',406,'Otros ajustes por partidas distintas al efectivo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,418,'EC-SUPERCIAS','Orden','98',0,'CAMBIOS EN ACTIVOS Y PASIVOS',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,419,'EC-SUPERCIAS','Orden','9801',418,'(Incremento) disminución en cuentas por cobrar clientes',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,420,'EC-SUPERCIAS','Orden','9802',418,'(Incremento) disminución en otras cuentas por cobrar',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,421,'EC-SUPERCIAS','Orden','9803',418,'(Incremento) disminución en anticipos de proveedores',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,422,'EC-SUPERCIAS','Orden','9804',418,'(Incremento) disminución en inventarios',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,423,'EC-SUPERCIAS','Orden','9805',418,'(Incremento) disminución en otros activos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,424,'EC-SUPERCIAS','Orden','9806',418,'Incremento (disminución) en cuentas por pagar comerciales',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,425,'EC-SUPERCIAS','Orden','9807',418,'Incremento (disminución) en otras cuentas por pagar',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,426,'EC-SUPERCIAS','Orden','9808',418,'Incremento (disminución) en beneficios empleados',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,427,'EC-SUPERCIAS','Orden','9809',418,'Incremento (disminución) en anticipos de clientes',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,428,'EC-SUPERCIAS','Orden','9810',418,'Incremento (disminución) en otros pasivos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,429,'EC-SUPERCIAS','Orden','9820',418,'FLUJOS DE EFECTIVO PROCEDENTES DE (UTILIZADOS EN) ACTIVIDADES DE OPERACIÓN',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,430,'EC-SUPERCIAS','Orden','99',0,'SALDO AL FINAL DEL PERÍODO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,431,'EC-SUPERCIAS','Orden','9901',430,'SALDO REEXPRESADO DEL PERIODO INMEDIATO ANTERIOR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,432,'EC-SUPERCIAS','Orden','990101',431,'SALDO DEL PERÍODO INMEDIATO ANTERIOR',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,433,'EC-SUPERCIAS','Orden','990102',431,'CAMBIOS EN POLÍTICAS CONTABLES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,434,'EC-SUPERCIAS','Orden','990103',431,'CORRECCIÓN DE ERRORES',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,435,'EC-SUPERCIAS','Orden','9902',430,'CAMBIOS DEL AÑO EN EL PATRIMONIO',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,436,'EC-SUPERCIAS','Orden','990201',435,'Aumento (disminución) de capital social',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,437,'EC-SUPERCIAS','Orden','990202',435,'Aportes para futuras capitalizaciones',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,438,'EC-SUPERCIAS','Orden','990203',435,'Prima por emisión primaria de acciones',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,439,'EC-SUPERCIAS','Orden','990204',435,'Dividendos',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,440,'EC-SUPERCIAS','Orden','990205',435,'Transferencia de Resultados a otras cuentas patrimoniales',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,441,'EC-SUPERCIAS','Orden','990206',435,'Realización de la Reserva por Valuación de Activos Financieros Disponibles para la venta',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,442,'EC-SUPERCIAS','Orden','990207',435,'Realización de la Reserva por Valuación de Propiedades, planta y equipo',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,443,'EC-SUPERCIAS','Orden','990208',435,'Realización de la Reserva por Valuación de Activos Intangibles',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,444,'EC-SUPERCIAS','Orden','990209',435,'Otros cambios (detallar)',1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,445,'EC-SUPERCIAS','Orden','990210',435,'Resultado Integral Total del Año (Ganancia o pérdida del ejercicio)',1); From b407797ca3d119fb70f361522006ad93741bebe3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 31 Mar 2020 17:45:45 +0200 Subject: [PATCH 028/336] Fix css --- htdocs/bom/tpl/objectline_view.tpl.php | 4 ++-- htdocs/cashdesk/index.php | 2 +- htdocs/core/tpl/objectline_view.tpl.php | 4 ++-- htdocs/expedition/card.php | 2 +- htdocs/reception/card.php | 6 +++--- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/md/style.css.php | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/htdocs/bom/tpl/objectline_view.tpl.php b/htdocs/bom/tpl/objectline_view.tpl.php index ad2c2d3e4c6..1419136a2e8 100644 --- a/htdocs/bom/tpl/objectline_view.tpl.php +++ b/htdocs/bom/tpl/objectline_view.tpl.php @@ -113,7 +113,7 @@ if ($this->status == 0 && ($object_rights->write) && $action != 'selectlines' ) $coldisplay++; if (($line->info_bits & 2) == 2 || ! empty($disableedit)) { } else { - print 'id.'#line_'.$line->id.'">'.img_edit().''; + print 'id.'#line_'.$line->id.'">'.img_edit().''; } print ''; @@ -121,7 +121,7 @@ if ($this->status == 0 && ($object_rights->write) && $action != 'selectlines' ) $coldisplay++; if (($line->fk_prev_id == null) && empty($disableremove)) { //La suppression n'est autorisée que si il n'y a pas de ligne dans une précédente situation - print 'id.'">'; + print 'id.'">'; print img_delete(); print ''; } diff --git a/htdocs/cashdesk/index.php b/htdocs/cashdesk/index.php index fcfe9905bae..2d7d169395a 100644 --- a/htdocs/cashdesk/index.php +++ b/htdocs/cashdesk/index.php @@ -191,7 +191,7 @@ print "\n";
-
+
diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index ee1d85e3b54..d61810c5178 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -311,7 +311,7 @@ if ($this->statut == 0 && ($object_rights->creer) && $action != 'selectlines') { $coldisplay++; if (($line->info_bits & 2) == 2 || !empty($disableedit)) { } else { ?> - id.'#line_'.$line->id; ?>"> + id.'#line_'.$line->id; ?>"> '; } print ''; @@ -319,7 +319,7 @@ if ($this->statut == 0 && ($object_rights->creer) && $action != 'selectlines') { print ''; $coldisplay++; if (($line->fk_prev_id == null) && empty($disableremove)) { //La suppression n'est autorisée que si il n'y a pas de ligne dans une précédente situation - print 'id.'">'; + print 'id.'">'; print img_delete(); print ''; } diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 3c739f7dbd7..3632cbfd52e 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -2436,7 +2436,7 @@ elseif ($id || $ref) { // edit-delete buttons print ''; - print 'id . '">' . img_edit() . ''; + print 'id . '">' . img_edit() . ''; print ''; print ''; print 'id . '">' . img_delete() . ''; diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index 03dc37db114..0bc3839a23d 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -1962,14 +1962,14 @@ elseif ($id || $ref) print '
'; print '
'; } - elseif ($object->statut == 0) + elseif ($object->statut == Reception::STATUS_DRAFT) { // edit-delete buttons print ''; - print 'id.'">'.img_edit().''; + print 'id.'">'.img_edit().''; print ''; print ''; - print 'id.'">'.img_delete().''; + print 'id.'">'.img_delete().''; print ''; // Display lines extrafields diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 35a9234cecc..b0644ad3ff1 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -405,7 +405,7 @@ div#moretabsList, div#moretabsListaction { hr { border: 0; border-top: 1px solid #ccc; } .tabBar hr { margin-top: 20px; margin-bottom: 17px; } -.button, .buttonDelete, input[name="sbmtConnexion"] { +.button:not(.bordertransp), .buttonDelete:not(.bordertransp) { margin-bottom: 0; margin-top: 0; margin-left: 5px; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 8f03e70f460..7b3216e9cf5 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -530,7 +530,7 @@ div#moretabsList, div#moretabsListaction { hr { border: 0; border-top: 1px solid #ccc; } -.button, .buttonDelete, input[name="sbmtConnexion"] { +.button:not(.bordertransp), .buttonDelete:not(.bordertransp) { border-color: #c5c5c5; border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); display: inline-block; From 6f0071bebe8ae3f1c906d690a525ccfb4432129a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 31 Mar 2020 17:54:48 +0200 Subject: [PATCH 029/336] FIX sort on company on member list --- htdocs/adherents/list.php | 4 ++++ htdocs/install/mysql/tables/llx_adherent.sql | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 7497ededc8f..c9b7ee42fcf 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -52,6 +52,7 @@ $search_lastname = GETPOST("search_lastname", 'alpha'); $search_firstname = GETPOST("search_firstname", 'alpha'); $search_gender = GETPOST("search_gender", 'alpha'); $search_civility = GETPOST("search_civility", 'alpha'); +$search_company = GETPOST('search_company', 'alphanohtml'); $search_login = GETPOST("search_login", 'alpha'); $search_address = GETPOST("search_address", 'alpha'); $search_zip = GETPOST("search_zip", 'alpha'); @@ -254,6 +255,7 @@ $sql = "SELECT d.rowid, d.login, d.lastname, d.firstname, d.gender, d.societe as $sql .= " d.civility, d.datefin, d.address, d.zip, d.town, d.state_id, d.country,"; $sql .= " d.email, d.phone, d.phone_perso, d.phone_mobile, d.skype, d.birth, d.public, d.photo,"; $sql .= " d.fk_adherent_type as type_id, d.morphy, d.statut, d.datec as date_creation, d.tms as date_update,"; +$sql .= " s.nom,"; $sql .= " t.libelle as type, t.subscription,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; // Add fields from extrafields @@ -269,6 +271,7 @@ if (is_array($extrafields->attributes[$object->table_element]['label']) && count if (!empty($search_categ) || !empty($catid)) $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_member as cm ON d.rowid = cm.fk_member"; // We need this table joined to the select in order to filter by categ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = d.country)"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as state on (state.rowid = d.state_id)"; +$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on (s.rowid = d.fk_soc)"; $sql .= ", ".MAIN_DB_PREFIX."adherent_type as t"; $sql .= " WHERE d.fk_adherent_type = t.rowid "; if ($catid > 0) $sql .= " AND cm.fk_categorie = ".$db->escape($catid); @@ -289,6 +292,7 @@ if ($search_firstname) $sql .= natural_search("d.firstname", $search_firstname); if ($search_lastname) $sql .= natural_search(array("d.firstname", "d.lastname", "d.societe"), $search_lastname); if ($search_gender != '' && $search_gender != '-1') $sql .= " AND d.gender = '".$search_gender."'"; if ($search_login) $sql .= natural_search("d.login", $search_login); +if ($search_company) $sql .= natural_search("s.nom", $search_company); if ($search_email) $sql .= natural_search("d.email", $search_email); if ($search_town) $sql .= natural_search("d.town", $search_town); if ($search_zip) $sql .= natural_search("d.zip", $search_zip); diff --git a/htdocs/install/mysql/tables/llx_adherent.sql b/htdocs/install/mysql/tables/llx_adherent.sql index cb96ab98164..1917e80c81a 100644 --- a/htdocs/install/mysql/tables/llx_adherent.sql +++ b/htdocs/install/mysql/tables/llx_adherent.sql @@ -39,7 +39,7 @@ create table llx_adherent pass_crypted varchar(128), fk_adherent_type integer NOT NULL, morphy varchar(3) NOT NULL, -- personne morale / personne physique - societe varchar(128), -- company name (should be same lenght than societe.name) + societe varchar(128), -- company name (should be same length than societe.name). No more used. fk_soc integer NULL, -- Link to third party linked to member address text, zip varchar(30), From fa32618fe97c1aa16516563807daeb661ca0e1de Mon Sep 17 00:00:00 2001 From: Je2fb <46494485+Je2fb@users.noreply.github.com> Date: Tue, 31 Mar 2020 18:58:59 +0200 Subject: [PATCH 030/336] Update card.php If rate change is modify, the currency price is taken in place of the price from the main currency --- htdocs/fourn/facture/card.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 0f724ef534e..c60cda07cf7 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -966,11 +966,23 @@ if (empty($reshook)) // FIXME Missing special_code into addline and updateline methods $object->special_code = $lines[$i]->special_code; + + // FIXME If currency different from main currency, take multicurrency price + if ($object->multicurrency_code != $conf->currency || $object->multicurrency_tx != 1) + { + $pu = 0; + $pu_currency = $lines[$i]->multicurrency_subprice; + } + else + { + $pu = $lines[$i]->subprice; + $pu_currency = 0; + } // FIXME Missing $lines[$i]->ref_supplier and $lines[$i]->label into addline and updateline methods. They are filled when coming from order for example. $result = $object->addline( $desc, - $lines[$i]->subprice, + $pu, $lines[$i]->tva_tx, $lines[$i]->localtax1_tx, $lines[$i]->localtax2_tx, @@ -988,7 +1000,7 @@ if (empty($reshook)) $lines[$i]->array_options, $lines[$i]->fk_unit, $lines[$i]->id, - 0, + $pu_currency, $lines[$i]->ref_supplier, $lines[$i]->special_code ); From a0c2bc374345578d0d25da519393875ce8a65a04 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Tue, 31 Mar 2020 20:52:15 +0200 Subject: [PATCH 031/336] Update api_setup.class.php --- htdocs/api/class/api_setup.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 34ad9badc69..15493159110 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -407,7 +407,7 @@ class Setup extends DolibarrApi * * @param object $object Object with label to translate * @param string $lang Code of the language the name of the object must be translated to - * @param string $modprefix Prefix for translation + * @param string $prefix Prefix for translation * * @return void */ From 6aa65f1a0278c9af8ded1276bc82c3fd0cf2998c Mon Sep 17 00:00:00 2001 From: Christian Foellmann Date: Wed, 1 Apr 2020 09:57:51 +0200 Subject: [PATCH 032/336] change batches max length to 128 characters on sql migration --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 4c1b45fb2d2..713dc91a32f 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -206,3 +206,8 @@ ALTER TABLE llx_societe_remise_except ADD COLUMN vat_src_code varchar(10) DEFAUL ALTER TABLE llx_blockedlog MODIFY COLUMN object_data mediumtext; ALTER TABLE llx_blockedlog ADD COLUMN object_version varchar(32) DEFAULT ''; +ALTER TABLE llx_product_lot MODIFY batch varchar(128); +ALTER TABLE llx_product_batch MODIFY batch varchar(128); +ALTER TABLE llx_commande_fournisseur_dispatch MODIFY batch varchar(128); +ALTER TABLE llx_stock_mouvement MODIFY batch varchar(128); +ALTER TABLE llx_mrp_production MODIFY batch varchar(128); From cae0f210a2b4e081ada6b8c836b163c650d468ce Mon Sep 17 00:00:00 2001 From: jribal Date: Wed, 1 Apr 2020 11:09:40 +0100 Subject: [PATCH 033/336] On _checkAccessToResource: category -> categorie --- htdocs/categories/class/api_categories.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/categories/class/api_categories.class.php b/htdocs/categories/class/api_categories.class.php index 868d149691a..d6eff682908 100644 --- a/htdocs/categories/class/api_categories.class.php +++ b/htdocs/categories/class/api_categories.class.php @@ -231,7 +231,7 @@ class Categories extends DolibarrApi throw new RestException(404, 'category not found'); } - if (!DolibarrApi::_checkAccessToResource('category', $this->category->id)) { + if (!DolibarrApi::_checkAccessToResource('categorie', $this->category->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } @@ -266,7 +266,7 @@ class Categories extends DolibarrApi throw new RestException(404, 'category not found'); } - if (!DolibarrApi::_checkAccessToResource('category', $this->category->id)) { + if (!DolibarrApi::_checkAccessToResource('categorie', $this->category->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } @@ -755,7 +755,7 @@ class Categories extends DolibarrApi throw new RestException(404, 'category not found'); } - if (!DolibarrApi::_checkAccessToResource('category', $this->category->id)) { + if (!DolibarrApi::_checkAccessToResource('categorie', $this->category->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } From 33d2b61c191ba94c691871cc502bb57c1a11c579 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 1 Apr 2020 16:21:03 +0200 Subject: [PATCH 034/336] Work on extralanguages --- htdocs/core/class/commonobject.class.php | 159 ++++++++++++++++++++++- htdocs/core/class/html.form.class.php | 4 +- htdocs/societe/card.php | 13 +- htdocs/societe/class/societe.class.php | 9 ++ 4 files changed, 174 insertions(+), 11 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index e3e072f34a8..7553594bb82 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5054,8 +5054,9 @@ abstract class CommonObject * This method is NOT called by method fetch of objects but must be called separately. * * @return int <0 if error, 0 if no values of alternative languages to find nor found, 1 if a value was found and loaded + * @see fetch_optionnals() */ - public function fetchValueForAlternateLanguages() + public function fetchValuesForExtraLanguages() { // To avoid SQL errors. Probably not the better solution though if (!$this->element) { @@ -5126,7 +5127,7 @@ abstract class CommonObject * @param string $onlykey Only the following key is filled. When we make update of only one language field ($action = 'update_languages'), calling page must set this to avoid to have other languages being reset. * @return int 1 if array_options set, 0 if no value, -1 if error (field required missing for example) */ - public function setValuesForAlternateLanguages($onlykey = '') + public function setValuesForExtraLanguages($onlykey = '') { global $_POST, $langs; @@ -5214,6 +5215,7 @@ abstract class CommonObject * @param int $rowid Id of line. Use the id of object if not defined. Deprecated. Function must be called without parameters. * @param array $optionsArray Array resulting of call of extrafields->fetch_name_optionals_label(). Deprecated. Function must be called without parameters. * @return int <0 if error, 0 if no values of extrafield to find nor found, 1 if an attribute is found and value loaded + * @see fetchValuesForExtraLanguages() */ public function fetch_optionals($rowid = null, $optionsArray = null) { @@ -5357,7 +5359,7 @@ abstract class CommonObject * @param string $trigger If defined, call also the trigger (for example COMPANY_MODIFY) * @param User $userused Object user * @return int -1=error, O=did nothing, 1=OK - * @see updateExtraField(), setValueFrom() + * @see insertExtraLanguages(), updateExtraField(), setValueFrom() */ public function insertExtraFields($trigger = '', $userused = null) { @@ -5635,6 +5637,130 @@ abstract class CommonObject else return 0; } + /** + * Add/Update all extra fields values for the current object. + * Data to describe values to insert/update are stored into $this->array_options=array('options_codeforfield1'=>'valueforfield1', 'options_codeforfield2'=>'valueforfield2', ...) + * This function delete record with all extrafields and insert them again from the array $this->array_options. + * + * @param string $trigger If defined, call also the trigger (for example COMPANY_MODIFY) + * @param User $userused Object user + * @return int -1=error, O=did nothing, 1=OK + * @see insertExtraFields(), updateExtraField(), setValueFrom() + */ + public function insertExtraLanguages($trigger = '', $userused = null) + { + global $conf, $langs, $user; + + if (empty($userused)) $userused = $user; + + $error = 0; + + if (!empty($conf->global->MAIN_EXTRALANGUAGES_DISABLED)) return 0; // For avoid conflicts if trigger used + + if (is_array($this->array_languages)) + { + $new_array_languages = $this->array_languages; + + foreach ($new_array_languages as $key => $value) + { + $attributeKey = $key; + $attributeType = $this->fields[$attributeKey]['type']; + $attributeLabel = $this->fields[$attributeKey]['label']; + + //dol_syslog("attributeLabel=".$attributeLabel, LOG_DEBUG); + //dol_syslog("attributeType=".$attributeType, LOG_DEBUG); + + switch ($attributeType) + { + case 'int': + if (!is_numeric($value) && $value != '') + { + $this->errors[] = $langs->trans("ExtraLanguageHasWrongValue", $attributeLabel); + return -1; + } + elseif ($value == '') + { + $new_array_languages[$key] = null; + } + break; + case 'double': + $value = price2num($value); + if (!is_numeric($value) && $value != '') + { + dol_syslog($langs->trans("ExtraLanguageHasWrongValue")." sur ".$attributeLabel."(".$value."is not '".$attributeType."')", LOG_DEBUG); + $this->errors[] = $langs->trans("ExtraLanguageHasWrongValue", $attributeLabel); + return -1; + } + elseif ($value == '') + { + $new_array_languages[$key] = null; + } + //dol_syslog("double value"." sur ".$attributeLabel."(".$value." is '".$attributeType."')", LOG_DEBUG); + $new_array_languages[$key] = $value; + break; + /*case 'select': // Not required, we chosed value='0' for undefined values + if ($value=='-1') + { + $this->array_options[$key] = null; + } + break;*/ + } + } + + $this->db->begin(); + + $table_element = $this->table_element; + if ($table_element == 'categorie') $table_element = 'categories'; // For compatibility + + dol_syslog(get_class($this)."::insertExtraLanguages delete then insert", LOG_DEBUG); + + foreach($new_array_languages as $key => $langcodearray) { // $key = 'name', 'town', ... + foreach($langcodearray as $langcode => $value) { + + $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."object_lang"; + $sql_del .= " WHERE fk_object = ".$this->id." AND property = '".$this->db->escape($key)."' AND type_object = '".$this->db->escape($table_element)."'"; + $sql_del .= " AND lang = '".$this->db->escape($langcode)."'"; + $this->db->query($sql_del); + + if ($value !== '') { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."object_lang (fk_object, property, type_object, lang, value"; + $sql .= ") VALUES (".$this->id.", '".$this->db->escape($key)."', '".$this->db->escape($table_element)."', '".$this->db->escape($langcode)."', '".$this->db->escape($value)."'"; + $sql .= ")"; + + $resql = $this->db->query($sql); + if (!$resql) + { + $this->error = $this->db->lasterror(); + $error++; + break; + } + } + } + } + + if (!$error && $trigger) + { + // Call trigger + $this->context = array('extralanguagesaddupdate'=>1); + $result = $this->call_trigger($trigger, $userused); + if ($result < 0) $error++; + // End call trigger + } + + if ($error) + { + $this->db->rollback(); + return -1; + } + else + { + $this->db->commit(); + return 1; + } + } + else return 0; + } + /** * Update an extra field value for the current object. * Data to describe values to update are stored into $this->array_options=array('options_codeforfield1'=>'valueforfield1', 'options_codeforfield2'=>'valueforfield2', ...) @@ -5643,7 +5769,7 @@ abstract class CommonObject * @param string $trigger If defined, call also the trigger (for example COMPANY_MODIFY) * @param User $userused Object user * @return int -1=error, O=did nothing, 1=OK - * @see setValueFrom(), insertExtraFields() + * @see updateExtraLanguages(), setValueFrom(), insertExtraFields() */ public function updateExtraField($key, $trigger = null, $userused = null) { @@ -5661,7 +5787,7 @@ abstract class CommonObject $langs->load('admin'); require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; $extrafields = new ExtraFields($this->db); - $target_extrafields = $extrafields->fetch_name_optionals_label($this->table_element); + $extrafields->fetch_name_optionals_label($this->table_element); $value = $this->array_options["options_".$key]; @@ -5765,6 +5891,29 @@ abstract class CommonObject else return 0; } + /** + * Update an extra language value for the current object. + * Data to describe values to update are stored into $this->array_options=array('options_codeforfield1'=>'valueforfield1', 'options_codeforfield2'=>'valueforfield2', ...) + * + * @param string $key Key of the extrafield (without starting 'options_') + * @param string $trigger If defined, call also the trigger (for example COMPANY_MODIFY) + * @param User $userused Object user + * @return int -1=error, O=did nothing, 1=OK + * @see updateExtraFields(), insertExtraLanguages() + */ + public function updateExtraLanguages($key, $trigger = null, $userused = null) + { + global $conf, $langs, $user; + + if (empty($userused)) $userused = $user; + + $error = 0; + + if (!empty($conf->global->MAIN_EXTRALANGUAGES_DISABLED)) return 0; // For avoid conflicts if trigger used + + return 0; + } + /** * Return HTML string to put an input field into a page diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 9f8e02e4948..696d1a9aa7d 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -345,12 +345,12 @@ class Form $valuetoshow = GETPOSTISSET('field-'.$object->element."-".$fieldname."-".$langcode) ? GETPOST('field-'.$object->element.'-'.$fieldname."-".$langcode, $check) : ''; if (empty($valuetoshow)) { - $object->fetchValueForAlternateLanguages(); + $object->fetchValuesForExtraLanguages(); //var_dump($object->array_languages); $valuetoshow = $object->array_languages[$fieldname][$langcode]; } - $s=picto_from_langcode($conf->global->PDF_USE_ALSO_LANGUAGE_CODE, 'class="pictoforlang"'); + $s=picto_from_langcode($conf->global->PDF_USE_ALSO_LANGUAGE_CODE, 'class="pictoforlang paddingright"'); $result .= $s; if ($typeofdata == 'textarea') { $result .= ''; + print ''; + print $form->widgetForTranslation("address", $object, $permissiontoadd, 'textarea', 'alphanohtml', 'quatrevingtpercent'); + print ''; // Zip / Town print ''.$form->editfieldkey('Zip', 'zipcode', '', $object, 0).''; print $formcompany->select_ziptown($object->zip, 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 0, '', 'maxwidth50onsmartphone'); print ''.$form->editfieldkey('Town', 'town', '', $object, 0).''; print $formcompany->select_ziptown($object->town, 'town', array('zipcode', 'selectcountry_id', 'state_id')); + print $form->widgetForTranslation("town", $object, $permissiontoadd, 'string', 'alphanohtml', 'maxwidth100 quatrevingtpercent'); print ''; // Country print ''.$form->editfieldkey('Country', 'selectcounty_id', '', $object, 0).''; - print $form->select_country((GETPOST('country_id') != '' ?GETPOST('country_id') : $object->country_id), 'country_id'); + print $form->select_country((GETPOSTISSET('country_id') ? GETPOST('country_id') : $object->country_id), 'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print ''; diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index e6e9e42aa75..b6193d12b6e 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1403,6 +1403,15 @@ class Societe extends CommonObject $error++; } } + // Actions on extra languages + if (!$error && empty($conf->global->MAIN_EXTRALANGUAGES_DISABLED)) // For avoid conflicts if trigger used + { + $result = $this->insertExtraLanguages(); + if ($result < 0) + { + $error++; + } + } if (!$error && $call_trigger) { From 4727800206ffd169adaf9a80622ab46476b3d512 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 1 Apr 2020 16:51:45 +0200 Subject: [PATCH 035/336] Can show technical ID of any object in banner. --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 1b16f2a2ca5..2b1d2695ed4 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1660,7 +1660,7 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi $morehtmlref .= ''; } } - if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && in_array($object->element, array('societe', 'contact', 'member', 'product'))) + if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && ($conf->global->MAIN_SHOW_TECHNICAL_ID == '1' || preg_match('/'.preg_quote($object->element, '/').'/i', $conf->global->MAIN_SHOW_TECHNICAL_ID)) && ! empty($object->id)) { $morehtmlref .= '
'; $morehtmlref .= $langs->trans("TechnicalID").': '.$object->id; From f52af233963c6438d1179e791fd7e0efa90eaf14 Mon Sep 17 00:00:00 2001 From: Florian Mortgat Date: Wed, 1 Apr 2020 17:09:01 +0200 Subject: [PATCH 036/336] NEW: "author" column in the client/supplier invoice lists --- htdocs/compta/facture/list.php | 31 ++++++++++++++++++++++++++++++- htdocs/fourn/facture/list.php | 31 ++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index cecbacdc209..93d47ae584f 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -87,6 +87,7 @@ $search_montant_vat = GETPOST('search_montant_vat', 'alpha'); $search_montant_localtax1 = GETPOST('search_montant_localtax1', 'alpha'); $search_montant_localtax2 = GETPOST('search_montant_localtax2', 'alpha'); $search_montant_ttc = GETPOST('search_montant_ttc', 'alpha'); +$search_login=GETPOST('search_login', 'alpha'); $search_multicurrency_code = GETPOST('search_multicurrency_code', 'alpha'); $search_multicurrency_tx = GETPOST('search_multicurrency_tx', 'alpha'); $search_multicurrency_montant_ht = GETPOST('search_multicurrency_montant_ht', 'alpha'); @@ -186,6 +187,7 @@ $arrayfields = array( 'f.total_localtax1'=>array('label'=>$langs->transcountry("AmountLT1", $mysoc->country_code), 'checked'=>0, 'enabled'=>($mysoc->localtax1_assuj == "1"), 'position'=>110), 'f.total_localtax2'=>array('label'=>$langs->transcountry("AmountLT2", $mysoc->country_code), 'checked'=>0, 'enabled'=>($mysoc->localtax2_assuj == "1"), 'position'=>120), 'f.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0, 'position'=>130), + 'u.login'=>array('label'=>"Author", 'checked'=>1, 'position'=>135), 'dynamount_payed'=>array('label'=>"Received", 'checked'=>0, 'position'=>140), 'rtp'=>array('label'=>"Rest", 'checked'=>0, 'position'=>150), // Not enabled by default because slow 'f.multicurrency_code'=>array('label'=>'Currency', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>160), @@ -248,6 +250,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter', $search_montant_localtax1 = ''; $search_montant_localtax2 = ''; $search_montant_ttc = ''; + $search_login=''; $search_multicurrency_code = ''; $search_multicurrency_tx = ''; $search_multicurrency_montant_ht = ''; @@ -400,6 +403,7 @@ $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; $sql .= ' f.rowid as id, f.ref, f.ref_client, f.type, f.note_private, f.note_public, f.increment, f.fk_mode_reglement, f.fk_cond_reglement, f.total as total_ht, f.tva as total_vat, f.total_ttc,'; $sql .= ' f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,'; +$sql .= ' f.fk_user_author,'; $sql .= ' f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva as multicurrency_total_vat, f.multicurrency_total_ttc,'; $sql .= ' f.datef as df, f.date_lim_reglement as datelimite, f.module_source, f.pos_source,'; $sql .= ' f.paye as paye, f.fk_statut, f.close_code,'; @@ -409,7 +413,8 @@ $sql .= ' s.rowid as socid, s.nom as name, s.email, s.town, s.zip, s.fk_pays, s. $sql .= " typent.code as typent_code,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; $sql .= " country.code as country_code,"; -$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label"; +$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,"; +$sql .= " u.login"; // We need dynamount_payed to be able to sort on status (value is surely wrong because we can count several lines several times due to other left join or link with contacts. But what we need is just 0 or > 0) // TODO Better solution to be able to sort on already payed or remain to pay is to store amount_payed in a denormalized field. if (!$sall) $sql .= ', SUM(pf.amount) as dynamount_payed, SUM(pf.multicurrency_amount) as multicurrency_dynamount_payed'; @@ -441,6 +446,7 @@ if ($search_user > 0) $sql .= ", ".MAIN_DB_PREFIX."element_contact as ec"; $sql .= ", ".MAIN_DB_PREFIX."c_type_contact as tc"; } +$sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'user AS u ON f.fk_user_author = u.rowid'; $sql .= ' WHERE f.fk_soc = s.rowid'; $sql .= ' AND f.entity IN ('.getEntity('invoice').')'; if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; @@ -482,6 +488,7 @@ if ($search_multicurrency_tx != '') $sql .= natural_search('f.multicurrency_tx', if ($search_multicurrency_montant_ht != '') $sql .= natural_search('f.multicurrency_total_ht', $search_multicurrency_montant_ht, 1); if ($search_multicurrency_montant_vat != '') $sql .= natural_search('f.multicurrency_total_tva', $search_multicurrency_montant_vat, 1); if ($search_multicurrency_montant_ttc != '') $sql .= natural_search('f.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1); +if ($search_login) $sql .= natural_search('u.login', $search_login); if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus); if ($search_categ_cus == -2) $sql .= " AND cc.fk_categorie IS NULL"; if ($search_status != '-1' && $search_status != '') @@ -608,6 +615,7 @@ if ($resql) if ($search_zip) $param .= '&search_zip='.urlencode($search_zip); if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale); if ($search_user > 0) $param .= '&search_user='.urlencode($search_user); + if ($search_login) $param .= '&search_login='.urlencode($search_login); if ($search_product_category > 0) $param .= '&search_product_category='.urlencode($search_product_category); if ($search_montant_ht != '') $param .= '&search_montant_ht='.urlencode($search_montant_ht); if ($search_montant_vat != '') $param .= '&search_montant_vat='.urlencode($search_montant_vat); @@ -906,6 +914,13 @@ if ($resql) print ''; print ''; } + if (! empty($arrayfields['u.login']['checked'])) + { + // Author + print ''; + print ''; + print ''; + } if (!empty($arrayfields['f.retained_warranty']['checked'])) { print ''; @@ -1029,6 +1044,7 @@ if ($resql) if (!empty($arrayfields['f.total_localtax1']['checked'])) print_liste_field_titre($arrayfields['f.total_localtax1']['label'], $_SERVER['PHP_SELF'], 'f.localtax1', '', $param, 'class="right"', $sortfield, $sortorder); if (!empty($arrayfields['f.total_localtax2']['checked'])) print_liste_field_titre($arrayfields['f.total_localtax2']['label'], $_SERVER['PHP_SELF'], 'f.localtax2', '', $param, 'class="right"', $sortfield, $sortorder); if (!empty($arrayfields['f.total_ttc']['checked'])) print_liste_field_titre($arrayfields['f.total_ttc']['label'], $_SERVER['PHP_SELF'], 'f.total_ttc', '', $param, 'class="right"', $sortfield, $sortorder); + if (!empty($arrayfields['u.login']['checked'])) print_liste_field_titre($arrayfields['u.login']['label'], $_SERVER["PHP_SELF"], 'u.login', '', $param, 'align="center"', $sortfield, $sortorder); if (!empty($arrayfields['f.retained_warranty']['checked'])) print_liste_field_titre($arrayfields['f.retained_warranty']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'align="right"', $sortfield, $sortorder); if (!empty($arrayfields['dynamount_payed']['checked'])) print_liste_field_titre($arrayfields['dynamount_payed']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder); if (!empty($arrayfields['rtp']['checked'])) print_liste_field_titre($arrayfields['rtp']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder); @@ -1054,6 +1070,7 @@ if ($resql) $projectstatic = new Project($db); $discount = new DiscountAbsolute($db); + $userstatic = new User($db); if ($num > 0) { @@ -1374,6 +1391,18 @@ if ($resql) $totalarray['val']['f.total_ttc'] += $obj->total_ttc; } + // Author + if (! empty($arrayfields['u.login']['checked'])) + { + $userstatic->id = $obj->fk_user_author; + $userstatic->login = $obj->login; + print ''; + if ($userstatic->id) print $userstatic->getLoginUrl(1); + else print ' '; + print "\n"; + if (!$i) $totalarray['nbfield']++; + } + if (!empty($arrayfields['f.retained_warranty']['checked'])) { print ''.(!empty($obj->retained_warranty) ?price($obj->retained_warranty).'%' : ' ').''; diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 7be2c5e9b26..742944f6c80 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -84,6 +84,7 @@ $search_montant_vat = GETPOST('search_montant_vat', 'alpha'); $search_montant_localtax1 = GETPOST('search_montant_localtax1', 'alpha'); $search_montant_localtax2 = GETPOST('search_montant_localtax2', 'alpha'); $search_montant_ttc = GETPOST('search_montant_ttc', 'alpha'); +$search_login=GETPOST('search_login', 'alpha'); $search_multicurrency_code = GETPOST('search_multicurrency_code', 'alpha'); $search_multicurrency_tx = GETPOST('search_multicurrency_tx', 'alpha'); $search_multicurrency_montant_ht = GETPOST('search_multicurrency_montant_ht', 'alpha'); @@ -170,6 +171,7 @@ $arrayfields = array( 'f.total_localtax1'=>array('label'=>$langs->transcountry("AmountLT1", $mysoc->country_code), 'checked'=>0, 'enabled'=>$mysoc->localtax1_assuj == "1"), 'f.total_localtax2'=>array('label'=>$langs->transcountry("AmountLT2", $mysoc->country_code), 'checked'=>0, 'enabled'=>$mysoc->localtax2_assuj == "1"), 'f.total_ttc'=>array('label'=>$langs->trans("AmountTTC"), 'checked'=>0), + 'u.login'=>array('label'=>"Author", 'checked'=>1), 'dynamount_payed'=>array('label'=>$langs->trans("Payed"), 'checked'=>0), 'rtp'=>array('label'=>$langs->trans("Rest"), 'checked'=>0), 'f.multicurrency_code'=>array('label'=>'Currency', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)), @@ -230,6 +232,7 @@ if (empty($reshook)) $search_montant_localtax1 = ''; $search_montant_localtax2 = ''; $search_montant_ttc = ''; + $search_login=''; $search_multicurrency_code = ''; $search_multicurrency_tx = ''; $search_multicurrency_montant_ht = ''; @@ -288,11 +291,13 @@ $sql .= " f.total_ht, f.total_ttc, f.total_tva as total_vat, f.paye as paye, f.f $sql .= " f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,"; $sql .= ' f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva as multicurrency_total_vat, f.multicurrency_total_ttc,'; $sql .= " f.note_public, f.note_private,"; +$sql .= " f.fk_user_author,"; $sql .= " s.rowid as socid, s.nom as name, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur,"; $sql .= " typent.code as typent_code,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; $sql .= " country.code as country_code,"; -$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label"; +$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,"; +$sql .= " u.login"; // We need dynamount_payed to be able to sort on status (value is surely wrong because we can count several lines several times due to other left join or link with contacts. But what we need is just 0 or > 0) // TODO Better solution to be able to sort on already payed or remain to pay is to store amount_payed in a denormalized field. if (!$search_all) $sql .= ', SUM(pf.amount) as dynamount_payed'; @@ -321,6 +326,7 @@ if ($search_user > 0) $sql .= ", ".MAIN_DB_PREFIX."element_contact as ec"; $sql .= ", ".MAIN_DB_PREFIX."c_type_contact as tc"; } +$sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'user AS u ON f.fk_user_author = u.rowid'; $sql .= ' WHERE f.fk_soc = s.rowid'; $sql .= ' AND f.entity IN ('.getEntity('facture_fourn').')'; if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; @@ -359,6 +365,7 @@ if ($search_multicurrency_tx != '') $sql .= natural_search('f.multicurrency_tx', if ($search_multicurrency_montant_ht != '') $sql .= natural_search('f.multicurrency_total_ht', $search_multicurrency_montant_ht, 1); if ($search_multicurrency_montant_vat != '') $sql .= natural_search('f.multicurrency_total_tva', $search_multicurrency_montant_vat, 1); if ($search_multicurrency_montant_ttc != '') $sql .= natural_search('f.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1); +if ($search_login) $sql .= natural_search('u.login', $search_login); if ($search_status != '' && $search_status >= 0) $sql .= " AND f.fk_statut = ".$db->escape($search_status); if ($search_paymentmode > 0) $sql .= " AND f.fk_mode_reglement = ".$search_paymentmode.""; $sql .= dolSqlDateFilter("f.datef", $day, $month, $year); @@ -470,6 +477,7 @@ if ($resql) if ($search_type != '') $param .= '&search_type='.urlencode($search_type); if ($search_label) $param .= '&search_label='.urlencode($search_label); if ($search_company) $param .= '&search_company='.urlencode($search_company); + if ($search_login) $param .= '&search_login='.urlencode($search_login); if ($search_montant_ht != '') $param .= '&search_montant_ht='.urlencode($search_montant_ht); if ($search_montant_vat != '') $param .= '&search_montant_vat='.urlencode($search_montant_vat); if ($search_montant_localtax1 != '') $param .= '&search_montant_localtax1='.urlencode($search_montant_localtax1); @@ -759,6 +767,13 @@ if ($resql) print ''; print ''; } + if (! empty($arrayfields['u.login']['checked'])) + { + // Author + print ''; + print ''; + print ''; + } if (!empty($arrayfields['dynamount_payed']['checked'])) { print ''; @@ -869,6 +884,7 @@ if ($resql) if (!empty($arrayfields['f.total_localtax1']['checked'])) print_liste_field_titre($arrayfields['f.total_localtax1']['label'], $_SERVER['PHP_SELF'], 'f.localtax1', '', $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['f.total_localtax2']['checked'])) print_liste_field_titre($arrayfields['f.total_localtax2']['label'], $_SERVER['PHP_SELF'], 'f.localtax2', '', $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['f.total_ttc']['checked'])) print_liste_field_titre($arrayfields['f.total_ttc']['label'], $_SERVER['PHP_SELF'], 'f.total_ttc', '', $param, '', $sortfield, $sortorder, 'right '); + if (!empty($arrayfields['u.login']['checked'])) print_liste_field_titre($arrayfields['u.login']['label'], $_SERVER["PHP_SELF"], 'u.login', '', $param, 'align="center"', $sortfield, $sortorder); if (!empty($arrayfields['dynamount_payed']['checked'])) print_liste_field_titre($arrayfields['dynamount_payed']['label'], $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['rtp']['checked'])) print_liste_field_titre($arrayfields['rtp']['label'], $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['f.multicurrency_code']['checked'])) print_liste_field_titre($arrayfields['f.multicurrency_code']['label'], $_SERVER['PHP_SELF'], 'f.multicurrency_code', '', $param, '', $sortfield, $sortorder); @@ -893,6 +909,7 @@ if ($resql) $facturestatic = new FactureFournisseur($db); $supplierstatic = new Fournisseur($db); $projectstatic = new Project($db); + $userstatic = new User($db); if ($num > 0) { @@ -1131,6 +1148,18 @@ if ($resql) $totalarray['val']['f.total_ttc'] += $obj->total_ttc; } + // Author + if (! empty($arrayfields['u.login']['checked'])) + { + $userstatic->id = $obj->fk_user_author; + $userstatic->login = $obj->login; + print ''; + if ($userstatic->id) print $userstatic->getLoginUrl(1); + else print ' '; + print "\n"; + if (!$i) $totalarray['nbfield']++; + } + if (!empty($arrayfields['dynamount_payed']['checked'])) { print ''.(!empty($totalpay) ?price($totalpay, 0, $langs) : ' ').''; // TODO Use a denormalized field From d2de6a22ebf126e9600b5d49fea87308295af242 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 1 Apr 2020 18:11:28 +0200 Subject: [PATCH 037/336] WIP Can set values in extra languages --- htdocs/core/class/commonobject.class.php | 28 +++++++++++-- htdocs/core/class/html.form.class.php | 17 ++++++++ htdocs/core/lib/functions.lib.php | 53 +++++++++++++----------- htdocs/societe/card.php | 2 +- 4 files changed, 71 insertions(+), 29 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7553594bb82..1d5ebbc4fa6 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -593,9 +593,10 @@ abstract class CommonObject * @param int $withcountry 1=Add country into address string * @param string $sep Separator to use to build string * @param int $withregion 1=Add region into address string + * @param string $extralangcode User extralanguages as value * @return string Full address string */ - public function getFullAddress($withcountry = 0, $sep = "\n", $withregion = 0) + public function getFullAddress($withcountry = 0, $sep = "\n", $withregion = 0, $extralangcode = '') { if ($withcountry && $this->country_id && (empty($this->country_code) || empty($this->country))) { @@ -615,7 +616,7 @@ abstract class CommonObject $this->region = $tmparray['region']; } - return dol_format_address($this, $withcountry, $sep); + return dol_format_address($this, $withcountry, $sep, '', 0, $extralangcode); } @@ -628,7 +629,7 @@ abstract class CommonObject */ public function getBannerAddress($htmlkey, $object) { - global $conf, $langs; + global $conf, $langs, $form; $countriesusingstate = array('AU', 'US', 'IN', 'GB', 'ES', 'UK', 'TR'); // See also option MAIN_FORCE_STATE_INTO_ADDRESS @@ -657,6 +658,7 @@ abstract class CommonObject { if (!empty($conf->use_javascript_ajax)) { + // Add picto with tooltip on map $namecoords = ''; if ($this->element == 'contact' && !empty($conf->global->MAIN_SHOW_COMPANY_NAME_IN_BANNER_ADDRESS)) { @@ -670,6 +672,26 @@ abstract class CommonObject } $out .= dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); $outdone++; $outdone++; + + $useextralanguages = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; + if ($useextralanguages) { + $this->fetchValuesForExtraLanguages(); + $extralanguages = array(); + if (isset($this->array_languages['address'])) $extralanguages[] = reset(array_keys($this->array_languages['address'])); + if (isset($this->array_languages['town'])) $extralanguages[] = reset(array_keys($this->array_languages['town'])); + + if (is_array($extralanguages) && count($extralanguages)) { + if (! is_object($form)) $form = new Form($this->db); + $htmltext = ''; + // If there is extra languages + foreach($extralanguages as $key => $extralangcode) { + $s=picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); + $coords = $this->getFullAddress(1, ', ', $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT, $extralangcode); + $htmltext .= $s.dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); + } + $out .= $form->textwithpicto('', $htmltext, -1, 'language', 'opacitymedium paddingleft'); + } + } } if (!in_array($this->country_code, $countriesusingstate) && empty($conf->global->MAIN_FORCE_STATE_INTO_ADDRESS) // If MAIN_FORCE_STATE_INTO_ADDRESS is on, state is already returned previously with getFullAddress diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 696d1a9aa7d..7404b3c6945 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7359,6 +7359,23 @@ class Form if ($object->element == 'societe') { $ret .= dol_htmlentities($object->name); + + $useextralanguages = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; + if ($useextralanguages) { + $object->fetchValuesForExtraLanguages(); + $extralanguages = array(); + if (isset($object->array_languages['name'])) $extralanguages[] = reset(array_keys($object->array_languages['name'])); + + if (is_array($extralanguages) && count($extralanguages)) { + $htmltext = ''; + // If there is extra languages + foreach($extralanguages as $extralangcode) { + $s=picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); + $htmltext .= $s.$object->array_languages['name'][$extralangcode]; + } + $ret .= $this->textwithpicto('', $htmltext, -1, 'language', 'opacitymedium paddingleft'); + } + } } elseif ($object->element == 'member') { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 2b1d2695ed4..751e3ebb0a6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1646,12 +1646,12 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi if (!empty($object->name_alias)) $morehtmlref .= '
'.$object->name_alias.'
'; // Add label - if ($object->element == 'product' || $object->element == 'bank_account' || $object->element == 'project_task') + if (in_array($object->element, array('product', 'bank_account', 'project_task'))) { if (!empty($object->label)) $morehtmlref .= '
'.$object->label.'
'; } - if (method_exists($object, 'getBannerAddress') && $object->element != 'product' && $object->element != 'bookmark' && $object->element != 'ecm_directories' && $object->element != 'ecm_files') + if (method_exists($object, 'getBannerAddress') && !in_array($object->element, array('product', 'bookmark', 'ecm_directories', 'ecm_files'))) { $moreaddress = $object->getBannerAddress('refaddress', $object); if ($moreaddress) { @@ -1718,10 +1718,11 @@ function dol_bc($var, $moreclass = '') * @param string $sep Separator to use to build string * @param Translate $outputlangs Object lang that contains language for text translation. * @param int $mode 0=Standard output, 1=Remove address + * @param string $extralangcode User extralanguage $langcode as values for address, town * @return string Formated string * @see dol_print_address() */ -function dol_format_address($object, $withcountry = 0, $sep = "\n", $outputlangs = '', $mode = 0) +function dol_format_address($object, $withcountry = 0, $sep = "\n", $outputlangs = '', $mode = 0, $extralangcode = '') { global $conf, $langs; @@ -1729,15 +1730,15 @@ function dol_format_address($object, $withcountry = 0, $sep = "\n", $outputlangs $countriesusingstate = array('AU', 'CA', 'US', 'IN', 'GB', 'ES', 'UK', 'TR'); // See also MAIN_FORCE_STATE_INTO_ADDRESS // See format of addresses on https://en.wikipedia.org/wiki/Address - // Address if (empty($mode)) { - $ret .= $object->address; + $ret .= ($extralangcode ? $object->array_languages['address'][$extralangcode] : $object->address); } // Zip/Town/State if (in_array($object->country_code, array('AU', 'CA', 'US')) || !empty($conf->global->MAIN_FORCE_STATE_INTO_ADDRESS)) // US: title firstname name \n address lines \n town, state, zip \n country { - $ret .= ($ret ? $sep : '').$object->town; + $town = ($extralangcode ? $object->array_languages['town'][$extralangcode] : $object->town); + $ret .= ($ret ? $sep : '').$town; if ($object->state) { $ret .= ($ret ? ", " : '').$object->state; @@ -1746,7 +1747,8 @@ function dol_format_address($object, $withcountry = 0, $sep = "\n", $outputlangs } elseif (in_array($object->country_code, array('GB', 'UK'))) // UK: title firstname name \n address lines \n town state \n zip \n country { - $ret .= ($ret ? $sep : '').$object->town; + $town = ($extralangcode ? $object->array_languages['town'][$extralangcode] : $object->town); + $ret .= ($ret ? $sep : '').$town; if ($object->state) { $ret .= ($ret ? ", " : '').$object->state; @@ -1756,7 +1758,8 @@ function dol_format_address($object, $withcountry = 0, $sep = "\n", $outputlangs elseif (in_array($object->country_code, array('ES', 'TR'))) // ES: title firstname name \n address lines \n zip town \n state \n country { $ret .= ($ret ? $sep : '').$object->zip; - $ret .= ($object->town ? (($object->zip ? ' ' : '').$object->town) : ''); + $town = ($extralangcode ? $object->array_languages['town'][$extralangcode] : $object->town); + $ret .= ($town ? (($object->zip ? ' ' : '').$town) : ''); if ($object->state) { $ret .= "\n".$object->state; @@ -1765,13 +1768,15 @@ function dol_format_address($object, $withcountry = 0, $sep = "\n", $outputlangs elseif (in_array($object->country_code, array('IT'))) // IT: tile firstname name\n address lines \n zip (Code Departement) \n country { $ret .= ($ret ? $sep : '').$object->zip; - $ret .= ($object->town ? (($object->zip ? ' ' : '').$object->town) : ''); + $town = ($extralangcode ? $object->array_languages['town'][$extralangcode] : $object->town); + $ret .= ($town ? (($object->zip ? ' ' : '').$town) : ''); $ret .= ($object->state_code ? (' '.($object->state_code)) : ''); } else // Other: title firstname name \n address lines \n zip town \n country { + $town = ($extralangcode ? $object->array_languages['town'][$extralangcode] : $object->town); $ret .= $object->zip ? (($ret ? $sep : '').$object->zip) : ''; - $ret .= ($object->town ? (($object->zip ? ' ' : ($ret ? $sep : '')).$object->town) : ''); + $ret .= ($town ? (($object->zip ? ' ' : ($ret ? $sep : '')).$town) : ''); if ($object->state && in_array($object->country_code, $countriesusingstate)) { $ret .= ($ret ? ", " : '').$object->state; @@ -2853,16 +2858,16 @@ function dol_user_country() /** * Format address string * - * @param string $address Address + * @param string $address Address string, already formatted with dol_format_address() * @param int $htmlid Html ID (for example 'gmap') - * @param int $mode thirdparty|contact|member|other + * @param int $element 'thirdparty'|'contact'|'member'|'other' * @param int $id Id of object * @param int $noprint No output. Result is the function return * @param string $charfornl Char to use instead of nl2br. '' means we use a standad nl2br. * @return string|void Nothing if noprint is 0, formatted address if noprint is 1 * @see dol_format_address() */ -function dol_print_address($address, $htmlid, $mode, $id, $noprint = 0, $charfornl = '') +function dol_print_address($address, $htmlid, $element, $id, $noprint = 0, $charfornl = '') { global $conf, $user, $langs, $hookmanager; @@ -2871,7 +2876,7 @@ function dol_print_address($address, $htmlid, $mode, $id, $noprint = 0, $charfor if ($address) { if ($hookmanager) { - $parameters = array('element' => $mode, 'id' => $id); + $parameters = array('element' => $element, 'id' => $id); $reshook = $hookmanager->executeHooks('printAddress', $parameters, $address); $out .= $hookmanager->resPrint; } @@ -2880,24 +2885,22 @@ function dol_print_address($address, $htmlid, $mode, $id, $noprint = 0, $charfor if (empty($charfornl)) $out .= nl2br($address); else $out .= preg_replace('/[\r\n]+/', $charfornl, $address); + // TODO Remove this block, we can add this using the hook now $showgmap = $showomap = 0; - - // TODO Add a hook here - if (($mode == 'thirdparty' || $mode == 'societe') && !empty($conf->google->enabled) && !empty($conf->global->GOOGLE_ENABLE_GMAPS)) $showgmap = 1; - if ($mode == 'contact' && !empty($conf->google->enabled) && !empty($conf->global->GOOGLE_ENABLE_GMAPS_CONTACTS)) $showgmap = 1; - if ($mode == 'member' && !empty($conf->google->enabled) && !empty($conf->global->GOOGLE_ENABLE_GMAPS_MEMBERS)) $showgmap = 1; - if (($mode == 'thirdparty' || $mode == 'societe') && !empty($conf->openstreetmap->enabled) && !empty($conf->global->OPENSTREETMAP_ENABLE_MAPS)) $showomap = 1; - if ($mode == 'contact' && !empty($conf->openstreetmap->enabled) && !empty($conf->global->OPENSTREETMAP_ENABLE_MAPS_CONTACTS)) $showomap = 1; - if ($mode == 'member' && !empty($conf->openstreetmap->enabled) && !empty($conf->global->OPENSTREETMAP_ENABLE_MAPS_MEMBERS)) $showomap = 1; - + if (($element == 'thirdparty' || $element == 'societe') && !empty($conf->google->enabled) && !empty($conf->global->GOOGLE_ENABLE_GMAPS)) $showgmap = 1; + if ($element == 'contact' && !empty($conf->google->enabled) && !empty($conf->global->GOOGLE_ENABLE_GMAPS_CONTACTS)) $showgmap = 1; + if ($element == 'member' && !empty($conf->google->enabled) && !empty($conf->global->GOOGLE_ENABLE_GMAPS_MEMBERS)) $showgmap = 1; + if (($element == 'thirdparty' || $element == 'societe') && !empty($conf->openstreetmap->enabled) && !empty($conf->global->OPENSTREETMAP_ENABLE_MAPS)) $showomap = 1; + if ($element == 'contact' && !empty($conf->openstreetmap->enabled) && !empty($conf->global->OPENSTREETMAP_ENABLE_MAPS_CONTACTS)) $showomap = 1; + if ($element == 'member' && !empty($conf->openstreetmap->enabled) && !empty($conf->global->OPENSTREETMAP_ENABLE_MAPS_MEMBERS)) $showomap = 1; if ($showgmap) { - $url = dol_buildpath('/google/gmaps.php?mode='.$mode.'&id='.$id, 1); + $url = dol_buildpath('/google/gmaps.php?mode='.$element.'&id='.$id, 1); $out .= ' '; } if ($showomap) { - $url = dol_buildpath('/openstreetmap/maps.php?mode='.$mode.'&id='.$id, 1); + $url = dol_buildpath('/openstreetmap/maps.php?mode='.$element.'&id='.$id, 1); $out .= ' '; } } diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index be97aff6377..0186d3d9807 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -931,7 +931,7 @@ else * Creation */ $private = GETPOST("private", "int"); - if (!empty($conf->global->THIRDPARTY_DEFAULT_CREATE_CONTACT) && !isset($_GET['private']) && !isset($_POST['private'])) $private = 1; + if (!empty($conf->global->THIRDPARTY_DEFAULT_CREATE_CONTACT) && ! GETPOSTISSET('private')) $private = 1; if (empty($private)) $private = 0; // Load object modCodeTiers From 70706d9ea712848a6a57dceea14c7099f1a71aa8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 1 Apr 2020 18:48:45 +0200 Subject: [PATCH 038/336] FIX Missing token and take into account max date when it can. --- htdocs/compta/stats/index.php | 27 +++++++++++++++++++-------- htdocs/core/lib/report.lib.php | 19 ++++++++++--------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/htdocs/compta/stats/index.php b/htdocs/compta/stats/index.php index 684ef337fcd..ba17730831f 100644 --- a/htdocs/compta/stats/index.php +++ b/htdocs/compta/stats/index.php @@ -31,12 +31,12 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; // Load translation files required by the page $langs->loadLangs(array('compta', 'bills', 'donation', 'salaries')); -$date_startmonth = GETPOST('date_startmonth'); -$date_startday = GETPOST('date_startday'); -$date_startyear = GETPOST('date_startyear'); -$date_endmonth = GETPOST('date_endmonth'); -$date_endday = GETPOST('date_endday'); -$date_endyear = GETPOST('date_endyear'); +$date_startday = GETPOST('date_startday', 'int'); +$date_startmonth = GETPOST('date_startmonth', 'int'); +$date_startyear = GETPOST('date_startyear', 'int'); +$date_endday = GETPOST('date_endday', 'int'); +$date_endmonth = GETPOST('date_endmonth', 'int'); +$date_endyear = GETPOST('date_endyear', 'int'); $nbofyear = 4; @@ -193,15 +193,18 @@ elseif ($modecompta == "BOOKKEEPING") { $sql = "SELECT date_format(b.doc_date,'%Y-%m') as dm, sum(b.credit) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b, ".MAIN_DB_PREFIX."accounting_journal as aj"; - $sql .= " WHERE b.entity = ".$conf->entity; + $sql .= " WHERE b.entity = ".$conf->entity; // In module double party accounting, we never share entities $sql .= " AND aj.entity = ".$conf->entity; $sql .= " AND b.code_journal = aj.code AND aj.nature = 2"; // @todo currently count amount in sale journal, but we need to define a category group for turnover } $sql .= " GROUP BY dm"; $sql .= " ORDER BY dm"; +// TODO Add a filter on $date_start and $date_end to reduce quantity on data //print $sql; +$minyearmonth = $maxyearmonth = 0; + $result = $db->query($sql); if ($result) { @@ -214,7 +217,7 @@ if ($result) $cum[$obj->dm] = $obj->amount_ttc; if ($obj->amount_ttc) { - $minyearmonth = ($minyearmonth ?min($minyearmonth, $obj->dm) : $obj->dm); + $minyearmonth = ($minyearmonth ? min($minyearmonth, $obj->dm) : $obj->dm); $maxyearmonth = max($maxyearmonth, $obj->dm); } $i++; @@ -309,9 +312,17 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) $mois_modulo = $mois; // ajout if ($mois > 12) {$mois_modulo = $mois - 12; } // ajout + if ($year_start == $year_end) { + if ($mois > $date_endmonth && $year_end >= $date_endyear) { + break; + } + } + print ''; + // Month print "".dol_print_date(dol_mktime(12, 0, 0, $mois_modulo, 1, 2000), "%B").""; + for ($annee = $year_start - 1; $annee <= $year_end; $annee++) // We start one year before to have data to be able to make delta { $annee_decalage = $annee; diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php index 4649abc474a..979583e8b4d 100644 --- a/htdocs/core/lib/report.lib.php +++ b/htdocs/core/lib/report.lib.php @@ -53,16 +53,17 @@ function report_header($reportname, $notused, $period, $periodlink, $description $head[$h][1] = $langs->trans("Report"); $head[$h][2] = 'report'; - print '
'; + print ''."\n"; + print ''."\n"; dol_fiche_head($head, 'report'); foreach($moreparam as $key => $value) { - print ''; + print ''."\n"; } - print ''; + print '
'."\n"; $variante = ($periodlink || $exportlink); @@ -73,7 +74,7 @@ function report_header($reportname, $notused, $period, $periodlink, $description print $reportname; print ''; if ($variante) print ''; - print ''; + print ''."\n"; // Calculation mode if ($calcmode) @@ -84,7 +85,7 @@ function report_header($reportname, $notused, $period, $periodlink, $description print $calcmode; if ($variante) print ''; print ''; - print ''; + print ''."\n"; } // Ligne de la periode d'analyse du rapport @@ -94,14 +95,14 @@ function report_header($reportname, $notused, $period, $periodlink, $description if ($period) print $period; if ($variante) print ''; print ''; - print ''; + print ''."\n"; // Ligne de description print ''; print ''; print ''; if ($variante) print ''; - print ''; + print ''."\n"; // Ligne d'export print ''; @@ -110,9 +111,9 @@ function report_header($reportname, $notused, $period, $periodlink, $description print dol_print_date($builddate, 'dayhour'); print ''; if ($variante) print ''; - print ''; + print ''."\n"; - print '
'.$periodlink.'
'.$langs->trans("ReportDescription").''.$description.'
'.($exportlink ? $langs->trans("Export").': '.$exportlink : '').'
'; + print ''."\n"; dol_fiche_end(); From 184d50171dc9bcaab3254527e8723613d5f31226 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 1 Apr 2020 22:01:05 +0200 Subject: [PATCH 039/336] Update example for clamav - prefer clamav daemon --- htdocs/langs/en_US/admin.lang | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 51ff5f4e2f7..738f07a2c0a 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -98,10 +98,10 @@ MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand= Full path to antivirus command -AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line -AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass
Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Accounting module setup UserSetup=User management setup MultiCurrencySetup=Multi-currency setup From abd64651905bf3678c1c181ed80179c128d38df4 Mon Sep 17 00:00:00 2001 From: nervo Date: Wed, 1 Apr 2020 22:02:34 +0200 Subject: [PATCH 040/336] Allow constants values to be overridden by environment variables --- htdocs/core/class/conf.class.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 9a804256dac..5c2a9d9d4fb 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -171,6 +171,13 @@ class Conf $value = $objp->value; if ($key) { + // Allow constants values to be overridden by environment variables + if (isset($_SERVER['DOLIBARR_' . $key])) { + $value=$_SERVER['DOLIBARR_' . $key]; + } elseif (isset($_ENV['DOLIBARR_' . $key])) { + $value=$_ENV['DOLIBARR_' . $key]; + } + //if (! defined("$key")) define("$key", $value); // In some cases, the constant might be already forced (Example: SYSLOG_HANDLERS during install) $this->global->$key = $value; From cf3615aee386af04e0b7c3e19433f1113a4ab061 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Wed, 1 Apr 2020 20:11:18 +0000 Subject: [PATCH 041/336] Fixing style errors. --- htdocs/core/class/conf.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 5c2a9d9d4fb..38538f12f93 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -177,7 +177,7 @@ class Conf } elseif (isset($_ENV['DOLIBARR_' . $key])) { $value=$_ENV['DOLIBARR_' . $key]; } - + //if (! defined("$key")) define("$key", $value); // In some cases, the constant might be already forced (Example: SYSLOG_HANDLERS during install) $this->global->$key = $value; From 6aea67a5b96fca933027b33fde892efda9a3c64a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 1 Apr 2020 23:15:53 +0200 Subject: [PATCH 042/336] Work on extralanguages --- htdocs/core/class/commonobject.class.php | 24 +- htdocs/core/class/extrafields.class.php | 26 +- htdocs/core/class/extralanguages.class.php | 1333 ++++++++++++++++++++ htdocs/core/class/html.form.class.php | 76 +- 4 files changed, 1400 insertions(+), 59 deletions(-) create mode 100644 htdocs/core/class/extralanguages.class.php diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 1d5ebbc4fa6..bc1fd5e75b7 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -629,7 +629,7 @@ abstract class CommonObject */ public function getBannerAddress($htmlkey, $object) { - global $conf, $langs, $form; + global $conf, $langs, $form, $extralanguages; $countriesusingstate = array('AU', 'US', 'IN', 'GB', 'ES', 'UK', 'TR'); // See also option MAIN_FORCE_STATE_INTO_ADDRESS @@ -673,18 +673,24 @@ abstract class CommonObject $out .= dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); $outdone++; $outdone++; - $useextralanguages = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; - if ($useextralanguages) { - $this->fetchValuesForExtraLanguages(); - $extralanguages = array(); - if (isset($this->array_languages['address'])) $extralanguages[] = reset(array_keys($this->array_languages['address'])); - if (isset($this->array_languages['town'])) $extralanguages[] = reset(array_keys($this->array_languages['town'])); + // List of extra languages + $arrayoflangcode = array(); + if (! empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE)) $arrayoflangcode[] = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; - if (is_array($extralanguages) && count($extralanguages)) { + if (is_array($arrayoflangcode) && count($arrayoflangcode)) { + if (! is_object($extralanguages)) { + include_once DOL_DOCUMENT_ROOT.'/core/class/extralanguages.class.php'; + $extralanguages = new ExtraLanguages($this->db); + } + $extralanguages->fetch_name_extralanguages('societe'); + + if (! empty($extralanguages->attributes['societe']['address']) || ! empty($extralanguages->attributes['societe']['town'])) + { + $this->fetchValuesForExtraLanguages(); if (! is_object($form)) $form = new Form($this->db); $htmltext = ''; // If there is extra languages - foreach($extralanguages as $key => $extralangcode) { + foreach($arrayoflangcode as $extralangcode) { $s=picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); $coords = $this->getFullAddress(1, ', ', $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT, $extralangcode); $htmltext .= $s.dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 7a9373d59db..f044943272b 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -842,7 +842,7 @@ class ExtraFields /** * Load array this->attributes, or old this->attribute_xxx like attribute_label, attribute_type, ... * - * @param string $elementtype Type of element ('adherent', 'commande', 'thirdparty', 'facture', 'propal', 'product', ...). + * @param string $elementtype Type of element ('' = all, 'adherent', 'commande', 'thirdparty', 'facture', 'propal', 'product', ...). * @param boolean $forceload Force load of extra fields whatever is status of cache. * @return array Array of attributes keys+label for all extra fields. */ @@ -859,30 +859,6 @@ class ExtraFields $array_name_label = array(); - // To avoid conflicts with external modules. TODO Remove this. - if (empty($forceload) && !empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return $array_name_label; - - // If already loaded - // TODO Enable this cache test - // if (empty($forceload) && ! empty($this->attributes[$tab->elementtype]['loaded'])) return $array_name_label; - - // Set array of label of entity - // Remove completely loading of label. This should be done by presentation. - /* - $labelmulticompany=array(); - if (!empty($conf->multicompany->enabled)) - { - $sql_entity_name='SELECT rowid, label FROM '.MAIN_DB_PREFIX.'entity WHERE rowid in (0,'.$conf->entity.')'; - $resql_entity_name=$this->db->query($sql_entity_name); - if ($resql_entity_name) - { - while ($obj = $this->db->fetch_object($resql_entity_name)) - { - $labelmulticompany[$obj->rowid]=$obj->label; - } - } - }*/ - // We should not have several time this request. If we have, there is some optimization to do by calling a simple $extrafields->fetch_optionals() in top of code and not into subcode $sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,langs,list,printable,totalizable,fielddefault,fieldcomputed,entity,enabled,help"; $sql .= " FROM ".MAIN_DB_PREFIX."extrafields"; diff --git a/htdocs/core/class/extralanguages.class.php b/htdocs/core/class/extralanguages.class.php new file mode 100644 index 00000000000..768169cd3eb --- /dev/null +++ b/htdocs/core/class/extralanguages.class.php @@ -0,0 +1,1333 @@ + + * + * 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 . + */ + +/** + * \file htdocs/core/class/extralanguages.class.php + * \ingroup core + * \brief File of class to manage extra fields + */ + + +/** + * Class to manage standard extra languages + */ +class ExtraLanguages +{ + /** + * @var DoliDB Database handler. + */ + public $db; + + /** + * @var array New array to store extralanguages definition + */ + public $attributes; + + /** + * @var string Error code (or message) + */ + public $error = ''; + + /** + * @var string[] Array of Error code (or message) + */ + public $errors = array(); + + /** + * @var string DB Error number + */ + public $errno; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + $this->db = $db; + $this->error = ''; + $this->errors = array(); + $this->attributes = array(); + } + + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Load array this->attributes + * + * @param string $elementtype Type of element ('' = all, 'adherent', 'commande', 'thirdparty', 'facture', 'propal', 'product', ...). + * @param boolean $forceload Force load of extra fields whatever is status of cache. + * @return array Array of attributes keys+label for all extra fields. + */ + public function fetch_name_extralanguages($elementtype, $forceload = false) + { + // phpcs:enable + global $conf; + + if (empty($elementtype)) return array(); + + if ($elementtype == 'thirdparty') $elementtype = 'societe'; + if ($elementtype == 'contact') $elementtype = 'socpeople'; + if ($elementtype == 'order_supplier') $elementtype = 'commande_fournisseur'; + + $array_name_label = array( + 'societe' => array('name'=>'Name'), + 'contact' => array('firstname' => 'Firstname', 'lastname' => 'Lastname') + ); + + $this->attributes = $array_name_label; + + return $array_name_label; + } + + + /** + * Return HTML string to put an input field into a page + * Code very similar with showInputField of common object + * + * @param string $key Key of attribute + * @param string $value Preselected value to show (for date type it must be in timestamp format, for amount or price it must be a php numeric value) + * @param string $moreparam To add more parametes on html input tag + * @param string $keysuffix Prefix string to add after name and id of field (can be used to avoid duplicate names) + * @param string $keyprefix Suffix string to add before name and id of field (can be used to avoid duplicate names) + * @param string $morecss More css (to defined size of field. Old behaviour: may also be a numeric) + * @param int $objectid Current object id + * @param string $extrafieldsobjectkey If defined (for example $object->table_element), use the new method to get extrafields data + * @param string $mode 1=Used for search filters + * @return string + */ + public function showInputField($key, $value, $moreparam = '', $keysuffix = '', $keyprefix = '', $morecss = '', $objectid = 0, $extrafieldsobjectkey = '', $mode = 0) + { + global $conf, $langs, $form; + + if (!is_object($form)) + { + require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; + $form = new Form($this->db); + } + + $out = ''; + + if (!preg_match('/options_$/', $keyprefix)) // Because we work on extrafields, we add 'options_' to prefix if not already added + { + $keyprefix = $keyprefix.'options_'; + } + + if (!empty($extrafieldsobjectkey)) + { + $label = $this->attributes[$extrafieldsobjectkey]['label'][$key]; + $type = $this->attributes[$extrafieldsobjectkey]['type'][$key]; + $size = $this->attributes[$extrafieldsobjectkey]['size'][$key]; + $default = $this->attributes[$extrafieldsobjectkey]['default'][$key]; + $computed = $this->attributes[$extrafieldsobjectkey]['computed'][$key]; + $unique = $this->attributes[$extrafieldsobjectkey]['unique'][$key]; + $required = $this->attributes[$extrafieldsobjectkey]['required'][$key]; + $param = $this->attributes[$extrafieldsobjectkey]['param'][$key]; + $perms = dol_eval($this->attributes[$extrafieldsobjectkey]['perms'][$key], 1); + $langfile = $this->attributes[$extrafieldsobjectkey]['langfile'][$key]; + $list = dol_eval($this->attributes[$extrafieldsobjectkey]['list'][$key], 1); + $totalizable = $this->attributes[$extrafieldsobjectkey]['totalizable'][$key]; + $help = $this->attributes[$extrafieldsobjectkey]['help'][$key]; + $hidden = (empty($list) ? 1 : 0); // If empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller) + } + else // Old usage + { + $label = $this->attribute_label[$key]; + $type = $this->attribute_type[$key]; + $size = $this->attribute_size[$key]; + $elementtype = $this->attribute_elementtype[$key]; // Seems not used + $default = $this->attribute_default[$key]; + $computed = $this->attribute_computed[$key]; + $unique = $this->attribute_unique[$key]; + $required = $this->attribute_required[$key]; + $param = $this->attribute_param[$key]; + $langfile = $this->attribute_langfile[$key]; + $list = $this->attribute_list[$key]; + $totalizable = $this->attribute_totalizable[$key]; + $hidden = (empty($list) ? 1 : 0); // If empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller) + } + + if ($computed) + { + if (!preg_match('/^search_/', $keyprefix)) return ''.$langs->trans("AutomaticallyCalculated").''; + else return ''; + } + + if (empty($morecss)) + { + if ($type == 'date') + { + $morecss = 'minwidth100imp'; + } + elseif ($type == 'datetime' || $type == 'link') + { + $morecss = 'minwidth200imp'; + } + elseif (in_array($type, array('int', 'integer', 'double', 'price'))) + { + $morecss = 'maxwidth75'; + } + elseif ($type == 'password') + { + $morecss = 'maxwidth100'; + } + elseif ($type == 'url') + { + $morecss = 'minwidth400'; + } + elseif ($type == 'boolean') + { + $morecss = ''; + } + else + { + if (round($size) < 12) + { + $morecss = 'minwidth100'; + } + elseif (round($size) <= 48) + { + $morecss = 'minwidth200'; + } + else + { + $morecss = 'minwidth400'; + } + } + } + + if (in_array($type, array('date', 'datetime'))) + { + $tmp = explode(',', $size); + $newsize = $tmp[0]; + + $showtime = in_array($type, array('datetime')) ? 1 : 0; + + // Do not show current date when field not required (see selectDate() method) + if (!$required && $value == '') $value = '-1'; + + // TODO Must also support $moreparam + $out = $form->selectDate($value, $keyprefix.$key.$keysuffix, $showtime, $showtime, $required, '', 1, (($keyprefix != 'search_' && $keyprefix != 'search_options_') ? 1 : 0), 0, 1); + } + elseif (in_array($type, array('int', 'integer'))) + { + $tmp = explode(',', $size); + $newsize = $tmp[0]; + $out = ''; + } + elseif (preg_match('/varchar/', $type)) + { + $out = ''; + } + elseif (in_array($type, array('mail', 'phone', 'url'))) + { + $out = ''; + } + elseif ($type == 'text') + { + if (!preg_match('/search_/', $keyprefix)) // If keyprefix is search_ or search_options_, we must just use a simple text field + { + require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; + $doleditor = new DolEditor($keyprefix.$key.$keysuffix, $value, '', 200, 'dolibarr_notes', 'In', false, false, false, ROWS_5, '90%'); + $out = $doleditor->Create(1); + } + else + { + $out = ''; + } + } + elseif ($type == 'html') + { + if (!preg_match('/search_/', $keyprefix)) // If keyprefix is search_ or search_options_, we must just use a simple text field + { + require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; + $doleditor = new DolEditor($keyprefix.$key.$keysuffix, $value, '', 200, 'dolibarr_notes', 'In', false, false, !empty($conf->fckeditor->enabled) && $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_5, '90%'); + $out = $doleditor->Create(1); + } + else + { + $out = ''; + } + } + elseif ($type == 'boolean') + { + if (empty($mode)) + { + $checked = ''; + if (!empty($value)) { + $checked = ' checked value="1" '; + } else { + $checked = ' value="1" '; + } + $out = ''; + } + else + { + $out .= $form->selectyesno($keyprefix.$key.$keysuffix, $value, 1, false, 1); + } + } + elseif ($type == 'price') + { + if (!empty($value)) { // $value in memory is a php numeric, we format it into user number format. + $value = price($value); + } + $out = ' '.$langs->getCurrencySymbol($conf->currency); + } + elseif ($type == 'double') + { + if (!empty($value)) { // $value in memory is a php numeric, we format it into user number format. + $value = price($value); + } + $out = ' '; + } + elseif ($type == 'select') + { + $out = ''; + if (!empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_EXTRAFIELDS_USE_SELECT2)) + { + include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php'; + $out .= ajax_combobox($keyprefix.$key.$keysuffix, array(), 0); + } + + $out .= ''; + } + elseif ($type == 'sellist') + { + $out = ''; + if (!empty($conf->use_javascript_ajax) && !empty($conf->global->MAIN_EXTRAFIELDS_USE_SELECT2)) + { + include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php'; + $out .= ajax_combobox($keyprefix.$key.$keysuffix, array(), 0); + } + + $out .= ''; + } + elseif ($type == 'checkbox') + { + $value_arr = explode(',', $value); + $out = $form->multiselectarray($keyprefix.$key.$keysuffix, (empty($param['options']) ?null:$param['options']), $value_arr, '', 0, '', 0, '100%'); + } + elseif ($type == 'radio') + { + $out = ''; + foreach ($param['options'] as $keyopt => $val) + { + $out .= ''.$val.'
'; + } + } + elseif ($type == 'chkbxlst') + { + if (is_array($value)) { + $value_arr = $value; + } + else { + $value_arr = explode(',', $value); + } + + if (is_array($param['options'])) { + $param_list = array_keys($param['options']); + $InfoFieldList = explode(":", $param_list[0]); + $parentName = ''; + $parentField = ''; + // 0 : tableName + // 1 : label field name + // 2 : key fields name (if differ of rowid) + // 3 : key field parent (for dependent lists) + // 4 : where clause filter on column or table extrafield, syntax field='value' or extra.field=value + // 5 : id category type + // 6 : ids categories list separated by comma for category root + $keyList = (empty($InfoFieldList[2]) ? 'rowid' : $InfoFieldList[2].' as rowid'); + + if (count($InfoFieldList) > 3 && !empty($InfoFieldList[3])) { + list ($parentName, $parentField) = explode('|', $InfoFieldList[3]); + $keyList .= ', '.$parentField; + } + if (count($InfoFieldList) > 4 && !empty($InfoFieldList[4])) { + if (strpos($InfoFieldList[4], 'extra.') !== false) { + $keyList = 'main.'.$InfoFieldList[2].' as rowid'; + } else { + $keyList = $InfoFieldList[2].' as rowid'; + } + } + + $filter_categorie = false; + if (count($InfoFieldList) > 5) { + if ($InfoFieldList[0] == 'categorie') { + $filter_categorie = true; + } + } + + if ($filter_categorie === false) { + $fields_label = explode('|', $InfoFieldList[1]); + if (is_array($fields_label)) { + $keyList .= ', '; + $keyList .= implode(', ', $fields_label); + } + + $sqlwhere = ''; + $sql = 'SELECT '.$keyList; + $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + if (!empty($InfoFieldList[4])) { + // can use SELECT request + if (strpos($InfoFieldList[4], '$SEL$') !== false) { + $InfoFieldList[4] = str_replace('$SEL$', 'SELECT', $InfoFieldList[4]); + } + + // current object id can be use into filter + if (strpos($InfoFieldList[4], '$ID$') !== false && !empty($objectid)) { + $InfoFieldList[4] = str_replace('$ID$', $objectid, $InfoFieldList[4]); + } elseif (preg_match("#^.*list.php$#", $_SERVER["PHP_SELF"])) { + // Pattern for word=$ID$ + $word = '\b[a-zA-Z0-9-\.-_]+\b=\$ID\$'; + + // Removing space arount =, ( and ) + $InfoFieldList[4] = preg_replace('# *(=|\(|\)) *#', '$1', $InfoFieldList[4]); + + $nbPreg = 1; + // While we have parenthesis + while ($nbPreg != 0) { + // Init des compteurs + $nbPregRepl = $nbPregSel = 0; + // On retire toutes les parenthèses sans = avant + $InfoFieldList[4] = preg_replace('#([^=])(\([^)^(]*('.$word.')[^)^(]*\))#', '$1 $3 ', $InfoFieldList[4], -1, $nbPregRepl); + // On retire les espaces autour des = et parenthèses + $InfoFieldList[4] = preg_replace('# *(=|\(|\)) *#', '$1', $InfoFieldList[4]); + // On retire toutes les parenthèses avec = avant + $InfoFieldList[4] = preg_replace('#\b[a-zA-Z0-9-\.-_]+\b=\([^)^(]*('.$word.')[^)^(]*\)#', '$1 ', $InfoFieldList[4], -1, $nbPregSel); + // On retire les espaces autour des = et parenthèses + $InfoFieldList[4] = preg_replace('# *(=|\(|\)) *#', '$1', $InfoFieldList[4]); + + // Calcul du compteur général pour la boucle + $nbPreg = $nbPregRepl + $nbPregSel; + } + + // Si l'on a un AND ou un OR, avant ou après + preg_match('#(AND|OR|) *('.$word.') *(AND|OR|)#', $InfoFieldList[4], $matchCondition); + while (!empty($matchCondition[0])) { + // If the two sides differ but are not empty + if (!empty($matchCondition[1]) && !empty($matchCondition[3]) && $matchCondition[1] != $matchCondition[3]) { + // Nobody sain would do that without parentheses + $InfoFieldList[4] = str_replace('$ID$', '0', $InfoFieldList[4]); + } else { + if (!empty($matchCondition[1])) { + $boolCond = (($matchCondition[1] == "AND") ? ' AND TRUE ' : ' OR FALSE '); + $InfoFieldList[4] = str_replace($matchCondition[0], $boolCond.$matchCondition[3], $InfoFieldList[4]); + } elseif (!empty($matchCondition[3])) { + $boolCond = (($matchCondition[3] == "AND") ? ' TRUE AND ' : ' FALSE OR'); + $InfoFieldList[4] = str_replace($matchCondition[0], $boolCond, $InfoFieldList[4]); + } else { + $InfoFieldList[4] = " TRUE "; + } + } + + // Si l'on a un AND ou un OR, avant ou après + preg_match('#(AND|OR|) *('.$word.') *(AND|OR|)#', $InfoFieldList[4], $matchCondition); + } + } else { + $InfoFieldList[4] = str_replace('$ID$', '0', $InfoFieldList[4]); + } + + // We have to join on extrafield table + if (strpos($InfoFieldList[4], 'extra.') !== false) { + $sql .= ' as main, '.MAIN_DB_PREFIX.$InfoFieldList[0].'_extrafields as extra'; + $sqlwhere .= ' WHERE extra.fk_object=main.'.$InfoFieldList[2].' AND '.$InfoFieldList[4]; + } else { + $sqlwhere .= ' WHERE '.$InfoFieldList[4]; + } + } else { + $sqlwhere .= ' WHERE 1=1'; + } + // Some tables may have field, some other not. For the moment we disable it. + if (in_array($InfoFieldList[0], array('tablewithentity'))) { + $sqlwhere .= ' AND entity = '.$conf->entity; + } + // $sql.=preg_replace('/^ AND /','',$sqlwhere); + // print $sql; + + $sql .= $sqlwhere; + dol_syslog(get_class($this).'::showInputField type=chkbxlst', LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) { + $num = $this->db->num_rows($resql); + $i = 0; + + $data = array(); + + while ($i < $num) { + $labeltoshow = ''; + $obj = $this->db->fetch_object($resql); + + $notrans = false; + // Several field into label (eq table:code|libelle:rowid) + $fields_label = explode('|', $InfoFieldList[1]); + if (is_array($fields_label)) { + $notrans = true; + foreach ($fields_label as $field_toshow) { + $labeltoshow .= $obj->$field_toshow.' '; + } + } else { + $labeltoshow = $obj->{$InfoFieldList[1]}; + } + $labeltoshow = dol_trunc($labeltoshow, 45); + + if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) { + foreach ($fields_label as $field_toshow) { + $translabel = $langs->trans($obj->$field_toshow); + if ($translabel != $obj->$field_toshow) { + $labeltoshow = dol_trunc($translabel, 18).' '; + } else { + $labeltoshow = dol_trunc($obj->$field_toshow, 18).' '; + } + } + + $data[$obj->rowid] = $labeltoshow; + } else { + if (!$notrans) { + $translabel = $langs->trans($obj->{$InfoFieldList[1]}); + if ($translabel != $obj->{$InfoFieldList[1]}) { + $labeltoshow = dol_trunc($translabel, 18); + } else { + $labeltoshow = dol_trunc($obj->{$InfoFieldList[1]}, 18); + } + } + if (empty($labeltoshow)) + $labeltoshow = '(not defined)'; + + if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) { + $data[$obj->rowid] = $labeltoshow; + } + + if (!empty($InfoFieldList[3]) && $parentField) { + $parent = $parentName.':'.$obj->{$parentField}; + } + + $data[$obj->rowid] = $labeltoshow; + } + + $i++; + } + $this->db->free($resql); + + $out = $form->multiselectarray($keyprefix . $key . $keysuffix, $data, $value_arr, '', 0, '', 0, '100%'); + } else { + print 'Error in request ' . $sql . ' ' . $this->db->lasterror() . '. Check setup of extra parameters.
'; + } + } else { + require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; + $data = $form->select_all_categories(Categorie::$MAP_ID_TO_CODE[$InfoFieldList[5]], '', 'parent', 64, $InfoFieldList[6], 1, 1); + $out = $form->multiselectarray($keyprefix . $key . $keysuffix, $data, $value_arr, '', 0, '', 0, '100%'); + } + } + } + elseif ($type == 'link') + { + $param_list=array_keys($param['options']); // $param_list='ObjectName:classPath' + $showempty=(($required && $default != '')?0:1); + $out=$form->selectForForms($param_list[0], $keyprefix.$key.$keysuffix, $value, $showempty, '', '', $morecss); + } + elseif ($type == 'password') + { + // If prefix is 'search_', field is used as a filter, we use a common text field. + $out=''; // Hidden field to reduce impact of evil Google Chrome autopopulate bug. + $out.=''; + } + if (!empty($hidden)) { + $out=''; + } + /* Add comments + if ($type == 'date') $out.=' (YYYY-MM-DD)'; + elseif ($type == 'datetime') $out.=' (YYYY-MM-DD HH:MM:SS)'; + */ + /*if (! empty($help) && $keyprefix != 'search_options_') { + $out .= $form->textwithpicto('', $help, 1, 'help', '', 0, 3); + }*/ + return $out; + } + + + /** + * Return HTML string to put an output field into a page + * + * @param string $key Key of attribute + * @param string $value Value to show + * @param string $moreparam To add more parameters on html input tag (only checkbox use html input for output rendering) + * @param string $extrafieldsobjectkey If defined (for example $object->table_element), function uses the new method to get extrafields data + * @return string Formated value + */ + public function showOutputField($key, $value, $moreparam = '', $extrafieldsobjectkey = '') + { + global $conf, $langs; + + if (!empty($extrafieldsobjectkey)) + { + $label = $this->attributes[$extrafieldsobjectkey]['label'][$key]; + $type = $this->attributes[$extrafieldsobjectkey]['type'][$key]; + $size = $this->attributes[$extrafieldsobjectkey]['size'][$key]; + $default = $this->attributes[$extrafieldsobjectkey]['default'][$key]; + $computed = $this->attributes[$extrafieldsobjectkey]['computed'][$key]; + $unique = $this->attributes[$extrafieldsobjectkey]['unique'][$key]; + $required = $this->attributes[$extrafieldsobjectkey]['required'][$key]; + $param = $this->attributes[$extrafieldsobjectkey]['param'][$key]; + $perms = dol_eval($this->attributes[$extrafieldsobjectkey]['perms'][$key], 1); + $langfile = $this->attributes[$extrafieldsobjectkey]['langfile'][$key]; + $list = dol_eval($this->attributes[$extrafieldsobjectkey]['list'][$key], 1); + $help = $this->attributes[$extrafieldsobjectkey]['help'][$key]; + $hidden = (empty($list) ? 1 : 0); // If $list empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller) + } + else // Old usage + { + //dol_syslog("Warning: parameter 'extrafieldsobjectkey' is missing", LOG_WARNING); + $label = $this->attribute_label[$key]; + $type = $this->attribute_type[$key]; + $size = $this->attribute_size[$key]; + $default = $this->attribute_default[$key]; + $computed = $this->attribute_computed[$key]; + $unique = $this->attribute_unique[$key]; + $required = $this->attribute_required[$key]; + $param = $this->attribute_param[$key]; + $perms = dol_eval($this->attribute_perms[$key], 1); + $langfile = $this->attribute_langfile[$key]; + $list = dol_eval($this->attribute_list[$key], 1); + $help = ''; // Not supported with old syntax + $hidden = (empty($list) ? 1 : 0); // If $list empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller) + } + + if ($hidden) return ''; // This is a protection. If field is hidden, we should just not call this method. + + //if ($computed) $value = // $value is already calculated into $value before calling this method + + $showsize = 0; + if ($type == 'date') + { + $showsize = 10; + $value = dol_print_date($value, 'day'); + } + elseif ($type == 'datetime') + { + $showsize = 19; + $value = dol_print_date($value, 'dayhour'); + } + elseif ($type == 'int') + { + $showsize = 10; + } + elseif ($type == 'double') + { + if (!empty($value)) { + //$value=price($value); + $sizeparts = explode(",", $size); + $number_decimals = $sizeparts[1]; + $value = price($value, 0, $langs, 0, 0, $number_decimals, ''); + } + } + elseif ($type == 'boolean') + { + $checked = ''; + if (!empty($value)) { + $checked = ' checked '; + } + $value = ''; + } + elseif ($type == 'mail') + { + $value = dol_print_email($value, 0, 0, 0, 64, 1, 1); + } + elseif ($type == 'url') + { + $value = dol_print_url($value, '_blank', 32, 1); + } + elseif ($type == 'phone') + { + $value = dol_print_phone($value, '', 0, 0, '', ' ', 'phone'); + } + elseif ($type == 'price') + { + $value = price($value, 0, $langs, 0, 0, -1, $conf->currency); + } + elseif ($type == 'select') + { + if ($langfile && $param['options'][$value]) $value = $langs->trans($param['options'][$value]); + else $value = $param['options'][$value]; + } + elseif ($type == 'sellist') + { + $param_list = array_keys($param['options']); + $InfoFieldList = explode(":", $param_list[0]); + + $selectkey = "rowid"; + $keyList = 'rowid'; + + if (count($InfoFieldList) >= 3) + { + $selectkey = $InfoFieldList[2]; + $keyList = $InfoFieldList[2].' as rowid'; + } + + $fields_label = explode('|', $InfoFieldList[1]); + if (is_array($fields_label)) { + $keyList .= ', '; + $keyList .= implode(', ', $fields_label); + } + + $sql = 'SELECT '.$keyList; + $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + if (strpos($InfoFieldList[4], 'extra') !== false) + { + $sql .= ' as main'; + } + if ($selectkey == 'rowid' && empty($value)) { + $sql .= " WHERE ".$selectkey."=0"; + } elseif ($selectkey == 'rowid') { + $sql .= " WHERE ".$selectkey."=".$this->db->escape($value); + } else { + $sql .= " WHERE ".$selectkey."='".$this->db->escape($value)."'"; + } + + //$sql.= ' AND entity = '.$conf->entity; + + dol_syslog(get_class($this).':showOutputField:$type=sellist', LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) + { + $value = ''; // value was used, so now we reste it to use it to build final output + + $obj = $this->db->fetch_object($resql); + + // Several field into label (eq table:code|libelle:rowid) + $fields_label = explode('|', $InfoFieldList[1]); + + if (is_array($fields_label) && count($fields_label) > 1) + { + foreach ($fields_label as $field_toshow) + { + $translabel = ''; + if (!empty($obj->$field_toshow)) { + $translabel = $langs->trans($obj->$field_toshow); + } + if ($translabel != $field_toshow) { + $value .= dol_trunc($translabel, 18).' '; + } else { + $value .= $obj->$field_toshow.' '; + } + } + } + else + { + $translabel = ''; + if (!empty($obj->{$InfoFieldList[1]})) { + $translabel = $langs->trans($obj->{$InfoFieldList[1]}); + } + if ($translabel != $obj->{$InfoFieldList[1]}) { + $value = dol_trunc($translabel, 18); + } else { + $value = $obj->{$InfoFieldList[1]}; + } + } + } + else dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING); + } + elseif ($type == 'radio') + { + $value = $param['options'][$value]; + } + elseif ($type == 'checkbox') + { + $value_arr = explode(',', $value); + $value = ''; + $toprint = array(); + if (is_array($value_arr)) + { + foreach ($value_arr as $keyval=>$valueval) { + $toprint[] = '
  • '.$param['options'][$valueval].'
  • '; + } + } + $value = '
      '.implode(' ', $toprint).'
    '; + } + elseif ($type == 'chkbxlst') + { + $value_arr = explode(',', $value); + + $param_list = array_keys($param['options']); + $InfoFieldList = explode(":", $param_list[0]); + + $selectkey = "rowid"; + $keyList = 'rowid'; + + if (count($InfoFieldList) >= 3) { + $selectkey = $InfoFieldList[2]; + $keyList = $InfoFieldList[2].' as rowid'; + } + + $fields_label = explode('|', $InfoFieldList[1]); + if (is_array($fields_label)) { + $keyList .= ', '; + $keyList .= implode(', ', $fields_label); + } + + $sql = 'SELECT '.$keyList; + $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + if (strpos($InfoFieldList[4], 'extra') !== false) { + $sql .= ' as main'; + } + // $sql.= " WHERE ".$selectkey."='".$this->db->escape($value)."'"; + // $sql.= ' AND entity = '.$conf->entity; + + dol_syslog(get_class($this).':showOutputField:$type=chkbxlst', LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) { + $value = ''; // value was used, so now we reste it to use it to build final output + $toprint = array(); + while ($obj = $this->db->fetch_object($resql)) { + // Several field into label (eq table:code|libelle:rowid) + $fields_label = explode('|', $InfoFieldList[1]); + if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) { + if (is_array($fields_label) && count($fields_label) > 1) { + foreach ($fields_label as $field_toshow) { + $translabel = ''; + if (!empty($obj->$field_toshow)) { + $translabel = $langs->trans($obj->$field_toshow); + } + if ($translabel != $field_toshow) { + $toprint[] = '
  • '.dol_trunc($translabel, 18).'
  • '; + } else { + $toprint[] = '
  • '.$obj->$field_toshow.'
  • '; + } + } + } else { + $translabel = ''; + if (!empty($obj->{$InfoFieldList[1]})) { + $translabel = $langs->trans($obj->{$InfoFieldList[1]}); + } + if ($translabel != $obj->{$InfoFieldList[1]}) { + $toprint[] = '
  • '.dol_trunc($translabel, 18).'
  • '; + } else { + $toprint[] = '
  • '.$obj->{$InfoFieldList[1]}.'
  • '; + } + } + } + } + $value = '
      '.implode(' ', $toprint).'
    '; + } else { + dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING); + } + } + elseif ($type == 'link') + { + $out = ''; + + // Only if something to display (perf) + if ($value) // If we have -1 here, pb is into insert, not into ouptut (fix insert instead of changing code here to compensate) + { + $param_list = array_keys($param['options']); // $param_list='ObjectName:classPath' + + $InfoFieldList = explode(":", $param_list[0]); + $classname = $InfoFieldList[0]; + $classpath = $InfoFieldList[1]; + if (!empty($classpath)) + { + dol_include_once($InfoFieldList[1]); + if ($classname && class_exists($classname)) + { + $object = new $classname($this->db); + $object->fetch($value); + $value = $object->getNomUrl(3); + } + } + else + { + dol_syslog('Error bad setup of extrafield', LOG_WARNING); + return 'Error bad setup of extrafield'; + } + } + } + elseif ($type == 'text') + { + $value = dol_htmlentitiesbr($value); + } + elseif ($type == 'html') + { + $value = dol_htmlentitiesbr($value); + } + elseif ($type == 'password') + { + $value = dol_trunc(preg_replace('/./i', '*', $value), 8, 'right', 'UTF-8', 1); + } + else + { + $showsize = round($size); + if ($showsize > 48) $showsize = 48; + } + + //print $type.'-'.$size; + $out = $value; + + return $out; + } + + /** + * Return tag to describe alignement to use for this extrafield + * + * @param string $key Key of attribute + * @param string $extrafieldsobjectkey If defined, use the new method to get extrafields data + * @return string Formated value + */ + public function getAlignFlag($key, $extrafieldsobjectkey = '') + { + global $conf, $langs; + + if (!empty($extrafieldsobjectkey)) $type = $this->attributes[$extrafieldsobjectkey]['type'][$key]; + else $type = $this->attribute_type[$key]; + + $align = ''; + + if ($type == 'date') + { + $align = "center"; + } + elseif ($type == 'datetime') + { + $align = "center"; + } + elseif ($type == 'int') + { + $align = "right"; + } + elseif ($type == 'price') + { + $align="right"; + } + elseif ($type == 'double') + { + $align = "right"; + } + elseif ($type == 'boolean') + { + $align = "center"; + } + elseif ($type == 'radio') + { + $align = "center"; + } + elseif ($type == 'checkbox') + { + $align = "center"; + } + elseif ($type == 'price') + { + $align = "right"; + } + + return $align; + } + + /** + * Return HTML string to print separator extrafield + * + * @param string $key Key of attribute + * @param string $object Object + * @param int $colspan Value of colspan to use (it must includes the first column with title) + * @return string HTML code with line for separator + */ + public function showSeparator($key, $object, $colspan = 2) + { + global $langs; + + $out = ''; + $out .= $langs->trans($this->attributes[$object->table_element]['label'][$key]); + $out .= ''; + + $extrafield_param = $this->attributes[$object->table_element]['param'][$key]; + if (!empty($extrafield_param) && is_array($extrafield_param)) { + $extrafield_param_list = array_keys($extrafield_param['options']); + + if (count($extrafield_param_list) > 0) { + $extrafield_collapse_display_value = intval($extrafield_param_list[0]); + if ($extrafield_collapse_display_value == 1 || $extrafield_collapse_display_value == 2) { + // Set the collapse_display status to cookie in priority or if ignorecollapsesetup is 1, if cookie and ignorecollapsesetup not defined, use the setup. + $collapse_display = ((isset($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key]) || GETPOST('ignorecollapsesetup', 'int')) ? ($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key] ? true : false) : ($extrafield_collapse_display_value == 2 ? false : true)); + $extrafields_collapse_num = $this->attributes[$object->table_element]['pos'][$key]; + + $out .= ''; + $out .= ''; + } + } + } + + return $out; + } + + /** + * Fill array_options property of object by extrafields value (using for data sent by forms) + * + * @param array $extralabels Deprecated (old $array of extrafields, now set this to null) + * @param object $object Object + * @param string $onlykey Only the following key is filled. When we make update of only one extrafield ($action = 'update_extras'), calling page must set this to avoid to have other extrafields being reset. + * @return int 1 if array_options set, 0 if no value, -1 if error (field required missing for example) + */ + public function setOptionalsFromPost($extralabels, &$object, $onlykey = '') + { + global $_POST, $langs; + + $nofillrequired = 0; // For error when required field left blank + $error_field_required = array(); + + if (is_array($this->attributes[$object->table_element]['label'])) $extralabels = $this->attributes[$object->table_element]['label']; + + if (is_array($extralabels)) + { + // Get extra fields + foreach ($extralabels as $key => $value) + { + if (!empty($onlykey) && $key != $onlykey) continue; + + $key_type = $this->attributes[$object->table_element]['type'][$key]; + if ($key_type == 'separate') continue; + + $enabled = 1; + if (isset($this->attributes[$object->table_element]['list'][$key])) + { + $enabled = dol_eval($this->attributes[$object->table_element]['list'][$key], 1); + } + $perms = 1; + if (isset($this->attributes[$object->table_element]['perms'][$key])) + { + $perms = dol_eval($this->attributes[$object->table_element]['perms'][$key], 1); + } + if (empty($enabled)) continue; + if (empty($perms)) continue; + + if ($this->attributes[$object->table_element]['required'][$key]) // Value is required + { + // Check if empty without using GETPOST, value can be alpha, int, array, etc... + if ((!is_array($_POST["options_".$key]) && empty($_POST["options_".$key]) && $this->attributes[$object->table_element]['type'][$key] != 'select' && $_POST["options_".$key] != '0') + || (!is_array($_POST["options_".$key]) && empty($_POST["options_".$key]) && $this->attributes[$object->table_element]['type'][$key] == 'select') + || (is_array($_POST["options_".$key]) && empty($_POST["options_".$key]))) + { + //print 'ccc'.$value.'-'.$this->attributes[$object->table_element]['required'][$key]; + $nofillrequired++; + $error_field_required[] = $langs->transnoentitiesnoconv($value); + } + } + + if (in_array($key_type, array('date'))) + { + // Clean parameters + // TODO GMT date in memory must be GMT so we should add gm=true in parameters + $value_key = dol_mktime(0, 0, 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]); + } + elseif (in_array($key_type, array('datetime'))) + { + // Clean parameters + // TODO GMT date in memory must be GMT so we should add gm=true in parameters + $value_key = dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]); + } + elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) + { + $value_arr = GETPOST("options_".$key, 'array'); // check if an array + if (!empty($value_arr)) { + $value_key = implode($value_arr, ','); + } else { + $value_key = ''; + } + } + elseif (in_array($key_type, array('price', 'double'))) + { + $value_arr = GETPOST("options_".$key, 'alpha'); + $value_key = price2num($value_arr); + } + else + { + $value_key = GETPOST("options_".$key); + if (in_array($key_type, array('link')) && $value_key == '-1') $value_key = ''; + } + + $object->array_options["options_".$key] = $value_key; + } + + if ($nofillrequired) { + $langs->load('errors'); + setEventMessages($langs->trans('ErrorFieldsRequired').' : '.implode(', ', $error_field_required), null, 'errors'); + return -1; + } + else { + return 1; + } + } + else { + return 0; + } + } + + /** + * return array_options array of data of extrafields value of object sent by a search form + * + * @param array|string $extrafieldsobjectkey array of extrafields (old usage) or value of object->table_element (new usage) + * @param string $keyprefix Prefix string to add into name and id of field (can be used to avoid duplicate names) + * @param string $keysuffix Suffix string to add into name and id of field (can be used to avoid duplicate names) + * @return array|int array_options set or 0 if no value + */ + public function getOptionalsFromPost($extrafieldsobjectkey, $keyprefix = '', $keysuffix = '') + { + global $_POST; + + if (is_string($extrafieldsobjectkey) && is_array($this->attributes[$extrafieldsobjectkey]['label'])) + { + $extralabels = $this->attributes[$extrafieldsobjectkey]['label']; + } + else + { + $extralabels = $extrafieldsobjectkey; + } + + if (is_array($extralabels)) + { + $array_options = array(); + + // Get extra fields + foreach ($extralabels as $key => $value) + { + $key_type = ''; + if (is_string($extrafieldsobjectkey)) + { + $key_type = $this->attributes[$extrafieldsobjectkey]['type'][$key]; + } + + if (in_array($key_type, array('date', 'datetime'))) + { + if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix."year")) continue; // Value was not provided, we should not set it. + // Clean parameters + $value_key = dol_mktime(GETPOST($keysuffix."options_".$key.$keyprefix."hour", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."min", 'int'), 0, GETPOST($keysuffix."options_".$key.$keyprefix."month", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."day", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."year", 'int')); + } + elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) + { + if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. + $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix); + // Make sure we get an array even if there's only one checkbox + $value_arr = (array) $value_arr; + $value_key = implode(',', $value_arr); + } + elseif (in_array($key_type, array('price', 'double', 'int'))) + { + if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. + $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix); + $value_key = price2num($value_arr); + } + else + { + if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it. + $value_key = GETPOST($keysuffix."options_".$key.$keyprefix); + } + + $array_options[$keysuffix."options_".$key] = $value_key; // No keyprefix here. keyprefix is used only for read. + } + + return $array_options; + } + + return 0; + } +} diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 7404b3c6945..0b8185b3854 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -329,12 +329,24 @@ class Form */ public function widgetForTranslation($fieldname, $object, $perm, $typeofdata = 'string', $check = '', $morecss = '') { - global $conf, $langs; + global $conf, $langs, $extralanguages; $result = ''; - if (! empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE)) { - $langcode = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; + // List of extra languages + $arrayoflangcode = array(); + if (! empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE)) $arrayoflangcode[] = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; + + if (is_array($arrayoflangcode) && count($arrayoflangcode)) { + if (! is_object($extralanguages)) { + include_once DOL_DOCUMENT_ROOT.'/core/class/extralanguages.class.php'; + $extralanguages = new ExtraLanguages($this->db); + } + $extralanguages->fetch_name_extralanguages('societe'); + + if (! is_array($extralanguages->attributes[$object->element]) || empty($extralanguages->attributes[$object->element][$fieldname])) { + return ''; // No extralang field to show + } $result .='
    '; $s=img_picto($langs->trans("ShowOtherLanguages"), 'language', '', false, 0, 0, '', 'fa-15 editfieldlang'); @@ -343,22 +355,28 @@ class Form $result .=''; $result .= ''; } @@ -7260,7 +7278,7 @@ class Form */ public function showrefnav($object, $paramid, $morehtml = '', $shownav = 1, $fieldid = 'rowid', $fieldref = 'ref', $morehtmlref = '', $moreparam = '', $nodbprefix = 0, $morehtmlleft = '', $morehtmlstatus = '', $morehtmlright = '') { - global $langs, $conf, $hookmanager; + global $langs, $conf, $hookmanager, $extralanguages; $ret = ''; if (empty($fieldid)) $fieldid = 'rowid'; @@ -7360,16 +7378,24 @@ class Form { $ret .= dol_htmlentities($object->name); - $useextralanguages = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; - if ($useextralanguages) { - $object->fetchValuesForExtraLanguages(); - $extralanguages = array(); - if (isset($object->array_languages['name'])) $extralanguages[] = reset(array_keys($object->array_languages['name'])); + // List of extra languages + $arrayoflangcode = array(); + if (! empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE)) $arrayoflangcode[] = $conf->global->PDF_USE_ALSO_LANGUAGE_CODE; + + if (is_array($arrayoflangcode) && count($arrayoflangcode)) { + if (! is_object($extralanguages)) { + include_once DOL_DOCUMENT_ROOT.'/core/class/extralanguages.class.php'; + $extralanguages = new ExtraLanguages($this->db); + } + $extralanguages->fetch_name_extralanguages('societe'); + + if (! empty($extralanguages->attributes['societe']['name'])) + { + $object->fetchValuesForExtraLanguages(); - if (is_array($extralanguages) && count($extralanguages)) { $htmltext = ''; // If there is extra languages - foreach($extralanguages as $extralangcode) { + foreach($arrayoflangcode as $extralangcode) { $s=picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); $htmltext .= $s.$object->array_languages['name'][$extralangcode]; } From f6b216eafc73b3fe6814f08f90ebfdb010a652db Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 1 Apr 2020 23:32:44 +0200 Subject: [PATCH 043/336] Fix travis --- htdocs/core/class/commonobject.class.php | 1 - htdocs/core/lib/files.lib.php | 1 - 2 files changed, 2 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index bc1fd5e75b7..2352450e770 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5744,7 +5744,6 @@ abstract class CommonObject foreach($new_array_languages as $key => $langcodearray) { // $key = 'name', 'town', ... foreach($langcodearray as $langcode => $value) { - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."object_lang"; $sql_del .= " WHERE fk_object = ".$this->id." AND property = '".$this->db->escape($key)."' AND type_object = '".$this->db->escape($table_element)."'"; $sql_del .= " AND lang = '".$this->db->escape($langcode)."'"; diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 7dafb316a18..a39e48e3a60 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -1551,7 +1551,6 @@ function dol_add_file_process($upload_dir, $allowoverwrite = 0, $donotupdatesess { $destfull = $upload_dir."/".preg_replace('/__file__/', $TFile['name'][$i], $savingdocmask); $destfile = preg_replace('/__file__/', $TFile['name'][$i], $savingdocmask); - } // dol_sanitizeFileName the file name and lowercase extension From 7330c3120484e41ccdb59d11c449e80faf2a2637 Mon Sep 17 00:00:00 2001 From: Alex Veremme Date: Thu, 2 Apr 2020 01:10:56 +0200 Subject: [PATCH 044/336] Fix ##13474: copy extrafields of LINES from a draft invoice to an invoice template --- .../compta/facture/class/facture-rec.class.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 5480142ec78..f856151c8af 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -251,6 +251,23 @@ class FactureRec extends CommonInvoice { $error++; } + else { + $objectline = new FactureLigneRec($this->db); + if ($objectline->fetch($result_insert)) + { + // Extrafields + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($facsrc->lines[$i], 'fetch_optionals')) { + $facsrc->lines[$i]->fetch_optionals($facsrc->lines[$i]->rowid); + $objectline->array_options = $facsrc->lines[$i]->array_options; + } + + $result = $objectline->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + } } if (!empty($this->linkedObjectsIds) && empty($this->linked_objects)) // To use new linkedObjectsIds instead of old linked_objects From 9476fbc3e714dacf376bc4d6a68f2a25717b7f32 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Wed, 1 Apr 2020 23:16:13 +0000 Subject: [PATCH 045/336] Fixing style errors. --- htdocs/compta/facture/class/facture-rec.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index f856151c8af..110f5a9cbb8 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -260,7 +260,7 @@ class FactureRec extends CommonInvoice $facsrc->lines[$i]->fetch_optionals($facsrc->lines[$i]->rowid); $objectline->array_options = $facsrc->lines[$i]->array_options; } - + $result = $objectline->insertExtraFields(); if ($result < 0) { From 4d2b4583d0ee4d26dfcb09514c31e08f51e314e1 Mon Sep 17 00:00:00 2001 From: Florian Mortgat Date: Thu, 2 Apr 2020 09:28:56 +0200 Subject: [PATCH 046/336] FIX - This error logs an Orderline::delete error, but this is an Orderline::insert error --- htdocs/commande/class/commande.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 6e4d2efc742..d44e7e6d5a1 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -4409,7 +4409,7 @@ class OrderLine extends CommonOrderLine foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); + dol_syslog(get_class($this)."::insert ".$errmsg, LOG_ERR); $this->error .= ($this->error ? ', '.$errmsg : $errmsg); } $this->db->rollback(); From a743110f03063164bad7da85cc5224c01bad45d7 Mon Sep 17 00:00:00 2001 From: altairis Date: Thu, 2 Apr 2020 10:44:24 +0200 Subject: [PATCH 047/336] FIX md stylesheet to be included by external modules like eldy --- htdocs/theme/md/style.css.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 1681c48e4e1..9d7f7b76dd4 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -48,7 +48,7 @@ if (defined('THEME_ONLY_CONSTANT')) return; session_cache_limiter('public'); -require_once '../../main.inc.php'; +require_once __DIR__.'/../../main.inc.php'; // __DIR__ allow this script to be included in custom themes require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // Load user to have $user->conf loaded (not done into main because of NOLOGIN constant defined) From 609de965b1cb4fec4647a77e16ea5b89873003e6 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Thu, 2 Apr 2020 10:45:14 +0200 Subject: [PATCH 048/336] fix: hook init invoicerec list normalyse --- htdocs/compta/facture/invoicetemplate_list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php index c04e9072339..14e1e124f1e 100644 --- a/htdocs/compta/facture/invoicetemplate_list.php +++ b/htdocs/compta/facture/invoicetemplate_list.php @@ -102,7 +102,7 @@ if (($id > 0 || $ref) && $action != 'create' && $action != 'add') } // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -$hookmanager->initHooks(array('invoicereccard', 'globalcard')); +$hookmanager->initHooks(array('invoicereclist')); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels From 84cda962c1271eed78faaa95f122016e64bd5730 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 12:03:29 +0200 Subject: [PATCH 049/336] Clean dead code --- .../class/accountancycategory.class.php | 48 ------------ .../class/accountingaccount.class.php | 26 ++----- htdocs/accountancy/class/lettering.class.php | 13 ---- .../mailing/class/advtargetemailing.class.php | 45 ----------- .../facture/class/paymentterm.class.php | 34 -------- .../class/paymentsocialcontribution.class.php | 32 -------- htdocs/core/actions_massactions.inc.php | 10 +-- htdocs/core/actions_sendmails.inc.php | 15 ++-- htdocs/core/class/ccountry.class.php | 45 ----------- htdocs/core/class/commonobject.class.php | 12 +-- htdocs/core/class/cstate.class.php | 44 ----------- htdocs/core/class/ctypent.class.php | 45 ----------- htdocs/core/class/cunits.class.php | 45 ----------- ...terface_50_modAgenda_ActionsAuto.class.php | 3 +- htdocs/cron/class/cronjob.class.php | 26 ------- htdocs/ecm/class/ecmdirectory.class.php | 9 ++- .../class/paymentexpensereport.class.php | 32 -------- htdocs/exports/class/export.class.php | 16 ---- htdocs/loan/class/loanschedule.class.php | 32 -------- htdocs/loan/class/paymentloan.class.php | 32 -------- htdocs/main.inc.php | 58 +++++--------- .../class/opensurveysondage.class.php | 15 ++-- htdocs/product/class/product.class.php | 15 ++-- htdocs/product/class/productbatch.class.php | 44 ----------- .../class/productcustomerprice.class.php | 41 ++-------- .../class/propalmergepdfproduct.class.php | 77 ------------------- htdocs/public/payment/paymentko.php | 10 +-- htdocs/public/payment/paymentok.php | 22 ++---- htdocs/resource/class/dolresource.class.php | 15 ++-- htdocs/user/logout.php | 8 +- 30 files changed, 89 insertions(+), 780 deletions(-) diff --git a/htdocs/accountancy/class/accountancycategory.class.php b/htdocs/accountancy/class/accountancycategory.class.php index 2f0cf264529..eed3bb60e67 100644 --- a/htdocs/accountancy/class/accountancycategory.class.php +++ b/htdocs/accountancy/class/accountancycategory.class.php @@ -199,24 +199,6 @@ class AccountancyCategory // extends CommonObject $resql=$this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - if (! $error) - { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_accounting_category"); - - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - //if (! $notrigger) - //{ - - // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } - // // End call triggers - //} - } - // Commit or rollback if ($error) { @@ -343,21 +325,6 @@ class AccountancyCategory // extends CommonObject $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - //if (! $notrigger) - //{ - // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } - // // End call triggers - //} - //} - // Commit or rollback if ($error) { @@ -398,21 +365,6 @@ class AccountancyCategory // extends CommonObject $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - //if (! $notrigger) - //{ - // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } - // // End call triggers - //} - //} - // Commit or rollback if ($error) { diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index 58e6bd600f6..794ce3c8e7c 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -295,17 +295,15 @@ class AccountingAccount extends CommonObject if (! $error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . "accounting_account"); - // if (! $notrigger) { // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. + // want this action to call a trigger. + //if (! $error && ! $notrigger) { // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } + // $result=$this->call_trigger('MYOBJECT_CREATE',$user); + // if ($result < 0) $error++; // // End call triggers - // } + //} } // Commit or rollback @@ -411,20 +409,6 @@ class AccountingAccount extends CommonObject if ($result > 0) { $this->db->begin(); - // if (! $error) { - // if (! $notrigger) { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('ACCOUNTANCY_ACCOUNT_DELETE',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } - // // End call triggers - // } - // } - if (! $error) { $sql = "DELETE FROM " . MAIN_DB_PREFIX . "accounting_account"; $sql .= " WHERE rowid=" . $this->id; diff --git a/htdocs/accountancy/class/lettering.class.php b/htdocs/accountancy/class/lettering.class.php index 97d62ebb5dc..88136ddea29 100644 --- a/htdocs/accountancy/class/lettering.class.php +++ b/htdocs/accountancy/class/lettering.class.php @@ -287,19 +287,6 @@ class Lettering extends BookKeeping } } - if (! $error) { - if (! $notrigger) { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } - // // End call triggers - } - } // Commit or rollback if ($error) { foreach ($this->errors as $errmsg) { diff --git a/htdocs/comm/mailing/class/advtargetemailing.class.php b/htdocs/comm/mailing/class/advtargetemailing.class.php index da1775955b7..f9602cdeed4 100644 --- a/htdocs/comm/mailing/class/advtargetemailing.class.php +++ b/htdocs/comm/mailing/class/advtargetemailing.class.php @@ -153,19 +153,6 @@ class AdvanceTargetingMailing extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."advtargetemailing"); - - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } } // Commit or rollback @@ -414,22 +401,6 @@ class AdvanceTargetingMailing extends CommonObject $this->errors[] = "Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { @@ -462,22 +433,6 @@ class AdvanceTargetingMailing extends CommonObject $this->db->begin(); - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."advtargetemailing"; diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index 58d4b7e0387..c8ba0d41725 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -133,18 +133,6 @@ class PaymentTerm // extends CommonObject if (! $error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_payment_term"); - - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - //if (! $notrigger) { - - // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } - // // End call triggers - //} } // Commit or rollback @@ -307,17 +295,6 @@ class PaymentTerm // extends CommonObject $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - //if (! $error && ! $notrigger) { - // Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - // End call triggers - //} - // Commit or rollback if ($error) { @@ -358,17 +335,6 @@ class PaymentTerm // extends CommonObject $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - //if (! $error && ! $notrigger) { - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - //} - // Commit or rollback if ($error) { diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index 02c15b099b9..00f7354c20b 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -348,22 +348,6 @@ class PaymentSocialContribution extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { @@ -420,22 +404,6 @@ class PaymentSocialContribution extends CommonObject if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 419296b7341..5e08559e056 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -550,12 +550,10 @@ if (!$error && $massaction == 'confirm_presend') if (!empty($triggername)) { - // Appel des triggers - include_once DOL_DOCUMENT_ROOT."/core/class/interfaces.class.php"; - $interface = new Interfaces($db); - $result = $interface->run_triggers($triggername, $objectobj2, $user, $langs, $conf); - if ($result < 0) { $error++; $errors = $interface->errors; } - // Fin appel triggers + // Call trigger + $result = $objectobj2->call_trigger($triggername, $user); + if ($result < 0) $error++; + // End call triggers if ($error) { diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index 0a8ed21da14..e23d2ce01a9 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -455,16 +455,19 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST $object->email_subject = $subject; $object->email_msgid = $mailfile->msgid; - // Call of triggers (you should have set $triggersendname to execute trigger. $trigger_name is deprcated) + // Call of triggers (you should have set $triggersendname to execute trigger. $trigger_name is deprecated) if (!empty($triggersendname) || !empty($trigger_name)) { - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($db); - $result = $interface->run_triggers(empty($triggersendname) ? $trigger_name : $triggersendname, $object, $user, $langs, $conf); - if ($result < 0) { - setEventMessages($interface->error, $interface->errors, 'errors'); + // Call trigger + $result = $object->call_trigger(empty($triggersendname) ? $trigger_name : $triggersendname, $user); + if ($result < 0) $error++; + // End call triggers + + if ($error) { + setEventMessages($object->error, $object->errors, 'errors'); } } + // End call of triggers } // Redirect here diff --git a/htdocs/core/class/ccountry.class.php b/htdocs/core/class/ccountry.class.php index e117f99488a..15a8c82b11e 100644 --- a/htdocs/core/class/ccountry.class.php +++ b/htdocs/core/class/ccountry.class.php @@ -126,19 +126,6 @@ class Ccountry // extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_country"); - - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } } // Commit or rollback @@ -247,22 +234,6 @@ class Ccountry // extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - // Commit or rollback if ($error) { @@ -303,22 +274,6 @@ class Ccountry // extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - // Commit or rollback if ($error) { diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 2352450e770..b6f1a22eea6 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3629,14 +3629,10 @@ abstract class CommonObject if ($trigkey) { - // Appel des triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers($trigkey, $this, $user, $langs, $conf); - if ($result < 0) { - $error++; $this->errors = $interface->errors; - } - // Fin appel triggers + // Call trigger + $result = $this->call_trigger($trigkey, $user); + if ($result < 0) $error++; + // End call triggers } if (!$error) diff --git a/htdocs/core/class/cstate.class.php b/htdocs/core/class/cstate.class.php index b571858cc84..8fcbdaa6fa3 100644 --- a/htdocs/core/class/cstate.class.php +++ b/htdocs/core/class/cstate.class.php @@ -120,18 +120,6 @@ class Cstate // extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_departements"); - - //if (! $notrigger) { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - //} } // Commit or rollback @@ -231,22 +219,6 @@ class Cstate // extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { foreach ($this->errors as $errmsg) { @@ -282,22 +254,6 @@ class Cstate // extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { diff --git a/htdocs/core/class/ctypent.class.php b/htdocs/core/class/ctypent.class.php index 376210f472f..88c0518babf 100644 --- a/htdocs/core/class/ctypent.class.php +++ b/htdocs/core/class/ctypent.class.php @@ -124,19 +124,6 @@ class Ctypent // extends CommonObject if (! $error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_typent"); - - if (! $notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } } // Commit or rollback @@ -243,22 +230,6 @@ class Ctypent // extends CommonObject $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - if (! $error) - { - if (! $notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - // Commit or rollback if ($error) { @@ -299,22 +270,6 @@ class Ctypent // extends CommonObject $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { diff --git a/htdocs/core/class/cunits.class.php b/htdocs/core/class/cunits.class.php index a4d7b742d51..c48d57d31f3 100644 --- a/htdocs/core/class/cunits.class.php +++ b/htdocs/core/class/cunits.class.php @@ -123,19 +123,6 @@ class CUnits // extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_units"); - - //if (! $notrigger) - //{ - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - //} } // Commit or rollback @@ -342,22 +329,6 @@ class CUnits // extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { @@ -398,22 +369,6 @@ class CUnits // extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index 3fe9d63c380..3206e9377d3 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -831,7 +831,8 @@ class InterfaceActionsAuto extends DolibarrTriggers // TODO Merge all previous cases into this generic one else // $action = BILL_DELETE, TICKET_CREATE, TICKET_MODIFY, TICKET_DELETE, ... { - // Note: We are here only if $conf->global->MAIN_AGENDA_ACTIONAUTO_action is on (tested at begining of this function). Key can be set in agenda setup if defined into c_action_trigger + // Note: We are here only if $conf->global->MAIN_AGENDA_ACTIONAUTO_action is on (tested at begining of this function). + // Note that these key can be set in agenda setup, only if defined into c_action_trigger // Load translation files required by the page $langs->loadLangs(array("agenda", "other")); diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 6d7b17f7fe0..92a132a6789 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -267,19 +267,6 @@ class Cronjob extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."cronjob"); - - //if (! $notrigger) - //{ - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - //} } // Commit or rollback @@ -657,19 +644,6 @@ class Cronjob extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - //if (! $error && ! $notrigger) - //{ - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - //} - // Commit or rollback if ($error) { diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index 7471b3d30a4..c8c67f82b9c 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -789,11 +789,12 @@ class EcmDirectory // extends CommonObject // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Call trigger based on this instance + * Call trigger based on this instance. + * We implement it here because this class doe not extend CommonObject. * - * NB: Error from trigger are stacked in errors - * NB2: if trigger fail, action should be canceled. - * NB3: Should be deleted if EcmDirectory extend CommonObject + * NB1: Error from trigger are stacked in errors + * NB2: if trigger fail, action should be canceled. + * NB3: Should be deleted if EcmDirectory extend CommonObject * * @param string $triggerName trigger's name to execute * @param User $user Object user diff --git a/htdocs/expensereport/class/paymentexpensereport.class.php b/htdocs/expensereport/class/paymentexpensereport.class.php index 156bd329d49..0cab2a5122c 100644 --- a/htdocs/expensereport/class/paymentexpensereport.class.php +++ b/htdocs/expensereport/class/paymentexpensereport.class.php @@ -301,22 +301,6 @@ class PaymentExpenseReport extends CommonObject $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - if (! $error) - { - if (! $notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - // Commit or rollback if ($error) { @@ -374,22 +358,6 @@ class PaymentExpenseReport extends CommonObject } } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index bf00027b58a..978a3059ace 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -812,22 +812,6 @@ class Export $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - // Commit or rollback if ($error) { diff --git a/htdocs/loan/class/loanschedule.class.php b/htdocs/loan/class/loanschedule.class.php index 2d4ae196bb6..8d0cf38af59 100644 --- a/htdocs/loan/class/loanschedule.class.php +++ b/htdocs/loan/class/loanschedule.class.php @@ -316,22 +316,6 @@ class LoanSchedule extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - // Commit or rollback if ($error) { @@ -369,22 +353,6 @@ class LoanSchedule extends CommonObject if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } } - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - // Commit or rollback if ($error) { diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index 9dd4a9ac284..1bd0f874949 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -316,22 +316,6 @@ class PaymentLoan extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - // Commit or rollback if ($error) { @@ -385,22 +369,6 @@ class PaymentLoan extends CommonObject if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action call a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 400ad73fad2..f28a701e566 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -510,14 +510,11 @@ if (!defined('NOLOGIN')) // Call trigger for the "security events" log $user->trigger_mesg = 'ErrorBadValueForCode - login='.GETPOST("username", "alpha", 2); - // Call of triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($db); - $result = $interface->run_triggers('USER_LOGIN_FAILED', $user, $user, $langs, $conf); - if ($result < 0) { - $error++; - } - // End Call of triggers + + // Call trigger + $result = $user->call_trigger('USER_LOGIN_FAILED', $user); + if ($result < 0) $error++; + // End call triggers // Hooks on failed login $action = ''; @@ -590,14 +587,11 @@ if (!defined('NOLOGIN')) // Call trigger for the "security events" log $user->trigger_mesg = $langs->trans("ErrorBadLoginPassword").' - login='.GETPOST("username", "alpha", 2); - // Call of triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($db); - $result = $interface->run_triggers('USER_LOGIN_FAILED', $user, $user, $langs, $conf, GETPOST("username", "alpha", 2)); - if ($result < 0) { - $error++; - } - // End Call of triggers + + // Call trigger + $result = $user->call_trigger('USER_LOGIN_FAILED', $user); + if ($result < 0) $error++; + // End call triggers // Hooks on failed login $action = ''; @@ -645,15 +639,12 @@ if (!defined('NOLOGIN')) $user->trigger_mesg = $user->error; } - // Call triggers for the "security events" log - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($db); - $result = $interface->run_triggers('USER_LOGIN_FAILED', $user, $user, $langs, $conf); - if ($result < 0) { - $error++; - } + // Call trigger + $result = $user->call_trigger('USER_LOGIN_FAILED', $user); + if ($result < 0) $error++; // End call triggers + // Hooks on failed login $action = ''; $hookmanager->initHooks(array('login')); @@ -702,13 +693,9 @@ if (!defined('NOLOGIN')) $user->trigger_mesg = $user->error; } - // Call triggers for the "security events" log - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($db); - $result = $interface->run_triggers('USER_LOGIN_FAILED', $user, $user, $langs, $conf); - if ($result < 0) { - $error++; - } + // Call trigger + $result = $user->call_trigger('USER_LOGIN_FAILED', $user); + if ($result < 0) $error++; // End call triggers // Hooks on failed login @@ -809,13 +796,10 @@ if (!defined('NOLOGIN')) // Call triggers for the "security events" log $user->trigger_mesg = $loginfo; - // Call triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($db); - $result = $interface->run_triggers('USER_LOGIN', $user, $user, $langs, $conf); - if ($result < 0) { - $error++; - } + + // Call trigger + $result = $user->call_trigger('USER_LOGIN', $user); + if ($result < 0) $error++; // End call triggers // Hooks on successfull login diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php index 65eae44c2c0..7c1263904fc 100644 --- a/htdocs/opensurvey/class/opensurveysondage.class.php +++ b/htdocs/opensurvey/class/opensurveysondage.class.php @@ -320,17 +320,12 @@ class Opensurveysondage extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - if (!$error) + if (!$error && !$notrigger) { - if (!$notrigger) - { - // Call triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('OPENSURVEY_MODIFY', $this, $user, $langs, $conf); - if ($result < 0) { $error++; $this->errors = $interface->errors; } - // End call triggers - } + // Call trigger + $result = $this->call_trigger('OPENSURVEY_MODIFY', $user); + if ($result < 0) $error++; + // End call triggers } // Commit or rollback diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index a4b2f5524de..d7bb434c0f6 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1452,6 +1452,8 @@ class Product extends CommonObject { global $user, $langs, $conf; + $error = 0; + $this->db->begin(); if ($type == 'buy') { @@ -1478,16 +1480,15 @@ class Product extends CommonObject $resql = $this->db->query($sql); if ($resql) { - // Call triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('PRODUCT_MODIFY', $this, $user, $langs, $conf); - if ($result < 0) { - $this->errors = $interface->errors; + // Call trigger + $result = $this->call_trigger('PRODUCT_MODIFY', $user); + if ($result < 0) $error++; + // End call triggers + + if ($error) { $this->db->rollback(); return -1; } - // End call triggers $this->$field = $value; diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php index 843bf2aa139..4df4eb2e974 100644 --- a/htdocs/product/class/productbatch.class.php +++ b/htdocs/product/class/productbatch.class.php @@ -112,19 +112,6 @@ class Productbatch extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.self::$_table_element); - - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } } // Commit or rollback @@ -234,21 +221,6 @@ class Productbatch extends CommonObject dol_syslog(get_class($this)."::update", LOG_DEBUG); $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } - if (! $error) - { - if (! $notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } // Commit or rollback if ($error) @@ -282,22 +254,6 @@ class Productbatch extends CommonObject $this->db->begin(); - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX.self::$_table_element.""; diff --git a/htdocs/product/class/productcustomerprice.class.php b/htdocs/product/class/productcustomerprice.class.php index 6c8cc269eba..bc6d6ef28f9 100644 --- a/htdocs/product/class/productcustomerprice.class.php +++ b/htdocs/product/class/productcustomerprice.class.php @@ -217,18 +217,6 @@ class Productcustomerprice extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."product_customer_price"); - - if (!$notrigger) { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } - // // End call triggers - } } if (!$error) { @@ -708,15 +696,12 @@ class Productcustomerprice extends CommonObject $this->errors [] = "Error ".$this->db->lasterror(); } - if (!$error) { - if (!$notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('PRODUCT_CUSTOMER_PRICE_UPDATE', $this, $user, $langs, $conf); - if ($result < 0) { $error++; $this->errors = $interface->errors; } - // End call triggers - } + if (!$error && !$notrigger) + { + // Call trigger + $result = $this->call_trigger('PRODUCT_CUSTOMER_PRICE_UPDATE', $user); + if ($result < 0) $error++; + // End call triggers } if (!$error) { @@ -849,20 +834,6 @@ class Productcustomerprice extends CommonObject $this->db->begin(); - if (!$error) { - if (!$notrigger) { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - // // Call triggers - // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - // $interface=new Interfaces($this->db); - // $result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - // if ($result < 0) { $error++; $this->errors=$interface->errors; } - // // End call triggers - } - } - if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_customer_price"; $sql .= " WHERE rowid=".$this->id; diff --git a/htdocs/product/class/propalmergepdfproduct.class.php b/htdocs/product/class/propalmergepdfproduct.class.php index 2a2eaa86d23..9ca53d167cf 100644 --- a/htdocs/product/class/propalmergepdfproduct.class.php +++ b/htdocs/product/class/propalmergepdfproduct.class.php @@ -127,19 +127,6 @@ class Propalmergepdfproduct extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."propal_merge_pdf_product"); - - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } } // Commit or rollback @@ -336,22 +323,6 @@ class Propalmergepdfproduct extends CommonObject $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - // Commit or rollback if ($error) { @@ -385,22 +356,6 @@ class Propalmergepdfproduct extends CommonObject $this->db->begin(); - if (!$error) - { - if (!$notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."propal_merge_pdf_product"; @@ -447,22 +402,6 @@ class Propalmergepdfproduct extends CommonObject $this->db->begin(); - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."propal_merge_pdf_product"; @@ -510,22 +449,6 @@ class Propalmergepdfproduct extends CommonObject $this->db->begin(); - //if (! $error) - //{ - // if (! $notrigger) - // { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - //$interface=new Interfaces($this->db); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - // } - //} - if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."propal_merge_pdf_product"; diff --git a/htdocs/public/payment/paymentko.php b/htdocs/public/payment/paymentko.php index eac2fdf9f47..f61026a0eca 100644 --- a/htdocs/public/payment/paymentko.php +++ b/htdocs/public/payment/paymentko.php @@ -129,12 +129,10 @@ if (!empty($_SESSION['ipaddress'])) // To avoid to make action twice $ipaddress = $_SESSION['ipaddress']; $errormessage = $_SESSION['errormessage']; - // Appel des triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($db); - $result = $interface->run_triggers('PAYMENTONLINE_PAYMENT_KO', $object, $user, $langs, $conf); - if ($result < 0) { $error++; $errors = $interface->errors; } - // Fin appel triggers + // Call trigger + $result = $object->call_trigger('PAYMENTONLINE_PAYMENT_KO', $user); + if ($result < 0) $error++; + // End call triggers // Send an email $sendemail = ''; diff --git a/htdocs/public/payment/paymentok.php b/htdocs/public/payment/paymentok.php index 28060a6d71e..cd73d2b21d2 100644 --- a/htdocs/public/payment/paymentok.php +++ b/htdocs/public/payment/paymentok.php @@ -748,13 +748,10 @@ if ($ispaymentok) $currencyCodeType = $_SESSION['currencyCodeType']; $FinalPaymentAmt = $_SESSION["FinalPaymentAmt"]; - // Appel des triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($db); - $result=$interface->run_triggers('PAYMENTONLINE_PAYMENT_OK', $object, $user, $langs, $conf); - if ($result < 0) { $error++; $errors=$interface->errors; } - // Fin appel triggers - + // Call trigger + $result = $object->call_trigger('PAYMENTONLINE_PAYMENT_OK', $user); + if ($result < 0) $error++; + // End call triggers print $langs->trans("YourPaymentHasBeenRecorded")."
    \n"; if ($TRANSACTIONID) print $langs->trans("ThisIsTransactionId", $TRANSACTIONID)."

    \n"; @@ -885,13 +882,10 @@ else $currencyCodeType = $_SESSION['currencyCodeType']; $FinalPaymentAmt = $_SESSION["FinalPaymentAmt"]; - // Appel des triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($db); - $result=$interface->run_triggers('PAYMENTONLINE_PAYMENT_KO', $object, $user, $langs, $conf); - if ($result < 0) { $error++; $errors=$interface->errors; } - // Fin appel triggers - + // Call trigger + $result = $object->call_trigger('PAYMENTONLINE_PAYMENT_KO', $user); + if ($result < 0) $error++; + // End call triggers print $langs->trans('DoExpressCheckoutPaymentAPICallFailed') . "
    \n"; print $langs->trans('DetailedErrorMessage') . ": " . $ErrorLongMsg."
    \n"; diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index 3a079d4cca6..75c6e50dec3 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -146,17 +146,12 @@ class Dolresource extends CommonObject } } - if (!$error) + if (!$error && !$notrigger) { - if (!$notrigger) - { - //// Call triggers - include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('RESOURCE_CREATE', $this, $user, $langs, $conf); - if ($result < 0) { $error++; $this->errors = $interface->errors; } - //// End call triggers - } + // Call trigger + $result = $this->call_trigger('RESOURCE_CREATE', $user); + if ($result < 0) $error++; + // End call triggers } // Commit or rollback diff --git a/htdocs/user/logout.php b/htdocs/user/logout.php index 02992eafa04..5cb03af224f 100644 --- a/htdocs/user/logout.php +++ b/htdocs/user/logout.php @@ -41,11 +41,9 @@ if (!empty($_SESSION["dol_authmode"]) && ($_SESSION["dol_authmode"] == 'forceuse global $conf, $langs, $user; -// Call triggers for the "security events" log -include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; -$interface = new Interfaces($db); -$result = $interface->run_triggers('USER_LOGOUT', $user, $user, $langs, $conf); -if ($result < 0) { $error++; } +// Call trigger +$result = $user->call_trigger('USER_LOGOUT', $user); +if ($result < 0) $error++; // End call triggers // Hooks on logout From 5622c1947bf5f146853a9dff3b9f721579495b7a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 12:23:53 +0200 Subject: [PATCH 050/336] Prepare 10.0.7 --- ChangeLog | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/ChangeLog b/ChangeLog index 914d5129f7e..dc0269aa321 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,77 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 10.0.7 compared to 10.0.6 ***** +FIX: 10.0 - missing translations for "orders" homepage "orders" box +FIX: 10.0 - status missing from last customer invoices box when using MAIN_STATUS_USES_CSS +FIX: 10.0 - translations for "orders" not loaded in the homepage box +FIX: #10309 +FIX: #12875 +FIX: #12932 +FIX: #12966 +FIX: #12973 +FIX: #13304 +FIX: advanced target emailing sql and ergonomy +FIX: an external user can not approved +FIX: Bad translation for productlot EatBy and SellBy +FIX: better check +FIX: better method to check user rights AND usergroup rights ! +FIX: CA by prod list filter +FIX: can be a string or integer +FIX: Check on unicity on prof id was not triggered sometimes +FIX: clone of purchase order +FIX: compatibility with multicompany (avoid duplicate data) +FIX: complex export model loading +FIX: date filter not used if no operator +FIX: date order was -1D and desc with label repetition +FIX: default lang selection when filter +FIX: dom and missing param +FIX: drafts are now implemented for stats +FIX: Error in log for email sending with smtps was not complete +FIX: Extrafield position in export field list must respect "pos" field +FIX: FEC export format +FIX: FEC export have specific name +FIX: fetching account on current entity +FIX: Filenames must not contains non ascii char or we will get non ascii +FIX: fk_type subscription list via api REST +FIX: Force FEC export to txt format +FIX: get remain to pay with rounding decimals +FIX: Invert isSellerInEEC and isBuyerInEEC +FIX: keep assigned users in session when loading projects and tasks +FIX: length, width and height units coherence in product table +FIX: links in products/services index +FIX: Mail smtps truncated if content has a line with single . +FIX: missing array option +FIX: missing global $conf +FIX: missing hook parameter +FIX: Missing Linked objects Fichinter Ref. in PDF formats +FIX: missing "statut" for getNomUrl() function +FIX: multicompany for discount +FIX: must be == and not = +FIX: Problem with column label in subscription list +FIX: regex for include or exclude categories in full arbo +FIX: Remove unexisting link +FIX: remove unused var, $usercancreate can be change by Multicompany +FIX: require category class in extrafield +FIX: round MT in accountancy books +FIX: search with '0' +FIX: send expense report mail in HTML format +FIX: SQL request and phpunit +FIX: substitute lines dates values on doc generator (ODT, ...) +FIX: test on 0 better than isset +FIX: The "automatic bind" was linked EEC to export accountancy code +FIX: thirdparty alias name desappeared if we change country with THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION conf +FIX: timezone must be tzserver and not tzuser as well as on contract card +FIX: typo on ckeck method +FIX: use "usergroup" instead "user" +FIX: Visualization rights correction on last modified contacts box +FIX: Warning on admin/export_files +FIX: We want to be able to import data for extrafields of entity 0 too +FIX: when we filter a list on a view status, we want this filter to be on bookmark that we create +FIX: wrong test +FIX: XSS vulnerability in description of list of audit events. +FIX: z-index for moretabsList with constant MAIN_MAXTABS_IN_CARD + ***** ChangeLog for 10.0.6 compared to 10.0.5 ***** FIX Regression of 10.0.5 to create/edit proposals and orders. FIX: #12760 #12763 #12755 #12765 #12751 From b8eaf8dd03bad2c82f4ad9c037326bf87b5ee1e1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 12:29:15 +0200 Subject: [PATCH 051/336] Removed jflot js library (we now use ChartJS) --- COPYRIGHT | 3 +- htdocs/includes/jquery/plugins/flot/API.md | 1498 -------- .../jquery/plugins/flot/CONTRIBUTING.md | 98 - htdocs/includes/jquery/plugins/flot/FAQ.md | 75 - .../includes/jquery/plugins/flot/LICENSE.txt | 22 - htdocs/includes/jquery/plugins/flot/Makefile | 12 - htdocs/includes/jquery/plugins/flot/NEWS.md | 1026 ------ .../includes/jquery/plugins/flot/PLUGINS.md | 143 - htdocs/includes/jquery/plugins/flot/README.md | 110 - .../includes/jquery/plugins/flot/excanvas.js | 1428 -------- .../jquery/plugins/flot/excanvas.min.js | 1 - .../plugins/flot/jquery.colorhelpers.js | 180 - .../plugins/flot/jquery.colorhelpers.min.js | 1 - .../jquery/plugins/flot/jquery.flot.canvas.js | 345 -- .../plugins/flot/jquery.flot.canvas.min.js | 7 - .../plugins/flot/jquery.flot.categories.js | 190 - .../flot/jquery.flot.categories.min.js | 7 - .../plugins/flot/jquery.flot.crosshair.js | 176 - .../plugins/flot/jquery.flot.crosshair.min.js | 7 - .../plugins/flot/jquery.flot.errorbars.js | 353 -- .../plugins/flot/jquery.flot.errorbars.min.js | 7 - .../plugins/flot/jquery.flot.fillbetween.js | 226 -- .../flot/jquery.flot.fillbetween.min.js | 7 - .../jquery/plugins/flot/jquery.flot.image.js | 241 -- .../plugins/flot/jquery.flot.image.min.js | 7 - .../jquery/plugins/flot/jquery.flot.js | 3168 ----------------- .../jquery/plugins/flot/jquery.flot.min.js | 8 - .../plugins/flot/jquery.flot.navigate.js | 346 -- .../plugins/flot/jquery.flot.navigate.min.js | 7 - .../jquery/plugins/flot/jquery.flot.pie.js | 820 ----- .../plugins/flot/jquery.flot.pie.min.js | 7 - .../jquery/plugins/flot/jquery.flot.resize.js | 59 - .../plugins/flot/jquery.flot.resize.min.js | 7 - .../plugins/flot/jquery.flot.selection.js | 360 -- .../plugins/flot/jquery.flot.selection.min.js | 7 - .../jquery/plugins/flot/jquery.flot.stack.js | 188 - .../plugins/flot/jquery.flot.stack.min.js | 7 - .../jquery/plugins/flot/jquery.flot.symbol.js | 71 - .../plugins/flot/jquery.flot.symbol.min.js | 7 - .../plugins/flot/jquery.flot.threshold.js | 142 - .../plugins/flot/jquery.flot.threshold.min.js | 7 - .../jquery/plugins/flot/jquery.flot.time.js | 432 --- .../plugins/flot/jquery.flot.time.min.js | 7 - 43 files changed, 1 insertion(+), 11819 deletions(-) delete mode 100644 htdocs/includes/jquery/plugins/flot/API.md delete mode 100644 htdocs/includes/jquery/plugins/flot/CONTRIBUTING.md delete mode 100644 htdocs/includes/jquery/plugins/flot/FAQ.md delete mode 100644 htdocs/includes/jquery/plugins/flot/LICENSE.txt delete mode 100644 htdocs/includes/jquery/plugins/flot/Makefile delete mode 100644 htdocs/includes/jquery/plugins/flot/NEWS.md delete mode 100644 htdocs/includes/jquery/plugins/flot/PLUGINS.md delete mode 100644 htdocs/includes/jquery/plugins/flot/README.md delete mode 100644 htdocs/includes/jquery/plugins/flot/excanvas.js delete mode 100644 htdocs/includes/jquery/plugins/flot/excanvas.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.colorhelpers.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.colorhelpers.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.canvas.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.canvas.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.categories.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.categories.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.crosshair.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.crosshair.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.errorbars.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.errorbars.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.fillbetween.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.fillbetween.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.image.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.image.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.navigate.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.navigate.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.pie.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.pie.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.resize.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.resize.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.selection.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.selection.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.stack.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.stack.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.symbol.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.symbol.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.threshold.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.threshold.min.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.time.js delete mode 100644 htdocs/includes/jquery/plugins/flot/jquery.flot.time.min.js diff --git a/COPYRIGHT b/COPYRIGHT index c1f400aff4e..d32bb9b45ea 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -38,13 +38,12 @@ TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes JS libraries: Ace 1.4.8 BSD Yes JS library to get code syntaxique coloration in a textarea. -Chart 2.9.3 MIT License Yes JS library for graph +ChartJS 2.9.3 MIT License Yes JS library for graph jQuery 3.4.1 MIT License Yes JS library jQuery UI 1.12.1 GPL and MIT License Yes JS library plugin UI jQuery select2 4.0.13 GPL and Apache License Yes JS library plugin for sexier multiselect jQuery blockUI 2.70.0 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups) jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors -jQuery Flot 0.8.3 MIT License Yes JS library to build graph jQuery JCrop 0.9.8 GPL and MIT License Yes JS library plugin Crop (to crop images) jQuery Jeditable 1.7.1 GPL and MIT License Yes JS library plugin jeditable (to edit in place) jQuery jNotify 1.1.00 Apache Software License 2.0 Yes JS library plugin jNotify (to use ajax popups) diff --git a/htdocs/includes/jquery/plugins/flot/API.md b/htdocs/includes/jquery/plugins/flot/API.md deleted file mode 100644 index e08b44cf1d2..00000000000 --- a/htdocs/includes/jquery/plugins/flot/API.md +++ /dev/null @@ -1,1498 +0,0 @@ -# Flot Reference # - -**Table of Contents** - -[Introduction](#introduction) -| [Data Format](#data-format) -| [Plot Options](#plot-options) -| [Customizing the legend](#customizing-the-legend) -| [Customizing the axes](#customizing-the-axes) -| [Multiple axes](#multiple-axes) -| [Time series data](#time-series-data) -| [Customizing the data series](#customizing-the-data-series) -| [Customizing the grid](#customizing-the-grid) -| [Specifying gradients](#specifying-gradients) -| [Plot Methods](#plot-methods) -| [Hooks](#hooks) -| [Plugins](#plugins) -| [Version number](#version-number) - ---- - -## Introduction ## - -Consider a call to the plot function: - -```js -var plot = $.plot(placeholder, data, options) -``` - -The placeholder is a jQuery object or DOM element or jQuery expression -that the plot will be put into. This placeholder needs to have its -width and height set as explained in the [README](README.md) (go read that now if -you haven't, it's short). The plot will modify some properties of the -placeholder so it's recommended you simply pass in a div that you -don't use for anything else. Make sure you check any fancy styling -you apply to the div, e.g. background images have been reported to be a -problem on IE 7. - -The plot function can also be used as a jQuery chainable property. This form -naturally can't return the plot object directly, but you can still access it -via the 'plot' data key, like this: - -```js -var plot = $("#placeholder").plot(data, options).data("plot"); -``` - -The format of the data is documented below, as is the available -options. The plot object returned from the call has some methods you -can call. These are documented separately below. - -Note that in general Flot gives no guarantees if you change any of the -objects you pass in to the plot function or get out of it since -they're not necessarily deep-copied. - - -## Data Format ## - -The data is an array of data series: - -```js -[ series1, series2, ... ] -``` - -A series can either be raw data or an object with properties. The raw -data format is an array of points: - -```js -[ [x1, y1], [x2, y2], ... ] -``` - -E.g. - -```js -[ [1, 3], [2, 14.01], [3.5, 3.14] ] -``` - -Note that to simplify the internal logic in Flot both the x and y -values must be numbers (even if specifying time series, see below for -how to do this). This is a common problem because you might retrieve -data from the database and serialize them directly to JSON without -noticing the wrong type. If you're getting mysterious errors, double -check that you're inputting numbers and not strings. - -If a null is specified as a point or if one of the coordinates is null -or couldn't be converted to a number, the point is ignored when -drawing. As a special case, a null value for lines is interpreted as a -line segment end, i.e. the points before and after the null value are -not connected. - -Lines and points take two coordinates. For filled lines and bars, you -can specify a third coordinate which is the bottom of the filled -area/bar (defaults to 0). - -The format of a single series object is as follows: - -```js -{ - color: color or number - data: rawdata - label: string - lines: specific lines options - bars: specific bars options - points: specific points options - xaxis: number - yaxis: number - clickable: boolean - hoverable: boolean - shadowSize: number - highlightColor: color or number -} -``` - -You don't have to specify any of them except the data, the rest are -options that will get default values. Typically you'd only specify -label and data, like this: - -```js -{ - label: "y = 3", - data: [[0, 3], [10, 3]] -} -``` - -The label is used for the legend, if you don't specify one, the series -will not show up in the legend. - -If you don't specify color, the series will get a color from the -auto-generated colors. The color is either a CSS color specification -(like "rgb(255, 100, 123)") or an integer that specifies which of -auto-generated colors to select, e.g. 0 will get color no. 0, etc. - -The latter is mostly useful if you let the user add and remove series, -in which case you can hard-code the color index to prevent the colors -from jumping around between the series. - -The "xaxis" and "yaxis" options specify which axis to use. The axes -are numbered from 1 (default), so { yaxis: 2} means that the series -should be plotted against the second y axis. - -"clickable" and "hoverable" can be set to false to disable -interactivity for specific series if interactivity is turned on in -the plot, see below. - -The rest of the options are all documented below as they are the same -as the default options passed in via the options parameter in the plot -commmand. When you specify them for a specific data series, they will -override the default options for the plot for that data series. - -Here's a complete example of a simple data specification: - -```js -[ { label: "Foo", data: [ [10, 1], [17, -14], [30, 5] ] }, - { label: "Bar", data: [ [11, 13], [19, 11], [30, -7] ] } -] -``` - - -## Plot Options ## - -All options are completely optional. They are documented individually -below, to change them you just specify them in an object, e.g. - -```js -var options = { - series: { - lines: { show: true }, - points: { show: true } - } -}; - -$.plot(placeholder, data, options); -``` - - -## Customizing the legend ## - -```js -legend: { - show: boolean - labelFormatter: null or (fn: string, series object -> string) - labelBoxBorderColor: color - noColumns: number - position: "ne" or "nw" or "se" or "sw" - margin: number of pixels or [x margin, y margin] - backgroundColor: null or color - backgroundOpacity: number between 0 and 1 - container: null or jQuery object/DOM element/jQuery expression - sorted: null/false, true, "ascending", "descending", "reverse", or a comparator -} -``` - -The legend is generated as a table with the data series labels and -small label boxes with the color of the series. If you want to format -the labels in some way, e.g. make them to links, you can pass in a -function for "labelFormatter". Here's an example that makes them -clickable: - -```js -labelFormatter: function(label, series) { - // series is the series object for the label - return '' + label + ''; -} -``` - -To prevent a series from showing up in the legend, simply have the function -return null. - -"noColumns" is the number of columns to divide the legend table into. -"position" specifies the overall placement of the legend within the -plot (top-right, top-left, etc.) and margin the distance to the plot -edge (this can be either a number or an array of two numbers like [x, -y]). "backgroundColor" and "backgroundOpacity" specifies the -background. The default is a partly transparent auto-detected -background. - -If you want the legend to appear somewhere else in the DOM, you can -specify "container" as a jQuery object/expression to put the legend -table into. The "position" and "margin" etc. options will then be -ignored. Note that Flot will overwrite the contents of the container. - -Legend entries appear in the same order as their series by default. If "sorted" -is "reverse" then they appear in the opposite order from their series. To sort -them alphabetically, you can specify true, "ascending" or "descending", where -true and "ascending" are equivalent. - -You can also provide your own comparator function that accepts two -objects with "label" and "color" properties, and returns zero if they -are equal, a positive value if the first is greater than the second, -and a negative value if the first is less than the second. - -```js -sorted: function(a, b) { - // sort alphabetically in ascending order - return a.label == b.label ? 0 : ( - a.label > b.label ? 1 : -1 - ) -} -``` - - -## Customizing the axes ## - -```js -xaxis, yaxis: { - show: null or true/false - position: "bottom" or "top" or "left" or "right" - mode: null or "time" ("time" requires jquery.flot.time.js plugin) - timezone: null, "browser" or timezone (only makes sense for mode: "time") - - color: null or color spec - tickColor: null or color spec - font: null or font spec object - - min: null or number - max: null or number - autoscaleMargin: null or number - - transform: null or fn: number -> number - inverseTransform: null or fn: number -> number - - ticks: null or number or ticks array or (fn: axis -> ticks array) - tickSize: number or array - minTickSize: number or array - tickFormatter: (fn: number, object -> string) or string - tickDecimals: null or number - - labelWidth: null or number - labelHeight: null or number - reserveSpace: null or true - - tickLength: null or number - - alignTicksWithAxis: null or number -} -``` - -All axes have the same kind of options. The following describes how to -configure one axis, see below for what to do if you've got more than -one x axis or y axis. - -If you don't set the "show" option (i.e. it is null), visibility is -auto-detected, i.e. the axis will show up if there's data associated -with it. You can override this by setting the "show" option to true or -false. - -The "position" option specifies where the axis is placed, bottom or -top for x axes, left or right for y axes. The "mode" option determines -how the data is interpreted, the default of null means as decimal -numbers. Use "time" for time series data; see the time series data -section. The time plugin (jquery.flot.time.js) is required for time -series support. - -The "color" option determines the color of the line and ticks for the axis, and -defaults to the grid color with transparency. For more fine-grained control you -can also set the color of the ticks separately with "tickColor". - -You can customize the font and color used to draw the axis tick labels with CSS -or directly via the "font" option. When "font" is null - the default - each -tick label is given the 'flot-tick-label' class. For compatibility with Flot -0.7 and earlier the labels are also given the 'tickLabel' class, but this is -deprecated and scheduled to be removed with the release of version 1.0.0. - -To enable more granular control over styles, labels are divided between a set -of text containers, with each holding the labels for one axis. These containers -are given the classes 'flot-[x|y]-axis', and 'flot-[x|y]#-axis', where '#' is -the number of the axis when there are multiple axes. For example, the x-axis -labels for a simple plot with only a single x-axis might look like this: - -```html -
    -
    January 2013
    - ... -
    -``` - -For direct control over label styles you can also provide "font" as an object -with this format: - -```js -{ - size: 11, - lineHeight: 13, - style: "italic", - weight: "bold", - family: "sans-serif", - variant: "small-caps", - color: "#545454" -} -``` - -The size and lineHeight must be expressed in pixels; CSS units such as 'em' -or 'smaller' are not allowed. - -The options "min"/"max" are the precise minimum/maximum value on the -scale. If you don't specify either of them, a value will automatically -be chosen based on the minimum/maximum data values. Note that Flot -always examines all the data values you feed to it, even if a -restriction on another axis may make some of them invisible (this -makes interactive use more stable). - -The "autoscaleMargin" is a bit esoteric: it's the fraction of margin -that the scaling algorithm will add to avoid that the outermost points -ends up on the grid border. Note that this margin is only applied when -a min or max value is not explicitly set. If a margin is specified, -the plot will furthermore extend the axis end-point to the nearest -whole tick. The default value is "null" for the x axes and 0.02 for y -axes which seems appropriate for most cases. - -"transform" and "inverseTransform" are callbacks you can put in to -change the way the data is drawn. You can design a function to -compress or expand certain parts of the axis non-linearly, e.g. -suppress weekends or compress far away points with a logarithm or some -other means. When Flot draws the plot, each value is first put through -the transform function. Here's an example, the x axis can be turned -into a natural logarithm axis with the following code: - -```js -xaxis: { - transform: function (v) { return Math.log(v); }, - inverseTransform: function (v) { return Math.exp(v); } -} -``` - -Similarly, for reversing the y axis so the values appear in inverse -order: - -```js -yaxis: { - transform: function (v) { return -v; }, - inverseTransform: function (v) { return -v; } -} -``` - -Note that for finding extrema, Flot assumes that the transform -function does not reorder values (it should be monotone). - -The inverseTransform is simply the inverse of the transform function -(so v == inverseTransform(transform(v)) for all relevant v). It is -required for converting from canvas coordinates to data coordinates, -e.g. for a mouse interaction where a certain pixel is clicked. If you -don't use any interactive features of Flot, you may not need it. - - -The rest of the options deal with the ticks. - -If you don't specify any ticks, a tick generator algorithm will make -some for you. The algorithm has two passes. It first estimates how -many ticks would be reasonable and uses this number to compute a nice -round tick interval size. Then it generates the ticks. - -You can specify how many ticks the algorithm aims for by setting -"ticks" to a number. The algorithm always tries to generate reasonably -round tick values so even if you ask for three ticks, you might get -five if that fits better with the rounding. If you don't want any -ticks at all, set "ticks" to 0 or an empty array. - -Another option is to skip the rounding part and directly set the tick -interval size with "tickSize". If you set it to 2, you'll get ticks at -2, 4, 6, etc. Alternatively, you can specify that you just don't want -ticks at a size less than a specific tick size with "minTickSize". -Note that for time series, the format is an array like [2, "month"], -see the next section. - -If you want to completely override the tick algorithm, you can specify -an array for "ticks", either like this: - -```js -ticks: [0, 1.2, 2.4] -``` - -Or like this where the labels are also customized: - -```js -ticks: [[0, "zero"], [1.2, "one mark"], [2.4, "two marks"]] -``` - -You can mix the two if you like. - -For extra flexibility you can specify a function as the "ticks" -parameter. The function will be called with an object with the axis -min and max and should return a ticks array. Here's a simplistic tick -generator that spits out intervals of pi, suitable for use on the x -axis for trigonometric functions: - -```js -function piTickGenerator(axis) { - var res = [], i = Math.floor(axis.min / Math.PI); - do { - var v = i * Math.PI; - res.push([v, i + "\u03c0"]); - ++i; - } while (v < axis.max); - return res; -} -``` - -You can control how the ticks look like with "tickDecimals", the -number of decimals to display (default is auto-detected). - -Alternatively, for ultimate control over how ticks are formatted you can -provide a function to "tickFormatter". The function is passed two -parameters, the tick value and an axis object with information, and -should return a string. The default formatter looks like this: - -```js -function formatter(val, axis) { - return val.toFixed(axis.tickDecimals); -} -``` - -The axis object has "min" and "max" with the range of the axis, -"tickDecimals" with the number of decimals to round the value to and -"tickSize" with the size of the interval between ticks as calculated -by the automatic axis scaling algorithm (or specified by you). Here's -an example of a custom formatter: - -```js -function suffixFormatter(val, axis) { - if (val > 1000000) - return (val / 1000000).toFixed(axis.tickDecimals) + " MB"; - else if (val > 1000) - return (val / 1000).toFixed(axis.tickDecimals) + " kB"; - else - return val.toFixed(axis.tickDecimals) + " B"; -} -``` - -"labelWidth" and "labelHeight" specifies a fixed size of the tick -labels in pixels. They're useful in case you need to align several -plots. "reserveSpace" means that even if an axis isn't shown, Flot -should reserve space for it - it is useful in combination with -labelWidth and labelHeight for aligning multi-axis charts. - -"tickLength" is the length of the tick lines in pixels. By default, the -innermost axes will have ticks that extend all across the plot, while -any extra axes use small ticks. A value of null means use the default, -while a number means small ticks of that length - set it to 0 to hide -the lines completely. - -If you set "alignTicksWithAxis" to the number of another axis, e.g. -alignTicksWithAxis: 1, Flot will ensure that the autogenerated ticks -of this axis are aligned with the ticks of the other axis. This may -improve the looks, e.g. if you have one y axis to the left and one to -the right, because the grid lines will then match the ticks in both -ends. The trade-off is that the forced ticks won't necessarily be at -natural places. - - -## Multiple axes ## - -If you need more than one x axis or y axis, you need to specify for -each data series which axis they are to use, as described under the -format of the data series, e.g. { data: [...], yaxis: 2 } specifies -that a series should be plotted against the second y axis. - -To actually configure that axis, you can't use the xaxis/yaxis options -directly - instead there are two arrays in the options: - -```js -xaxes: [] -yaxes: [] -``` - -Here's an example of configuring a single x axis and two y axes (we -can leave options of the first y axis empty as the defaults are fine): - -```js -{ - xaxes: [ { position: "top" } ], - yaxes: [ { }, { position: "right", min: 20 } ] -} -``` - -The arrays get their default values from the xaxis/yaxis settings, so -say you want to have all y axes start at zero, you can simply specify -yaxis: { min: 0 } instead of adding a min parameter to all the axes. - -Generally, the various interfaces in Flot dealing with data points -either accept an xaxis/yaxis parameter to specify which axis number to -use (starting from 1), or lets you specify the coordinate directly as -x2/x3/... or x2axis/x3axis/... instead of "x" or "xaxis". - - -## Time series data ## - -Please note that it is now required to include the time plugin, -jquery.flot.time.js, for time series support. - -Time series are a bit more difficult than scalar data because -calendars don't follow a simple base 10 system. For many cases, Flot -abstracts most of this away, but it can still be a bit difficult to -get the data into Flot. So we'll first discuss the data format. - -The time series support in Flot is based on Javascript timestamps, -i.e. everywhere a time value is expected or handed over, a Javascript -timestamp number is used. This is a number, not a Date object. A -Javascript timestamp is the number of milliseconds since January 1, -1970 00:00:00 UTC. This is almost the same as Unix timestamps, except it's -in milliseconds, so remember to multiply by 1000! - -You can see a timestamp like this - -```js -alert((new Date()).getTime()) -``` - -There are different schools of thought when it comes to display of -timestamps. Many will want the timestamps to be displayed according to -a certain time zone, usually the time zone in which the data has been -produced. Some want the localized experience, where the timestamps are -displayed according to the local time of the visitor. Flot supports -both. Optionally you can include a third-party library to get -additional timezone support. - -Default behavior is that Flot always displays timestamps according to -UTC. The reason being that the core Javascript Date object does not -support other fixed time zones. Often your data is at another time -zone, so it may take a little bit of tweaking to work around this -limitation. - -The easiest way to think about it is to pretend that the data -production time zone is UTC, even if it isn't. So if you have a -datapoint at 2002-02-20 08:00, you can generate a timestamp for eight -o'clock UTC even if it really happened eight o'clock UTC+0200. - -In PHP you can get an appropriate timestamp with: - -```php -strtotime("2002-02-20 UTC") * 1000 -``` - -In Python you can get it with something like: - -```python -calendar.timegm(datetime_object.timetuple()) * 1000 -``` -In Ruby you can get it using the `#to_i` method on the -[`Time`](http://apidock.com/ruby/Time/to_i) object. If you're using the -`active_support` gem (default for Ruby on Rails applications) `#to_i` is also -available on the `DateTime` and `ActiveSupport::TimeWithZone` objects. You -simply need to multiply the result by 1000: - -```ruby -Time.now.to_i * 1000 # => 1383582043000 -# ActiveSupport examples: -DateTime.now.to_i * 1000 # => 1383582043000 -ActiveSupport::TimeZone.new('Asia/Shanghai').now.to_i * 1000 -# => 1383582043000 -``` - -In .NET you can get it with something like: - -```aspx -public static int GetJavascriptTimestamp(System.DateTime input) -{ - System.TimeSpan span = new System.TimeSpan(System.DateTime.Parse("1/1/1970").Ticks); - System.DateTime time = input.Subtract(span); - return (long)(time.Ticks / 10000); -} -``` - -Javascript also has some support for parsing date strings, so it is -possible to generate the timestamps manually client-side. - -If you've already got the real UTC timestamp, it's too late to use the -pretend trick described above. But you can fix up the timestamps by -adding the time zone offset, e.g. for UTC+0200 you would add 2 hours -to the UTC timestamp you got. Then it'll look right on the plot. Most -programming environments have some means of getting the timezone -offset for a specific date (note that you need to get the offset for -each individual timestamp to account for daylight savings). - -The alternative with core Javascript is to interpret the timestamps -according to the time zone that the visitor is in, which means that -the ticks will shift with the time zone and daylight savings of each -visitor. This behavior is enabled by setting the axis option -"timezone" to the value "browser". - -If you need more time zone functionality than this, there is still -another option. If you include the "timezone-js" library - in the page and set axis.timezone -to a value recognized by said library, Flot will use timezone-js to -interpret the timestamps according to that time zone. - -Once you've gotten the timestamps into the data and specified "time" -as the axis mode, Flot will automatically generate relevant ticks and -format them. As always, you can tweak the ticks via the "ticks" option -- just remember that the values should be timestamps (numbers), not -Date objects. - -Tick generation and formatting can also be controlled separately -through the following axis options: - -```js -minTickSize: array -timeformat: null or format string -monthNames: null or array of size 12 of strings -dayNames: null or array of size 7 of strings -twelveHourClock: boolean -``` - -Here "timeformat" is a format string to use. You might use it like -this: - -```js -xaxis: { - mode: "time", - timeformat: "%Y/%m/%d" -} -``` - -This will result in tick labels like "2000/12/24". A subset of the -standard strftime specifiers are supported (plus the nonstandard %q): - -```js -%a: weekday name (customizable) -%b: month name (customizable) -%d: day of month, zero-padded (01-31) -%e: day of month, space-padded ( 1-31) -%H: hours, 24-hour time, zero-padded (00-23) -%I: hours, 12-hour time, zero-padded (01-12) -%m: month, zero-padded (01-12) -%M: minutes, zero-padded (00-59) -%q: quarter (1-4) -%S: seconds, zero-padded (00-59) -%y: year (two digits) -%Y: year (four digits) -%p: am/pm -%P: AM/PM (uppercase version of %p) -%w: weekday as number (0-6, 0 being Sunday) -``` - -Flot 0.8 switched from %h to the standard %H hours specifier. The %h specifier -is still available, for backwards-compatibility, but is deprecated and -scheduled to be removed permanently with the release of version 1.0. - -You can customize the month names with the "monthNames" option. For -instance, for Danish you might specify: - -```js -monthNames: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"] -``` - -Similarly you can customize the weekday names with the "dayNames" -option. An example in French: - -```js -dayNames: ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"] -``` - -If you set "twelveHourClock" to true, the autogenerated timestamps -will use 12 hour AM/PM timestamps instead of 24 hour. This only -applies if you have not set "timeformat". Use the "%I" and "%p" or -"%P" options if you want to build your own format string with 12-hour -times. - -If the Date object has a strftime property (and it is a function), it -will be used instead of the built-in formatter. Thus you can include -a strftime library such as http://hacks.bluesmoon.info/strftime/ for -more powerful date/time formatting. - -If everything else fails, you can control the formatting by specifying -a custom tick formatter function as usual. Here's a simple example -which will format December 24 as 24/12: - -```js -tickFormatter: function (val, axis) { - var d = new Date(val); - return d.getUTCDate() + "/" + (d.getUTCMonth() + 1); -} -``` - -Note that for the time mode "tickSize" and "minTickSize" are a bit -special in that they are arrays on the form "[value, unit]" where unit -is one of "second", "minute", "hour", "day", "month" and "year". So -you can specify - -```js -minTickSize: [1, "month"] -``` - -to get a tick interval size of at least 1 month and correspondingly, -if axis.tickSize is [2, "day"] in the tick formatter, the ticks have -been produced with two days in-between. - - -## Customizing the data series ## - -```js -series: { - lines, points, bars: { - show: boolean - lineWidth: number - fill: boolean or number - fillColor: null or color/gradient - } - - lines, bars: { - zero: boolean - } - - points: { - radius: number - symbol: "circle" or function - } - - bars: { - barWidth: number - align: "left", "right" or "center" - horizontal: boolean - } - - lines: { - steps: boolean - } - - shadowSize: number - highlightColor: color or number -} - -colors: [ color1, color2, ... ] -``` - -The options inside "series: {}" are copied to each of the series. So -you can specify that all series should have bars by putting it in the -global options, or override it for individual series by specifying -bars in a particular the series object in the array of data. - -The most important options are "lines", "points" and "bars" that -specify whether and how lines, points and bars should be shown for -each data series. In case you don't specify anything at all, Flot will -default to showing lines (you can turn this off with -lines: { show: false }). You can specify the various types -independently of each other, and Flot will happily draw each of them -in turn (this is probably only useful for lines and points), e.g. - -```js -var options = { - series: { - lines: { show: true, fill: true, fillColor: "rgba(255, 255, 255, 0.8)" }, - points: { show: true, fill: false } - } -}; -``` - -"lineWidth" is the thickness of the line or outline in pixels. You can -set it to 0 to prevent a line or outline from being drawn; this will -also hide the shadow. - -"fill" is whether the shape should be filled. For lines, this produces -area graphs. You can use "fillColor" to specify the color of the fill. -If "fillColor" evaluates to false (default for everything except -points which are filled with white), the fill color is auto-set to the -color of the data series. You can adjust the opacity of the fill by -setting fill to a number between 0 (fully transparent) and 1 (fully -opaque). - -For bars, fillColor can be a gradient, see the gradient documentation -below. "barWidth" is the width of the bars in units of the x axis (or -the y axis if "horizontal" is true), contrary to most other measures -that are specified in pixels. For instance, for time series the unit -is milliseconds so 24 * 60 * 60 * 1000 produces bars with the width of -a day. "align" specifies whether a bar should be left-aligned -(default), right-aligned or centered on top of the value it represents. -When "horizontal" is on, the bars are drawn horizontally, i.e. from the -y axis instead of the x axis; note that the bar end points are still -defined in the same way so you'll probably want to swap the -coordinates if you've been plotting vertical bars first. - -Area and bar charts normally start from zero, regardless of the data's range. -This is because they convey information through size, and starting from a -different value would distort their meaning. In cases where the fill is purely -for decorative purposes, however, "zero" allows you to override this behavior. -It defaults to true for filled lines and bars; setting it to false tells the -series to use the same automatic scaling as an un-filled line. - -For lines, "steps" specifies whether two adjacent data points are -connected with a straight (possibly diagonal) line or with first a -horizontal and then a vertical line. Note that this transforms the -data by adding extra points. - -For points, you can specify the radius and the symbol. The only -built-in symbol type is circles, for other types you can use a plugin -or define them yourself by specifying a callback: - -```js -function cross(ctx, x, y, radius, shadow) { - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.moveTo(x - size, y - size); - ctx.lineTo(x + size, y + size); - ctx.moveTo(x - size, y + size); - ctx.lineTo(x + size, y - size); -} -``` - -The parameters are the drawing context, x and y coordinates of the -center of the point, a radius which corresponds to what the circle -would have used and whether the call is to draw a shadow (due to -limited canvas support, shadows are currently faked through extra -draws). It's good practice to ensure that the area covered by the -symbol is the same as for the circle with the given radius, this -ensures that all symbols have approximately the same visual weight. - -"shadowSize" is the default size of shadows in pixels. Set it to 0 to -remove shadows. - -"highlightColor" is the default color of the translucent overlay used -to highlight the series when the mouse hovers over it. - -The "colors" array specifies a default color theme to get colors for -the data series from. You can specify as many colors as you like, like -this: - -```js -colors: ["#d18b2c", "#dba255", "#919733"] -``` - -If there are more data series than colors, Flot will try to generate -extra colors by lightening and darkening colors in the theme. - - -## Customizing the grid ## - -```js -grid: { - show: boolean - aboveData: boolean - color: color - backgroundColor: color/gradient or null - margin: number or margin object - labelMargin: number - axisMargin: number - markings: array of markings or (fn: axes -> array of markings) - borderWidth: number or object with "top", "right", "bottom" and "left" properties with different widths - borderColor: color or null or object with "top", "right", "bottom" and "left" properties with different colors - minBorderMargin: number or null - clickable: boolean - hoverable: boolean - autoHighlight: boolean - mouseActiveRadius: number -} - -interaction: { - redrawOverlayInterval: number or -1 -} -``` - -The grid is the thing with the axes and a number of ticks. Many of the -things in the grid are configured under the individual axes, but not -all. "color" is the color of the grid itself whereas "backgroundColor" -specifies the background color inside the grid area, here null means -that the background is transparent. You can also set a gradient, see -the gradient documentation below. - -You can turn off the whole grid including tick labels by setting -"show" to false. "aboveData" determines whether the grid is drawn -above the data or below (below is default). - -"margin" is the space in pixels between the canvas edge and the grid, -which can be either a number or an object with individual margins for -each side, in the form: - -```js -margin: { - top: top margin in pixels - left: left margin in pixels - bottom: bottom margin in pixels - right: right margin in pixels -} -``` - -"labelMargin" is the space in pixels between tick labels and axis -line, and "axisMargin" is the space in pixels between axes when there -are two next to each other. - -"borderWidth" is the width of the border around the plot. Set it to 0 -to disable the border. Set it to an object with "top", "right", -"bottom" and "left" properties to use different widths. You can -also set "borderColor" if you want the border to have a different color -than the grid lines. Set it to an object with "top", "right", "bottom" -and "left" properties to use different colors. "minBorderMargin" controls -the default minimum margin around the border - it's used to make sure -that points aren't accidentally clipped by the canvas edge so by default -the value is computed from the point radius. - -"markings" is used to draw simple lines and rectangular areas in the -background of the plot. You can either specify an array of ranges on -the form { xaxis: { from, to }, yaxis: { from, to } } (with multiple -axes, you can specify coordinates for other axes instead, e.g. as -x2axis/x3axis/...) or with a function that returns such an array given -the axes for the plot in an object as the first parameter. - -You can set the color of markings by specifying "color" in the ranges -object. Here's an example array: - -```js -markings: [ { xaxis: { from: 0, to: 2 }, yaxis: { from: 10, to: 10 }, color: "#bb0000" }, ... ] -``` - -If you leave out one of the values, that value is assumed to go to the -border of the plot. So for example if you only specify { xaxis: { -from: 0, to: 2 } } it means an area that extends from the top to the -bottom of the plot in the x range 0-2. - -A line is drawn if from and to are the same, e.g. - -```js -markings: [ { yaxis: { from: 1, to: 1 } }, ... ] -``` - -would draw a line parallel to the x axis at y = 1. You can control the -line width with "lineWidth" in the range object. - -An example function that makes vertical stripes might look like this: - -```js -markings: function (axes) { - var markings = []; - for (var x = Math.floor(axes.xaxis.min); x < axes.xaxis.max; x += 2) - markings.push({ xaxis: { from: x, to: x + 1 } }); - return markings; -} -``` - -If you set "clickable" to true, the plot will listen for click events -on the plot area and fire a "plotclick" event on the placeholder with -a position and a nearby data item object as parameters. The coordinates -are available both in the unit of the axes (not in pixels) and in -global screen coordinates. - -Likewise, if you set "hoverable" to true, the plot will listen for -mouse move events on the plot area and fire a "plothover" event with -the same parameters as the "plotclick" event. If "autoHighlight" is -true (the default), nearby data items are highlighted automatically. -If needed, you can disable highlighting and control it yourself with -the highlight/unhighlight plot methods described elsewhere. - -You can use "plotclick" and "plothover" events like this: - -```js -$.plot($("#placeholder"), [ d ], { grid: { clickable: true } }); - -$("#placeholder").bind("plotclick", function (event, pos, item) { - alert("You clicked at " + pos.x + ", " + pos.y); - // axis coordinates for other axes, if present, are in pos.x2, pos.x3, ... - // if you need global screen coordinates, they are pos.pageX, pos.pageY - - if (item) { - highlight(item.series, item.datapoint); - alert("You clicked a point!"); - } -}); -``` - -The item object in this example is either null or a nearby object on the form: - -```js -item: { - datapoint: the point, e.g. [0, 2] - dataIndex: the index of the point in the data array - series: the series object - seriesIndex: the index of the series - pageX, pageY: the global screen coordinates of the point -} -``` - -For instance, if you have specified the data like this - -```js -$.plot($("#placeholder"), [ { label: "Foo", data: [[0, 10], [7, 3]] } ], ...); -``` - -and the mouse is near the point (7, 3), "datapoint" is [7, 3], -"dataIndex" will be 1, "series" is a normalized series object with -among other things the "Foo" label in series.label and the color in -series.color, and "seriesIndex" is 0. Note that plugins and options -that transform the data can shift the indexes from what you specified -in the original data array. - -If you use the above events to update some other information and want -to clear out that info in case the mouse goes away, you'll probably -also need to listen to "mouseout" events on the placeholder div. - -"mouseActiveRadius" specifies how far the mouse can be from an item -and still activate it. If there are two or more points within this -radius, Flot chooses the closest item. For bars, the top-most bar -(from the latest specified data series) is chosen. - -If you want to disable interactivity for a specific data series, you -can set "hoverable" and "clickable" to false in the options for that -series, like this: - -```js -{ data: [...], label: "Foo", clickable: false } -``` - -"redrawOverlayInterval" specifies the maximum time to delay a redraw -of interactive things (this works as a rate limiting device). The -default is capped to 60 frames per second. You can set it to -1 to -disable the rate limiting. - - -## Specifying gradients ## - -A gradient is specified like this: - -```js -{ colors: [ color1, color2, ... ] } -``` - -For instance, you might specify a background on the grid going from -black to gray like this: - -```js -grid: { - backgroundColor: { colors: ["#000", "#999"] } -} -``` - -For the series you can specify the gradient as an object that -specifies the scaling of the brightness and the opacity of the series -color, e.g. - -```js -{ colors: [{ opacity: 0.8 }, { brightness: 0.6, opacity: 0.8 } ] } -``` - -where the first color simply has its alpha scaled, whereas the second -is also darkened. For instance, for bars the following makes the bars -gradually disappear, without outline: - -```js -bars: { - show: true, - lineWidth: 0, - fill: true, - fillColor: { colors: [ { opacity: 0.8 }, { opacity: 0.1 } ] } -} -``` - -Flot currently only supports vertical gradients drawn from top to -bottom because that's what works with IE. - - -## Plot Methods ## - -The Plot object returned from the plot function has some methods you -can call: - - - highlight(series, datapoint) - - Highlight a specific datapoint in the data series. You can either - specify the actual objects, e.g. if you got them from a - "plotclick" event, or you can specify the indices, e.g. - highlight(1, 3) to highlight the fourth point in the second series - (remember, zero-based indexing). - - - unhighlight(series, datapoint) or unhighlight() - - Remove the highlighting of the point, same parameters as - highlight. - - If you call unhighlight with no parameters, e.g. as - plot.unhighlight(), all current highlights are removed. - - - setData(data) - - You can use this to reset the data used. Note that axis scaling, - ticks, legend etc. will not be recomputed (use setupGrid() to do - that). You'll probably want to call draw() afterwards. - - You can use this function to speed up redrawing a small plot if - you know that the axes won't change. Put in the new data with - setData(newdata), call draw(), and you're good to go. Note that - for large datasets, almost all the time is consumed in draw() - plotting the data so in this case don't bother. - - - setupGrid() - - Recalculate and set axis scaling, ticks, legend etc. - - Note that because of the drawing model of the canvas, this - function will immediately redraw (actually reinsert in the DOM) - the labels and the legend, but not the actual tick lines because - they're drawn on the canvas. You need to call draw() to get the - canvas redrawn. - - - draw() - - Redraws the plot canvas. - - - triggerRedrawOverlay() - - Schedules an update of an overlay canvas used for drawing - interactive things like a selection and point highlights. This - is mostly useful for writing plugins. The redraw doesn't happen - immediately, instead a timer is set to catch multiple successive - redraws (e.g. from a mousemove). You can get to the overlay by - setting up a drawOverlay hook. - - - width()/height() - - Gets the width and height of the plotting area inside the grid. - This is smaller than the canvas or placeholder dimensions as some - extra space is needed (e.g. for labels). - - - offset() - - Returns the offset of the plotting area inside the grid relative - to the document, useful for instance for calculating mouse - positions (event.pageX/Y minus this offset is the pixel position - inside the plot). - - - pointOffset({ x: xpos, y: ypos }) - - Returns the calculated offset of the data point at (x, y) in data - space within the placeholder div. If you are working with multiple - axes, you can specify the x and y axis references, e.g. - - ```js - o = pointOffset({ x: xpos, y: ypos, xaxis: 2, yaxis: 3 }) - // o.left and o.top now contains the offset within the div - ```` - - - resize() - - Tells Flot to resize the drawing canvas to the size of the - placeholder. You need to run setupGrid() and draw() afterwards as - canvas resizing is a destructive operation. This is used - internally by the resize plugin. - - - shutdown() - - Cleans up any event handlers Flot has currently registered. This - is used internally. - -There are also some members that let you peek inside the internal -workings of Flot which is useful in some cases. Note that if you change -something in the objects returned, you're changing the objects used by -Flot to keep track of its state, so be careful. - - - getData() - - Returns an array of the data series currently used in normalized - form with missing settings filled in according to the global - options. So for instance to find out what color Flot has assigned - to the data series, you could do this: - - ```js - var series = plot.getData(); - for (var i = 0; i < series.length; ++i) - alert(series[i].color); - ``` - - A notable other interesting field besides color is datapoints - which has a field "points" with the normalized data points in a - flat array (the field "pointsize" is the increment in the flat - array to get to the next point so for a dataset consisting only of - (x,y) pairs it would be 2). - - - getAxes() - - Gets an object with the axes. The axes are returned as the - attributes of the object, so for instance getAxes().xaxis is the - x axis. - - Various things are stuffed inside an axis object, e.g. you could - use getAxes().xaxis.ticks to find out what the ticks are for the - xaxis. Two other useful attributes are p2c and c2p, functions for - transforming from data point space to the canvas plot space and - back. Both returns values that are offset with the plot offset. - Check the Flot source code for the complete set of attributes (or - output an axis with console.log() and inspect it). - - With multiple axes, the extra axes are returned as x2axis, x3axis, - etc., e.g. getAxes().y2axis is the second y axis. You can check - y2axis.used to see whether the axis is associated with any data - points and y2axis.show to see if it is currently shown. - - - getPlaceholder() - - Returns placeholder that the plot was put into. This can be useful - for plugins for adding DOM elements or firing events. - - - getCanvas() - - Returns the canvas used for drawing in case you need to hack on it - yourself. You'll probably need to get the plot offset too. - - - getPlotOffset() - - Gets the offset that the grid has within the canvas as an object - with distances from the canvas edges as "left", "right", "top", - "bottom". I.e., if you draw a circle on the canvas with the center - placed at (left, top), its center will be at the top-most, left - corner of the grid. - - - getOptions() - - Gets the options for the plot, normalized, with default values - filled in. You get a reference to actual values used by Flot, so - if you modify the values in here, Flot will use the new values. - If you change something, you probably have to call draw() or - setupGrid() or triggerRedrawOverlay() to see the change. - - -## Hooks ## - -In addition to the public methods, the Plot object also has some hooks -that can be used to modify the plotting process. You can install a -callback function at various points in the process, the function then -gets access to the internal data structures in Flot. - -Here's an overview of the phases Flot goes through: - - 1. Plugin initialization, parsing options - - 2. Constructing the canvases used for drawing - - 3. Set data: parsing data specification, calculating colors, - copying raw data points into internal format, - normalizing them, finding max/min for axis auto-scaling - - 4. Grid setup: calculating axis spacing, ticks, inserting tick - labels, the legend - - 5. Draw: drawing the grid, drawing each of the series in turn - - 6. Setting up event handling for interactive features - - 7. Responding to events, if any - - 8. Shutdown: this mostly happens in case a plot is overwritten - -Each hook is simply a function which is put in the appropriate array. -You can add them through the "hooks" option, and they are also available -after the plot is constructed as the "hooks" attribute on the returned -plot object, e.g. - -```js - // define a simple draw hook - function hellohook(plot, canvascontext) { alert("hello!"); }; - - // pass it in, in an array since we might want to specify several - var plot = $.plot(placeholder, data, { hooks: { draw: [hellohook] } }); - - // we can now find it again in plot.hooks.draw[0] unless a plugin - // has added other hooks -``` - -The available hooks are described below. All hook callbacks get the -plot object as first parameter. You can find some examples of defined -hooks in the plugins bundled with Flot. - - - processOptions [phase 1] - - ```function(plot, options)``` - - Called after Flot has parsed and merged options. Useful in the - instance where customizations beyond simple merging of default - values is needed. A plugin might use it to detect that it has been - enabled and then turn on or off other options. - - - - processRawData [phase 3] - - ```function(plot, series, data, datapoints)``` - - Called before Flot copies and normalizes the raw data for the given - series. If the function fills in datapoints.points with normalized - points and sets datapoints.pointsize to the size of the points, - Flot will skip the copying/normalization step for this series. - - In any case, you might be interested in setting datapoints.format, - an array of objects for specifying how a point is normalized and - how it interferes with axis scaling. It accepts the following options: - - ```js - { - x, y: boolean, - number: boolean, - required: boolean, - defaultValue: value, - autoscale: boolean - } - ``` - - "x" and "y" specify whether the value is plotted against the x or y axis, - and is currently used only to calculate axis min-max ranges. The default - format array, for example, looks like this: - - ```js - [ - { x: true, number: true, required: true }, - { y: true, number: true, required: true } - ] - ``` - - This indicates that a point, i.e. [0, 25], consists of two values, with the - first being plotted on the x axis and the second on the y axis. - - If "number" is true, then the value must be numeric, and is set to null if - it cannot be converted to a number. - - "defaultValue" provides a fallback in case the original value is null. This - is for instance handy for bars, where one can omit the third coordinate - (the bottom of the bar), which then defaults to zero. - - If "required" is true, then the value must exist (be non-null) for the - point as a whole to be valid. If no value is provided, then the entire - point is cleared out with nulls, turning it into a gap in the series. - - "autoscale" determines whether the value is considered when calculating an - automatic min-max range for the axes that the value is plotted against. - - - processDatapoints [phase 3] - - ```function(plot, series, datapoints)``` - - Called after normalization of the given series but before finding - min/max of the data points. This hook is useful for implementing data - transformations. "datapoints" contains the normalized data points in - a flat array as datapoints.points with the size of a single point - given in datapoints.pointsize. Here's a simple transform that - multiplies all y coordinates by 2: - - ```js - function multiply(plot, series, datapoints) { - var points = datapoints.points, ps = datapoints.pointsize; - for (var i = 0; i < points.length; i += ps) - points[i + 1] *= 2; - } - ``` - - Note that you must leave datapoints in a good condition as Flot - doesn't check it or do any normalization on it afterwards. - - - processOffset [phase 4] - - ```function(plot, offset)``` - - Called after Flot has initialized the plot's offset, but before it - draws any axes or plot elements. This hook is useful for customizing - the margins between the grid and the edge of the canvas. "offset" is - an object with attributes "top", "bottom", "left" and "right", - corresponding to the margins on the four sides of the plot. - - - drawBackground [phase 5] - - ```function(plot, canvascontext)``` - - Called before all other drawing operations. Used to draw backgrounds - or other custom elements before the plot or axes have been drawn. - - - drawSeries [phase 5] - - ```function(plot, canvascontext, series)``` - - Hook for custom drawing of a single series. Called just before the - standard drawing routine has been called in the loop that draws - each series. - - - draw [phase 5] - - ```function(plot, canvascontext)``` - - Hook for drawing on the canvas. Called after the grid is drawn - (unless it's disabled or grid.aboveData is set) and the series have - been plotted (in case any points, lines or bars have been turned - on). For examples of how to draw things, look at the source code. - - - bindEvents [phase 6] - - ```function(plot, eventHolder)``` - - Called after Flot has setup its event handlers. Should set any - necessary event handlers on eventHolder, a jQuery object with the - canvas, e.g. - - ```js - function (plot, eventHolder) { - eventHolder.mousedown(function (e) { - alert("You pressed the mouse at " + e.pageX + " " + e.pageY); - }); - } - ``` - - Interesting events include click, mousemove, mouseup/down. You can - use all jQuery events. Usually, the event handlers will update the - state by drawing something (add a drawOverlay hook and call - triggerRedrawOverlay) or firing an externally visible event for - user code. See the crosshair plugin for an example. - - Currently, eventHolder actually contains both the static canvas - used for the plot itself and the overlay canvas used for - interactive features because some versions of IE get the stacking - order wrong. The hook only gets one event, though (either for the - overlay or for the static canvas). - - Note that custom plot events generated by Flot are not generated on - eventHolder, but on the div placeholder supplied as the first - argument to the plot call. You can get that with - plot.getPlaceholder() - that's probably also the one you should use - if you need to fire a custom event. - - - drawOverlay [phase 7] - - ```function (plot, canvascontext)``` - - The drawOverlay hook is used for interactive things that need a - canvas to draw on. The model currently used by Flot works the way - that an extra overlay canvas is positioned on top of the static - canvas. This overlay is cleared and then completely redrawn - whenever something interesting happens. This hook is called when - the overlay canvas is to be redrawn. - - "canvascontext" is the 2D context of the overlay canvas. You can - use this to draw things. You'll most likely need some of the - metrics computed by Flot, e.g. plot.width()/plot.height(). See the - crosshair plugin for an example. - - - shutdown [phase 8] - - ```function (plot, eventHolder)``` - - Run when plot.shutdown() is called, which usually only happens in - case a plot is overwritten by a new plot. If you're writing a - plugin that adds extra DOM elements or event handlers, you should - add a callback to clean up after you. Take a look at the section in - the [PLUGINS](PLUGINS.md) document for more info. - - -## Plugins ## - -Plugins extend the functionality of Flot. To use a plugin, simply -include its Javascript file after Flot in the HTML page. - -If you're worried about download size/latency, you can concatenate all -the plugins you use, and Flot itself for that matter, into one big file -(make sure you get the order right), then optionally run it through a -Javascript minifier such as YUI Compressor. - -Here's a brief explanation of how the plugin plumbings work: - -Each plugin registers itself in the global array $.plot.plugins. When -you make a new plot object with $.plot, Flot goes through this array -calling the "init" function of each plugin and merging default options -from the "option" attribute of the plugin. The init function gets a -reference to the plot object created and uses this to register hooks -and add new public methods if needed. - -See the [PLUGINS](PLUGINS.md) document for details on how to write a plugin. As the -above description hints, it's actually pretty easy. - - -## Version number ## - -The version number of Flot is available in ```$.plot.version```. diff --git a/htdocs/includes/jquery/plugins/flot/CONTRIBUTING.md b/htdocs/includes/jquery/plugins/flot/CONTRIBUTING.md deleted file mode 100644 index 3e6e43a0fd4..00000000000 --- a/htdocs/includes/jquery/plugins/flot/CONTRIBUTING.md +++ /dev/null @@ -1,98 +0,0 @@ -## Contributing to Flot ## - -We welcome all contributions, but following these guidelines results in less -work for us, and a faster and better response. - -### Issues ### - -Issues are not a way to ask general questions about Flot. If you see unexpected -behavior but are not 100% certain that it is a bug, please try posting to the -[forum](http://groups.google.com/group/flot-graphs) first, and confirm that -what you see is really a Flot problem before creating a new issue for it. When -reporting a bug, please include a working demonstration of the problem, if -possible, or at least a clear description of the options you're using and the -environment (browser and version, jQuery version, other libraries) that you're -running under. - -If you have suggestions for new features, or changes to existing ones, we'd -love to hear them! Please submit each suggestion as a separate new issue. - -If you would like to work on an existing issue, please make sure it is not -already assigned to someone else. If an issue is assigned to someone, that -person has already started working on it. So, pick unassigned issues to prevent -duplicated effort. - -### Pull Requests ### - -To make merging as easy as possible, please keep these rules in mind: - - 1. Submit new features or architectural changes to the *<version>-work* - branch for the next major release. Submit bug fixes to the master branch. - - 2. Divide larger changes into a series of small, logical commits with - descriptive messages. - - 3. Rebase, if necessary, before submitting your pull request, to reduce the - work we need to do to merge it. - - 4. Format your code according to the style guidelines below. - -### Flot Style Guidelines ### - -Flot follows the [jQuery Core Style Guidelines](http://docs.jquery.com/JQuery_Core_Style_Guidelines), -with the following updates and exceptions: - -#### Spacing #### - -Use four-space indents, no tabs. Do not add horizontal space around parameter -lists, loop definitions, or array/object indices. For example: - -```js - for ( var i = 0; i < data.length; i++ ) { // This block is wrong! - if ( data[ i ] > 1 ) { - data[ i ] = 2; - } - } - - for (var i = 0; i < data.length; i++) { // This block is correct! - if (data[i] > 1) { - data[i] = 2; - } - } -``` - -#### Comments #### - -Use [jsDoc](http://usejsdoc.org) comments for all file and function headers. -Use // for all inline and block comments, regardless of length. - -All // comment blocks should have an empty line above *and* below them. For -example: - -```js - var a = 5; - - // We're going to loop here - // TODO: Make this loop faster, better, stronger! - - for (var x = 0; x < 10; x++) {} -``` - -#### Wrapping #### - -Block comments should be wrapped at 80 characters. - -Code should attempt to wrap at 80 characters, but may run longer if wrapping -would hurt readability more than having to scroll horizontally. This is a -judgement call made on a situational basis. - -Statements containing complex logic should not be wrapped arbitrarily if they -do not exceed 80 characters. For example: - -```js - if (a == 1 && // This block is wrong! - b == 2 && - c == 3) {} - - if (a == 1 && b == 2 && c == 3) {} // This block is correct! -``` diff --git a/htdocs/includes/jquery/plugins/flot/FAQ.md b/htdocs/includes/jquery/plugins/flot/FAQ.md deleted file mode 100644 index 9131e043985..00000000000 --- a/htdocs/includes/jquery/plugins/flot/FAQ.md +++ /dev/null @@ -1,75 +0,0 @@ -## Frequently asked questions ## - -#### How much data can Flot cope with? #### - -Flot will happily draw everything you send to it so the answer -depends on the browser. The excanvas emulation used for IE (built with -VML) makes IE by far the slowest browser so be sure to test with that -if IE users are in your target group (for large plots in IE, you can -also check out Flashcanvas which may be faster). - -1000 points is not a problem, but as soon as you start having more -points than the pixel width, you should probably start thinking about -downsampling/aggregation as this is near the resolution limit of the -chart anyway. If you downsample server-side, you also save bandwidth. - - -#### Flot isn't working when I'm using JSON data as source! #### - -Actually, Flot loves JSON data, you just got the format wrong. -Double check that you're not inputting strings instead of numbers, -like [["0", "-2.13"], ["5", "4.3"]]. This is most common mistake, and -the error might not show up immediately because Javascript can do some -conversion automatically. - - -#### Can I export the graph? #### - -You can grab the image rendered by the canvas element used by Flot -as a PNG or JPEG (remember to set a background). Note that it won't -include anything not drawn in the canvas (such as the legend). And it -doesn't work with excanvas which uses VML, but you could try -Flashcanvas. - - -#### The bars are all tiny in time mode? #### - -It's not really possible to determine the bar width automatically. -So you have to set the width with the barWidth option which is NOT in -pixels, but in the units of the x axis (or the y axis for horizontal -bars). For time mode that's milliseconds so the default value of 1 -makes the bars 1 millisecond wide. - - -#### Can I use Flot with libraries like Mootools or Prototype? #### - -Yes, Flot supports it out of the box and it's easy! Just use jQuery -instead of $, e.g. call jQuery.plot instead of $.plot and use -jQuery(something) instead of $(something). As a convenience, you can -put in a DOM element for the graph placeholder where the examples and -the API documentation are using jQuery objects. - -Depending on how you include jQuery, you may have to add one line of -code to prevent jQuery from overwriting functions from the other -libraries, see the documentation in jQuery ("Using jQuery with other -libraries") for details. - - -#### Flot doesn't work with [insert name of Javascript UI framework]! #### - -Flot is using standard HTML to make charts. If this is not working, -it's probably because the framework you're using is doing something -weird with the DOM or with the CSS that is interfering with Flot. - -A common problem is that there's display:none on a container until the -user does something. Many tab widgets work this way, and there's -nothing wrong with it - you just can't call Flot inside a display:none -container as explained in the README so you need to hold off the Flot -call until the container is actually displayed (or use -visibility:hidden instead of display:none or move the container -off-screen). - -If you find there's a specific thing we can do to Flot to help, feel -free to submit a bug report. Otherwise, you're welcome to ask for help -on the forum/mailing list, but please don't submit a bug report to -Flot. diff --git a/htdocs/includes/jquery/plugins/flot/LICENSE.txt b/htdocs/includes/jquery/plugins/flot/LICENSE.txt deleted file mode 100644 index 719da064fef..00000000000 --- a/htdocs/includes/jquery/plugins/flot/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2007-2014 IOLA and Ole Laursen - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/htdocs/includes/jquery/plugins/flot/Makefile b/htdocs/includes/jquery/plugins/flot/Makefile deleted file mode 100644 index 2e070d0c3c0..00000000000 --- a/htdocs/includes/jquery/plugins/flot/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -# Makefile for generating minified files - -.PHONY: all - -# we cheat and process all .js files instead of an exhaustive list -all: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js))) - -%.min.js: %.js - yui-compressor $< -o $@ - -test: - ./node_modules/.bin/jshint *jquery.flot.js diff --git a/htdocs/includes/jquery/plugins/flot/NEWS.md b/htdocs/includes/jquery/plugins/flot/NEWS.md deleted file mode 100644 index ad0303d742e..00000000000 --- a/htdocs/includes/jquery/plugins/flot/NEWS.md +++ /dev/null @@ -1,1026 +0,0 @@ -## Flot 0.8.3 ## - -### Changes ### - -- Updated example code to avoid encouraging unnecessary re-plots. - (patch by soenter, pull request #1221) - -### Bug fixes ### - - - Added a work-around to disable the allocation of extra space for first and - last axis ticks, allowing plots to span the full width of their container. - A proper solution for this bug will be implemented in the 0.9 release. - (reported by Josh Pigford and andig, issue #1212, pull request #1290) - - - Fixed a regression introduced in 0.8.1, where the last tick label would - sometimes wrap rather than extending the plot's offset to create space. - (reported by Elite Gamer, issue #1283) - - - Fixed a regression introduced in 0.8.2, where the resize plugin would use - unexpectedly high amounts of CPU even when idle. - (reported by tommie, issue #1277, pull request #1289) - - - Fixed the selection example to work with jQuery 1.9.x and later. - (reported by EGLadona and dmfalke, issue #1250, pull request #1285) - - - Added a detach shim to fix support for jQuery versions earlier than 1.4.x. - (reported by ngavard, issue #1240, pull request #1286) - - - Fixed a rare 'Uncaught TypeError' when using the resize plugin in IE 7/8. - (reported by tleish, issue #1265, pull request #1289) - - - Fixed zoom constraints to apply only in the direction of the zoom. - (patch by Neil Katin, issue #1204, pull request #1205) - - - Markings lines are no longer blurry when drawn on pixel boundaries. - (reported by btccointicker and Rouillard, issue #1210) - - - Don't discard original pie data-series values when combining slices. - (patch by Phil Tsarik, pull request #1238) - - - Fixed broken auto-scale behavior when using deprecated [x|y]2axis options. - (reported by jorese, issue #1228, pull request #1284) - - - Exposed the dateGenerator function on the plot object, as it used to be - before time-mode was moved into a separate plugin. - (patch by Paolo Valleri, pull request #1028) - - -## Flot 0.8.2 ## - -### Changes ### - - - Added a plot.destroy method as a way to free memory when emptying the plot - placeholder and then re-using it for some other purpose. - (patch by Thodoris Greasidis, issue #1129, pull request #1130) - - - Added a table of contents and PLUGINS link to the API documentation. - (patches by Brian Peiris, pull requests #1064 and #1127) - - - Added Ruby code examples for time conversion. - (patch by Mike Połtyn, pull request #1182) - - - Minor improvements to API.md and README.md. - (patches by Patrik Ragnarsson, pull requests #1085 and #1086) - - - Updated inlined jQuery Resize to the latest version to fix errors. - (reported by Matthew Sabol and sloker, issues #997 ad #1081) - -### Bug fixes ### - - - Fixed an unexpected change in behavior that resulted in duplicate tick - labels when using a plugin, like flot-tickrotor, that overrode tick labels. - (patch by Mark Cote, pull request #1091) - - - Fixed a regression from 0.7 where axis labels were given the wrong width, - causing them to overlap at certain scales and ignore the labelWidth option. - (patch by Benjamin Gram, pull request #1177) - - - Fixed a bug where the second axis in an xaxes/yaxes array incorrectly had - its 'innermost' property set to false or undefined, even if it was on the - other side of the plot from the first axis. This resulted in the axis bar - being visible when it shouldn't have been, which was especially obvious - when the grid had a left/right border width of zero. - (reported by Teq1, fix researched by ryleyb, issue #1056) - - - Fixed an error when using a placeholder that has no font-size property. - (patch by Craig Oldford, pull request #1135) - - - Fixed a regression from 0.7 where nulls at the end of a series were ignored - for purposes of determing the range of the x-axis. - (reported by Munsifali Rashid, issue #1095) - - - If a font size is provided, base the default lineHeight on that size rather - that the font size of the plot placeholder, which may be very different. - (reported by Daniel Hoffmann Bernardes, issue #1131, pull request #1199) - - - Fix broken highlighting for right-aligned bars. - (reported by BeWiBu and Mihai Stanciu, issues #975 and #1093, with further - assistance by Eric Byers, pull request #1120) - - - Prevent white circles from sometimes showing up inside of pie charts. - (reported by Pierre Dubois and Jack Klink, issues #1128 and #1073) - - - Label formatting no longer breaks when a page contains multiple pie charts. - (reported by Brend Wanders, issue #1055) - - - When using multiple axes on opposite sides of the plot, the innermost axis - coming later in the list no longer has its bar drawn incorrectly. - (reported by ryleyb, issue #1056) - - - When removing series labels and redrawing the plot, the legend now updates - correctly even when using an external container. - (patch by Luis Silva, issue #1159, pull request #1160) - - - The pie plugin no longer ignores the value of the left offset option. - (reported by melanker, issue #1136) - - - Fixed a regression from 0.7, where extra padding was added unnecessarily to - sides of the plot where there was no last tick label. - (reported by sknob001, issue #1048, pull request #1200) - - - Fixed incorrect tooltip behavior in the interacting example. - (patch by cleroux, issue #686, pull request #1074) - - - Fixed an error in CSS color extraction with elements outside the DOM. - (patch by execjosh, pull request #1084) - - - Fixed :not selector error when using jQuery without Sizzle. - (patch by Anthony Ryan, pull request #1180) - - - Worked around a browser issue that caused bars to appear un-filled. - (reported by irbian, issue #915) - -## Flot 0.8.1 ## - -### Bug fixes ### - - - Fixed a regression in the time plugin, introduced in 0.8, that caused dates - to align to the minute rather than to the highest appropriate unit. This - caused many x-axes in 0.8 to have different ticks than they did in 0.7. - (reported by Tom Sheppard, patch by Daniel Shapiro, issue #1017, pull - request #1023) - - - Fixed a regression in text rendering, introduced in 0.8, that caused axis - labels with the same text as another label on the same axis to disappear. - More generally, it's again possible to have the same text in two locations. - (issue #1032) - - - Fixed a regression in text rendering, introduced in 0.8, where axis labels - were no longer assigned an explicit width, and their text could not wrap. - (reported by sabregreen, issue #1019) - - - Fixed a regression in the pie plugin, introduced in 0.8, that prevented it - from accepting data in the format '[[x, y]]'. - (patch by Nicolas Morel, pull request #1024) - - - The 'zero' series option and 'autoscale' format option are no longer - ignored when the series contains a null value. - (reported by Daniel Shapiro, issue #1033) - - - Avoid triggering the time-mode plugin exception when there are zero series. - (reported by Daniel Rothig, patch by Mark Raymond, issue #1016) - - - When a custom color palette has fewer colors than the default palette, Flot - no longer fills out the colors with the remainder of the default. - (patch by goorpy, issue #1031, pull request #1034) - - - Fixed missing update for bar highlights after a zoom or other redraw. - (reported by Paolo Valleri, issue #1030) - - - Fixed compatibility with jQuery versions earlier than 1.7. - (patch by Lee Willis, issue #1027, pull request #1027) - - - The mouse wheel no longer scrolls the page when using the navigate plugin. - (patch by vird, pull request #1020) - - - Fixed missing semicolons in the core library. - (reported by Michal Zglinski) - - -## Flot 0.8.0 ## - -### API changes ### - -Support for time series has been moved into a plugin, jquery.flot.time.js. -This results in less code if time series are not used. The functionality -remains the same (plus timezone support, as described below); however, the -plugin must be included if axis.mode is set to "time". - -When the axis mode is "time", the axis option "timezone" can be set to null, -"browser", or a particular timezone (e.g. "America/New_York") to control how -the dates are displayed. If null, the dates are displayed as UTC. If -"browser", the dates are displayed in the time zone of the user's browser. - -Date/time formatting has changed and now follows a proper subset of the -standard strftime specifiers, plus one nonstandard specifier for quarters. -Additionally, if a strftime function is found in the Date object's prototype, -it will be used instead of the built-in formatter. - -Axis tick labels now use the class 'flot-tick-label' instead of 'tickLabel'. -The text containers for each axis now use the classes 'flot-[x|y]-axis' and -'flot-[x|y]#-axis' instead of '[x|y]Axis' and '[x|y]#Axis'. For compatibility -with Flot 0.7 and earlier text will continue to use the old classes as well, -but they are considered deprecated and will be removed in a future version. - -In previous versions the axis 'color' option was used to set the color of tick -marks and their label text. It now controls the color of the axis line, which -previously could not be changed separately, and continues to act as a default -for the tick-mark color. The color of tick label text is now set either by -overriding the 'flot-tick-label' CSS rule or via the axis 'font' option. - -A new plugin, jquery.flot.canvas.js, allows axis tick labels to be rendered -directly to the canvas, rather than using HTML elements. This feature can be -toggled with a simple option, making it easy to create interactive plots in the -browser using HTML, then re-render them to canvas for export as an image. - -The plugin tries to remain as faithful as possible to the original HTML render, -and goes so far as to automatically extract styles from CSS, to avoid having to -provide a separate set of styles when rendering to canvas. Due to limitations -of the canvas text API, the plugin cannot reproduce certain features, including -HTML markup embedded in labels, and advanced text styles such as 'em' units. - -The plugin requires support for canvas text, which may not be present in some -older browsers, even if they support the canvas tag itself. To use the plugin -with these browsers try using a shim such as canvas-text or FlashCanvas. - -The base and overlay canvas are now using the CSS classes "flot-base" and -"flot-overlay" to prevent accidental clashes (issue 540). - -### Changes ### - - - Addition of nonstandard %q specifier to date/time formatting. (patch - by risicle, issue 49) - - - Date/time formatting follows proper subset of strftime specifiers, and - support added for Date.prototype.strftime, if found. (patch by Mark Cote, - issues 419 and 558) - - - Fixed display of year ticks. (patch by Mark Cote, issue 195) - - - Support for time series moved to plugin. (patch by Mark Cote) - - - Display time series in different time zones. (patch by Knut Forkalsrud, - issue 141) - - - Added a canvas plugin to enable rendering axis tick labels to the canvas. - (sponsored by YCharts.com, implementation by Ole Laursen and David Schnur) - - - Support for setting the interval between redraws of the overlay canvas with - redrawOverlayInterval. (suggested in issue 185) - - - Support for multiple thresholds in thresholds plugin. (patch by Arnaud - Bellec, issue 523) - - - Support for plotting categories/textual data directly with new categories - plugin. - - - Tick generators now get the whole axis rather than just min/max. - - - Added processOffset and drawBackground hooks. (suggested in issue 639) - - - Added a grid "margin" option to set the space between the canvas edge and - the grid. - - - Prevent the pie example page from generating single-slice pies. (patch by - Shane Reustle) - - - In addition to "left" and "center", bars now recognize "right" as an - alignment option. (patch by Michael Mayer, issue 520) - - - Switched from toFixed to a much faster default tickFormatter. (patch by - Clemens Stolle) - - - Added to a more helpful error when using a time-mode axis without including - the flot.time plugin. (patch by Yael Elmatad) - - - Added a legend "sorted" option to control sorting of legend entries - independent of their series order. (patch by Tom Cleaveland) - - - Added a series "highlightColor" option to control the color of the - translucent overlay that identifies the dataset when the mouse hovers over - it. (patch by Eric Wendelin and Nate Abele, issues 168 and 299) - - - Added a plugin jquery.flot.errorbars, with an accompanying example, that - adds the ability to plot error bars, commonly used in many kinds of - statistical data visualizations. (patch by Rui Pereira, issue 215) - - - The legend now omits entries whose labelFormatter returns null. (patch by - Tom Cleaveland, Christopher Lambert, and Simon Strandgaard) - - - Added support for high pixel density (retina) displays, resulting in much - crisper charts on such devices. (patch by Olivier Guerriat, additional - fixes by Julien Thomas, maimairel, and Lau Bech Lauritzen) - - - Added the ability to control pie shadow position and alpha via a new pie - 'shadow' option. (patch by Julien Thomas, pull request #78) - - - Added the ability to set width and color for individual sides of the grid. - (patch by Ara Anjargolian, additional fixes by Karl Swedberg, pull requests #855 - and #880) - - - The selection plugin's getSelection now returns null when the selection - has been cleared. (patch by Nick Campbell, pull request #852) - - - Added a new option called 'zero' to bars and filled lines series, to control - whether the y-axis minimum is scaled to fit the data or set to zero. - (patch by David Schnur, issues #316, #529, and #856, pull request #911) - - - The plot function is now also a jQuery chainable property. - (patch by David Schnur, issues #734 and #816, pull request #953) - - - When only a single pie slice is beneath the combine threshold it is no longer - replaced by an 'other' slice. (suggested by Devin Bayer, issue #638) - - - Added lineJoin and minSize options to the selection plugin to control the - corner style and minimum size of the selection, respectively. - (patch by Ruth Linehan, pull request #963) - -### Bug fixes ### - - - Fix problem with null values and pie plugin. (patch by gcruxifix, - issue 500) - - - Fix problem with threshold plugin and bars. (based on patch by - kaarlenkaski, issue 348) - - - Fix axis box calculations so the boxes include the outermost part of the - labels too. - - - Fix problem with event clicking and hovering in IE 8 by updating Excanvas - and removing previous work-around. (test case by Ara Anjargolian) - - - Fix issues with blurry 1px border when some measures aren't integer. - (reported by Ara Anjargolian) - - - Fix bug with formats in the data processor. (reported by Peter Hull, - issue 534) - - - Prevent i from being declared global in extractRange. (reported by - Alexander Obukhov, issue 627) - - - Throw errors in a more cross-browser-compatible manner. (patch by - Eddie Kay) - - - Prevent pie slice outlines from being drawn when the stroke width is zero. - (reported by Chris Minett, issue 585) - - - Updated the navigate plugin's inline copy of jquery.mousewheel to fix - Webkit zoom problems. (reported by Hau Nguyen, issue 685) - - - Axis labels no longer appear as decimals rather than integers in certain - cases. (patch by Clemens Stolle, issue 541) - - - Automatic color generation no longer produces only whites and blacks when - there are many series. (patch by David Schnur and Tom Cleaveland) - - - Fixed an error when custom tick labels weren't provided as strings. (patch - by Shad Downey) - - - Prevented the local insertSteps and fmt variables from becoming global. - (first reported by Marc Bennewitz and Szymon Barglowski, patch by Nick - Campbell, issues #825 and #831, pull request #851) - - - Prevented several threshold plugin variables from becoming global. (patch - by Lasse Dahl Ebert) - - - Fixed various jQuery 1.8 compatibility issues. (issues #814 and #819, - pull request #877) - - - Pie charts with a slice equal to or approaching 100% of the pie no longer - appear invisible. (patch by David Schnur, issues #444, #658, #726, #824 - and #850, pull request #879) - - - Prevented several local variables from becoming global. (patch by aaa707) - - - Ensure that the overlay and primary canvases remain aligned. (issue #670, - pull request #901) - - - Added support for jQuery 1.9 by removing and replacing uses of $.browser. - (analysis and patch by Anthony Ryan, pull request #905) - - - Pie charts no longer disappear when redrawn during a resize or update. - (reported by Julien Bec, issue #656, pull request #910) - - - Avoided floating-point precision errors when calculating pie percentages. - (patch by James Ward, pull request #918) - - - Fixed compatibility with jQuery 1.2.6, which has no 'mouseleave' shortcut. - (reported by Bevan, original pull request #920, replaced by direct patch) - - - Fixed sub-pixel rendering issues with crosshair and selection lines. - (patches by alanayoub and Daniel Shapiro, pull requests #17 and #925) - - - Fixed rendering issues when using the threshold plugin with several series. - (patch by Ivan Novikov, pull request #934) - - - Pie charts no longer disappear when redrawn after calling setData(). - (reported by zengge1984 and pareeohnos, issues #810 and #945) - - - Added a work-around for the problem where points with a lineWidth of zero - still showed up with a visible line. (reported by SalvoSav, issue #842, - patch by Jamie Hamel-Smith, pull request #937) - - - Pie charts now accept values in string form, like other plot types. - (reported by laerdal.no, issue #534) - - - Avoid rounding errors in the threshold plugin. - (reported by jerikojerk, issue #895) - - - Fixed an error when using the navigate plugin with jQuery 1.9.x or later. - (reported by Paolo Valleri, issue #964) - - - Fixed inconsistencies between the highlight and unhighlight functions. - (reported by djamshed, issue #987) - - - Fixed recalculation of tickSize and tickDecimals on calls to setupGrid. - (patch by thecountofzero, pull request #861, issues #860, #1000) - - -## Flot 0.7 ## - -### API changes ### - -Multiple axes support. Code using dual axes should be changed from using -x2axis/y2axis in the options to using an array (although backwards- -compatibility hooks are in place). For instance, - -```js -{ - xaxis: { ... }, x2axis: { ... }, - yaxis: { ... }, y2axis: { ... } -} -``` - -becomes - -```js -{ - xaxes: [ { ... }, { ... } ], - yaxes: [ { ... }, { ... } ] -} -``` - -Note that if you're just using one axis, continue to use the xaxis/yaxis -directly (it now sets the default settings for the arrays). Plugins touching -the axes must be ported to take the extra axes into account, check the source -to see some examples. - -A related change is that the visibility of axes is now auto-detected. So if -you were relying on an axis to show up even without any data in the chart, you -now need to set the axis "show" option explicitly. - -"tickColor" on the grid options is now deprecated in favour of a corresponding -option on the axes, so: - -```js -{ grid: { tickColor: "#000" }} -``` - -becomes - -```js -{ xaxis: { tickColor: "#000"}, yaxis: { tickColor: "#000"} } -``` - -But if you just configure a base color Flot will now autogenerate a tick color -by adding transparency. Backwards-compatibility hooks are in place. - -Final note: now that IE 9 is coming out with canvas support, you may want to -adapt the excanvas include to skip loading it in IE 9 (the examples have been -adapted thanks to Ryley Breiddal). An alternative to excanvas using Flash has -also surfaced, if your graphs are slow in IE, you may want to give it a spin: - - http://code.google.com/p/flashcanvas/ - -### Changes ### - - - Support for specifying a bottom for each point for line charts when filling - them, this means that an arbitrary bottom can be used instead of just the x - axis. (based on patches patiently provided by Roman V. Prikhodchenko) - - - New fillbetween plugin that can compute a bottom for a series from another - series, useful for filling areas between lines. - - See new example percentiles.html for a use case. - - - More predictable handling of gaps for the stacking plugin, now all - undefined ranges are skipped. - - - Stacking plugin can stack horizontal bar charts. - - - Navigate plugin now redraws the plot while panning instead of only after - the fact. (raised by lastthemy, issue 235) - - Can be disabled by setting the pan.frameRate option to null. - - - Date formatter now accepts %0m and %0d to get a zero-padded month or day. - (issue raised by Maximillian Dornseif) - - - Revamped internals to support an unlimited number of axes, not just dual. - (sponsored by Flight Data Services, www.flightdataservices.com) - - - New setting on axes, "tickLength", to control the size of ticks or turn - them off without turning off the labels. - - - Axis labels are now put in container divs with classes, for instance labels - in the x axes can be reached via ".xAxis .tickLabel". - - - Support for setting the color of an axis. (sponsored by Flight Data - Services, www.flightdataservices.com) - - - Tick color is now auto-generated as the base color with some transparency, - unless you override it. - - - Support for aligning ticks in the axes with "alignTicksWithAxis" to ensure - that they appear next to each other rather than in between, at the expense - of possibly awkward tick steps. (sponsored by Flight Data Services, - www.flightdataservices.com) - - - Support for customizing the point type through a callback when plotting - points and new symbol plugin with some predefined point types. (sponsored - by Utility Data Corporation) - - - Resize plugin for automatically redrawing when the placeholder changes - size, e.g. on window resizes. (sponsored by Novus Partners) - - A resize() method has been added to plot object facilitate this. - - - Support Infinity/-Infinity for plotting asymptotes by hacking it into - +/-Number.MAX_VALUE. (reported by rabaea.mircea) - - - Support for restricting navigate plugin to not pan/zoom an axis. (based on - patch by kkaefer) - - - Support for providing the drag cursor for the navigate plugin as an option. - (based on patch by Kelly T. Moore) - - - Options for controlling whether an axis is shown or not (suggestion by Timo - Tuominen) and whether to reserve space for it even if it isn't shown. - - - New attribute $.plot.version with the Flot version as a string. - - - The version comment is now included in the minified jquery.flot.min.js. - - - New options.grid.minBorderMargin for adjusting the minimum margin provided - around the border (based on patch by corani, issue 188). - - - Refactor replot behaviour so Flot tries to reuse the existing canvas, - adding shutdown() methods to the plot. (based on patch by Ryley Breiddal, - issue 269) - - This prevents a memory leak in Chrome and hopefully makes replotting faster - for those who are using $.plot instead of .setData()/.draw(). Also update - jQuery to 1.5.1 to prevent IE leaks fixed in jQuery. - - - New real-time line chart example. - - - New hooks: drawSeries, shutdown. - -### Bug fixes ### - - - Fixed problem with findNearbyItem and bars on top of each other. (reported - by ragingchikn, issue 242) - - - Fixed problem with ticks and the border. (based on patch from - ultimatehustler69, issue 236) - - - Fixed problem with plugins adding options to the series objects. - - - Fixed a problem introduced in 0.6 with specifying a gradient with: - - ```{brightness: x, opacity: y }``` - - - Don't use $.browser.msie, check for getContext on the created canvas element - instead and try to use excanvas if it's not found. - - Fixes IE 9 compatibility. - - - highlight(s, index) was looking up the point in the original s.data instead - of in the computed datapoints array, which breaks with plugins that modify - the datapoints, such as the stacking plugin. (reported by curlypaul924, - issue 316) - - - More robust handling of axis from data passed in from getData(). (reported) - by Morgan) - - - Fixed problem with turning off bar outline. (fix by Jordi Castells, - issue 253) - - - Check the selection passed into setSelection in the selection - plugin, to guard against errors when synchronizing plots (fix by Lau - Bech Lauritzen). - - - Fix bug in crosshair code with mouseout resetting the crosshair even - if it is locked (fix by Lau Bech Lauritzen and Banko Adam). - - - Fix bug with points plotting using line width from lines rather than - points. - - - Fix bug with passing non-array 0 data (for plugins that don't expect - arrays, patch by vpapp1). - - - Fix errors in JSON in examples so they work with jQuery 1.4.2 - (fix reported by honestbleeps, issue 357). - - - Fix bug with tooltip in interacting.html, this makes the tooltip - much smoother (fix by bdkahn). Fix related bug inside highlighting - handler in Flot. - - - Use closure trick to make inline colorhelpers plugin respect - jQuery.noConflict(true), renaming the global jQuery object (reported - by Nick Stielau). - - - Listen for mouseleave events and fire a plothover event with empty - item when it occurs to drop highlights when the mouse leaves the - plot (reported by by outspirit). - - - Fix bug with using aboveData with a background (reported by - amitayd). - - - Fix possible excanvas leak (report and suggested fix by tom9729). - - - Fix bug with backwards compatibility for shadowSize = 0 (report and - suggested fix by aspinak). - - - Adapt examples to skip loading excanvas (fix by Ryley Breiddal). - - - Fix bug that prevent a simple f(x) = -x transform from working - correctly (fix by Mike, issue 263). - - - Fix bug in restoring cursor in navigate plugin (reported by Matteo - Gattanini, issue 395). - - - Fix bug in picking items when transform/inverseTransform is in use - (reported by Ofri Raviv, and patches and analysis by Jan and Tom - Paton, issue 334 and 467). - - - Fix problem with unaligned ticks and hover/click events caused by - padding on the placeholder by hardcoding the placeholder padding to - 0 (reported by adityadineshsaxena, Matt Sommer, Daniel Atos and some - other people, issue 301). - - - Update colorhelpers plugin to avoid dying when trying to parse an - invalid string (reported by cadavor, issue 483). - - - -## Flot 0.6 ## - -### API changes ### - -Selection support has been moved to a plugin. Thus if you're passing -selection: { mode: something }, you MUST include the file -jquery.flot.selection.js after jquery.flot.js. This reduces the size of -base Flot and makes it easier to customize the selection as well as -improving code clarity. The change is based on a patch from andershol. - -In the global options specified in the $.plot command, "lines", "points", -"bars" and "shadowSize" have been moved to a sub-object called "series": - -```js -$.plot(placeholder, data, { lines: { show: true }}) -``` - -should be changed to - -```js - $.plot(placeholder, data, { series: { lines: { show: true }}}) -``` - -All future series-specific options will go into this sub-object to -simplify plugin writing. Backward-compatibility code is in place, so -old code should not break. - -"plothover" no longer provides the original data point, but instead a -normalized one, since there may be no corresponding original point. - -Due to a bug in previous versions of jQuery, you now need at least -jQuery 1.2.6. But if you can, try jQuery 1.3.2 as it got some improvements -in event handling speed. - -## Changes ## - - - Added support for disabling interactivity for specific data series. - (request from Ronald Schouten and Steve Upton) - - - Flot now calls $() on the placeholder and optional legend container passed - in so you can specify DOM elements or CSS expressions to make it easier to - use Flot with libraries like Prototype or Mootools or through raw JSON from - Ajax responses. - - - A new "plotselecting" event is now emitted while the user is making a - selection. - - - The "plothover" event is now emitted immediately instead of at most 10 - times per second, you'll have to put in a setTimeout yourself if you're - doing something really expensive on this event. - - - The built-in date formatter can now be accessed as $.plot.formatDate(...) - (suggestion by Matt Manela) and even replaced. - - - Added "borderColor" option to the grid. (patches from Amaury Chamayou and - Mike R. Williamson) - - - Added support for gradient backgrounds for the grid. (based on patch from - Amaury Chamayou, issue 90) - - The "setting options" example provides a demonstration. - - - Gradient bars. (suggestion by stefpet) - - - Added a "plotunselected" event which is triggered when the selection is - removed, see "selection" example. (suggestion by Meda Ugo) - - - The option legend.margin can now specify horizontal and vertical margins - independently. (suggestion by someone who's annoyed) - - - Data passed into Flot is now copied to a new canonical format to enable - further processing before it hits the drawing routines. As a side-effect, - this should make Flot more robust in the face of bad data. (issue 112) - - - Step-wise charting: line charts have a new option "steps" that when set to - true connects the points with horizontal/vertical steps instead of diagonal - lines. - - - The legend labelFormatter now passes the series in addition to just the - label. (suggestion by Vincent Lemeltier) - - - Horizontal bars (based on patch by Jason LeBrun). - - - Support for partial bars by specifying a third coordinate, i.e. they don't - have to start from the axis. This can be used to make stacked bars. - - - New option to disable the (grid.show). - - - Added pointOffset method for converting a point in data space to an offset - within the placeholder. - - - Plugin system: register an init method in the $.flot.plugins array to get - started, see PLUGINS.txt for details on how to write plugins (it's easy). - There are also some extra methods to enable access to internal state. - - - Hooks: you can register functions that are called while Flot is crunching - the data and doing the plot. This can be used to modify Flot without - changing the source, useful for writing plugins. Some hooks are defined, - more are likely to come. - - - Threshold plugin: you can set a threshold and a color, and the data points - below that threshold will then get the color. Useful for marking data - below 0, for instance. - - - Stack plugin: you can specify a stack key for each series to have them - summed. This is useful for drawing additive/cumulative graphs with bars and - (currently unfilled) lines. - - - Crosshairs plugin: trace the mouse position on the axes, enable with - crosshair: { mode: "x"} (see the new tracking example for a use). - - - Image plugin: plot prerendered images. - - - Navigation plugin for panning and zooming a plot. - - - More configurable grid. - - - Axis transformation support, useful for non-linear plots, e.g. log axes and - compressed time axes (like omitting weekends). - - - Support for twelve-hour date formatting (patch by Forrest Aldridge). - - - The color parsing code in Flot has been cleaned up and split out so it's - now available as a separate jQuery plugin. It's included inline in the Flot - source to make dependency managing easier. This also makes it really easy - to use the color helpers in Flot plugins. - -## Bug fixes ## - - - Fixed two corner-case bugs when drawing filled curves. (report and analysis - by Joshua Varner) - - - Fix auto-adjustment code when setting min to 0 for an axis where the - dataset is completely flat on that axis. (report by chovy) - - - Fixed a bug with passing in data from getData to setData when the secondary - axes are used. (reported by nperelman, issue 65) - - - Fixed so that it is possible to turn lines off when no other chart type is - shown (based on problem reported by Glenn Vanderburg), and fixed so that - setting lineWidth to 0 also hides the shadow. (based on problem reported by - Sergio Nunes) - - - Updated mousemove position expression to the latest from jQuery. (reported - by meyuchas) - - - Use CSS borders instead of background in legend. (issues 25 and 45) - - - Explicitly convert axis min/max to numbers. - - - Fixed a bug with drawing marking lines with different colors. (reported by - Khurram) - - - Fixed a bug with returning y2 values in the selection event. (fix by - exists, issue 75) - - - Only set position relative on placeholder if it hasn't already a position - different from static. (reported by kyberneticist, issue 95) - - - Don't round markings to prevent sub-pixel problems. (reported by - Dan Lipsitt) - - - Make the grid border act similarly to a regular CSS border, i.e. prevent - it from overlapping the plot itself. This also fixes a problem with anti- - aliasing when the width is 1 pixel. (reported by Anthony Ettinger) - - - Imported version 3 of excanvas and fixed two issues with the newer version. - Hopefully, this will make Flot work with IE8. (nudge by Fabien Menager, - further analysis by Booink, issue 133) - - - Changed the shadow code for lines to hopefully look a bit better with - vertical lines. - - - Round tick positions to avoid possible problems with fractions. (suggestion - by Fred, issue 130) - - - Made the heuristic for determining how many ticks to aim for a bit smarter. - - - Fix for uneven axis margins (report and patch by Paul Kienzle) and snapping - to ticks. (report and patch by lifthrasiir) - - - Fixed bug with slicing in findNearbyItems. (patch by zollman) - - - Make heuristic for x axis label widths more dynamic. (patch by - rickinhethuis) - - - Make sure points on top take precedence when finding nearby points when - hovering. (reported by didroe, issue 224) - - - -## Flot 0.5 ## - -Timestamps are now in UTC. Also "selected" event -> becomes "plotselected" -with new data, the parameters for setSelection are now different (but -backwards compatibility hooks are in place), coloredAreas becomes markings -with a new interface (but backwards compatibility hooks are in place). - -### API changes ### - -Timestamps in time mode are now displayed according to UTC instead of the time -zone of the visitor. This affects the way the timestamps should be input; -you'll probably have to offset the timestamps according to your local time -zone. It also affects any custom date handling code (which basically now -should use the equivalent UTC date mehods, e.g. .setUTCMonth() instead of -.setMonth(). - -Markings, previously coloredAreas, are now specified as ranges on the axes, -like ```{ xaxis: { from: 0, to: 10 }}```. Furthermore with markings you can -now draw horizontal/vertical lines by setting from and to to the same -coordinate. (idea from line support patch by by Ryan Funduk) - -Interactivity: added a new "plothover" event and this and the "plotclick" -event now returns the closest data item (based on patch by /david, patch by -Mark Byers for bar support). See the revamped "interacting with the data" -example for some hints on what you can do. - -Highlighting: you can now highlight points and datapoints are autohighlighted -when you hover over them (if hovering is turned on). - -Support for dual axis has been added (based on patch by someone who's annoyed -and /david). For each data series you can specify which axes it belongs to, -and there are two more axes, x2axis and y2axis, to customize. This affects the -"selected" event which has been renamed to "plotselected" and spews out -```{ xaxis: { from: -10, to: 20 } ... },``` setSelection in which the -parameters are on a new form (backwards compatible hooks are in place so old -code shouldn't break) and markings (formerly coloredAreas). - -## Changes ## - - - Added support for specifying the size of tick labels (axis.labelWidth, - axis.labelHeight). Useful for specifying a max label size to keep multiple - plots aligned. - - - The "fill" option can now be a number that specifies the opacity of the - fill. - - - You can now specify a coordinate as null (like [2, null]) and Flot will - take the other coordinate into account when scaling the axes. (based on - patch by joebno) - - - New option for bars "align". Set it to "center" to center the bars on the - value they represent. - - - setSelection now takes a second parameter which you can use to prevent the - method from firing the "plotselected" handler. - - - Improved the handling of axis auto-scaling with bars. - -## Bug fixes ## - - - Fixed a bug in calculating spacing around the plot. (reported by - timothytoe) - - - Fixed a bug in finding max values for all-negative data sets. - - - Prevent the possibility of eternal looping in tick calculations. - - - Fixed a bug when borderWidth is set to 0. (reported by Rob/sanchothefat) - - - Fixed a bug with drawing bars extending below 0. (reported by James Hewitt, - patch by Ryan Funduk). - - - Fixed a bug with line widths of bars. (reported by MikeM) - - - Fixed a bug with 'nw' and 'sw' legend positions. - - - Fixed a bug with multi-line x-axis tick labels. (reported by Luca Ciano, - IE-fix help by Savage Zhang) - - - Using the "container" option in legend now overwrites the container element - instead of just appending to it, fixing the infinite legend bug. (reported - by several people, fix by Brad Dewey) - - - -## Flot 0.4 ## - -### API changes ### - -Deprecated axis.noTicks in favor of just specifying the number as axis.ticks. -So ```xaxis: { noTicks: 10 }``` becomes ```xaxis: { ticks: 10 }```. - -Time series support. Specify axis.mode: "time", put in Javascript timestamps -as data, and Flot will automatically spit out sensible ticks. Take a look at -the two new examples. The format can be customized with axis.timeformat and -axis.monthNames, or if that fails with axis.tickFormatter. - -Support for colored background areas via grid.coloredAreas. Specify an array -of { x1, y1, x2, y2 } objects or a function that returns these given -{ xmin, xmax, ymin, ymax }. - -More members on the plot object (report by Chris Davies and others). -"getData" for inspecting the assigned settings on data series (e.g. color) and -"setData", "setupGrid" and "draw" for updating the contents without a total -replot. - -The default number of ticks to aim for is now dependent on the size of the -plot in pixels. Support for customizing tick interval sizes directly with -axis.minTickSize and axis.tickSize. - -Cleaned up the automatic axis scaling algorithm and fixed how it interacts -with ticks. Also fixed a couple of tick-related corner case bugs (one reported -by mainstreetmark, another reported by timothytoe). - -The option axis.tickFormatter now takes a function with two parameters, the -second parameter is an optional object with information about the axis. It has -min, max, tickDecimals, tickSize. - -## Changes ## - - - Added support for segmented lines. (based on patch from Michael MacDonald) - - - Added support for ignoring null and bad values. (suggestion from Nick - Konidaris and joshwaihi) - - - Added support for changing the border width. (thanks to joebno and safoo) - - - Label colors can be changed via CSS by selecting the tickLabel class. - -## Bug fixes ## - - - Fixed a bug in handling single-item bar series. (reported by Emil Filipov) - - - Fixed erratic behaviour when interacting with the plot with IE 7. (reported - by Lau Bech Lauritzen). - - - Prevent IE/Safari text selection when selecting stuff on the canvas. - - - -## Flot 0.3 ## - -This is mostly a quick-fix release because jquery.js wasn't included in the -previous zip/tarball. - -## Changes ## - - - Include jquery.js in the zip/tarball. - - - Support clicking on the plot. Turn it on with grid: { clickable: true }, - then you get a "plotclick" event on the graph placeholder with the position - in units of the plot. - -## Bug fixes ## - - - Fixed a bug in dealing with data where min = max. (thanks to Michael - Messinides) - - - -## Flot 0.2 ## - -The API should now be fully documented. - -### API changes ### - -Moved labelMargin option to grid from x/yaxis. - -## Changes ## - - - Added support for putting a background behind the default legend. The - default is the partly transparent background color. Added backgroundColor - and backgroundOpacity to the legend options to control this. - - - The ticks options can now be a callback function that takes one parameter, - an object with the attributes min and max. The function should return a - ticks array. - - - Added labelFormatter option in legend, useful for turning the legend - labels into links. - - - Reduced the size of the code. (patch by Guy Fraser) - - - -## Flot 0.1 ## - -First public release. diff --git a/htdocs/includes/jquery/plugins/flot/PLUGINS.md b/htdocs/includes/jquery/plugins/flot/PLUGINS.md deleted file mode 100644 index b5bf3002033..00000000000 --- a/htdocs/includes/jquery/plugins/flot/PLUGINS.md +++ /dev/null @@ -1,143 +0,0 @@ -## Writing plugins ## - -All you need to do to make a new plugin is creating an init function -and a set of options (if needed), stuffing it into an object and -putting it in the $.plot.plugins array. For example: - -```js -function myCoolPluginInit(plot) { - plot.coolstring = "Hello!"; -}; - -$.plot.plugins.push({ init: myCoolPluginInit, options: { ... } }); - -// if $.plot is called, it will return a plot object with the -// attribute "coolstring" -``` - -Now, given that the plugin might run in many different places, it's -a good idea to avoid leaking names. The usual trick here is wrap the -above lines in an anonymous function which is called immediately, like -this: (function () { inner code ... })(). To make it even more robust -in case $ is not bound to jQuery but some other Javascript library, we -can write it as - -```js -(function ($) { - // plugin definition - // ... -})(jQuery); -``` - -There's a complete example below, but you should also check out the -plugins bundled with Flot. - - -## Complete example ## - -Here is a simple debug plugin which alerts each of the series in the -plot. It has a single option that control whether it is enabled and -how much info to output: - -```js -(function ($) { - function init(plot) { - var debugLevel = 1; - - function checkDebugEnabled(plot, options) { - if (options.debug) { - debugLevel = options.debug; - plot.hooks.processDatapoints.push(alertSeries); - } - } - - function alertSeries(plot, series, datapoints) { - var msg = "series " + series.label; - if (debugLevel > 1) { - msg += " with " + series.data.length + " points"; - alert(msg); - } - } - - plot.hooks.processOptions.push(checkDebugEnabled); - } - - var options = { debug: 0 }; - - $.plot.plugins.push({ - init: init, - options: options, - name: "simpledebug", - version: "0.1" - }); -})(jQuery); -``` - -We also define "name" and "version". It's not used by Flot, but might -be helpful for other plugins in resolving dependencies. - -Put the above in a file named "jquery.flot.debug.js", include it in an -HTML page and then it can be used with: - -```js - $.plot($("#placeholder"), [...], { debug: 2 }); -``` - -This simple plugin illustrates a couple of points: - - - It uses the anonymous function trick to avoid name pollution. - - It can be enabled/disabled through an option. - - Variables in the init function can be used to store plot-specific - state between the hooks. - -The two last points are important because there may be multiple plots -on the same page, and you'd want to make sure they are not mixed up. - - -## Shutting down a plugin ## - -Each plot object has a shutdown hook which is run when plot.shutdown() -is called. This usually mostly happens in case another plot is made on -top of an existing one. - -The purpose of the hook is to give you a chance to unbind any event -handlers you've registered and remove any extra DOM things you've -inserted. - -The problem with event handlers is that you can have registered a -handler which is run in some point in the future, e.g. with -setTimeout(). Meanwhile, the plot may have been shutdown and removed, -but because your event handler is still referencing it, it can't be -garbage collected yet, and worse, if your handler eventually runs, it -may overwrite stuff on a completely different plot. - - -## Some hints on the options ## - -Plugins should always support appropriate options to enable/disable -them because the plugin user may have several plots on the same page -where only one should use the plugin. In most cases it's probably a -good idea if the plugin is turned off rather than on per default, just -like most of the powerful features in Flot. - -If the plugin needs options that are specific to each series, like the -points or lines options in core Flot, you can put them in "series" in -the options object, e.g. - -```js -var options = { - series: { - downsample: { - algorithm: null, - maxpoints: 1000 - } - } -} -``` - -Then they will be copied by Flot into each series, providing default -values in case none are specified. - -Think hard and long about naming the options. These names are going to -be public API, and code is going to depend on them if the plugin is -successful. diff --git a/htdocs/includes/jquery/plugins/flot/README.md b/htdocs/includes/jquery/plugins/flot/README.md deleted file mode 100644 index a8f70640a6b..00000000000 --- a/htdocs/includes/jquery/plugins/flot/README.md +++ /dev/null @@ -1,110 +0,0 @@ -# Flot [![Build status](https://travis-ci.org/flot/flot.png)](https://travis-ci.org/flot/flot) - -## About ## - -Flot is a Javascript plotting library for jQuery. -Read more at the website: - -Take a look at the the examples in examples/index.html; they should give a good -impression of what Flot can do, and the source code of the examples is probably -the fastest way to learn how to use Flot. - - -## Installation ## - -Just include the Javascript file after you've included jQuery. - -Generally, all browsers that support the HTML5 canvas tag are -supported. - -For support for Internet Explorer < 9, you can use [Excanvas] -[excanvas], a canvas emulator; this is used in the examples bundled -with Flot. You just include the excanvas script like this: - -```html - -``` - -If it's not working on your development IE 6.0, check that it has -support for VML which Excanvas is relying on. It appears that some -stripped down versions used for test environments on virtual machines -lack the VML support. - -You can also try using [Flashcanvas][flashcanvas], which uses Flash to -do the emulation. Although Flash can be a bit slower to load than VML, -if you've got a lot of points, the Flash version can be much faster -overall. Flot contains some wrapper code for activating Excanvas which -Flashcanvas is compatible with. - -You need at least jQuery 1.2.6, but try at least 1.3.2 for interactive -charts because of performance improvements in event handling. - - -## Basic usage ## - -Create a placeholder div to put the graph in: - -```html -
    -``` - -You need to set the width and height of this div, otherwise the plot -library doesn't know how to scale the graph. You can do it inline like -this: - -```html -
    -``` - -You can also do it with an external stylesheet. Make sure that the -placeholder isn't within something with a display:none CSS property - -in that case, Flot has trouble measuring label dimensions which -results in garbled looks and might have trouble measuring the -placeholder dimensions which is fatal (it'll throw an exception). - -Then when the div is ready in the DOM, which is usually on document -ready, run the plot function: - -```js -$.plot($("#placeholder"), data, options); -``` - -Here, data is an array of data series and options is an object with -settings if you want to customize the plot. Take a look at the -examples for some ideas of what to put in or look at the -[API reference](API.md). Here's a quick example that'll draw a line -from (0, 0) to (1, 1): - -```js -$.plot($("#placeholder"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } }); -``` - -The plot function immediately draws the chart and then returns a plot -object with a couple of methods. - - -## What's with the name? ## - -First: it's pronounced with a short o, like "plot". Not like "flawed". - -So "Flot" rhymes with "plot". - -And if you look up "flot" in a Danish-to-English dictionary, some of -the words that come up are "good-looking", "attractive", "stylish", -"smart", "impressive", "extravagant". One of the main goals with Flot -is pretty looks. - - -## Notes about the examples ## - -In order to have a useful, functional example of time-series plots using time -zones, date.js from [timezone-js][timezone-js] (released under the Apache 2.0 -license) and the [Olson][olson] time zone database (released to the public -domain) have been included in the examples directory. They are used in -examples/axes-time-zones/index.html. - - -[excanvas]: http://code.google.com/p/explorercanvas/ -[flashcanvas]: http://code.google.com/p/flashcanvas/ -[timezone-js]: https://github.com/mde/timezone-js -[olson]: http://ftp.iana.org/time-zones diff --git a/htdocs/includes/jquery/plugins/flot/excanvas.js b/htdocs/includes/jquery/plugins/flot/excanvas.js deleted file mode 100644 index 70a8f25ca86..00000000000 --- a/htdocs/includes/jquery/plugins/flot/excanvas.js +++ /dev/null @@ -1,1428 +0,0 @@ -// Copyright 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -// Known Issues: -// -// * Patterns only support repeat. -// * Radial gradient are not implemented. The VML version of these look very -// different from the canvas one. -// * Clipping paths are not implemented. -// * Coordsize. The width and height attribute have higher priority than the -// width and height style values which isn't correct. -// * Painting mode isn't implemented. -// * Canvas width/height should is using content-box by default. IE in -// Quirks mode will draw the canvas using border-box. Either change your -// doctype to HTML5 -// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) -// or use Box Sizing Behavior from WebFX -// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) -// * Non uniform scaling does not correctly scale strokes. -// * Filling very large shapes (above 5000 points) is buggy. -// * Optimize. There is always room for speed improvements. - -// Only add this code if we do not already have a canvas implementation -if (!document.createElement('canvas').getContext) { - -(function() { - - // alias some functions to make (compiled) code shorter - var m = Math; - var mr = m.round; - var ms = m.sin; - var mc = m.cos; - var abs = m.abs; - var sqrt = m.sqrt; - - // this is used for sub pixel precision - var Z = 10; - var Z2 = Z / 2; - - var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1]; - - /** - * This funtion is assigned to the elements as element.getContext(). - * @this {HTMLElement} - * @return {CanvasRenderingContext2D_} - */ - function getContext() { - return this.context_ || - (this.context_ = new CanvasRenderingContext2D_(this)); - } - - var slice = Array.prototype.slice; - - /** - * Binds a function to an object. The returned function will always use the - * passed in {@code obj} as {@code this}. - * - * Example: - * - * g = bind(f, obj, a, b) - * g(c, d) // will do f.call(obj, a, b, c, d) - * - * @param {Function} f The function to bind the object to - * @param {Object} obj The object that should act as this when the function - * is called - * @param {*} var_args Rest arguments that will be used as the initial - * arguments when the function is called - * @return {Function} A new function that has bound this - */ - function bind(f, obj, var_args) { - var a = slice.call(arguments, 2); - return function() { - return f.apply(obj, a.concat(slice.call(arguments))); - }; - } - - function encodeHtmlAttribute(s) { - return String(s).replace(/&/g, '&').replace(/"/g, '"'); - } - - function addNamespace(doc, prefix, urn) { - if (!doc.namespaces[prefix]) { - doc.namespaces.add(prefix, urn, '#default#VML'); - } - } - - function addNamespacesAndStylesheet(doc) { - addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml'); - addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office'); - - // Setup default CSS. Only add one style sheet per document - if (!doc.styleSheets['ex_canvas_']) { - var ss = doc.createStyleSheet(); - ss.owningElement.id = 'ex_canvas_'; - ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + - // default size is 300x150 in Gecko and Opera - 'text-align:left;width:300px;height:150px}'; - } - } - - // Add namespaces and stylesheet at startup. - addNamespacesAndStylesheet(document); - - var G_vmlCanvasManager_ = { - init: function(opt_doc) { - var doc = opt_doc || document; - // Create a dummy element so that IE will allow canvas elements to be - // recognized. - doc.createElement('canvas'); - doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); - }, - - init_: function(doc) { - // find all canvas elements - var els = doc.getElementsByTagName('canvas'); - for (var i = 0; i < els.length; i++) { - this.initElement(els[i]); - } - }, - - /** - * Public initializes a canvas element so that it can be used as canvas - * element from now on. This is called automatically before the page is - * loaded but if you are creating elements using createElement you need to - * make sure this is called on the element. - * @param {HTMLElement} el The canvas element to initialize. - * @return {HTMLElement} the element that was created. - */ - initElement: function(el) { - if (!el.getContext) { - el.getContext = getContext; - - // Add namespaces and stylesheet to document of the element. - addNamespacesAndStylesheet(el.ownerDocument); - - // Remove fallback content. There is no way to hide text nodes so we - // just remove all childNodes. We could hide all elements and remove - // text nodes but who really cares about the fallback content. - el.innerHTML = ''; - - // do not use inline function because that will leak memory - el.attachEvent('onpropertychange', onPropertyChange); - el.attachEvent('onresize', onResize); - - var attrs = el.attributes; - if (attrs.width && attrs.width.specified) { - // TODO: use runtimeStyle and coordsize - // el.getContext().setWidth_(attrs.width.nodeValue); - el.style.width = attrs.width.nodeValue + 'px'; - } else { - el.width = el.clientWidth; - } - if (attrs.height && attrs.height.specified) { - // TODO: use runtimeStyle and coordsize - // el.getContext().setHeight_(attrs.height.nodeValue); - el.style.height = attrs.height.nodeValue + 'px'; - } else { - el.height = el.clientHeight; - } - //el.getContext().setCoordsize_() - } - return el; - } - }; - - function onPropertyChange(e) { - var el = e.srcElement; - - switch (e.propertyName) { - case 'width': - el.getContext().clearRect(); - el.style.width = el.attributes.width.nodeValue + 'px'; - // In IE8 this does not trigger onresize. - el.firstChild.style.width = el.clientWidth + 'px'; - break; - case 'height': - el.getContext().clearRect(); - el.style.height = el.attributes.height.nodeValue + 'px'; - el.firstChild.style.height = el.clientHeight + 'px'; - break; - } - } - - function onResize(e) { - var el = e.srcElement; - if (el.firstChild) { - el.firstChild.style.width = el.clientWidth + 'px'; - el.firstChild.style.height = el.clientHeight + 'px'; - } - } - - G_vmlCanvasManager_.init(); - - // precompute "00" to "FF" - var decToHex = []; - for (var i = 0; i < 16; i++) { - for (var j = 0; j < 16; j++) { - decToHex[i * 16 + j] = i.toString(16) + j.toString(16); - } - } - - function createMatrixIdentity() { - return [ - [1, 0, 0], - [0, 1, 0], - [0, 0, 1] - ]; - } - - function matrixMultiply(m1, m2) { - var result = createMatrixIdentity(); - - for (var x = 0; x < 3; x++) { - for (var y = 0; y < 3; y++) { - var sum = 0; - - for (var z = 0; z < 3; z++) { - sum += m1[x][z] * m2[z][y]; - } - - result[x][y] = sum; - } - } - return result; - } - - function copyState(o1, o2) { - o2.fillStyle = o1.fillStyle; - o2.lineCap = o1.lineCap; - o2.lineJoin = o1.lineJoin; - o2.lineWidth = o1.lineWidth; - o2.miterLimit = o1.miterLimit; - o2.shadowBlur = o1.shadowBlur; - o2.shadowColor = o1.shadowColor; - o2.shadowOffsetX = o1.shadowOffsetX; - o2.shadowOffsetY = o1.shadowOffsetY; - o2.strokeStyle = o1.strokeStyle; - o2.globalAlpha = o1.globalAlpha; - o2.font = o1.font; - o2.textAlign = o1.textAlign; - o2.textBaseline = o1.textBaseline; - o2.arcScaleX_ = o1.arcScaleX_; - o2.arcScaleY_ = o1.arcScaleY_; - o2.lineScale_ = o1.lineScale_; - } - - var colorData = { - aliceblue: '#F0F8FF', - antiquewhite: '#FAEBD7', - aquamarine: '#7FFFD4', - azure: '#F0FFFF', - beige: '#F5F5DC', - bisque: '#FFE4C4', - black: '#000000', - blanchedalmond: '#FFEBCD', - blueviolet: '#8A2BE2', - brown: '#A52A2A', - burlywood: '#DEB887', - cadetblue: '#5F9EA0', - chartreuse: '#7FFF00', - chocolate: '#D2691E', - coral: '#FF7F50', - cornflowerblue: '#6495ED', - cornsilk: '#FFF8DC', - crimson: '#DC143C', - cyan: '#00FFFF', - darkblue: '#00008B', - darkcyan: '#008B8B', - darkgoldenrod: '#B8860B', - darkgray: '#A9A9A9', - darkgreen: '#006400', - darkgrey: '#A9A9A9', - darkkhaki: '#BDB76B', - darkmagenta: '#8B008B', - darkolivegreen: '#556B2F', - darkorange: '#FF8C00', - darkorchid: '#9932CC', - darkred: '#8B0000', - darksalmon: '#E9967A', - darkseagreen: '#8FBC8F', - darkslateblue: '#483D8B', - darkslategray: '#2F4F4F', - darkslategrey: '#2F4F4F', - darkturquoise: '#00CED1', - darkviolet: '#9400D3', - deeppink: '#FF1493', - deepskyblue: '#00BFFF', - dimgray: '#696969', - dimgrey: '#696969', - dodgerblue: '#1E90FF', - firebrick: '#B22222', - floralwhite: '#FFFAF0', - forestgreen: '#228B22', - gainsboro: '#DCDCDC', - ghostwhite: '#F8F8FF', - gold: '#FFD700', - goldenrod: '#DAA520', - grey: '#808080', - greenyellow: '#ADFF2F', - honeydew: '#F0FFF0', - hotpink: '#FF69B4', - indianred: '#CD5C5C', - indigo: '#4B0082', - ivory: '#FFFFF0', - khaki: '#F0E68C', - lavender: '#E6E6FA', - lavenderblush: '#FFF0F5', - lawngreen: '#7CFC00', - lemonchiffon: '#FFFACD', - lightblue: '#ADD8E6', - lightcoral: '#F08080', - lightcyan: '#E0FFFF', - lightgoldenrodyellow: '#FAFAD2', - lightgreen: '#90EE90', - lightgrey: '#D3D3D3', - lightpink: '#FFB6C1', - lightsalmon: '#FFA07A', - lightseagreen: '#20B2AA', - lightskyblue: '#87CEFA', - lightslategray: '#778899', - lightslategrey: '#778899', - lightsteelblue: '#B0C4DE', - lightyellow: '#FFFFE0', - limegreen: '#32CD32', - linen: '#FAF0E6', - magenta: '#FF00FF', - mediumaquamarine: '#66CDAA', - mediumblue: '#0000CD', - mediumorchid: '#BA55D3', - mediumpurple: '#9370DB', - mediumseagreen: '#3CB371', - mediumslateblue: '#7B68EE', - mediumspringgreen: '#00FA9A', - mediumturquoise: '#48D1CC', - mediumvioletred: '#C71585', - midnightblue: '#191970', - mintcream: '#F5FFFA', - mistyrose: '#FFE4E1', - moccasin: '#FFE4B5', - navajowhite: '#FFDEAD', - oldlace: '#FDF5E6', - olivedrab: '#6B8E23', - orange: '#FFA500', - orangered: '#FF4500', - orchid: '#DA70D6', - palegoldenrod: '#EEE8AA', - palegreen: '#98FB98', - paleturquoise: '#AFEEEE', - palevioletred: '#DB7093', - papayawhip: '#FFEFD5', - peachpuff: '#FFDAB9', - peru: '#CD853F', - pink: '#FFC0CB', - plum: '#DDA0DD', - powderblue: '#B0E0E6', - rosybrown: '#BC8F8F', - royalblue: '#4169E1', - saddlebrown: '#8B4513', - salmon: '#FA8072', - sandybrown: '#F4A460', - seagreen: '#2E8B57', - seashell: '#FFF5EE', - sienna: '#A0522D', - skyblue: '#87CEEB', - slateblue: '#6A5ACD', - slategray: '#708090', - slategrey: '#708090', - snow: '#FFFAFA', - springgreen: '#00FF7F', - steelblue: '#4682B4', - tan: '#D2B48C', - thistle: '#D8BFD8', - tomato: '#FF6347', - turquoise: '#40E0D0', - violet: '#EE82EE', - wheat: '#F5DEB3', - whitesmoke: '#F5F5F5', - yellowgreen: '#9ACD32' - }; - - - function getRgbHslContent(styleString) { - var start = styleString.indexOf('(', 3); - var end = styleString.indexOf(')', start + 1); - var parts = styleString.substring(start + 1, end).split(','); - // add alpha if needed - if (parts.length != 4 || styleString.charAt(3) != 'a') { - parts[3] = 1; - } - return parts; - } - - function percent(s) { - return parseFloat(s) / 100; - } - - function clamp(v, min, max) { - return Math.min(max, Math.max(min, v)); - } - - function hslToRgb(parts){ - var r, g, b, h, s, l; - h = parseFloat(parts[0]) / 360 % 360; - if (h < 0) - h++; - s = clamp(percent(parts[1]), 0, 1); - l = clamp(percent(parts[2]), 0, 1); - if (s == 0) { - r = g = b = l; // achromatic - } else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hueToRgb(p, q, h + 1 / 3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1 / 3); - } - - return '#' + decToHex[Math.floor(r * 255)] + - decToHex[Math.floor(g * 255)] + - decToHex[Math.floor(b * 255)]; - } - - function hueToRgb(m1, m2, h) { - if (h < 0) - h++; - if (h > 1) - h--; - - if (6 * h < 1) - return m1 + (m2 - m1) * 6 * h; - else if (2 * h < 1) - return m2; - else if (3 * h < 2) - return m1 + (m2 - m1) * (2 / 3 - h) * 6; - else - return m1; - } - - var processStyleCache = {}; - - function processStyle(styleString) { - if (styleString in processStyleCache) { - return processStyleCache[styleString]; - } - - var str, alpha = 1; - - styleString = String(styleString); - if (styleString.charAt(0) == '#') { - str = styleString; - } else if (/^rgb/.test(styleString)) { - var parts = getRgbHslContent(styleString); - var str = '#', n; - for (var i = 0; i < 3; i++) { - if (parts[i].indexOf('%') != -1) { - n = Math.floor(percent(parts[i]) * 255); - } else { - n = +parts[i]; - } - str += decToHex[clamp(n, 0, 255)]; - } - alpha = +parts[3]; - } else if (/^hsl/.test(styleString)) { - var parts = getRgbHslContent(styleString); - str = hslToRgb(parts); - alpha = parts[3]; - } else { - str = colorData[styleString] || styleString; - } - return processStyleCache[styleString] = {color: str, alpha: alpha}; - } - - var DEFAULT_STYLE = { - style: 'normal', - variant: 'normal', - weight: 'normal', - size: 10, - family: 'sans-serif' - }; - - // Internal text style cache - var fontStyleCache = {}; - - function processFontStyle(styleString) { - if (fontStyleCache[styleString]) { - return fontStyleCache[styleString]; - } - - var el = document.createElement('div'); - var style = el.style; - try { - style.font = styleString; - } catch (ex) { - // Ignore failures to set to invalid font. - } - - return fontStyleCache[styleString] = { - style: style.fontStyle || DEFAULT_STYLE.style, - variant: style.fontVariant || DEFAULT_STYLE.variant, - weight: style.fontWeight || DEFAULT_STYLE.weight, - size: style.fontSize || DEFAULT_STYLE.size, - family: style.fontFamily || DEFAULT_STYLE.family - }; - } - - function getComputedStyle(style, element) { - var computedStyle = {}; - - for (var p in style) { - computedStyle[p] = style[p]; - } - - // Compute the size - var canvasFontSize = parseFloat(element.currentStyle.fontSize), - fontSize = parseFloat(style.size); - - if (typeof style.size == 'number') { - computedStyle.size = style.size; - } else if (style.size.indexOf('px') != -1) { - computedStyle.size = fontSize; - } else if (style.size.indexOf('em') != -1) { - computedStyle.size = canvasFontSize * fontSize; - } else if(style.size.indexOf('%') != -1) { - computedStyle.size = (canvasFontSize / 100) * fontSize; - } else if (style.size.indexOf('pt') != -1) { - computedStyle.size = fontSize / .75; - } else { - computedStyle.size = canvasFontSize; - } - - // Different scaling between normal text and VML text. This was found using - // trial and error to get the same size as non VML text. - computedStyle.size *= 0.981; - - return computedStyle; - } - - function buildStyle(style) { - return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + - style.size + 'px ' + style.family; - } - - var lineCapMap = { - 'butt': 'flat', - 'round': 'round' - }; - - function processLineCap(lineCap) { - return lineCapMap[lineCap] || 'square'; - } - - /** - * This class implements CanvasRenderingContext2D interface as described by - * the WHATWG. - * @param {HTMLElement} canvasElement The element that the 2D context should - * be associated with - */ - function CanvasRenderingContext2D_(canvasElement) { - this.m_ = createMatrixIdentity(); - - this.mStack_ = []; - this.aStack_ = []; - this.currentPath_ = []; - - // Canvas context properties - this.strokeStyle = '#000'; - this.fillStyle = '#000'; - - this.lineWidth = 1; - this.lineJoin = 'miter'; - this.lineCap = 'butt'; - this.miterLimit = Z * 1; - this.globalAlpha = 1; - this.font = '10px sans-serif'; - this.textAlign = 'left'; - this.textBaseline = 'alphabetic'; - this.canvas = canvasElement; - - var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' + - canvasElement.clientHeight + 'px;overflow:hidden;position:absolute'; - var el = canvasElement.ownerDocument.createElement('div'); - el.style.cssText = cssText; - canvasElement.appendChild(el); - - var overlayEl = el.cloneNode(false); - // Use a non transparent background. - overlayEl.style.backgroundColor = 'red'; - overlayEl.style.filter = 'alpha(opacity=0)'; - canvasElement.appendChild(overlayEl); - - this.element_ = el; - this.arcScaleX_ = 1; - this.arcScaleY_ = 1; - this.lineScale_ = 1; - } - - var contextPrototype = CanvasRenderingContext2D_.prototype; - contextPrototype.clearRect = function() { - if (this.textMeasureEl_) { - this.textMeasureEl_.removeNode(true); - this.textMeasureEl_ = null; - } - this.element_.innerHTML = ''; - }; - - contextPrototype.beginPath = function() { - // TODO: Branch current matrix so that save/restore has no effect - // as per safari docs. - this.currentPath_ = []; - }; - - contextPrototype.moveTo = function(aX, aY) { - var p = getCoords(this, aX, aY); - this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); - this.currentX_ = p.x; - this.currentY_ = p.y; - }; - - contextPrototype.lineTo = function(aX, aY) { - var p = getCoords(this, aX, aY); - this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); - - this.currentX_ = p.x; - this.currentY_ = p.y; - }; - - contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, - aCP2x, aCP2y, - aX, aY) { - var p = getCoords(this, aX, aY); - var cp1 = getCoords(this, aCP1x, aCP1y); - var cp2 = getCoords(this, aCP2x, aCP2y); - bezierCurveTo(this, cp1, cp2, p); - }; - - // Helper function that takes the already fixed cordinates. - function bezierCurveTo(self, cp1, cp2, p) { - self.currentPath_.push({ - type: 'bezierCurveTo', - cp1x: cp1.x, - cp1y: cp1.y, - cp2x: cp2.x, - cp2y: cp2.y, - x: p.x, - y: p.y - }); - self.currentX_ = p.x; - self.currentY_ = p.y; - } - - contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { - // the following is lifted almost directly from - // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes - - var cp = getCoords(this, aCPx, aCPy); - var p = getCoords(this, aX, aY); - - var cp1 = { - x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), - y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) - }; - var cp2 = { - x: cp1.x + (p.x - this.currentX_) / 3.0, - y: cp1.y + (p.y - this.currentY_) / 3.0 - }; - - bezierCurveTo(this, cp1, cp2, p); - }; - - contextPrototype.arc = function(aX, aY, aRadius, - aStartAngle, aEndAngle, aClockwise) { - aRadius *= Z; - var arcType = aClockwise ? 'at' : 'wa'; - - var xStart = aX + mc(aStartAngle) * aRadius - Z2; - var yStart = aY + ms(aStartAngle) * aRadius - Z2; - - var xEnd = aX + mc(aEndAngle) * aRadius - Z2; - var yEnd = aY + ms(aEndAngle) * aRadius - Z2; - - // IE won't render arches drawn counter clockwise if xStart == xEnd. - if (xStart == xEnd && !aClockwise) { - xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something - // that can be represented in binary - } - - var p = getCoords(this, aX, aY); - var pStart = getCoords(this, xStart, yStart); - var pEnd = getCoords(this, xEnd, yEnd); - - this.currentPath_.push({type: arcType, - x: p.x, - y: p.y, - radius: aRadius, - xStart: pStart.x, - yStart: pStart.y, - xEnd: pEnd.x, - yEnd: pEnd.y}); - - }; - - contextPrototype.rect = function(aX, aY, aWidth, aHeight) { - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - }; - - contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { - var oldPath = this.currentPath_; - this.beginPath(); - - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - this.stroke(); - - this.currentPath_ = oldPath; - }; - - contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { - var oldPath = this.currentPath_; - this.beginPath(); - - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - this.fill(); - - this.currentPath_ = oldPath; - }; - - contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { - var gradient = new CanvasGradient_('gradient'); - gradient.x0_ = aX0; - gradient.y0_ = aY0; - gradient.x1_ = aX1; - gradient.y1_ = aY1; - return gradient; - }; - - contextPrototype.createRadialGradient = function(aX0, aY0, aR0, - aX1, aY1, aR1) { - var gradient = new CanvasGradient_('gradientradial'); - gradient.x0_ = aX0; - gradient.y0_ = aY0; - gradient.r0_ = aR0; - gradient.x1_ = aX1; - gradient.y1_ = aY1; - gradient.r1_ = aR1; - return gradient; - }; - - contextPrototype.drawImage = function(image, var_args) { - var dx, dy, dw, dh, sx, sy, sw, sh; - - // to find the original width we overide the width and height - var oldRuntimeWidth = image.runtimeStyle.width; - var oldRuntimeHeight = image.runtimeStyle.height; - image.runtimeStyle.width = 'auto'; - image.runtimeStyle.height = 'auto'; - - // get the original size - var w = image.width; - var h = image.height; - - // and remove overides - image.runtimeStyle.width = oldRuntimeWidth; - image.runtimeStyle.height = oldRuntimeHeight; - - if (arguments.length == 3) { - dx = arguments[1]; - dy = arguments[2]; - sx = sy = 0; - sw = dw = w; - sh = dh = h; - } else if (arguments.length == 5) { - dx = arguments[1]; - dy = arguments[2]; - dw = arguments[3]; - dh = arguments[4]; - sx = sy = 0; - sw = w; - sh = h; - } else if (arguments.length == 9) { - sx = arguments[1]; - sy = arguments[2]; - sw = arguments[3]; - sh = arguments[4]; - dx = arguments[5]; - dy = arguments[6]; - dw = arguments[7]; - dh = arguments[8]; - } else { - throw Error('Invalid number of arguments'); - } - - var d = getCoords(this, dx, dy); - - var w2 = sw / 2; - var h2 = sh / 2; - - var vmlStr = []; - - var W = 10; - var H = 10; - - // For some reason that I've now forgotten, using divs didn't work - vmlStr.push(' ' , - '', - ''); - - this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); - }; - - contextPrototype.stroke = function(aFill) { - var W = 10; - var H = 10; - // Divide the shape into chunks if it's too long because IE has a limit - // somewhere for how long a VML shape can be. This simple division does - // not work with fills, only strokes, unfortunately. - var chunkSize = 5000; - - var min = {x: null, y: null}; - var max = {x: null, y: null}; - - for (var j = 0; j < this.currentPath_.length; j += chunkSize) { - var lineStr = []; - var lineOpen = false; - - lineStr.push(''); - - if (!aFill) { - appendStroke(this, lineStr); - } else { - appendFill(this, lineStr, min, max); - } - - lineStr.push(''); - - this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); - } - }; - - function appendStroke(ctx, lineStr) { - var a = processStyle(ctx.strokeStyle); - var color = a.color; - var opacity = a.alpha * ctx.globalAlpha; - var lineWidth = ctx.lineScale_ * ctx.lineWidth; - - // VML cannot correctly render a line if the width is less than 1px. - // In that case, we dilute the color to make the line look thinner. - if (lineWidth < 1) { - opacity *= lineWidth; - } - - lineStr.push( - '' - ); - } - - function appendFill(ctx, lineStr, min, max) { - var fillStyle = ctx.fillStyle; - var arcScaleX = ctx.arcScaleX_; - var arcScaleY = ctx.arcScaleY_; - var width = max.x - min.x; - var height = max.y - min.y; - if (fillStyle instanceof CanvasGradient_) { - // TODO: Gradients transformed with the transformation matrix. - var angle = 0; - var focus = {x: 0, y: 0}; - - // additional offset - var shift = 0; - // scale factor for offset - var expansion = 1; - - if (fillStyle.type_ == 'gradient') { - var x0 = fillStyle.x0_ / arcScaleX; - var y0 = fillStyle.y0_ / arcScaleY; - var x1 = fillStyle.x1_ / arcScaleX; - var y1 = fillStyle.y1_ / arcScaleY; - var p0 = getCoords(ctx, x0, y0); - var p1 = getCoords(ctx, x1, y1); - var dx = p1.x - p0.x; - var dy = p1.y - p0.y; - angle = Math.atan2(dx, dy) * 180 / Math.PI; - - // The angle should be a non-negative number. - if (angle < 0) { - angle += 360; - } - - // Very small angles produce an unexpected result because they are - // converted to a scientific notation string. - if (angle < 1e-6) { - angle = 0; - } - } else { - var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_); - focus = { - x: (p0.x - min.x) / width, - y: (p0.y - min.y) / height - }; - - width /= arcScaleX * Z; - height /= arcScaleY * Z; - var dimension = m.max(width, height); - shift = 2 * fillStyle.r0_ / dimension; - expansion = 2 * fillStyle.r1_ / dimension - shift; - } - - // We need to sort the color stops in ascending order by offset, - // otherwise IE won't interpret it correctly. - var stops = fillStyle.colors_; - stops.sort(function(cs1, cs2) { - return cs1.offset - cs2.offset; - }); - - var length = stops.length; - var color1 = stops[0].color; - var color2 = stops[length - 1].color; - var opacity1 = stops[0].alpha * ctx.globalAlpha; - var opacity2 = stops[length - 1].alpha * ctx.globalAlpha; - - var colors = []; - for (var i = 0; i < length; i++) { - var stop = stops[i]; - colors.push(stop.offset * expansion + shift + ' ' + stop.color); - } - - // When colors attribute is used, the meanings of opacity and o:opacity2 - // are reversed. - lineStr.push(''); - } else if (fillStyle instanceof CanvasPattern_) { - if (width && height) { - var deltaLeft = -min.x; - var deltaTop = -min.y; - lineStr.push(''); - } - } else { - var a = processStyle(ctx.fillStyle); - var color = a.color; - var opacity = a.alpha * ctx.globalAlpha; - lineStr.push(''); - } - } - - contextPrototype.fill = function() { - this.stroke(true); - }; - - contextPrototype.closePath = function() { - this.currentPath_.push({type: 'close'}); - }; - - function getCoords(ctx, aX, aY) { - var m = ctx.m_; - return { - x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, - y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 - }; - }; - - contextPrototype.save = function() { - var o = {}; - copyState(this, o); - this.aStack_.push(o); - this.mStack_.push(this.m_); - this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); - }; - - contextPrototype.restore = function() { - if (this.aStack_.length) { - copyState(this.aStack_.pop(), this); - this.m_ = this.mStack_.pop(); - } - }; - - function matrixIsFinite(m) { - return isFinite(m[0][0]) && isFinite(m[0][1]) && - isFinite(m[1][0]) && isFinite(m[1][1]) && - isFinite(m[2][0]) && isFinite(m[2][1]); - } - - function setM(ctx, m, updateLineScale) { - if (!matrixIsFinite(m)) { - return; - } - ctx.m_ = m; - - if (updateLineScale) { - // Get the line scale. - // Determinant of this.m_ means how much the area is enlarged by the - // transformation. So its square root can be used as a scale factor - // for width. - var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; - ctx.lineScale_ = sqrt(abs(det)); - } - } - - contextPrototype.translate = function(aX, aY) { - var m1 = [ - [1, 0, 0], - [0, 1, 0], - [aX, aY, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), false); - }; - - contextPrototype.rotate = function(aRot) { - var c = mc(aRot); - var s = ms(aRot); - - var m1 = [ - [c, s, 0], - [-s, c, 0], - [0, 0, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), false); - }; - - contextPrototype.scale = function(aX, aY) { - this.arcScaleX_ *= aX; - this.arcScaleY_ *= aY; - var m1 = [ - [aX, 0, 0], - [0, aY, 0], - [0, 0, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), true); - }; - - contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { - var m1 = [ - [m11, m12, 0], - [m21, m22, 0], - [dx, dy, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), true); - }; - - contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { - var m = [ - [m11, m12, 0], - [m21, m22, 0], - [dx, dy, 1] - ]; - - setM(this, m, true); - }; - - /** - * The text drawing function. - * The maxWidth argument isn't taken in account, since no browser supports - * it yet. - */ - contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) { - var m = this.m_, - delta = 1000, - left = 0, - right = delta, - offset = {x: 0, y: 0}, - lineStr = []; - - var fontStyle = getComputedStyle(processFontStyle(this.font), - this.element_); - - var fontStyleString = buildStyle(fontStyle); - - var elementStyle = this.element_.currentStyle; - var textAlign = this.textAlign.toLowerCase(); - switch (textAlign) { - case 'left': - case 'center': - case 'right': - break; - case 'end': - textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left'; - break; - case 'start': - textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left'; - break; - default: - textAlign = 'left'; - } - - // 1.75 is an arbitrary number, as there is no info about the text baseline - switch (this.textBaseline) { - case 'hanging': - case 'top': - offset.y = fontStyle.size / 1.75; - break; - case 'middle': - break; - default: - case null: - case 'alphabetic': - case 'ideographic': - case 'bottom': - offset.y = -fontStyle.size / 2.25; - break; - } - - switch(textAlign) { - case 'right': - left = delta; - right = 0.05; - break; - case 'center': - left = right = delta / 2; - break; - } - - var d = getCoords(this, x + offset.x, y + offset.y); - - lineStr.push(''); - - if (stroke) { - appendStroke(this, lineStr); - } else { - // TODO: Fix the min and max params. - appendFill(this, lineStr, {x: -left, y: 0}, - {x: right, y: fontStyle.size}); - } - - var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + - m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; - - var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z); - - lineStr.push('', - '', - ''); - - this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); - }; - - contextPrototype.fillText = function(text, x, y, maxWidth) { - this.drawText_(text, x, y, maxWidth, false); - }; - - contextPrototype.strokeText = function(text, x, y, maxWidth) { - this.drawText_(text, x, y, maxWidth, true); - }; - - contextPrototype.measureText = function(text) { - if (!this.textMeasureEl_) { - var s = ''; - this.element_.insertAdjacentHTML('beforeEnd', s); - this.textMeasureEl_ = this.element_.lastChild; - } - var doc = this.element_.ownerDocument; - this.textMeasureEl_.innerHTML = ''; - this.textMeasureEl_.style.font = this.font; - // Don't use innerHTML or innerText because they allow markup/whitespace. - this.textMeasureEl_.appendChild(doc.createTextNode(text)); - return {width: this.textMeasureEl_.offsetWidth}; - }; - - /******** STUBS ********/ - contextPrototype.clip = function() { - // TODO: Implement - }; - - contextPrototype.arcTo = function() { - // TODO: Implement - }; - - contextPrototype.createPattern = function(image, repetition) { - return new CanvasPattern_(image, repetition); - }; - - // Gradient / Pattern Stubs - function CanvasGradient_(aType) { - this.type_ = aType; - this.x0_ = 0; - this.y0_ = 0; - this.r0_ = 0; - this.x1_ = 0; - this.y1_ = 0; - this.r1_ = 0; - this.colors_ = []; - } - - CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { - aColor = processStyle(aColor); - this.colors_.push({offset: aOffset, - color: aColor.color, - alpha: aColor.alpha}); - }; - - function CanvasPattern_(image, repetition) { - assertImageIsValid(image); - switch (repetition) { - case 'repeat': - case null: - case '': - this.repetition_ = 'repeat'; - break - case 'repeat-x': - case 'repeat-y': - case 'no-repeat': - this.repetition_ = repetition; - break; - default: - throwException('SYNTAX_ERR'); - } - - this.src_ = image.src; - this.width_ = image.width; - this.height_ = image.height; - } - - function throwException(s) { - throw new DOMException_(s); - } - - function assertImageIsValid(img) { - if (!img || img.nodeType != 1 || img.tagName != 'IMG') { - throwException('TYPE_MISMATCH_ERR'); - } - if (img.readyState != 'complete') { - throwException('INVALID_STATE_ERR'); - } - } - - function DOMException_(s) { - this.code = this[s]; - this.message = s +': DOM Exception ' + this.code; - } - var p = DOMException_.prototype = new Error; - p.INDEX_SIZE_ERR = 1; - p.DOMSTRING_SIZE_ERR = 2; - p.HIERARCHY_REQUEST_ERR = 3; - p.WRONG_DOCUMENT_ERR = 4; - p.INVALID_CHARACTER_ERR = 5; - p.NO_DATA_ALLOWED_ERR = 6; - p.NO_MODIFICATION_ALLOWED_ERR = 7; - p.NOT_FOUND_ERR = 8; - p.NOT_SUPPORTED_ERR = 9; - p.INUSE_ATTRIBUTE_ERR = 10; - p.INVALID_STATE_ERR = 11; - p.SYNTAX_ERR = 12; - p.INVALID_MODIFICATION_ERR = 13; - p.NAMESPACE_ERR = 14; - p.INVALID_ACCESS_ERR = 15; - p.VALIDATION_ERR = 16; - p.TYPE_MISMATCH_ERR = 17; - - // set up externs - G_vmlCanvasManager = G_vmlCanvasManager_; - CanvasRenderingContext2D = CanvasRenderingContext2D_; - CanvasGradient = CanvasGradient_; - CanvasPattern = CanvasPattern_; - DOMException = DOMException_; -})(); - -} // if diff --git a/htdocs/includes/jquery/plugins/flot/excanvas.min.js b/htdocs/includes/jquery/plugins/flot/excanvas.min.js deleted file mode 100644 index fcf876c749e..00000000000 --- a/htdocs/includes/jquery/plugins/flot/excanvas.min.js +++ /dev/null @@ -1 +0,0 @@ -if(!document.createElement("canvas").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&").replace(/"/g,""")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VML")}}function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","urn:schemas-microsoft-com:office:office");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id="ex_canvas_";i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}R(document);var e={init:function(i){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName("canvas");for(var j=0;j1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag="#",ah;for(var m=0;m<3;m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement("div");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}var s={butt:"flat",round:"round"};function S(i){return s[i]||"square"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=d*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var m="width:"+i.clientWidth+"px;height:"+i.clientHeight+"px;overflow:hidden;position:absolute";var j=i.ownerDocument.createElement("div");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor="red";p.style.filter="alpha(opacity=0)";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?"at":"wa";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U("gradient");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U("gradientradial");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width="auto";aq.runtimeStyle.height="auto";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(" ','","");this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};q.stroke=function(ao){var Z=10;var ap=10;var ag=5000;var ai={x:null,y:null};var an={x:null,y:null};for(var aj=0;ajan.x){an.x=m.x}if(ai.y==null||m.yan.y){an.y=m.y}}}am.push(' ">');if(!ao){w(this,am)}else{G(this,am,ai,an)}am.push("");this.element_.insertAdjacentHTML("beforeEnd",am.join(""))}};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push("')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_=="gradient"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push("')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:"close"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case"left":case"center":case"right":break;case"end":Z=au.direction=="ltr"?"right":"left";break;case"start":Z=au.direction=="rtl"?"right":"left";break;default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;break}switch(Z){case"right":j=at;ar=0.05;break;case"center":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=n(aq.x/d)+","+n(aq.y/d);ag.push('','','');this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='';this.element_.insertAdjacentHTML("beforeEnd",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;break;default:O("SYNTAX_ERR")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){O("INVALID_STATE_ERR")}}function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P})()}; \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/flot/jquery.colorhelpers.js b/htdocs/includes/jquery/plugins/flot/jquery.colorhelpers.js deleted file mode 100644 index b2f6dc4e433..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.colorhelpers.js +++ /dev/null @@ -1,180 +0,0 @@ -/* Plugin for jQuery for working with colors. - * - * Version 1.1. - * - * Inspiration from jQuery color animation plugin by John Resig. - * - * Released under the MIT license by Ole Laursen, October 2009. - * - * Examples: - * - * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() - * var c = $.color.extract($("#mydiv"), 'background-color'); - * console.log(c.r, c.g, c.b, c.a); - * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" - * - * Note that .scale() and .add() return the same modified object - * instead of making a new one. - * - * V. 1.1: Fix error handling so e.g. parsing an empty string does - * produce a color rather than just crashing. - */ - -(function($) { - $.color = {}; - - // construct color object with some convenient chainable helpers - $.color.make = function (r, g, b, a) { - var o = {}; - o.r = r || 0; - o.g = g || 0; - o.b = b || 0; - o.a = a != null ? a : 1; - - o.add = function (c, d) { - for (var i = 0; i < c.length; ++i) - o[c.charAt(i)] += d; - return o.normalize(); - }; - - o.scale = function (c, f) { - for (var i = 0; i < c.length; ++i) - o[c.charAt(i)] *= f; - return o.normalize(); - }; - - o.toString = function () { - if (o.a >= 1.0) { - return "rgb("+[o.r, o.g, o.b].join(",")+")"; - } else { - return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")"; - } - }; - - o.normalize = function () { - function clamp(min, value, max) { - return value < min ? min: (value > max ? max: value); - } - - o.r = clamp(0, parseInt(o.r), 255); - o.g = clamp(0, parseInt(o.g), 255); - o.b = clamp(0, parseInt(o.b), 255); - o.a = clamp(0, o.a, 1); - return o; - }; - - o.clone = function () { - return $.color.make(o.r, o.b, o.g, o.a); - }; - - return o.normalize(); - } - - // extract CSS color property from element, going up in the DOM - // if it's "transparent" - $.color.extract = function (elem, css) { - var c; - - do { - c = elem.css(css).toLowerCase(); - // keep going until we find an element that has color, or - // we hit the body or root (have no parent) - if (c != '' && c != 'transparent') - break; - elem = elem.parent(); - } while (elem.length && !$.nodeName(elem.get(0), "body")); - - // catch Safari's way of signalling transparent - if (c == "rgba(0, 0, 0, 0)") - c = "transparent"; - - return $.color.parse(c); - } - - // parse CSS color string (like "rgb(10, 32, 43)" or "#fff"), - // returns color object, if parsing failed, you get black (0, 0, - // 0) out - $.color.parse = function (str) { - var res, m = $.color.make; - - // Look for rgb(num,num,num) - if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) - return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10)); - - // Look for rgba(num,num,num,num) - if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) - return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4])); - - // Look for rgb(num%,num%,num%) - if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) - return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55); - - // Look for rgba(num%,num%,num%,num) - if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) - return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4])); - - // Look for #a0b1c2 - if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) - return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)); - - // Look for #fff - if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) - return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16)); - - // Otherwise, we're most likely dealing with a named color - var name = $.trim(str).toLowerCase(); - if (name == "transparent") - return m(255, 255, 255, 0); - else { - // default to black - res = lookupColors[name] || [0, 0, 0]; - return m(res[0], res[1], res[2]); - } - } - - var lookupColors = { - aqua:[0,255,255], - azure:[240,255,255], - beige:[245,245,220], - black:[0,0,0], - blue:[0,0,255], - brown:[165,42,42], - cyan:[0,255,255], - darkblue:[0,0,139], - darkcyan:[0,139,139], - darkgrey:[169,169,169], - darkgreen:[0,100,0], - darkkhaki:[189,183,107], - darkmagenta:[139,0,139], - darkolivegreen:[85,107,47], - darkorange:[255,140,0], - darkorchid:[153,50,204], - darkred:[139,0,0], - darksalmon:[233,150,122], - darkviolet:[148,0,211], - fuchsia:[255,0,255], - gold:[255,215,0], - green:[0,128,0], - indigo:[75,0,130], - khaki:[240,230,140], - lightblue:[173,216,230], - lightcyan:[224,255,255], - lightgreen:[144,238,144], - lightgrey:[211,211,211], - lightpink:[255,182,193], - lightyellow:[255,255,224], - lime:[0,255,0], - magenta:[255,0,255], - maroon:[128,0,0], - navy:[0,0,128], - olive:[128,128,0], - orange:[255,165,0], - pink:[255,192,203], - purple:[128,0,128], - violet:[128,0,128], - red:[255,0,0], - silver:[192,192,192], - white:[255,255,255], - yellow:[255,255,0] - }; -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.colorhelpers.min.js b/htdocs/includes/jquery/plugins/flot/jquery.colorhelpers.min.js deleted file mode 100644 index 7f426596432..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.colorhelpers.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.canvas.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.canvas.js deleted file mode 100644 index 29328d58121..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.canvas.js +++ /dev/null @@ -1,345 +0,0 @@ -/* Flot plugin for drawing all elements of a plot on the canvas. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -Flot normally produces certain elements, like axis labels and the legend, using -HTML elements. This permits greater interactivity and customization, and often -looks better, due to cross-browser canvas text inconsistencies and limitations. - -It can also be desirable to render the plot entirely in canvas, particularly -if the goal is to save it as an image, or if Flot is being used in a context -where the HTML DOM does not exist, as is the case within Node.js. This plugin -switches out Flot's standard drawing operations for canvas-only replacements. - -Currently the plugin supports only axis labels, but it will eventually allow -every element of the plot to be rendered directly to canvas. - -The plugin supports these options: - -{ - canvas: boolean -} - -The "canvas" option controls whether full canvas drawing is enabled, making it -possible to toggle on and off. This is useful when a plot uses HTML text in the -browser, but needs to redraw with canvas text when exporting as an image. - -*/ - -(function($) { - - var options = { - canvas: true - }; - - var render, getTextInfo, addText; - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - function init(plot, classes) { - - var Canvas = classes.Canvas; - - // We only want to replace the functions once; the second time around - // we would just get our new function back. This whole replacing of - // prototype functions is a disaster, and needs to be changed ASAP. - - if (render == null) { - getTextInfo = Canvas.prototype.getTextInfo, - addText = Canvas.prototype.addText, - render = Canvas.prototype.render; - } - - // Finishes rendering the canvas, including overlaid text - - Canvas.prototype.render = function() { - - if (!plot.getOptions().canvas) { - return render.call(this); - } - - var context = this.context, - cache = this._textCache; - - // For each text layer, render elements marked as active - - context.save(); - context.textBaseline = "middle"; - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - var layerCache = cache[layerKey]; - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey], - updateStyles = true; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var info = styleCache[key], - positions = info.positions, - lines = info.lines; - - // Since every element at this level of the cache have the - // same font and fill styles, we can just change them once - // using the values from the first element. - - if (updateStyles) { - context.fillStyle = info.font.color; - context.font = info.font.definition; - updateStyles = false; - } - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - for (var j = 0, line; line = position.lines[j]; j++) { - context.fillText(lines[j].text, line[0], line[1]); - } - } else { - positions.splice(i--, 1); - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - } - } - - context.restore(); - }; - - // Creates (if necessary) and returns a text info object. - // - // When the canvas option is set, the object looks like this: - // - // { - // width: Width of the text's bounding box. - // height: Height of the text's bounding box. - // positions: Array of positions at which this text is drawn. - // lines: [{ - // height: Height of this line. - // widths: Width of this line. - // text: Text on this line. - // }], - // font: { - // definition: Canvas font property string. - // color: Color of the text. - // }, - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // lines: Array of [x, y] coordinates at which to draw the line. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - if (!plot.getOptions().canvas) { - return getTextInfo.call(this, layer, text, font, angle, width); - } - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number - - text = "" + text; - - // If the font is a font-spec object, generate a CSS definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - if (info == null) { - - var context = this.context; - - // If the font was provided as CSS, create a div with those - // classes and examine it to generate a canvas font spec. - - if (typeof font !== "object") { - - var element = $("
     
    ") - .css("position", "absolute") - .addClass(typeof font === "string" ? font : null) - .appendTo(this.getTextLayer(layer)); - - font = { - lineHeight: element.height(), - style: element.css("font-style"), - variant: element.css("font-variant"), - weight: element.css("font-weight"), - family: element.css("font-family"), - color: element.css("color") - }; - - // Setting line-height to 1, without units, sets it equal - // to the font-size, even if the font-size is abstract, - // like 'smaller'. This enables us to read the real size - // via the element's height, working around browsers that - // return the literal 'smaller' value. - - font.size = element.css("line-height", 1).height(); - - element.remove(); - } - - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; - - // Create a new info object, initializing the dimensions to - // zero so we can count them up line-by-line. - - info = styleCache[text] = { - width: 0, - height: 0, - positions: [], - lines: [], - font: { - definition: textStyle, - color: font.color - } - }; - - context.save(); - context.font = textStyle; - - // Canvas can't handle multi-line strings; break on various - // newlines, including HTML brs, to build a list of lines. - // Note that we could split directly on regexps, but IE < 9 is - // broken; revisit when we drop IE 7/8 support. - - var lines = (text + "").replace(/
    |\r\n|\r/g, "\n").split("\n"); - - for (var i = 0; i < lines.length; ++i) { - - var lineText = lines[i], - measured = context.measureText(lineText); - - info.width = Math.max(measured.width, info.width); - info.height += font.lineHeight; - - info.lines.push({ - text: lineText, - width: measured.width, - height: font.lineHeight - }); - } - - context.restore(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - if (!plot.getOptions().canvas) { - return addText.call(this, layer, x, y, text, font, angle, width, halign, valign); - } - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions, - lines = info.lines; - - // Text is drawn with baseline 'middle', which we need to account - // for by adding half a line's height to the y position. - - y += info.height / lines.length / 2; - - // Tweak the initial y-position to match vertical alignment - - if (valign == "middle") { - y = Math.round(y - info.height / 2); - } else if (valign == "bottom") { - y = Math.round(y - info.height); - } else { - y = Math.round(y); - } - - // FIXME: LEGACY BROWSER FIX - // AFFECTS: Opera < 12.00 - - // Offset the y coordinate, since Opera is off pretty - // consistently compared to the other browsers. - - if (!!(window.opera && window.opera.version().split(".")[0] < 12)) { - y -= 2; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - position = { - active: true, - lines: [], - x: x, - y: y - }; - - positions.push(position); - - // Fill in the x & y positions of each line, adjusting them - // individually for horizontal alignment. - - for (var i = 0, line; line = lines[i]; i++) { - if (halign == "center") { - position.lines.push([Math.round(x - line.width / 2), y]); - } else if (halign == "right") { - position.lines.push([Math.round(x - line.width), y]); - } else { - position.lines.push([Math.round(x), y]); - } - y += line.height; - } - }; - } - - $.plot.plugins.push({ - init: init, - options: options, - name: "canvas", - version: "1.0" - }); - -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.canvas.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.canvas.min.js deleted file mode 100644 index 40c1051b3c7..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.canvas.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var options={canvas:true};var render,getTextInfo,addText;var hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return render.call(this)}var context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layerCache=cache[layerKey];for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey],updateStyles=true;for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var i=0,position;position=positions[i];i++){if(position.active){for(var j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return getTextInfo.call(this,layer,text,font,angle,width)}var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var context=this.context;if(typeof font!=="object"){var element=$("
     
    ").css("position","absolute").addClass(typeof font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var lines=(text+"").replace(/
    |\r\n|\r/g,"\n").split("\n");for(var i=0;i index) - index = categories[v]; - - return index + 1; - } - - function categoriesTickGenerator(axis) { - var res = []; - for (var label in axis.categories) { - var v = axis.categories[label]; - if (v >= axis.min && v <= axis.max) - res.push([v, label]); - } - - res.sort(function (a, b) { return a[0] - b[0]; }); - - return res; - } - - function setupCategoriesForAxis(series, axis, datapoints) { - if (series[axis].options.mode != "categories") - return; - - if (!series[axis].categories) { - // parse options - var c = {}, o = series[axis].options.categories || {}; - if ($.isArray(o)) { - for (var i = 0; i < o.length; ++i) - c[o[i]] = i; - } - else { - for (var v in o) - c[v] = o[v]; - } - - series[axis].categories = c; - } - - // fix ticks - if (!series[axis].options.ticks) - series[axis].options.ticks = categoriesTickGenerator; - - transformPointsOnAxis(datapoints, axis, series[axis].categories); - } - - function transformPointsOnAxis(datapoints, axis, categories) { - // go through the points, transforming them - var points = datapoints.points, - ps = datapoints.pointsize, - format = datapoints.format, - formatColumn = axis.charAt(0), - index = getNextIndex(categories); - - for (var i = 0; i < points.length; i += ps) { - if (points[i] == null) - continue; - - for (var m = 0; m < ps; ++m) { - var val = points[i + m]; - - if (val == null || !format[m][formatColumn]) - continue; - - if (!(val in categories)) { - categories[val] = index; - ++index; - } - - points[i + m] = categories[val]; - } - } - } - - function processDatapoints(plot, series, datapoints) { - setupCategoriesForAxis(series, "xaxis", datapoints); - setupCategoriesForAxis(series, "yaxis", datapoints); - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.processDatapoints.push(processDatapoints); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'categories', - version: '1.0' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.categories.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.categories.min.js deleted file mode 100644 index 5bce588e3d8..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.categories.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;mindex)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;i ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max) - continue; - if (err[e].err == 'y') - if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max) - continue; - - // prevent errorbars getting out of the canvas - var drawUpper = true, - drawLower = true; - - if (upper > minmax[1]) { - drawUpper = false; - upper = minmax[1]; - } - if (lower < minmax[0]) { - drawLower = false; - lower = minmax[0]; - } - - //sanity check, in case some inverted axis hack is applied to flot - if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) { - //swap coordinates - var tmp = lower; - lower = upper; - upper = tmp; - tmp = drawLower; - drawLower = drawUpper; - drawUpper = tmp; - tmp = minmax[0]; - minmax[0] = minmax[1]; - minmax[1] = tmp; - } - - // convert to pixels - x = ax[0].p2c(x), - y = ax[1].p2c(y), - upper = ax[e].p2c(upper); - lower = ax[e].p2c(lower); - minmax[0] = ax[e].p2c(minmax[0]); - minmax[1] = ax[e].p2c(minmax[1]); - - //same style as points by default - var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth, - sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize; - - //shadow as for points - if (lw > 0 && sw > 0) { - var w = sw / 2; - ctx.lineWidth = w; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax); - - ctx.strokeStyle = "rgba(0,0,0,0.2)"; - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax); - } - - ctx.strokeStyle = err[e].color? err[e].color: s.color; - ctx.lineWidth = lw; - //draw it - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax); - } - } - } - } - - function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){ - - //shadow offset - y += offset; - upper += offset; - lower += offset; - - // error bar - avoid plotting over circles - if (err.err == 'x'){ - if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]); - else drawUpper = false; - if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] ); - else drawLower = false; - } - else { - if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] ); - else drawUpper = false; - if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] ); - else drawLower = false; - } - - //internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps - //this is a way to get errorbars on lines without visible connecting dots - radius = err.radius != null? err.radius: radius; - - // upper cap - if (drawUpper) { - if (err.upperCap == '-'){ - if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] ); - else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] ); - } else if ($.isFunction(err.upperCap)){ - if (err.err=='x') err.upperCap(ctx, upper, y, radius); - else err.upperCap(ctx, x, upper, radius); - } - } - // lower cap - if (drawLower) { - if (err.lowerCap == '-'){ - if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] ); - else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] ); - } else if ($.isFunction(err.lowerCap)){ - if (err.err=='x') err.lowerCap(ctx, lower, y, radius); - else err.lowerCap(ctx, x, lower, radius); - } - } - } - - function drawPath(ctx, pts){ - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var p=1; p < pts.length; p++) - ctx.lineTo(pts[p][0], pts[p][1]); - ctx.stroke(); - } - - function draw(plot, ctx){ - var plotOffset = plot.getPlotOffset(); - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - $.each(plot.getData(), function (i, s) { - if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show)) - drawSeriesErrors(plot, ctx, s); - }); - ctx.restore(); - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.draw.push(draw); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'errorbars', - version: '1.0' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.errorbars.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.errorbars.min.js deleted file mode 100644 index aa79f541a64..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.errorbars.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var options={series:{points:{errorbars:null,xerr:{err:"x",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null},yerr:{err:"y",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null}}}};function processRawData(plot,series,data,datapoints){if(!series.points.errorbars)return;var format=[{x:true,number:true,required:true},{y:true,number:true,required:true}];var errors=series.points.errorbars;if(errors=="x"||errors=="xy"){if(series.points.xerr.asymmetric){format.push({x:true,number:true,required:true});format.push({x:true,number:true,required:true})}else format.push({x:true,number:true,required:true})}if(errors=="y"||errors=="xy"){if(series.points.yerr.asymmetric){format.push({y:true,number:true,required:true});format.push({y:true,number:true,required:true})}else format.push({y:true,number:true,required:true})}datapoints.format=format}function parseErrors(series,i){var points=series.datapoints.points;var exl=null,exu=null,eyl=null,eyu=null;var xerr=series.points.xerr,yerr=series.points.yerr;var eb=series.points.errorbars;if(eb=="x"||eb=="xy"){if(xerr.asymmetric){exl=points[i+2];exu=points[i+3];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+4];eyu=points[i+5]}else eyl=points[i+4]}else{exl=points[i+2];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+3];eyu=points[i+4]}else eyl=points[i+3]}}else if(eb=="y")if(yerr.asymmetric){eyl=points[i+2];eyu=points[i+3]}else eyl=points[i+2];if(exu==null)exu=exl;if(eyu==null)eyu=eyl;var errRanges=[exl,exu,eyl,eyu];if(!xerr.show){errRanges[0]=null;errRanges[1]=null}if(!yerr.show){errRanges[2]=null;errRanges[3]=null}return errRanges}function drawSeriesErrors(plot,ctx,s){var points=s.datapoints.points,ps=s.datapoints.pointsize,ax=[s.xaxis,s.yaxis],radius=s.points.radius,err=[s.points.xerr,s.points.yerr];var invertX=false;if(ax[0].p2c(ax[0].max)ax[1].max||yax[0].max)continue;if(err[e].err=="y")if(x>ax[0].max||xax[1].max)continue;var drawUpper=true,drawLower=true;if(upper>minmax[1]){drawUpper=false;upper=minmax[1]}if(lower0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w+w/2,minmax);ctx.strokeStyle="rgba(0,0,0,0.2)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w/2,minmax)}ctx.strokeStyle=err[e].color?err[e].color:s.color;ctx.lineWidth=lw;drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,0,minmax)}}}}function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){y+=offset;upper+=offset;lower+=offset;if(err.err=="x"){if(upper>x+radius)drawPath(ctx,[[upper,y],[Math.max(x+radius,minmax[0]),y]]);else drawUpper=false;if(lowery+radius)drawPath(ctx,[[x,Math.max(y+radius,minmax[1])],[x,lower]]);else drawLower=false}radius=err.radius!=null?err.radius:radius;if(drawUpper){if(err.upperCap=="-"){if(err.err=="x")drawPath(ctx,[[upper,y-radius],[upper,y+radius]]);else drawPath(ctx,[[x-radius,upper],[x+radius,upper]])}else if($.isFunction(err.upperCap)){if(err.err=="x")err.upperCap(ctx,upper,y,radius);else err.upperCap(ctx,x,upper,radius)}}if(drawLower){if(err.lowerCap=="-"){if(err.err=="x")drawPath(ctx,[[lower,y-radius],[lower,y+radius]]);else drawPath(ctx,[[x-radius,lower],[x+radius,lower]])}else if($.isFunction(err.lowerCap)){if(err.err=="x")err.lowerCap(ctx,lower,y,radius);else err.lowerCap(ctx,x,lower,radius)}}}function drawPath(ctx,pts){ctx.beginPath();ctx.moveTo(pts[0][0],pts[0][1]);for(var p=1;p= allseries.length ) { - return null; - } - return allseries[ s.fillBetween ]; - } - - return null; - } - - function computeFillBottoms( plot, s, datapoints ) { - - if ( s.fillBetween == null ) { - return; - } - - var other = findBottomSeries( s, plot.getData() ); - - if ( !other ) { - return; - } - - var ps = datapoints.pointsize, - points = datapoints.points, - otherps = other.datapoints.pointsize, - otherpoints = other.datapoints.points, - newpoints = [], - px, py, intery, qx, qy, bottom, - withlines = s.lines.show, - withbottom = ps > 2 && datapoints.format[2].y, - withsteps = withlines && s.lines.steps, - fromgap = true, - i = 0, - j = 0, - l, m; - - while ( true ) { - - if ( i >= points.length ) { - break; - } - - l = newpoints.length; - - if ( points[ i ] == null ) { - - // copy gaps - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - i += ps; - - } else if ( j >= otherpoints.length ) { - - // for lines, we can't use the rest of the points - - if ( !withlines ) { - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - } - - i += ps; - - } else if ( otherpoints[ j ] == null ) { - - // oops, got a gap - - for ( m = 0; m < ps; ++m ) { - newpoints.push( null ); - } - - fromgap = true; - j += otherps; - - } else { - - // cases where we actually got two points - - px = points[ i ]; - py = points[ i + 1 ]; - qx = otherpoints[ j ]; - qy = otherpoints[ j + 1 ]; - bottom = 0; - - if ( px === qx ) { - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - //newpoints[ l + 1 ] += qy; - bottom = qy; - - i += ps; - j += otherps; - - } else if ( px > qx ) { - - // we got past point below, might need to - // insert interpolated extra point - - if ( withlines && i > 0 && points[ i - ps ] != null ) { - intery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px ); - newpoints.push( qx ); - newpoints.push( intery ); - for ( m = 2; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - bottom = qy; - } - - j += otherps; - - } else { // px < qx - - // if we come from a gap, we just skip this point - - if ( fromgap && withlines ) { - i += ps; - continue; - } - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - // we might be able to interpolate a point below, - // this can give us a better y - - if ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) { - bottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx ); - } - - //newpoints[l + 1] += bottom; - - i += ps; - } - - fromgap = false; - - if ( l !== newpoints.length && withbottom ) { - newpoints[ l + 2 ] = bottom; - } - } - - // maintain the line steps invariant - - if ( withsteps && l !== newpoints.length && l > 0 && - newpoints[ l ] !== null && - newpoints[ l ] !== newpoints[ l - ps ] && - newpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) { - for (m = 0; m < ps; ++m) { - newpoints[ l + ps + m ] = newpoints[ l + m ]; - } - newpoints[ l + 1 ] = newpoints[ l - ps + 1 ]; - } - } - - datapoints.points = newpoints; - } - - plot.hooks.processDatapoints.push( computeFillBottoms ); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: "fillbetween", - version: "1.0" - }); - -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.fillbetween.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.fillbetween.min.js deleted file mode 100644 index 464bf72c84c..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.fillbetween.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m').load(handler).error(handler).attr('src', url); - }); - }; - - function drawSeries(plot, ctx, series) { - var plotOffset = plot.getPlotOffset(); - - if (!series.images || !series.images.show) - return; - - var points = series.datapoints.points, - ps = series.datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - var img = points[i], - x1 = points[i + 1], y1 = points[i + 2], - x2 = points[i + 3], y2 = points[i + 4], - xaxis = series.xaxis, yaxis = series.yaxis, - tmp; - - // actually we should check img.complete, but it - // appears to be a somewhat unreliable indicator in - // IE6 (false even after load event) - if (!img || img.width <= 0 || img.height <= 0) - continue; - - if (x1 > x2) { - tmp = x2; - x2 = x1; - x1 = tmp; - } - if (y1 > y2) { - tmp = y2; - y2 = y1; - y1 = tmp; - } - - // if the anchor is at the center of the pixel, expand the - // image by 1/2 pixel in each direction - if (series.images.anchor == "center") { - tmp = 0.5 * (x2-x1) / (img.width - 1); - x1 -= tmp; - x2 += tmp; - tmp = 0.5 * (y2-y1) / (img.height - 1); - y1 -= tmp; - y2 += tmp; - } - - // clip - if (x1 == x2 || y1 == y2 || - x1 >= xaxis.max || x2 <= xaxis.min || - y1 >= yaxis.max || y2 <= yaxis.min) - continue; - - var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height; - if (x1 < xaxis.min) { - sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1); - x1 = xaxis.min; - } - - if (x2 > xaxis.max) { - sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1); - x2 = xaxis.max; - } - - if (y1 < yaxis.min) { - sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1); - y1 = yaxis.min; - } - - if (y2 > yaxis.max) { - sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1); - y2 = yaxis.max; - } - - x1 = xaxis.p2c(x1); - x2 = xaxis.p2c(x2); - y1 = yaxis.p2c(y1); - y2 = yaxis.p2c(y2); - - // the transformation may have swapped us - if (x1 > x2) { - tmp = x2; - x2 = x1; - x1 = tmp; - } - if (y1 > y2) { - tmp = y2; - y2 = y1; - y1 = tmp; - } - - tmp = ctx.globalAlpha; - ctx.globalAlpha *= series.images.alpha; - ctx.drawImage(img, - sx1, sy1, sx2 - sx1, sy2 - sy1, - x1 + plotOffset.left, y1 + plotOffset.top, - x2 - x1, y2 - y1); - ctx.globalAlpha = tmp; - } - } - - function processRawData(plot, series, data, datapoints) { - if (!series.images.show) - return; - - // format is Image, x1, y1, x2, y2 (opposite corners) - datapoints.format = [ - { required: true }, - { x: true, number: true, required: true }, - { y: true, number: true, required: true }, - { x: true, number: true, required: true }, - { y: true, number: true, required: true } - ]; - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.drawSeries.push(drawSeries); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'image', - version: '1.1' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.image.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.image.min.js deleted file mode 100644 index 09df132f003..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.image.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var options={series:{images:{show:false,alpha:1,anchor:"corner"}}};$.plot.image={};$.plot.image.loadDataImages=function(series,options,callback){var urls=[],points=[];var defaultShow=options.series.images.show;$.each(series,function(i,s){if(!(defaultShow||s.images.show))return;if(s.data)s=s.data;$.each(s,function(i,p){if(typeof p[0]=="string"){urls.push(p[0]);points.push(p)}})});$.plot.image.load(urls,function(loadedImages){$.each(points,function(i,p){var url=p[0];if(loadedImages[url])p[0]=loadedImages[url]});callback()})};$.plot.image.load=function(urls,callback){var missing=urls.length,loaded={};if(missing==0)callback({});$.each(urls,function(i,url){var handler=function(){--missing;loaded[url]=this;if(missing==0)callback(loaded)};$("").load(handler).error(handler).attr("src",url)})};function drawSeries(plot,ctx,series){var plotOffset=plot.getPlotOffset();if(!series.images||!series.images.show)return;var points=series.datapoints.points,ps=series.datapoints.pointsize;for(var i=0;ix2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}if(series.images.anchor=="center"){tmp=.5*(x2-x1)/(img.width-1);x1-=tmp;x2+=tmp;tmp=.5*(y2-y1)/(img.height-1);y1-=tmp;y2+=tmp}if(x1==x2||y1==y2||x1>=xaxis.max||x2<=xaxis.min||y1>=yaxis.max||y2<=yaxis.min)continue;var sx1=0,sy1=0,sx2=img.width,sy2=img.height;if(x1xaxis.max){sx2+=(sx2-sx1)*(xaxis.max-x2)/(x2-x1);x2=xaxis.max}if(y1yaxis.max){sy1+=(sy1-sy2)*(yaxis.max-y2)/(y2-y1);y2=yaxis.max}x1=xaxis.p2c(x1);x2=xaxis.p2c(x2);y1=yaxis.p2c(y1);y2=yaxis.p2c(y2);if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}tmp=ctx.globalAlpha;ctx.globalAlpha*=series.images.alpha;ctx.drawImage(img,sx1,sy1,sx2-sx1,sy2-sy1,x1+plotOffset.left,y1+plotOffset.top,x2-x1,y2-y1);ctx.globalAlpha=tmp}}function processRawData(plot,series,data,datapoints){if(!series.images.show)return;datapoints.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.drawSeries.push(drawSeries)}$.plot.plugins.push({init:init,options:options,name:"image",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.js deleted file mode 100644 index c97ceb1bf44..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.js +++ /dev/null @@ -1,3168 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ - -// first an inline dependency, jquery.colorhelpers.js, we inline it here -// for convenience - -/* Plugin for jQuery for working with colors. - * - * Version 1.1. - * - * Inspiration from jQuery color animation plugin by John Resig. - * - * Released under the MIT license by Ole Laursen, October 2009. - * - * Examples: - * - * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() - * var c = $.color.extract($("#mydiv"), 'background-color'); - * console.log(c.r, c.g, c.b, c.a); - * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" - * - * Note that .scale() and .add() return the same modified object - * instead of making a new one. - * - * V. 1.1: Fix error handling so e.g. parsing an empty string does - * produce a color rather than just crashing. - */ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); - -// the actual Flot code -(function($) { - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - // A shim to provide 'detach' to jQuery versions prior to 1.4. Using a DOM - // operation produces the same effect as detach, i.e. removing the element - // without touching its jQuery data. - - // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+. - - if (!$.fn.detach) { - $.fn.detach = function() { - return this.each(function() { - if (this.parentNode) { - this.parentNode.removeChild( this ); - } - }); - }; - } - - /////////////////////////////////////////////////////////////////////////// - // The Canvas object is a wrapper around an HTML5 tag. - // - // @constructor - // @param {string} cls List of classes to apply to the canvas. - // @param {element} container Element onto which to append the canvas. - // - // Requiring a container is a little iffy, but unfortunately canvas - // operations don't work unless the canvas is attached to the DOM. - - function Canvas(cls, container) { - - var element = container.children("." + cls)[0]; - - if (element == null) { - - element = document.createElement("canvas"); - element.className = cls; - - $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) - .appendTo(container); - - // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas - - if (!element.getContext) { - if (window.G_vmlCanvasManager) { - element = window.G_vmlCanvasManager.initElement(element); - } else { - throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); - } - } - } - - this.element = element; - - var context = this.context = element.getContext("2d"); - - // Determine the screen's ratio of physical to device-independent - // pixels. This is the ratio between the canvas width that the browser - // advertises and the number of pixels actually present in that space. - - // The iPhone 4, for example, has a device-independent width of 320px, - // but its screen is actually 640px wide. It therefore has a pixel - // ratio of 2, while most normal devices have a ratio of 1. - - var devicePixelRatio = window.devicePixelRatio || 1, - backingStoreRatio = - context.webkitBackingStorePixelRatio || - context.mozBackingStorePixelRatio || - context.msBackingStorePixelRatio || - context.oBackingStorePixelRatio || - context.backingStorePixelRatio || 1; - - this.pixelRatio = devicePixelRatio / backingStoreRatio; - - // Size the canvas to match the internal dimensions of its container - - this.resize(container.width(), container.height()); - - // Collection of HTML div layers for text overlaid onto the canvas - - this.textContainer = null; - this.text = {}; - - // Cache of text fragments and metrics, so we can avoid expensively - // re-calculating them when the plot is re-rendered in a loop. - - this._textCache = {}; - } - - // Resizes the canvas to the given dimensions. - // - // @param {number} width New width of the canvas, in pixels. - // @param {number} width New height of the canvas, in pixels. - - Canvas.prototype.resize = function(width, height) { - - if (width <= 0 || height <= 0) { - throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); - } - - var element = this.element, - context = this.context, - pixelRatio = this.pixelRatio; - - // Resize the canvas, increasing its density based on the display's - // pixel ratio; basically giving it more pixels without increasing the - // size of its element, to take advantage of the fact that retina - // displays have that many more pixels in the same advertised space. - - // Resizing should reset the state (excanvas seems to be buggy though) - - if (this.width != width) { - element.width = width * pixelRatio; - element.style.width = width + "px"; - this.width = width; - } - - if (this.height != height) { - element.height = height * pixelRatio; - element.style.height = height + "px"; - this.height = height; - } - - // Save the context, so we can reset in case we get replotted. The - // restore ensure that we're really back at the initial state, and - // should be safe even if we haven't saved the initial state yet. - - context.restore(); - context.save(); - - // Scale the coordinate space to match the display density; so even though we - // may have twice as many pixels, we still want lines and other drawing to - // appear at the same size; the extra pixels will just make them crisper. - - context.scale(pixelRatio, pixelRatio); - }; - - // Clears the entire canvas area, not including any overlaid HTML text - - Canvas.prototype.clear = function() { - this.context.clearRect(0, 0, this.width, this.height); - }; - - // Finishes rendering the canvas, including managing the text overlay. - - Canvas.prototype.render = function() { - - var cache = this._textCache; - - // For each text layer, add elements marked as active that haven't - // already been rendered, and remove those that are no longer active. - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - - var layer = this.getTextLayer(layerKey), - layerCache = cache[layerKey]; - - layer.hide(); - - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var positions = styleCache[key].positions; - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - if (!position.rendered) { - layer.append(position.element); - position.rendered = true; - } - } else { - positions.splice(i--, 1); - if (position.rendered) { - position.element.detach(); - } - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - - layer.show(); - } - } - }; - - // Creates (if necessary) and returns the text overlay container. - // - // @param {string} classes String of space-separated CSS classes used to - // uniquely identify the text layer. - // @return {object} The jQuery-wrapped text-layer div. - - Canvas.prototype.getTextLayer = function(classes) { - - var layer = this.text[classes]; - - // Create the text layer if it doesn't exist - - if (layer == null) { - - // Create the text layer container, if it doesn't exist - - if (this.textContainer == null) { - this.textContainer = $("
    ") - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0, - 'font-size': "smaller", - color: "#545454" - }) - .insertAfter(this.element); - } - - layer = this.text[classes] = $("
    ") - .addClass(classes) - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0 - }) - .appendTo(this.textContainer); - } - - return layer; - }; - - // Creates (if necessary) and returns a text info object. - // - // The object looks like this: - // - // { - // width: Width of the text's wrapper div. - // height: Height of the text's wrapper div. - // element: The jQuery-wrapped HTML div containing the text. - // positions: Array of positions at which this text is drawn. - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // rendered: Flag indicating whether the text is currently visible. - // element: The jQuery-wrapped HTML div containing the text. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - // - // Each position after the first receives a clone of the original element. - // - // The idea is that that the width, height, and general 'identity' of the - // text is constant no matter where it is placed; the placements are a - // secondary property. - // - // Canvas maintains a cache of recently-used text info objects; getTextInfo - // either returns the cached element or creates a new entry. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {string} text Text string to retrieve info for. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @return {object} a text info object. - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number or such - - text = "" + text; - - // If the font is a font-spec object, generate a CSS font definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - // If we can't find a matching element in our cache, create a new one - - if (info == null) { - - var element = $("
    ").html(text) - .css({ - position: "absolute", - 'max-width': width, - top: -9999 - }) - .appendTo(this.getTextLayer(layer)); - - if (typeof font === "object") { - element.css({ - font: textStyle, - color: font.color - }); - } else if (typeof font === "string") { - element.addClass(font); - } - - info = styleCache[text] = { - width: element.outerWidth(true), - height: element.outerHeight(true), - element: element, - positions: [] - }; - - element.detach(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - // - // The text isn't drawn immediately; it is marked as rendering, which will - // result in its addition to the canvas on the next render pass. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number} x X coordinate at which to draw the text. - // @param {number} y Y coordinate at which to draw the text. - // @param {string} text Text string to draw. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @param {string=} halign Horizontal alignment of the text; either "left", - // "center" or "right". - // @param {string=} valign Vertical alignment of the text; either "top", - // "middle" or "bottom". - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions; - - // Tweak the div's position to match the text's alignment - - if (halign == "center") { - x -= info.width / 2; - } else if (halign == "right") { - x -= info.width; - } - - if (valign == "middle") { - y -= info.height / 2; - } else if (valign == "bottom") { - y -= info.height; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - // For the very first position we'll re-use the original element, - // while for subsequent ones we'll clone it. - - position = { - active: true, - rendered: false, - element: positions.length ? info.element.clone() : info.element, - x: x, - y: y - }; - - positions.push(position); - - // Move the element to its final position within the container - - position.element.css({ - top: Math.round(y), - left: Math.round(x), - 'text-align': halign // In case the text wraps - }); - }; - - // Removes one or more text strings from the canvas text overlay. - // - // If no parameters are given, all text within the layer is removed. - // - // Note that the text is not immediately removed; it is simply marked as - // inactive, which will result in its removal on the next render pass. - // This avoids the performance penalty for 'clear and redraw' behavior, - // where we potentially get rid of all text on a layer, but will likely - // add back most or all of it later, as when redrawing axes, for example. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number=} x X coordinate of the text. - // @param {number=} y Y coordinate of the text. - // @param {string=} text Text string to remove. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which the text is rotated, in degrees. - // Angle is currently unused, it will be implemented in the future. - - Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { - if (text == null) { - var layerCache = this._textCache[layer]; - if (layerCache != null) { - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - var positions = styleCache[key].positions; - for (var i = 0, position; position = positions[i]; i++) { - position.active = false; - } - } - } - } - } - } - } else { - var positions = this.getTextInfo(layer, text, font, angle).positions; - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = false; - } - } - } - }; - - /////////////////////////////////////////////////////////////////////////// - // The top-level container for the entire plot. - - function Plot(placeholder, data_, options_, plugins) { - // data is on the form: - // [ series1, series2 ... ] - // where series is either just the data as [ [x1, y1], [x2, y2], ... ] - // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } - - var series = [], - options = { - // the color theme used for graphs - colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], - legend: { - show: true, - noColumns: 1, // number of colums in legend table - labelFormatter: null, // fn: string -> string - labelBoxBorderColor: "#ccc", // border color for the little label boxes - container: null, // container (as jQuery object) to put legend in, null means default on top of graph - position: "ne", // position of default legend container within plot - margin: 5, // distance from grid edge to default legend container within plot - backgroundColor: null, // null means auto-detect - backgroundOpacity: 0.85, // set to 0 to avoid background - sorted: null // default to no legend sorting - }, - xaxis: { - show: null, // null = auto-detect, true = always, false = never - position: "bottom", // or "top" - mode: null, // null or "time" - font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } - color: null, // base color, labels, ticks - tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" - transform: null, // null or f: number -> number to transform axis - inverseTransform: null, // if transform is set, this should be the inverse function - min: null, // min. value to show, null means set automatically - max: null, // max. value to show, null means set automatically - autoscaleMargin: null, // margin in % to add if auto-setting min/max - ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks - tickFormatter: null, // fn: number -> string - labelWidth: null, // size of tick labels in pixels - labelHeight: null, - reserveSpace: null, // whether to reserve space even if axis isn't shown - tickLength: null, // size in pixels of ticks, or "full" for whole line - alignTicksWithAxis: null, // axis number or null for no sync - tickDecimals: null, // no. of decimals, null means auto - tickSize: null, // number or [number, "unit"] - minTickSize: null // number or [number, "unit"] - }, - yaxis: { - autoscaleMargin: 0.02, - position: "left" // or "right" - }, - xaxes: [], - yaxes: [], - series: { - points: { - show: false, - radius: 3, - lineWidth: 2, // in pixels - fill: true, - fillColor: "#ffffff", - symbol: "circle" // or callback - }, - lines: { - // we don't put in show: false so we can see - // whether lines were actively disabled - lineWidth: 2, // in pixels - fill: false, - fillColor: null, - steps: false - // Omit 'zero', so we can later default its value to - // match that of the 'fill' option. - }, - bars: { - show: false, - lineWidth: 2, // in pixels - barWidth: 1, // in units of the x axis - fill: true, - fillColor: null, - align: "left", // "left", "right", or "center" - horizontal: false, - zero: true - }, - shadowSize: 3, - highlightColor: null - }, - grid: { - show: true, - aboveData: false, - color: "#545454", // primary color used for outline and labels - backgroundColor: null, // null for transparent, else color - borderColor: null, // set if different from the grid color - tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" - margin: 0, // distance from the canvas edge to the grid - labelMargin: 5, // in pixels - axisMargin: 8, // in pixels - borderWidth: 2, // in pixels - minBorderMargin: null, // in pixels, null means taken from points radius - markings: null, // array of ranges or fn: axes -> array of ranges - markingsColor: "#f4f4f4", - markingsLineWidth: 2, - // interactive stuff - clickable: false, - hoverable: false, - autoHighlight: true, // highlight in case mouse is near - mouseActiveRadius: 10 // how far the mouse can be away to activate an item - }, - interaction: { - redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow - }, - hooks: {} - }, - surface = null, // the canvas for the plot itself - overlay = null, // canvas for interactive stuff on top of plot - eventHolder = null, // jQuery object that events should be bound to - ctx = null, octx = null, - xaxes = [], yaxes = [], - plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, - plotWidth = 0, plotHeight = 0, - hooks = { - processOptions: [], - processRawData: [], - processDatapoints: [], - processOffset: [], - drawBackground: [], - drawSeries: [], - draw: [], - bindEvents: [], - drawOverlay: [], - shutdown: [] - }, - plot = this; - - // public functions - plot.setData = setData; - plot.setupGrid = setupGrid; - plot.draw = draw; - plot.getPlaceholder = function() { return placeholder; }; - plot.getCanvas = function() { return surface.element; }; - plot.getPlotOffset = function() { return plotOffset; }; - plot.width = function () { return plotWidth; }; - plot.height = function () { return plotHeight; }; - plot.offset = function () { - var o = eventHolder.offset(); - o.left += plotOffset.left; - o.top += plotOffset.top; - return o; - }; - plot.getData = function () { return series; }; - plot.getAxes = function () { - var res = {}, i; - $.each(xaxes.concat(yaxes), function (_, axis) { - if (axis) - res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; - }); - return res; - }; - plot.getXAxes = function () { return xaxes; }; - plot.getYAxes = function () { return yaxes; }; - plot.c2p = canvasToAxisCoords; - plot.p2c = axisToCanvasCoords; - plot.getOptions = function () { return options; }; - plot.highlight = highlight; - plot.unhighlight = unhighlight; - plot.triggerRedrawOverlay = triggerRedrawOverlay; - plot.pointOffset = function(point) { - return { - left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), - top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) - }; - }; - plot.shutdown = shutdown; - plot.destroy = function () { - shutdown(); - placeholder.removeData("plot").empty(); - - series = []; - options = null; - surface = null; - overlay = null; - eventHolder = null; - ctx = null; - octx = null; - xaxes = []; - yaxes = []; - hooks = null; - highlights = []; - plot = null; - }; - plot.resize = function () { - var width = placeholder.width(), - height = placeholder.height(); - surface.resize(width, height); - overlay.resize(width, height); - }; - - // public attributes - plot.hooks = hooks; - - // initialize - initPlugins(plot); - parseOptions(options_); - setupCanvases(); - setData(data_); - setupGrid(); - draw(); - bindEvents(); - - - function executeHooks(hook, args) { - args = [plot].concat(args); - for (var i = 0; i < hook.length; ++i) - hook[i].apply(this, args); - } - - function initPlugins() { - - // References to key classes, allowing plugins to modify them - - var classes = { - Canvas: Canvas - }; - - for (var i = 0; i < plugins.length; ++i) { - var p = plugins[i]; - p.init(plot, classes); - if (p.options) - $.extend(true, options, p.options); - } - } - - function parseOptions(opts) { - - $.extend(true, options, opts); - - // $.extend merges arrays, rather than replacing them. When less - // colors are provided than the size of the default palette, we - // end up with those colors plus the remaining defaults, which is - // not expected behavior; avoid it by replacing them here. - - if (opts && opts.colors) { - options.colors = opts.colors; - } - - if (options.xaxis.color == null) - options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - if (options.yaxis.color == null) - options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility - options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; - if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility - options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; - - if (options.grid.borderColor == null) - options.grid.borderColor = options.grid.color; - if (options.grid.tickColor == null) - options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - // Fill in defaults for axis options, including any unspecified - // font-spec fields, if a font-spec was provided. - - // If no x/y axis options were provided, create one of each anyway, - // since the rest of the code assumes that they exist. - - var i, axisOptions, axisCount, - fontSize = placeholder.css("font-size"), - fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, - fontDefaults = { - style: placeholder.css("font-style"), - size: Math.round(0.8 * fontSizeDefault), - variant: placeholder.css("font-variant"), - weight: placeholder.css("font-weight"), - family: placeholder.css("font-family") - }; - - axisCount = options.xaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.xaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.xaxis, axisOptions); - options.xaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); - } - } - } - - axisCount = options.yaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.yaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.yaxis, axisOptions); - options.yaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); - } - } - } - - // backwards compatibility, to be removed in future - if (options.xaxis.noTicks && options.xaxis.ticks == null) - options.xaxis.ticks = options.xaxis.noTicks; - if (options.yaxis.noTicks && options.yaxis.ticks == null) - options.yaxis.ticks = options.yaxis.noTicks; - if (options.x2axis) { - options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); - options.xaxes[1].position = "top"; - // Override the inherit to allow the axis to auto-scale - if (options.x2axis.min == null) { - options.xaxes[1].min = null; - } - if (options.x2axis.max == null) { - options.xaxes[1].max = null; - } - } - if (options.y2axis) { - options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); - options.yaxes[1].position = "right"; - // Override the inherit to allow the axis to auto-scale - if (options.y2axis.min == null) { - options.yaxes[1].min = null; - } - if (options.y2axis.max == null) { - options.yaxes[1].max = null; - } - } - if (options.grid.coloredAreas) - options.grid.markings = options.grid.coloredAreas; - if (options.grid.coloredAreasColor) - options.grid.markingsColor = options.grid.coloredAreasColor; - if (options.lines) - $.extend(true, options.series.lines, options.lines); - if (options.points) - $.extend(true, options.series.points, options.points); - if (options.bars) - $.extend(true, options.series.bars, options.bars); - if (options.shadowSize != null) - options.series.shadowSize = options.shadowSize; - if (options.highlightColor != null) - options.series.highlightColor = options.highlightColor; - - // save options on axes for future reference - for (i = 0; i < options.xaxes.length; ++i) - getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; - for (i = 0; i < options.yaxes.length; ++i) - getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; - - // add hooks from options - for (var n in hooks) - if (options.hooks[n] && options.hooks[n].length) - hooks[n] = hooks[n].concat(options.hooks[n]); - - executeHooks(hooks.processOptions, [options]); - } - - function setData(d) { - series = parseData(d); - fillInSeriesOptions(); - processData(); - } - - function parseData(d) { - var res = []; - for (var i = 0; i < d.length; ++i) { - var s = $.extend(true, {}, options.series); - - if (d[i].data != null) { - s.data = d[i].data; // move the data instead of deep-copy - delete d[i].data; - - $.extend(true, s, d[i]); - - d[i].data = s.data; - } - else - s.data = d[i]; - res.push(s); - } - - return res; - } - - function axisNumber(obj, coord) { - var a = obj[coord + "axis"]; - if (typeof a == "object") // if we got a real axis, extract number - a = a.n; - if (typeof a != "number") - a = 1; // default to first axis - return a; - } - - function allAxes() { - // return flat array without annoying null entries - return $.grep(xaxes.concat(yaxes), function (a) { return a; }); - } - - function canvasToAxisCoords(pos) { - // return an object with x/y corresponding to all used axes - var res = {}, i, axis; - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) - res["x" + axis.n] = axis.c2p(pos.left); - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) - res["y" + axis.n] = axis.c2p(pos.top); - } - - if (res.x1 !== undefined) - res.x = res.x1; - if (res.y1 !== undefined) - res.y = res.y1; - - return res; - } - - function axisToCanvasCoords(pos) { - // get canvas coords from the first pair of x/y found in pos - var res = {}, i, axis, key; - - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) { - key = "x" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "x"; - - if (pos[key] != null) { - res.left = axis.p2c(pos[key]); - break; - } - } - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) { - key = "y" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "y"; - - if (pos[key] != null) { - res.top = axis.p2c(pos[key]); - break; - } - } - } - - return res; - } - - function getOrCreateAxis(axes, number) { - if (!axes[number - 1]) - axes[number - 1] = { - n: number, // save the number for future reference - direction: axes == xaxes ? "x" : "y", - options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) - }; - - return axes[number - 1]; - } - - function fillInSeriesOptions() { - - var neededColors = series.length, maxIndex = -1, i; - - // Subtract the number of series that already have fixed colors or - // color indexes from the number that we still need to generate. - - for (i = 0; i < series.length; ++i) { - var sc = series[i].color; - if (sc != null) { - neededColors--; - if (typeof sc == "number" && sc > maxIndex) { - maxIndex = sc; - } - } - } - - // If any of the series have fixed color indexes, then we need to - // generate at least as many colors as the highest index. - - if (neededColors <= maxIndex) { - neededColors = maxIndex + 1; - } - - // Generate all the colors, using first the option colors and then - // variations on those colors once they're exhausted. - - var c, colors = [], colorPool = options.colors, - colorPoolSize = colorPool.length, variation = 0; - - for (i = 0; i < neededColors; i++) { - - c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); - - // Each time we exhaust the colors in the pool we adjust - // a scaling factor used to produce more variations on - // those colors. The factor alternates negative/positive - // to produce lighter/darker colors. - - // Reset the variation after every few cycles, or else - // it will end up producing only white or black colors. - - if (i % colorPoolSize == 0 && i) { - if (variation >= 0) { - if (variation < 0.5) { - variation = -variation - 0.2; - } else variation = 0; - } else variation = -variation; - } - - colors[i] = c.scale('rgb', 1 + variation); - } - - // Finalize the series options, filling in their colors - - var colori = 0, s; - for (i = 0; i < series.length; ++i) { - s = series[i]; - - // assign colors - if (s.color == null) { - s.color = colors[colori].toString(); - ++colori; - } - else if (typeof s.color == "number") - s.color = colors[s.color].toString(); - - // turn on lines automatically in case nothing is set - if (s.lines.show == null) { - var v, show = true; - for (v in s) - if (s[v] && s[v].show) { - show = false; - break; - } - if (show) - s.lines.show = true; - } - - // If nothing was provided for lines.zero, default it to match - // lines.fill, since areas by default should extend to zero. - - if (s.lines.zero == null) { - s.lines.zero = !!s.lines.fill; - } - - // setup axes - s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); - s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); - } - } - - function processData() { - var topSentry = Number.POSITIVE_INFINITY, - bottomSentry = Number.NEGATIVE_INFINITY, - fakeInfinity = Number.MAX_VALUE, - i, j, k, m, length, - s, points, ps, x, y, axis, val, f, p, - data, format; - - function updateAxis(axis, min, max) { - if (min < axis.datamin && min != -fakeInfinity) - axis.datamin = min; - if (max > axis.datamax && max != fakeInfinity) - axis.datamax = max; - } - - $.each(allAxes(), function (_, axis) { - // init axis - axis.datamin = topSentry; - axis.datamax = bottomSentry; - axis.used = false; - }); - - for (i = 0; i < series.length; ++i) { - s = series[i]; - s.datapoints = { points: [] }; - - executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); - } - - // first pass: clean and copy data - for (i = 0; i < series.length; ++i) { - s = series[i]; - - data = s.data; - format = s.datapoints.format; - - if (!format) { - format = []; - // find out how to copy - format.push({ x: true, number: true, required: true }); - format.push({ y: true, number: true, required: true }); - - if (s.bars.show || (s.lines.show && s.lines.fill)) { - var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); - format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); - if (s.bars.horizontal) { - delete format[format.length - 1].y; - format[format.length - 1].x = true; - } - } - - s.datapoints.format = format; - } - - if (s.datapoints.pointsize != null) - continue; // already filled in - - s.datapoints.pointsize = format.length; - - ps = s.datapoints.pointsize; - points = s.datapoints.points; - - var insertSteps = s.lines.show && s.lines.steps; - s.xaxis.used = s.yaxis.used = true; - - for (j = k = 0; j < data.length; ++j, k += ps) { - p = data[j]; - - var nullify = p == null; - if (!nullify) { - for (m = 0; m < ps; ++m) { - val = p[m]; - f = format[m]; - - if (f) { - if (f.number && val != null) { - val = +val; // convert to number - if (isNaN(val)) - val = null; - else if (val == Infinity) - val = fakeInfinity; - else if (val == -Infinity) - val = -fakeInfinity; - } - - if (val == null) { - if (f.required) - nullify = true; - - if (f.defaultValue != null) - val = f.defaultValue; - } - } - - points[k + m] = val; - } - } - - if (nullify) { - for (m = 0; m < ps; ++m) { - val = points[k + m]; - if (val != null) { - f = format[m]; - // extract min/max info - if (f.autoscale !== false) { - if (f.x) { - updateAxis(s.xaxis, val, val); - } - if (f.y) { - updateAxis(s.yaxis, val, val); - } - } - } - points[k + m] = null; - } - } - else { - // a little bit of line specific stuff that - // perhaps shouldn't be here, but lacking - // better means... - if (insertSteps && k > 0 - && points[k - ps] != null - && points[k - ps] != points[k] - && points[k - ps + 1] != points[k + 1]) { - // copy the point to make room for a middle point - for (m = 0; m < ps; ++m) - points[k + ps + m] = points[k + m]; - - // middle point has same y - points[k + 1] = points[k - ps + 1]; - - // we've added a point, better reflect that - k += ps; - } - } - } - } - - // give the hooks a chance to run - for (i = 0; i < series.length; ++i) { - s = series[i]; - - executeHooks(hooks.processDatapoints, [ s, s.datapoints]); - } - - // second pass: find datamax/datamin for auto-scaling - for (i = 0; i < series.length; ++i) { - s = series[i]; - points = s.datapoints.points; - ps = s.datapoints.pointsize; - format = s.datapoints.format; - - var xmin = topSentry, ymin = topSentry, - xmax = bottomSentry, ymax = bottomSentry; - - for (j = 0; j < points.length; j += ps) { - if (points[j] == null) - continue; - - for (m = 0; m < ps; ++m) { - val = points[j + m]; - f = format[m]; - if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) - continue; - - if (f.x) { - if (val < xmin) - xmin = val; - if (val > xmax) - xmax = val; - } - if (f.y) { - if (val < ymin) - ymin = val; - if (val > ymax) - ymax = val; - } - } - } - - if (s.bars.show) { - // make sure we got room for the bar on the dancing floor - var delta; - - switch (s.bars.align) { - case "left": - delta = 0; - break; - case "right": - delta = -s.bars.barWidth; - break; - default: - delta = -s.bars.barWidth / 2; - } - - if (s.bars.horizontal) { - ymin += delta; - ymax += delta + s.bars.barWidth; - } - else { - xmin += delta; - xmax += delta + s.bars.barWidth; - } - } - - updateAxis(s.xaxis, xmin, xmax); - updateAxis(s.yaxis, ymin, ymax); - } - - $.each(allAxes(), function (_, axis) { - if (axis.datamin == topSentry) - axis.datamin = null; - if (axis.datamax == bottomSentry) - axis.datamax = null; - }); - } - - function setupCanvases() { - - // Make sure the placeholder is clear of everything except canvases - // from a previous plot in this container that we'll try to re-use. - - placeholder.css("padding", 0) // padding messes up the positioning - .children().filter(function(){ - return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); - }).remove(); - - if (placeholder.css("position") == 'static') - placeholder.css("position", "relative"); // for positioning labels and overlay - - surface = new Canvas("flot-base", placeholder); - overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features - - ctx = surface.context; - octx = overlay.context; - - // define which element we're listening for events on - eventHolder = $(overlay.element).unbind(); - - // If we're re-using a plot object, shut down the old one - - var existing = placeholder.data("plot"); - - if (existing) { - existing.shutdown(); - overlay.clear(); - } - - // save in case we get replotted - placeholder.data("plot", plot); - } - - function bindEvents() { - // bind events - if (options.grid.hoverable) { - eventHolder.mousemove(onMouseMove); - - // Use bind, rather than .mouseleave, because we officially - // still support jQuery 1.2.6, which doesn't define a shortcut - // for mouseenter or mouseleave. This was a bug/oversight that - // was fixed somewhere around 1.3.x. We can return to using - // .mouseleave when we drop support for 1.2.6. - - eventHolder.bind("mouseleave", onMouseLeave); - } - - if (options.grid.clickable) - eventHolder.click(onClick); - - executeHooks(hooks.bindEvents, [eventHolder]); - } - - function shutdown() { - if (redrawTimeout) - clearTimeout(redrawTimeout); - - eventHolder.unbind("mousemove", onMouseMove); - eventHolder.unbind("mouseleave", onMouseLeave); - eventHolder.unbind("click", onClick); - - executeHooks(hooks.shutdown, [eventHolder]); - } - - function setTransformationHelpers(axis) { - // set helper functions on the axis, assumes plot area - // has been computed already - - function identity(x) { return x; } - - var s, m, t = axis.options.transform || identity, - it = axis.options.inverseTransform; - - // precompute how much the axis is scaling a point - // in canvas space - if (axis.direction == "x") { - s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); - m = Math.min(t(axis.max), t(axis.min)); - } - else { - s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); - s = -s; - m = Math.max(t(axis.max), t(axis.min)); - } - - // data point to canvas coordinate - if (t == identity) // slight optimization - axis.p2c = function (p) { return (p - m) * s; }; - else - axis.p2c = function (p) { return (t(p) - m) * s; }; - // canvas coordinate to data point - if (!it) - axis.c2p = function (c) { return m + c / s; }; - else - axis.c2p = function (c) { return it(m + c / s); }; - } - - function measureTickLabels(axis) { - - var opts = axis.options, - ticks = axis.ticks || [], - labelWidth = opts.labelWidth || 0, - labelHeight = opts.labelHeight || 0, - maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = opts.font || "flot-tick-label tickLabel"; - - for (var i = 0; i < ticks.length; ++i) { - - var t = ticks[i]; - - if (!t.label) - continue; - - var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); - - labelWidth = Math.max(labelWidth, info.width); - labelHeight = Math.max(labelHeight, info.height); - } - - axis.labelWidth = opts.labelWidth || labelWidth; - axis.labelHeight = opts.labelHeight || labelHeight; - } - - function allocateAxisBoxFirstPhase(axis) { - // find the bounding box of the axis by looking at label - // widths/heights and ticks, make room by diminishing the - // plotOffset; this first phase only looks at one - // dimension per axis, the other dimension depends on the - // other axes so will have to wait - - var lw = axis.labelWidth, - lh = axis.labelHeight, - pos = axis.options.position, - isXAxis = axis.direction === "x", - tickLength = axis.options.tickLength, - axisMargin = options.grid.axisMargin, - padding = options.grid.labelMargin, - innermost = true, - outermost = true, - first = true, - found = false; - - // Determine the axis's position in its direction and on its side - - $.each(isXAxis ? xaxes : yaxes, function(i, a) { - if (a && (a.show || a.reserveSpace)) { - if (a === axis) { - found = true; - } else if (a.options.position === pos) { - if (found) { - outermost = false; - } else { - innermost = false; - } - } - if (!found) { - first = false; - } - } - }); - - // The outermost axis on each side has no margin - - if (outermost) { - axisMargin = 0; - } - - // The ticks for the first axis in each direction stretch across - - if (tickLength == null) { - tickLength = first ? "full" : 5; - } - - if (!isNaN(+tickLength)) - padding += +tickLength; - - if (isXAxis) { - lh += padding; - - if (pos == "bottom") { - plotOffset.bottom += lh + axisMargin; - axis.box = { top: surface.height - plotOffset.bottom, height: lh }; - } - else { - axis.box = { top: plotOffset.top + axisMargin, height: lh }; - plotOffset.top += lh + axisMargin; - } - } - else { - lw += padding; - - if (pos == "left") { - axis.box = { left: plotOffset.left + axisMargin, width: lw }; - plotOffset.left += lw + axisMargin; - } - else { - plotOffset.right += lw + axisMargin; - axis.box = { left: surface.width - plotOffset.right, width: lw }; - } - } - - // save for future reference - axis.position = pos; - axis.tickLength = tickLength; - axis.box.padding = padding; - axis.innermost = innermost; - } - - function allocateAxisBoxSecondPhase(axis) { - // now that all axis boxes have been placed in one - // dimension, we can set the remaining dimension coordinates - if (axis.direction == "x") { - axis.box.left = plotOffset.left - axis.labelWidth / 2; - axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; - } - else { - axis.box.top = plotOffset.top - axis.labelHeight / 2; - axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; - } - } - - function adjustLayoutForThingsStickingOut() { - // possibly adjust plot offset to ensure everything stays - // inside the canvas and isn't clipped off - - var minMargin = options.grid.minBorderMargin, - axis, i; - - // check stuff from the plot (FIXME: this should just read - // a value from the series, otherwise it's impossible to - // customize) - if (minMargin == null) { - minMargin = 0; - for (i = 0; i < series.length; ++i) - minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); - } - - var margins = { - left: minMargin, - right: minMargin, - top: minMargin, - bottom: minMargin - }; - - // check axis labels, note we don't check the actual - // labels but instead use the overall width/height to not - // jump as much around with replots - $.each(allAxes(), function (_, axis) { - if (axis.reserveSpace && axis.ticks && axis.ticks.length) { - if (axis.direction === "x") { - margins.left = Math.max(margins.left, axis.labelWidth / 2); - margins.right = Math.max(margins.right, axis.labelWidth / 2); - } else { - margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); - margins.top = Math.max(margins.top, axis.labelHeight / 2); - } - } - }); - - plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); - plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); - plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); - plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); - } - - function setupGrid() { - var i, axes = allAxes(), showGrid = options.grid.show; - - // Initialize the plot's offset from the edge of the canvas - - for (var a in plotOffset) { - var margin = options.grid.margin || 0; - plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; - } - - executeHooks(hooks.processOffset, [plotOffset]); - - // If the grid is visible, add its border width to the offset - - for (var a in plotOffset) { - if(typeof(options.grid.borderWidth) == "object") { - plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; - } - else { - plotOffset[a] += showGrid ? options.grid.borderWidth : 0; - } - } - - $.each(axes, function (_, axis) { - var axisOpts = axis.options; - axis.show = axisOpts.show == null ? axis.used : axisOpts.show; - axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace; - setRange(axis); - }); - - if (showGrid) { - - var allocatedAxes = $.grep(axes, function (axis) { - return axis.show || axis.reserveSpace; - }); - - $.each(allocatedAxes, function (_, axis) { - // make the ticks - setupTickGeneration(axis); - setTicks(axis); - snapRangeToTicks(axis, axis.ticks); - // find labelWidth/Height for axis - measureTickLabels(axis); - }); - - // with all dimensions calculated, we can compute the - // axis bounding boxes, start from the outside - // (reverse order) - for (i = allocatedAxes.length - 1; i >= 0; --i) - allocateAxisBoxFirstPhase(allocatedAxes[i]); - - // make sure we've got enough space for things that - // might stick out - adjustLayoutForThingsStickingOut(); - - $.each(allocatedAxes, function (_, axis) { - allocateAxisBoxSecondPhase(axis); - }); - } - - plotWidth = surface.width - plotOffset.left - plotOffset.right; - plotHeight = surface.height - plotOffset.bottom - plotOffset.top; - - // now we got the proper plot dimensions, we can compute the scaling - $.each(axes, function (_, axis) { - setTransformationHelpers(axis); - }); - - if (showGrid) { - drawAxisLabels(); - } - - insertLegend(); - } - - function setRange(axis) { - var opts = axis.options, - min = +(opts.min != null ? opts.min : axis.datamin), - max = +(opts.max != null ? opts.max : axis.datamax), - delta = max - min; - - if (delta == 0.0) { - // degenerate case - var widen = max == 0 ? 1 : 0.01; - - if (opts.min == null) - min -= widen; - // always widen max if we couldn't widen min to ensure we - // don't fall into min == max which doesn't work - if (opts.max == null || opts.min != null) - max += widen; - } - else { - // consider autoscaling - var margin = opts.autoscaleMargin; - if (margin != null) { - if (opts.min == null) { - min -= delta * margin; - // make sure we don't go below zero if all values - // are positive - if (min < 0 && axis.datamin != null && axis.datamin >= 0) - min = 0; - } - if (opts.max == null) { - max += delta * margin; - if (max > 0 && axis.datamax != null && axis.datamax <= 0) - max = 0; - } - } - } - axis.min = min; - axis.max = max; - } - - function setupTickGeneration(axis) { - var opts = axis.options; - - // estimate number of ticks - var noTicks; - if (typeof opts.ticks == "number" && opts.ticks > 0) - noTicks = opts.ticks; - else - // heuristic based on the model a*sqrt(x) fitted to - // some data points that seemed reasonable - noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); - - var delta = (axis.max - axis.min) / noTicks, - dec = -Math.floor(Math.log(delta) / Math.LN10), - maxDec = opts.tickDecimals; - - if (maxDec != null && dec > maxDec) { - dec = maxDec; - } - - var magn = Math.pow(10, -dec), - norm = delta / magn, // norm is between 1.0 and 10.0 - size; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - // special case for 2.5, requires an extra decimal - if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { - size = 2.5; - ++dec; - } - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - - if (opts.minTickSize != null && size < opts.minTickSize) { - size = opts.minTickSize; - } - - axis.delta = delta; - axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); - axis.tickSize = opts.tickSize || size; - - // Time mode was moved to a plug-in in 0.8, and since so many people use it - // we'll add an especially friendly reminder to make sure they included it. - - if (opts.mode == "time" && !axis.tickGenerator) { - throw new Error("Time mode requires the flot.time plugin."); - } - - // Flot supports base-10 axes; any other mode else is handled by a plug-in, - // like flot.time.js. - - if (!axis.tickGenerator) { - - axis.tickGenerator = function (axis) { - - var ticks = [], - start = floorInBase(axis.min, axis.tickSize), - i = 0, - v = Number.NaN, - prev; - - do { - prev = v; - v = start + i * axis.tickSize; - ticks.push(v); - ++i; - } while (v < axis.max && v != prev); - return ticks; - }; - - axis.tickFormatter = function (value, axis) { - - var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; - var formatted = "" + Math.round(value * factor) / factor; - - // If tickDecimals was specified, ensure that we have exactly that - // much precision; otherwise default to the value's own precision. - - if (axis.tickDecimals != null) { - var decimal = formatted.indexOf("."); - var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; - if (precision < axis.tickDecimals) { - return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); - } - } - - return formatted; - }; - } - - if ($.isFunction(opts.tickFormatter)) - axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; - - if (opts.alignTicksWithAxis != null) { - var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; - if (otherAxis && otherAxis.used && otherAxis != axis) { - // consider snapping min/max to outermost nice ticks - var niceTicks = axis.tickGenerator(axis); - if (niceTicks.length > 0) { - if (opts.min == null) - axis.min = Math.min(axis.min, niceTicks[0]); - if (opts.max == null && niceTicks.length > 1) - axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); - } - - axis.tickGenerator = function (axis) { - // copy ticks, scaled to this axis - var ticks = [], v, i; - for (i = 0; i < otherAxis.ticks.length; ++i) { - v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); - v = axis.min + v * (axis.max - axis.min); - ticks.push(v); - } - return ticks; - }; - - // we might need an extra decimal since forced - // ticks don't necessarily fit naturally - if (!axis.mode && opts.tickDecimals == null) { - var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), - ts = axis.tickGenerator(axis); - - // only proceed if the tick interval rounded - // with an extra decimal doesn't give us a - // zero at end - if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) - axis.tickDecimals = extraDec; - } - } - } - } - - function setTicks(axis) { - var oticks = axis.options.ticks, ticks = []; - if (oticks == null || (typeof oticks == "number" && oticks > 0)) - ticks = axis.tickGenerator(axis); - else if (oticks) { - if ($.isFunction(oticks)) - // generate the ticks - ticks = oticks(axis); - else - ticks = oticks; - } - - // clean up/labelify the supplied ticks, copy them over - var i, v; - axis.ticks = []; - for (i = 0; i < ticks.length; ++i) { - var label = null; - var t = ticks[i]; - if (typeof t == "object") { - v = +t[0]; - if (t.length > 1) - label = t[1]; - } - else - v = +t; - if (label == null) - label = axis.tickFormatter(v, axis); - if (!isNaN(v)) - axis.ticks.push({ v: v, label: label }); - } - } - - function snapRangeToTicks(axis, ticks) { - if (axis.options.autoscaleMargin && ticks.length > 0) { - // snap to ticks - if (axis.options.min == null) - axis.min = Math.min(axis.min, ticks[0].v); - if (axis.options.max == null && ticks.length > 1) - axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); - } - } - - function draw() { - - surface.clear(); - - executeHooks(hooks.drawBackground, [ctx]); - - var grid = options.grid; - - // draw background, if any - if (grid.show && grid.backgroundColor) - drawBackground(); - - if (grid.show && !grid.aboveData) { - drawGrid(); - } - - for (var i = 0; i < series.length; ++i) { - executeHooks(hooks.drawSeries, [ctx, series[i]]); - drawSeries(series[i]); - } - - executeHooks(hooks.draw, [ctx]); - - if (grid.show && grid.aboveData) { - drawGrid(); - } - - surface.render(); - - // A draw implies that either the axes or data have changed, so we - // should probably update the overlay highlights as well. - - triggerRedrawOverlay(); - } - - function extractRange(ranges, coord) { - var axis, from, to, key, axes = allAxes(); - - for (var i = 0; i < axes.length; ++i) { - axis = axes[i]; - if (axis.direction == coord) { - key = coord + axis.n + "axis"; - if (!ranges[key] && axis.n == 1) - key = coord + "axis"; // support x1axis as xaxis - if (ranges[key]) { - from = ranges[key].from; - to = ranges[key].to; - break; - } - } - } - - // backwards-compat stuff - to be removed in future - if (!ranges[key]) { - axis = coord == "x" ? xaxes[0] : yaxes[0]; - from = ranges[coord + "1"]; - to = ranges[coord + "2"]; - } - - // auto-reverse as an added bonus - if (from != null && to != null && from > to) { - var tmp = from; - from = to; - to = tmp; - } - - return { from: from, to: to, axis: axis }; - } - - function drawBackground() { - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); - ctx.fillRect(0, 0, plotWidth, plotHeight); - ctx.restore(); - } - - function drawGrid() { - var i, axes, bw, bc; - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // draw markings - var markings = options.grid.markings; - if (markings) { - if ($.isFunction(markings)) { - axes = plot.getAxes(); - // xmin etc. is backwards compatibility, to be - // removed in the future - axes.xmin = axes.xaxis.min; - axes.xmax = axes.xaxis.max; - axes.ymin = axes.yaxis.min; - axes.ymax = axes.yaxis.max; - - markings = markings(axes); - } - - for (i = 0; i < markings.length; ++i) { - var m = markings[i], - xrange = extractRange(m, "x"), - yrange = extractRange(m, "y"); - - // fill in missing - if (xrange.from == null) - xrange.from = xrange.axis.min; - if (xrange.to == null) - xrange.to = xrange.axis.max; - if (yrange.from == null) - yrange.from = yrange.axis.min; - if (yrange.to == null) - yrange.to = yrange.axis.max; - - // clip - if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || - yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) - continue; - - xrange.from = Math.max(xrange.from, xrange.axis.min); - xrange.to = Math.min(xrange.to, xrange.axis.max); - yrange.from = Math.max(yrange.from, yrange.axis.min); - yrange.to = Math.min(yrange.to, yrange.axis.max); - - var xequal = xrange.from === xrange.to, - yequal = yrange.from === yrange.to; - - if (xequal && yequal) { - continue; - } - - // then draw - xrange.from = Math.floor(xrange.axis.p2c(xrange.from)); - xrange.to = Math.floor(xrange.axis.p2c(xrange.to)); - yrange.from = Math.floor(yrange.axis.p2c(yrange.from)); - yrange.to = Math.floor(yrange.axis.p2c(yrange.to)); - - if (xequal || yequal) { - var lineWidth = m.lineWidth || options.grid.markingsLineWidth, - subPixel = lineWidth % 2 ? 0.5 : 0; - ctx.beginPath(); - ctx.strokeStyle = m.color || options.grid.markingsColor; - ctx.lineWidth = lineWidth; - if (xequal) { - ctx.moveTo(xrange.to + subPixel, yrange.from); - ctx.lineTo(xrange.to + subPixel, yrange.to); - } else { - ctx.moveTo(xrange.from, yrange.to + subPixel); - ctx.lineTo(xrange.to, yrange.to + subPixel); - } - ctx.stroke(); - } else { - ctx.fillStyle = m.color || options.grid.markingsColor; - ctx.fillRect(xrange.from, yrange.to, - xrange.to - xrange.from, - yrange.from - yrange.to); - } - } - } - - // draw the ticks - axes = allAxes(); - bw = options.grid.borderWidth; - - for (var j = 0; j < axes.length; ++j) { - var axis = axes[j], box = axis.box, - t = axis.tickLength, x, y, xoff, yoff; - if (!axis.show || axis.ticks.length == 0) - continue; - - ctx.lineWidth = 1; - - // find the edges - if (axis.direction == "x") { - x = 0; - if (t == "full") - y = (axis.position == "top" ? 0 : plotHeight); - else - y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); - } - else { - y = 0; - if (t == "full") - x = (axis.position == "left" ? 0 : plotWidth); - else - x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); - } - - // draw tick bar - if (!axis.innermost) { - ctx.strokeStyle = axis.options.color; - ctx.beginPath(); - xoff = yoff = 0; - if (axis.direction == "x") - xoff = plotWidth + 1; - else - yoff = plotHeight + 1; - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") { - y = Math.floor(y) + 0.5; - } else { - x = Math.floor(x) + 0.5; - } - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - ctx.stroke(); - } - - // draw ticks - - ctx.strokeStyle = axis.options.tickColor; - - ctx.beginPath(); - for (i = 0; i < axis.ticks.length; ++i) { - var v = axis.ticks[i].v; - - xoff = yoff = 0; - - if (isNaN(v) || v < axis.min || v > axis.max - // skip those lying on the axes if we got a border - || (t == "full" - && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) - && (v == axis.min || v == axis.max))) - continue; - - if (axis.direction == "x") { - x = axis.p2c(v); - yoff = t == "full" ? -plotHeight : t; - - if (axis.position == "top") - yoff = -yoff; - } - else { - y = axis.p2c(v); - xoff = t == "full" ? -plotWidth : t; - - if (axis.position == "left") - xoff = -xoff; - } - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") - x = Math.floor(x) + 0.5; - else - y = Math.floor(y) + 0.5; - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - } - - ctx.stroke(); - } - - - // draw border - if (bw) { - // If either borderWidth or borderColor is an object, then draw the border - // line by line instead of as one rectangle - bc = options.grid.borderColor; - if(typeof bw == "object" || typeof bc == "object") { - if (typeof bw !== "object") { - bw = {top: bw, right: bw, bottom: bw, left: bw}; - } - if (typeof bc !== "object") { - bc = {top: bc, right: bc, bottom: bc, left: bc}; - } - - if (bw.top > 0) { - ctx.strokeStyle = bc.top; - ctx.lineWidth = bw.top; - ctx.beginPath(); - ctx.moveTo(0 - bw.left, 0 - bw.top/2); - ctx.lineTo(plotWidth, 0 - bw.top/2); - ctx.stroke(); - } - - if (bw.right > 0) { - ctx.strokeStyle = bc.right; - ctx.lineWidth = bw.right; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); - ctx.lineTo(plotWidth + bw.right / 2, plotHeight); - ctx.stroke(); - } - - if (bw.bottom > 0) { - ctx.strokeStyle = bc.bottom; - ctx.lineWidth = bw.bottom; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); - ctx.lineTo(0, plotHeight + bw.bottom / 2); - ctx.stroke(); - } - - if (bw.left > 0) { - ctx.strokeStyle = bc.left; - ctx.lineWidth = bw.left; - ctx.beginPath(); - ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); - ctx.lineTo(0- bw.left/2, 0); - ctx.stroke(); - } - } - else { - ctx.lineWidth = bw; - ctx.strokeStyle = options.grid.borderColor; - ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); - } - } - - ctx.restore(); - } - - function drawAxisLabels() { - - $.each(allAxes(), function (_, axis) { - var box = axis.box, - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = axis.options.font || "flot-tick-label tickLabel", - tick, x, y, halign, valign; - - // Remove text before checking for axis.show and ticks.length; - // otherwise plugins, like flot-tickrotor, that draw their own - // tick labels will end up with both theirs and the defaults. - - surface.removeText(layer); - - if (!axis.show || axis.ticks.length == 0) - return; - - for (var i = 0; i < axis.ticks.length; ++i) { - - tick = axis.ticks[i]; - if (!tick.label || tick.v < axis.min || tick.v > axis.max) - continue; - - if (axis.direction == "x") { - halign = "center"; - x = plotOffset.left + axis.p2c(tick.v); - if (axis.position == "bottom") { - y = box.top + box.padding; - } else { - y = box.top + box.height - box.padding; - valign = "bottom"; - } - } else { - valign = "middle"; - y = plotOffset.top + axis.p2c(tick.v); - if (axis.position == "left") { - x = box.left + box.width - box.padding; - halign = "right"; - } else { - x = box.left + box.padding; - } - } - - surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); - } - }); - } - - function drawSeries(series) { - if (series.lines.show) - drawSeriesLines(series); - if (series.bars.show) - drawSeriesBars(series); - if (series.points.show) - drawSeriesPoints(series); - } - - function drawSeriesLines(series) { - function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - prevx = null, prevy = null; - - ctx.beginPath(); - for (var i = ps; i < points.length; i += ps) { - var x1 = points[i - ps], y1 = points[i - ps + 1], - x2 = points[i], y2 = points[i + 1]; - - if (x1 == null || x2 == null) - continue; - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min) { - if (y2 < axisy.min) - continue; // line segment is outside - // compute new intersection point - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min) { - if (y1 < axisy.min) - continue; - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max) { - if (y2 > axisy.max) - continue; - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max) { - if (y1 > axisy.max) - continue; - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (x1 != prevx || y1 != prevy) - ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); - - prevx = x2; - prevy = y2; - ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); - } - ctx.stroke(); - } - - function plotLineArea(datapoints, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - bottom = Math.min(Math.max(0, axisy.min), axisy.max), - i = 0, top, areaOpen = false, - ypos = 1, segmentStart = 0, segmentEnd = 0; - - // we process each segment in two turns, first forward - // direction to sketch out top, then once we hit the - // end we go backwards to sketch the bottom - while (true) { - if (ps > 0 && i > points.length + ps) - break; - - i += ps; // ps is negative if going backwards - - var x1 = points[i - ps], - y1 = points[i - ps + ypos], - x2 = points[i], y2 = points[i + ypos]; - - if (areaOpen) { - if (ps > 0 && x1 != null && x2 == null) { - // at turning point - segmentEnd = i; - ps = -ps; - ypos = 2; - continue; - } - - if (ps < 0 && i == segmentStart + ps) { - // done with the reverse sweep - ctx.fill(); - areaOpen = false; - ps = -ps; - ypos = 1; - i = segmentStart = segmentEnd + ps; - continue; - } - } - - if (x1 == null || x2 == null) - continue; - - // clip x values - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (!areaOpen) { - // open area - ctx.beginPath(); - ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); - areaOpen = true; - } - - // now first check the case where both is outside - if (y1 >= axisy.max && y2 >= axisy.max) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); - continue; - } - else if (y1 <= axisy.min && y2 <= axisy.min) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); - continue; - } - - // else it's a bit more complicated, there might - // be a flat maxed out rectangle first, then a - // triangular cutout or reverse; to find these - // keep track of the current x values - var x1old = x1, x2old = x2; - - // clip the y values, without shortcutting, we - // go through all cases in turn - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // if the x value was changed we got a rectangle - // to fill - if (x1 != x1old) { - ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); - // it goes to (x1, y1), but we fill that below - } - - // fill triangular section, this sometimes result - // in redundant points if (x1, y1) hasn't changed - // from previous line to, but we just ignore that - ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - - // fill the other rectangle if it's there - if (x2 != x2old) { - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); - } - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - ctx.lineJoin = "round"; - - var lw = series.lines.lineWidth, - sw = series.shadowSize; - // FIXME: consider another form of shadow when filling is turned on - if (lw > 0 && sw > 0) { - // draw shadow as a thick and thin line with transparency - ctx.lineWidth = sw; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - // position shadow at angle from the mid of line - var angle = Math.PI/18; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); - ctx.lineWidth = sw/2; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); - if (fillStyle) { - ctx.fillStyle = fillStyle; - plotLineArea(series.datapoints, series.xaxis, series.yaxis); - } - - if (lw > 0) - plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); - ctx.restore(); - } - - function drawSeriesPoints(series) { - function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - var x = points[i], y = points[i + 1]; - if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - continue; - - ctx.beginPath(); - x = axisx.p2c(x); - y = axisy.p2c(y) + offset; - if (symbol == "circle") - ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); - else - symbol(ctx, x, y, radius, shadow); - ctx.closePath(); - - if (fillStyle) { - ctx.fillStyle = fillStyle; - ctx.fill(); - } - ctx.stroke(); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - var lw = series.points.lineWidth, - sw = series.shadowSize, - radius = series.points.radius, - symbol = series.points.symbol; - - // If the user sets the line width to 0, we change it to a very - // small value. A line width of 0 seems to force the default of 1. - // Doing the conditional here allows the shadow setting to still be - // optional even with a lineWidth of 0. - - if( lw == 0 ) - lw = 0.0001; - - if (lw > 0 && sw > 0) { - // draw shadow in two steps - var w = sw / 2; - ctx.lineWidth = w; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - plotPoints(series.datapoints, radius, null, w + w/2, true, - series.xaxis, series.yaxis, symbol); - - ctx.strokeStyle = "rgba(0,0,0,0.2)"; - plotPoints(series.datapoints, radius, null, w/2, true, - series.xaxis, series.yaxis, symbol); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - plotPoints(series.datapoints, radius, - getFillStyle(series.points, series.color), 0, false, - series.xaxis, series.yaxis, symbol); - ctx.restore(); - } - - function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { - var left, right, bottom, top, - drawLeft, drawRight, drawTop, drawBottom, - tmp; - - // in horizontal mode, we start the bar from the left - // instead of from the bottom so it appears to be - // horizontal rather than vertical - if (horizontal) { - drawBottom = drawRight = drawTop = true; - drawLeft = false; - left = b; - right = x; - top = y + barLeft; - bottom = y + barRight; - - // account for negative bars - if (right < left) { - tmp = right; - right = left; - left = tmp; - drawLeft = true; - drawRight = false; - } - } - else { - drawLeft = drawRight = drawTop = true; - drawBottom = false; - left = x + barLeft; - right = x + barRight; - bottom = b; - top = y; - - // account for negative bars - if (top < bottom) { - tmp = top; - top = bottom; - bottom = tmp; - drawBottom = true; - drawTop = false; - } - } - - // clip - if (right < axisx.min || left > axisx.max || - top < axisy.min || bottom > axisy.max) - return; - - if (left < axisx.min) { - left = axisx.min; - drawLeft = false; - } - - if (right > axisx.max) { - right = axisx.max; - drawRight = false; - } - - if (bottom < axisy.min) { - bottom = axisy.min; - drawBottom = false; - } - - if (top > axisy.max) { - top = axisy.max; - drawTop = false; - } - - left = axisx.p2c(left); - bottom = axisy.p2c(bottom); - right = axisx.p2c(right); - top = axisy.p2c(top); - - // fill the bar - if (fillStyleCallback) { - c.fillStyle = fillStyleCallback(bottom, top); - c.fillRect(left, top, right - left, bottom - top) - } - - // draw outline - if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { - c.beginPath(); - - // FIXME: inline moveTo is buggy with excanvas - c.moveTo(left, bottom); - if (drawLeft) - c.lineTo(left, top); - else - c.moveTo(left, top); - if (drawTop) - c.lineTo(right, top); - else - c.moveTo(right, top); - if (drawRight) - c.lineTo(right, bottom); - else - c.moveTo(right, bottom); - if (drawBottom) - c.lineTo(left, bottom); - else - c.moveTo(left, bottom); - c.stroke(); - } - } - - function drawSeriesBars(series) { - function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - if (points[i] == null) - continue; - drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // FIXME: figure out a way to add shadows (for instance along the right edge) - ctx.lineWidth = series.bars.lineWidth; - ctx.strokeStyle = series.color; - - var barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; - plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); - ctx.restore(); - } - - function getFillStyle(filloptions, seriesColor, bottom, top) { - var fill = filloptions.fill; - if (!fill) - return null; - - if (filloptions.fillColor) - return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); - - var c = $.color.parse(seriesColor); - c.a = typeof fill == "number" ? fill : 0.4; - c.normalize(); - return c.toString(); - } - - function insertLegend() { - - if (options.legend.container != null) { - $(options.legend.container).html(""); - } else { - placeholder.find(".legend").remove(); - } - - if (!options.legend.show) { - return; - } - - var fragments = [], entries = [], rowStarted = false, - lf = options.legend.labelFormatter, s, label; - - // Build a list of legend entries, with each having a label and a color - - for (var i = 0; i < series.length; ++i) { - s = series[i]; - if (s.label) { - label = lf ? lf(s.label, s) : s.label; - if (label) { - entries.push({ - label: label, - color: s.color - }); - } - } - } - - // Sort the legend using either the default or a custom comparator - - if (options.legend.sorted) { - if ($.isFunction(options.legend.sorted)) { - entries.sort(options.legend.sorted); - } else if (options.legend.sorted == "reverse") { - entries.reverse(); - } else { - var ascending = options.legend.sorted != "descending"; - entries.sort(function(a, b) { - return a.label == b.label ? 0 : ( - (a.label < b.label) != ascending ? 1 : -1 // Logical XOR - ); - }); - } - } - - // Generate markup for the list of entries, in their final order - - for (var i = 0; i < entries.length; ++i) { - - var entry = entries[i]; - - if (i % options.legend.noColumns == 0) { - if (rowStarted) - fragments.push(''); - fragments.push(''); - rowStarted = true; - } - - fragments.push( - '
    ' + - '' + entry.label + '' - ); - } - - if (rowStarted) - fragments.push(''); - - if (fragments.length == 0) - return; - - var table = '' + fragments.join("") + '
    '; - if (options.legend.container != null) - $(options.legend.container).html(table); - else { - var pos = "", - p = options.legend.position, - m = options.legend.margin; - if (m[0] == null) - m = [m, m]; - if (p.charAt(0) == "n") - pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; - else if (p.charAt(0) == "s") - pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; - if (p.charAt(1) == "e") - pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; - else if (p.charAt(1) == "w") - pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; - var legend = $('
    ' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
    ').appendTo(placeholder); - if (options.legend.backgroundOpacity != 0.0) { - // put in the transparent background - // separately to avoid blended labels and - // label boxes - var c = options.legend.backgroundColor; - if (c == null) { - c = options.grid.backgroundColor; - if (c && typeof c == "string") - c = $.color.parse(c); - else - c = $.color.extract(legend, 'background-color'); - c.a = 1; - c = c.toString(); - } - var div = legend.children(); - $('
    ').prependTo(legend).css('opacity', options.legend.backgroundOpacity); - } - } - } - - - // interactive features - - var highlights = [], - redrawTimeout = null; - - // returns the data item the mouse is over, or null if none is found - function findNearbyItem(mouseX, mouseY, seriesFilter) { - var maxDistance = options.grid.mouseActiveRadius, - smallestDistance = maxDistance * maxDistance + 1, - item = null, foundPoint = false, i, j, ps; - - for (i = series.length - 1; i >= 0; --i) { - if (!seriesFilter(series[i])) - continue; - - var s = series[i], - axisx = s.xaxis, - axisy = s.yaxis, - points = s.datapoints.points, - mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster - my = axisy.c2p(mouseY), - maxx = maxDistance / axisx.scale, - maxy = maxDistance / axisy.scale; - - ps = s.datapoints.pointsize; - // with inverse transforms, we can't use the maxx/maxy - // optimization, sadly - if (axisx.options.inverseTransform) - maxx = Number.MAX_VALUE; - if (axisy.options.inverseTransform) - maxy = Number.MAX_VALUE; - - if (s.lines.show || s.points.show) { - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1]; - if (x == null) - continue; - - // For points and lines, the cursor must be within a - // certain distance to the data point - if (x - mx > maxx || x - mx < -maxx || - y - my > maxy || y - my < -maxy) - continue; - - // We have to calculate distances in pixels, not in - // data units, because the scales of the axes may be different - var dx = Math.abs(axisx.p2c(x) - mouseX), - dy = Math.abs(axisy.p2c(y) - mouseY), - dist = dx * dx + dy * dy; // we save the sqrt - - // use <= to ensure last point takes precedence - // (last generally means on top of) - if (dist < smallestDistance) { - smallestDistance = dist; - item = [i, j / ps]; - } - } - } - - if (s.bars.show && !item) { // no other point can be nearby - - var barLeft, barRight; - - switch (s.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -s.bars.barWidth; - break; - default: - barLeft = -s.bars.barWidth / 2; - } - - barRight = barLeft + s.bars.barWidth; - - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1], b = points[j + 2]; - if (x == null) - continue; - - // for a bar graph, the cursor must be inside the bar - if (series[i].bars.horizontal ? - (mx <= Math.max(b, x) && mx >= Math.min(b, x) && - my >= y + barLeft && my <= y + barRight) : - (mx >= x + barLeft && mx <= x + barRight && - my >= Math.min(b, y) && my <= Math.max(b, y))) - item = [i, j / ps]; - } - } - } - - if (item) { - i = item[0]; - j = item[1]; - ps = series[i].datapoints.pointsize; - - return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), - dataIndex: j, - series: series[i], - seriesIndex: i }; - } - - return null; - } - - function onMouseMove(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return s["hoverable"] != false; }); - } - - function onMouseLeave(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return false; }); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e, - function (s) { return s["clickable"] != false; }); - } - - // trigger click or hover event (they send the same parameters - // so we share their code) - function triggerClickHoverEvent(eventname, event, seriesFilter) { - var offset = eventHolder.offset(), - canvasX = event.pageX - offset.left - plotOffset.left, - canvasY = event.pageY - offset.top - plotOffset.top, - pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); - - pos.pageX = event.pageX; - pos.pageY = event.pageY; - - var item = findNearbyItem(canvasX, canvasY, seriesFilter); - - if (item) { - // fill in mouse pos for any listeners out there - item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); - item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); - } - - if (options.grid.autoHighlight) { - // clear auto-highlights - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && - !(item && h.series == item.series && - h.point[0] == item.datapoint[0] && - h.point[1] == item.datapoint[1])) - unhighlight(h.series, h.point); - } - - if (item) - highlight(item.series, item.datapoint, eventname); - } - - placeholder.trigger(eventname, [ pos, item ]); - } - - function triggerRedrawOverlay() { - var t = options.interaction.redrawOverlayInterval; - if (t == -1) { // skip event queue - drawOverlay(); - return; - } - - if (!redrawTimeout) - redrawTimeout = setTimeout(drawOverlay, t); - } - - function drawOverlay() { - redrawTimeout = null; - - // draw highlights - octx.save(); - overlay.clear(); - octx.translate(plotOffset.left, plotOffset.top); - - var i, hi; - for (i = 0; i < highlights.length; ++i) { - hi = highlights[i]; - - if (hi.series.bars.show) - drawBarHighlight(hi.series, hi.point); - else - drawPointHighlight(hi.series, hi.point); - } - octx.restore(); - - executeHooks(hooks.drawOverlay, [octx]); - } - - function highlight(s, point, auto) { - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i == -1) { - highlights.push({ series: s, point: point, auto: auto }); - - triggerRedrawOverlay(); - } - else if (!auto) - highlights[i].auto = false; - } - - function unhighlight(s, point) { - if (s == null && point == null) { - highlights = []; - triggerRedrawOverlay(); - return; - } - - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i != -1) { - highlights.splice(i, 1); - - triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s, p) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s && h.point[0] == p[0] - && h.point[1] == p[1]) - return i; - } - return -1; - } - - function drawPointHighlight(series, point) { - var x = point[0], y = point[1], - axisx = series.xaxis, axisy = series.yaxis, - highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); - - if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - return; - - var pointRadius = series.points.radius + series.points.lineWidth / 2; - octx.lineWidth = pointRadius; - octx.strokeStyle = highlightColor; - var radius = 1.5 * pointRadius; - x = axisx.p2c(x); - y = axisy.p2c(y); - - octx.beginPath(); - if (series.points.symbol == "circle") - octx.arc(x, y, radius, 0, 2 * Math.PI, false); - else - series.points.symbol(octx, x, y, radius, false); - octx.closePath(); - octx.stroke(); - } - - function drawBarHighlight(series, point) { - var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), - fillStyle = highlightColor, - barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - octx.lineWidth = series.bars.lineWidth; - octx.strokeStyle = highlightColor; - - drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, - function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); - } - - function getColorOrGradient(spec, bottom, top, defaultColor) { - if (typeof spec == "string") - return spec; - else { - // assume this is a gradient spec; IE currently only - // supports a simple vertical gradient properly, so that's - // what we support too - var gradient = ctx.createLinearGradient(0, top, 0, bottom); - - for (var i = 0, l = spec.colors.length; i < l; ++i) { - var c = spec.colors[i]; - if (typeof c != "string") { - var co = $.color.parse(defaultColor); - if (c.brightness != null) - co = co.scale('rgb', c.brightness); - if (c.opacity != null) - co.a *= c.opacity; - c = co.toString(); - } - gradient.addColorStop(i / (l - 1), c); - } - - return gradient; - } - } - } - - // Add the plot function to the top level of the jQuery object - - $.plot = function(placeholder, data, options) { - //var t0 = new Date(); - var plot = new Plot($(placeholder), data, options, $.plot.plugins); - //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); - return plot; - }; - - $.plot.version = "0.8.3"; - - $.plot.plugins = []; - - // Also add the plot function as a chainable property - - $.fn.plot = function(data, options) { - return this.each(function() { - $.plot(this, data, options); - }); - }; - - // round to nearby lower multiple of base - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.min.js deleted file mode 100644 index 968d3ebd990..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;if(!$.fn.detach){$.fn.detach=function(){return this.each(function(){if(this.parentNode){this.parentNode.removeChild(this)}})}}function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;this.pixelRatio=devicePixelRatio/backingStoreRatio;this.resize(container.width(),container.height());this.textContainer=null;this.text={};this._textCache={}}Canvas.prototype.resize=function(width,height){if(width<=0||height<=0){throw new Error("Invalid dimensions for plot, width = "+width+", height = "+height)}var element=this.element,context=this.context,pixelRatio=this.pixelRatio;if(this.width!=width){element.width=width*pixelRatio;element.style.width=width+"px";this.width=width}if(this.height!=height){element.height=height*pixelRatio;element.style.height=height+"px";this.height=height}context.restore();context.save();context.scale(pixelRatio,pixelRatio)};Canvas.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)};Canvas.prototype.render=function(){var cache=this._textCache;for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layer=this.getTextLayer(layerKey),layerCache=cache[layerKey];layer.hide();for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){if(position.active){if(!position.rendered){layer.append(position.element);position.rendered=true}}else{positions.splice(i--,1);if(position.rendered){position.element.detach()}}}if(positions.length==0){delete styleCache[key]}}}}}layer.show()}}};Canvas.prototype.getTextLayer=function(classes){var layer=this.text[classes];if(layer==null){if(this.textContainer==null){this.textContainer=$("
    ").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)}layer=this.text[classes]=$("
    ").addClass(classes).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)}return layer};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px/"+font.lineHeight+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var element=$("
    ").html(text).css({position:"absolute","max-width":width,top:-9999}).appendTo(this.getTextLayer(layer));if(typeof font==="object"){element.css({font:textStyle,color:font.color})}else if(typeof font==="string"){element.addClass(font)}info=styleCache[text]={width:element.outerWidth(true),height:element.outerHeight(true),element:element,positions:[]};element.detach()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions;if(halign=="center"){x-=info.width/2}else if(halign=="right"){x-=info.width}if(valign=="middle"){y-=info.height/2}else if(valign=="bottom"){y-=info.height}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,rendered:false,element:positions.length?info.element.clone():info.element,x:x,y:y};positions.push(position);position.element.css({top:Math.round(y),left:Math.round(x),"text-align":halign})};Canvas.prototype.removeText=function(layer,x,y,text,font,angle){if(text==null){var layerCache=this._textCache[layer];if(layerCache!=null){for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){position.active=false}}}}}}}else{var positions=this.getTextInfo(layer,text,font,angle).positions;for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=false}}}};function Plot(placeholder,data_,options_,plugins){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false,zero:true},shadowSize:3,highlightColor:null},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1e3/60},hooks:{}},surface=null,overlay=null,eventHolder=null,ctx=null,octx=null,xaxes=[],yaxes=[],plotOffset={left:0,right:0,top:0,bottom:0},plotWidth=0,plotHeight=0,hooks={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},plot=this;plot.setData=setData;plot.setupGrid=setupGrid;plot.draw=draw;plot.getPlaceholder=function(){return placeholder};plot.getCanvas=function(){return surface.element};plot.getPlotOffset=function(){return plotOffset};plot.width=function(){return plotWidth};plot.height=function(){return plotHeight};plot.offset=function(){var o=eventHolder.offset();o.left+=plotOffset.left;o.top+=plotOffset.top;return o};plot.getData=function(){return series};plot.getAxes=function(){var res={},i;$.each(xaxes.concat(yaxes),function(_,axis){if(axis)res[axis.direction+(axis.n!=1?axis.n:"")+"axis"]=axis});return res};plot.getXAxes=function(){return xaxes};plot.getYAxes=function(){return yaxes};plot.c2p=canvasToAxisCoords;plot.p2c=axisToCanvasCoords;plot.getOptions=function(){return options};plot.highlight=highlight;plot.unhighlight=unhighlight;plot.triggerRedrawOverlay=triggerRedrawOverlay;plot.pointOffset=function(point){return{left:parseInt(xaxes[axisNumber(point,"x")-1].p2c(+point.x)+plotOffset.left,10),top:parseInt(yaxes[axisNumber(point,"y")-1].p2c(+point.y)+plotOffset.top,10)}};plot.shutdown=shutdown;plot.destroy=function(){shutdown();placeholder.removeData("plot").empty();series=[];options=null;surface=null;overlay=null;eventHolder=null;ctx=null;octx=null;xaxes=[];yaxes=[];hooks=null;highlights=[];plot=null};plot.resize=function(){var width=placeholder.width(),height=placeholder.height();surface.resize(width,height);overlay.resize(width,height)};plot.hooks=hooks;initPlugins(plot);parseOptions(options_);setupCanvases();setData(data_);setupGrid();draw();bindEvents();function executeHooks(hook,args){args=[plot].concat(args);for(var i=0;imaxIndex){maxIndex=sc}}}if(neededColors<=maxIndex){neededColors=maxIndex+1}var c,colors=[],colorPool=options.colors,colorPoolSize=colorPool.length,variation=0;for(i=0;i=0){if(variation<.5){variation=-variation-.2}else variation=0}else variation=-variation}colors[i]=c.scale("rgb",1+variation)}var colori=0,s;for(i=0;iaxis.datamax&&max!=fakeInfinity)axis.datamax=max}$.each(allAxes(),function(_,axis){axis.datamin=topSentry;axis.datamax=bottomSentry;axis.used=false});for(i=0;i0&&points[k-ps]!=null&&points[k-ps]!=points[k]&&points[k-ps+1]!=points[k+1]){for(m=0;mxmax)xmax=val}if(f.y){if(valymax)ymax=val}}}if(s.bars.show){var delta;switch(s.bars.align){case"left":delta=0;break;case"right":delta=-s.bars.barWidth;break;default:delta=-s.bars.barWidth/2}if(s.bars.horizontal){ymin+=delta;ymax+=delta+s.bars.barWidth}else{xmin+=delta;xmax+=delta+s.bars.barWidth}}updateAxis(s.xaxis,xmin,xmax);updateAxis(s.yaxis,ymin,ymax)}$.each(allAxes(),function(_,axis){if(axis.datamin==topSentry)axis.datamin=null;if(axis.datamax==bottomSentry)axis.datamax=null})}function setupCanvases(){placeholder.css("padding",0).children().filter(function(){return!$(this).hasClass("flot-overlay")&&!$(this).hasClass("flot-base")}).remove();if(placeholder.css("position")=="static")placeholder.css("position","relative");surface=new Canvas("flot-base",placeholder);overlay=new Canvas("flot-overlay",placeholder);ctx=surface.context;octx=overlay.context;eventHolder=$(overlay.element).unbind();var existing=placeholder.data("plot");if(existing){existing.shutdown();overlay.clear()}placeholder.data("plot",plot)}function bindEvents(){if(options.grid.hoverable){eventHolder.mousemove(onMouseMove);eventHolder.bind("mouseleave",onMouseLeave)}if(options.grid.clickable)eventHolder.click(onClick);executeHooks(hooks.bindEvents,[eventHolder])}function shutdown(){if(redrawTimeout)clearTimeout(redrawTimeout);eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mouseleave",onMouseLeave);eventHolder.unbind("click",onClick);executeHooks(hooks.shutdown,[eventHolder])}function setTransformationHelpers(axis){function identity(x){return x}var s,m,t=axis.options.transform||identity,it=axis.options.inverseTransform;if(axis.direction=="x"){s=axis.scale=plotWidth/Math.abs(t(axis.max)-t(axis.min));m=Math.min(t(axis.max),t(axis.min))}else{s=axis.scale=plotHeight/Math.abs(t(axis.max)-t(axis.min));s=-s;m=Math.max(t(axis.max),t(axis.min))}if(t==identity)axis.p2c=function(p){return(p-m)*s};else axis.p2c=function(p){return(t(p)-m)*s};if(!it)axis.c2p=function(c){return m+c/s};else axis.c2p=function(c){return it(m+c/s)}}function measureTickLabels(axis){var opts=axis.options,ticks=axis.ticks||[],labelWidth=opts.labelWidth||0,labelHeight=opts.labelHeight||0,maxWidth=labelWidth||(axis.direction=="x"?Math.floor(surface.width/(ticks.length||1)):null),legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=opts.font||"flot-tick-label tickLabel";for(var i=0;i=0;--i)allocateAxisBoxFirstPhase(allocatedAxes[i]);adjustLayoutForThingsStickingOut();$.each(allocatedAxes,function(_,axis){allocateAxisBoxSecondPhase(axis)})}plotWidth=surface.width-plotOffset.left-plotOffset.right;plotHeight=surface.height-plotOffset.bottom-plotOffset.top;$.each(axes,function(_,axis){setTransformationHelpers(axis)});if(showGrid){drawAxisLabels()}insertLegend()}function setRange(axis){var opts=axis.options,min=+(opts.min!=null?opts.min:axis.datamin),max=+(opts.max!=null?opts.max:axis.datamax),delta=max-min;if(delta==0){var widen=max==0?1:.01;if(opts.min==null)min-=widen;if(opts.max==null||opts.min!=null)max+=widen}else{var margin=opts.autoscaleMargin;if(margin!=null){if(opts.min==null){min-=delta*margin;if(min<0&&axis.datamin!=null&&axis.datamin>=0)min=0}if(opts.max==null){max+=delta*margin;if(max>0&&axis.datamax!=null&&axis.datamax<=0)max=0}}}axis.min=min;axis.max=max}function setupTickGeneration(axis){var opts=axis.options;var noTicks;if(typeof opts.ticks=="number"&&opts.ticks>0)noTicks=opts.ticks;else noTicks=.3*Math.sqrt(axis.direction=="x"?surface.width:surface.height);var delta=(axis.max-axis.min)/noTicks,dec=-Math.floor(Math.log(delta)/Math.LN10),maxDec=opts.tickDecimals;if(maxDec!=null&&dec>maxDec){dec=maxDec}var magn=Math.pow(10,-dec),norm=delta/magn,size;if(norm<1.5){size=1}else if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec}}else if(norm<7.5){size=5}else{size=10}size*=magn;if(opts.minTickSize!=null&&size0){if(opts.min==null)axis.min=Math.min(axis.min,niceTicks[0]);if(opts.max==null&&niceTicks.length>1)axis.max=Math.max(axis.max,niceTicks[niceTicks.length-1])}axis.tickGenerator=function(axis){var ticks=[],v,i;for(i=0;i1&&/\..*0$/.test((ts[1]-ts[0]).toFixed(extraDec))))axis.tickDecimals=extraDec}}}}function setTicks(axis){var oticks=axis.options.ticks,ticks=[];if(oticks==null||typeof oticks=="number"&&oticks>0)ticks=axis.tickGenerator(axis);else if(oticks){if($.isFunction(oticks))ticks=oticks(axis);else ticks=oticks}var i,v;axis.ticks=[];for(i=0;i1)label=t[1]}else v=+t;if(label==null)label=axis.tickFormatter(v,axis);if(!isNaN(v))axis.ticks.push({v:v,label:label})}}function snapRangeToTicks(axis,ticks){if(axis.options.autoscaleMargin&&ticks.length>0){if(axis.options.min==null)axis.min=Math.min(axis.min,ticks[0].v);if(axis.options.max==null&&ticks.length>1)axis.max=Math.max(axis.max,ticks[ticks.length-1].v)}}function draw(){surface.clear();executeHooks(hooks.drawBackground,[ctx]);var grid=options.grid;if(grid.show&&grid.backgroundColor)drawBackground();if(grid.show&&!grid.aboveData){drawGrid()}for(var i=0;ito){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function drawBackground(){ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);ctx.restore()}function drawGrid(){var i,axes,bw,bc;ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var markings=options.grid.markings;if(markings){if($.isFunction(markings)){axes=plot.getAxes();axes.xmin=axes.xaxis.min;axes.xmax=axes.xaxis.max;axes.ymin=axes.yaxis.min;axes.ymax=axes.yaxis.max;markings=markings(axes)}for(i=0;ixrange.axis.max||yrange.toyrange.axis.max)continue;xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max);yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);var xequal=xrange.from===xrange.to,yequal=yrange.from===yrange.to;if(xequal&&yequal){continue}xrange.from=Math.floor(xrange.axis.p2c(xrange.from));xrange.to=Math.floor(xrange.axis.p2c(xrange.to));yrange.from=Math.floor(yrange.axis.p2c(yrange.from));yrange.to=Math.floor(yrange.axis.p2c(yrange.to));if(xequal||yequal){var lineWidth=m.lineWidth||options.grid.markingsLineWidth,subPixel=lineWidth%2?.5:0;ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=lineWidth;if(xequal){ctx.moveTo(xrange.to+subPixel,yrange.from);ctx.lineTo(xrange.to+subPixel,yrange.to)}else{ctx.moveTo(xrange.from,yrange.to+subPixel);ctx.lineTo(xrange.to,yrange.to+subPixel)}ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;jaxis.max||t=="full"&&(typeof bw=="object"&&bw[axis.position]>0||bw>0)&&(v==axis.min||v==axis.max))continue;if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top")yoff=-yoff}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left")xoff=-xoff}if(ctx.lineWidth==1){if(axis.direction=="x")x=Math.floor(x)+.5;else y=Math.floor(y)+.5}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0)return;for(var i=0;iaxis.max)continue;if(axis.direction=="x"){halign="center";x=plotOffset.left+axis.p2c(tick.v);if(axis.position=="bottom"){y=box.top+box.padding}else{y=box.top+box.height-box.padding;valign="bottom"}}else{valign="middle";y=plotOffset.top+axis.p2c(tick.v);if(axis.position=="left"){x=box.left+box.width-box.padding;halign="right"}else{x=box.left+box.padding}}surface.addText(layer,x,y,tick.label,font,null,null,halign,valign)}})}function drawSeries(series){if(series.lines.show)drawSeriesLines(series);if(series.bars.show)drawSeriesBars(series);if(series.points.show)drawSeriesPoints(series)}function drawSeriesLines(series){function plotLine(datapoints,xoffset,yoffset,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,prevx=null,prevy=null;ctx.beginPath();for(var i=ps;i=y2&&y1>axisy.max){if(y2>axisy.max)continue;x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max){if(y1>axisy.max)continue;x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(x1!=prevx||y1!=prevy)ctx.moveTo(axisx.p2c(x1)+xoffset,axisy.p2c(y1)+yoffset);prevx=x2;prevy=y2;ctx.lineTo(axisx.p2c(x2)+xoffset,axisy.p2c(y2)+yoffset)}ctx.stroke()}function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,bottom=Math.min(Math.max(0,axisy.min),axisy.max),i=0,top,areaOpen=false,ypos=1,segmentStart=0,segmentEnd=0;while(true){if(ps>0&&i>points.length+ps)break;i+=ps;var x1=points[i-ps],y1=points[i-ps+ypos],x2=points[i],y2=points[i+ypos];if(areaOpen){if(ps>0&&x1!=null&&x2==null){segmentEnd=i;ps=-ps;ypos=2;continue}if(ps<0&&i==segmentStart+ps){ctx.fill();areaOpen=false;ps=-ps;ypos=1;i=segmentStart=segmentEnd+ps;continue}}if(x1==null||x2==null)continue;if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true}if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));continue}else if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));continue}var x1old=x1,x2old=x2;if(y1<=y2&&y1=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1!=x1old){ctx.lineTo(axisx.p2c(x1old),axisy.p2c(y1))}ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(y2))}}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){ctx.lineWidth=sw;ctx.strokeStyle="rgba(0,0,0,0.1)";var angle=Math.PI/18;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/2),Math.cos(angle)*(lw/2+sw/2),series.xaxis,series.yaxis);ctx.lineWidth=sw/2;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/4),Math.cos(angle)*(lw/2+sw/4),series.xaxis,series.yaxis)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis)}if(lw>0)plotLine(series.datapoints,0,0,series.xaxis,series.yaxis);ctx.restore()}function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,shadow,axisx,axisy,symbol){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;iaxisx.max||yaxisy.max)continue;ctx.beginPath();x=axisx.p2c(x);y=axisy.p2c(y)+offset;if(symbol=="circle")ctx.arc(x,y,radius,0,shadow?Math.PI:Math.PI*2,false);else symbol(ctx,x,y,radius,shadow);ctx.closePath();if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill()}ctx.stroke()}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.points.lineWidth,sw=series.shadowSize,radius=series.points.radius,symbol=series.points.symbol;if(lw==0)lw=1e-4;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,true,series.xaxis,series.yaxis,symbol);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,true,series.xaxis,series.yaxis,symbol)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,false,series.xaxis,series.yaxis,symbol);ctx.restore()}function drawBar(x,y,b,barLeft,barRight,fillStyleCallback,axisx,axisy,c,horizontal,lineWidth){var left,right,bottom,top,drawLeft,drawRight,drawTop,drawBottom,tmp;if(horizontal){drawBottom=drawRight=drawTop=true;drawLeft=false;left=b;right=x;top=y+barLeft;bottom=y+barRight;if(rightaxisx.max||topaxisy.max)return;if(leftaxisx.max){right=axisx.max;drawRight=false}if(bottomaxisy.max){top=axisy.max;drawTop=false}left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.fillStyle=fillStyleCallback(bottom,top);c.fillRect(left,top,right-left,bottom-top)}if(lineWidth>0&&(drawLeft||drawRight||drawTop||drawBottom)){c.beginPath();c.moveTo(left,bottom);if(drawLeft)c.lineTo(left,top);else c.moveTo(left,top);if(drawTop)c.lineTo(right,top);else c.moveTo(right,top);if(drawRight)c.lineTo(right,bottom);else c.moveTo(right,bottom);if(drawBottom)c.lineTo(left,bottom);else c.moveTo(left,bottom);c.stroke()}}function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,fillStyleCallback,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i");fragments.push("");rowStarted=true}fragments.push('
    '+''+entry.label+"")}if(rowStarted)fragments.push("");if(fragments.length==0)return;var table=''+fragments.join("")+"
    ";if(options.legend.container!=null)$(options.legend.container).html(table);else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null)m=[m,m];if(p.charAt(0)=="n")pos+="top:"+(m[1]+plotOffset.top)+"px;";else if(p.charAt(0)=="s")pos+="bottom:"+(m[1]+plotOffset.bottom)+"px;";if(p.charAt(1)=="e")pos+="right:"+(m[0]+plotOffset.right)+"px;";else if(p.charAt(1)=="w")pos+="left:"+(m[0]+plotOffset.left)+"px;";var legend=$('
    '+table.replace('style="','style="position:absolute;'+pos+";")+"
    ").appendTo(placeholder);if(options.legend.backgroundOpacity!=0){var c=options.legend.backgroundColor;if(c==null){c=options.grid.backgroundColor;if(c&&typeof c=="string")c=$.color.parse(c);else c=$.color.extract(legend,"background-color");c.a=1;c=c.toString()}var div=legend.children();$('
    ').prependTo(legend).css("opacity",options.legend.backgroundOpacity)}}}var highlights=[],redrawTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,smallestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j,ps;for(i=series.length-1;i>=0;--i){if(!seriesFilter(series[i]))continue;var s=series[i],axisx=s.xaxis,axisy=s.yaxis,points=s.datapoints.points,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale;ps=s.datapoints.pointsize;if(axisx.options.inverseTransform)maxx=Number.MAX_VALUE;if(axisy.options.inverseTransform)maxy=Number.MAX_VALUE;if(s.lines.show||s.points.show){for(j=0;jmaxx||x-mx<-maxx||y-my>maxy||y-my<-maxy)continue;var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist=Math.min(b,x)&&my>=y+barLeft&&my<=y+barRight:mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(b,y)&&my<=Math.max(b,y))item=[i,j/ps]}}}if(item){i=item[0];j=item[1];ps=series[i].datapoints.pointsize;return{datapoint:series[i].datapoints.points.slice(j*ps,(j+1)*ps),dataIndex:j,series:series[i],seriesIndex:i}}return null}function onMouseMove(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return s["hoverable"]!=false})}function onMouseLeave(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return false})}function onClick(e){triggerClickHoverEvent("plotclick",e,function(s){return s["clickable"]!=false})}function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top,pos=canvasToAxisCoords({left:canvasX,top:canvasY});pos.pageX=event.pageX;pos.pageY=event.pageY;var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left,10);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top,10)}if(options.grid.autoHighlight){for(var i=0;iaxisx.max||yaxisy.max)return;var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=highlightColor;var radius=1.5*pointRadius;x=axisx.p2c(x);y=axisy.p2c(y);octx.beginPath();if(series.points.symbol=="circle")octx.arc(x,y,radius,0,2*Math.PI,false);else series.points.symbol(octx,x,y,radius,false);octx.closePath();octx.stroke()}function drawBarHighlight(series,point){var highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString(),fillStyle=highlightColor,barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=highlightColor;drawBar(point[0],point[1],point[2]||0,barLeft,barLeft+series.bars.barWidth,function(){return fillStyle},series.xaxis,series.yaxis,octx,series.bars.horizontal,series.bars.lineWidth)}function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string")return spec;else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY) max) { - // make sure min < max - var tmp = min; - min = max; - max = tmp; - } - - //Check that we are in panRange - if (pr) { - if (pr[0] != null && min < pr[0]) { - min = pr[0]; - } - if (pr[1] != null && max > pr[1]) { - max = pr[1]; - } - } - - var range = max - min; - if (zr && - ((zr[0] != null && range < zr[0] && amount >1) || - (zr[1] != null && range > zr[1] && amount <1))) - return; - - opts.min = min; - opts.max = max; - }); - - plot.setupGrid(); - plot.draw(); - - if (!args.preventEvent) - plot.getPlaceholder().trigger("plotzoom", [ plot, args ]); - }; - - plot.pan = function (args) { - var delta = { - x: +args.left, - y: +args.top - }; - - if (isNaN(delta.x)) - delta.x = 0; - if (isNaN(delta.y)) - delta.y = 0; - - $.each(plot.getAxes(), function (_, axis) { - var opts = axis.options, - min, max, d = delta[axis.direction]; - - min = axis.c2p(axis.p2c(axis.min) + d), - max = axis.c2p(axis.p2c(axis.max) + d); - - var pr = opts.panRange; - if (pr === false) // no panning on this axis - return; - - if (pr) { - // check whether we hit the wall - if (pr[0] != null && pr[0] > min) { - d = pr[0] - min; - min += d; - max += d; - } - - if (pr[1] != null && pr[1] < max) { - d = pr[1] - max; - min += d; - max += d; - } - } - - opts.min = min; - opts.max = max; - }); - - plot.setupGrid(); - plot.draw(); - - if (!args.preventEvent) - plot.getPlaceholder().trigger("plotpan", [ plot, args ]); - }; - - function shutdown(plot, eventHolder) { - eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick); - eventHolder.unbind("mousewheel", onMouseWheel); - eventHolder.unbind("dragstart", onDragStart); - eventHolder.unbind("drag", onDrag); - eventHolder.unbind("dragend", onDragEnd); - if (panTimeout) - clearTimeout(panTimeout); - } - - plot.hooks.bindEvents.push(bindEvents); - plot.hooks.shutdown.push(shutdown); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'navigate', - version: '1.3' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.navigate.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.navigate.min.js deleted file mode 100644 index 7288a23fab3..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.navigate.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY)max){var tmp=min;min=max;max=tmp}if(pr){if(pr[0]!=null&&minpr[1]){max=pr[1]}}var range=max-min;if(zr&&(zr[0]!=null&&range1||zr[1]!=null&&range>zr[1]&&amount<1))return;opts.min=min;opts.max=max});plot.setupGrid();plot.draw();if(!args.preventEvent)plot.getPlaceholder().trigger("plotzoom",[plot,args])};plot.pan=function(args){var delta={x:+args.left,y:+args.top};if(isNaN(delta.x))delta.x=0;if(isNaN(delta.y))delta.y=0;$.each(plot.getAxes(),function(_,axis){var opts=axis.options,min,max,d=delta[axis.direction];min=axis.c2p(axis.p2c(axis.min)+d),max=axis.c2p(axis.p2c(axis.max)+d);var pr=opts.panRange;if(pr===false)return;if(pr){if(pr[0]!=null&&pr[0]>min){d=pr[0]-min;min+=d;max+=d}if(pr[1]!=null&&pr[1] 1) { - options.series.pie.tilt = 1; - } else if (options.series.pie.tilt < 0) { - options.series.pie.tilt = 0; - } - } - }); - - plot.hooks.bindEvents.push(function(plot, eventHolder) { - var options = plot.getOptions(); - if (options.series.pie.show) { - if (options.grid.hoverable) { - eventHolder.unbind("mousemove").mousemove(onMouseMove); - } - if (options.grid.clickable) { - eventHolder.unbind("click").click(onClick); - } - } - }); - - plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) { - var options = plot.getOptions(); - if (options.series.pie.show) { - processDatapoints(plot, series, data, datapoints); - } - }); - - plot.hooks.drawOverlay.push(function(plot, octx) { - var options = plot.getOptions(); - if (options.series.pie.show) { - drawOverlay(plot, octx); - } - }); - - plot.hooks.draw.push(function(plot, newCtx) { - var options = plot.getOptions(); - if (options.series.pie.show) { - draw(plot, newCtx); - } - }); - - function processDatapoints(plot, series, datapoints) { - if (!processed) { - processed = true; - canvas = plot.getCanvas(); - target = $(canvas).parent(); - options = plot.getOptions(); - plot.setData(combine(plot.getData())); - } - } - - function combine(data) { - - var total = 0, - combined = 0, - numCombined = 0, - color = options.series.pie.combine.color, - newdata = []; - - // Fix up the raw data from Flot, ensuring the data is numeric - - for (var i = 0; i < data.length; ++i) { - - var value = data[i].data; - - // If the data is an array, we'll assume that it's a standard - // Flot x-y pair, and are concerned only with the second value. - - // Note how we use the original array, rather than creating a - // new one; this is more efficient and preserves any extra data - // that the user may have stored in higher indexes. - - if ($.isArray(value) && value.length == 1) { - value = value[0]; - } - - if ($.isArray(value)) { - // Equivalent to $.isNumeric() but compatible with jQuery < 1.7 - if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) { - value[1] = +value[1]; - } else { - value[1] = 0; - } - } else if (!isNaN(parseFloat(value)) && isFinite(value)) { - value = [1, +value]; - } else { - value = [1, 0]; - } - - data[i].data = [value]; - } - - // Sum up all the slices, so we can calculate percentages for each - - for (var i = 0; i < data.length; ++i) { - total += data[i].data[0][1]; - } - - // Count the number of slices with percentages below the combine - // threshold; if it turns out to be just one, we won't combine. - - for (var i = 0; i < data.length; ++i) { - var value = data[i].data[0][1]; - if (value / total <= options.series.pie.combine.threshold) { - combined += value; - numCombined++; - if (!color) { - color = data[i].color; - } - } - } - - for (var i = 0; i < data.length; ++i) { - var value = data[i].data[0][1]; - if (numCombined < 2 || value / total > options.series.pie.combine.threshold) { - newdata.push( - $.extend(data[i], { /* extend to allow keeping all other original data values - and using them e.g. in labelFormatter. */ - data: [[1, value]], - color: data[i].color, - label: data[i].label, - angle: value * Math.PI * 2 / total, - percent: value / (total / 100) - }) - ); - } - } - - if (numCombined > 1) { - newdata.push({ - data: [[1, combined]], - color: color, - label: options.series.pie.combine.label, - angle: combined * Math.PI * 2 / total, - percent: combined / (total / 100) - }); - } - - return newdata; - } - - function draw(plot, newCtx) { - - if (!target) { - return; // if no series were passed - } - - var canvasWidth = plot.getPlaceholder().width(), - canvasHeight = plot.getPlaceholder().height(), - legendWidth = target.children().filter(".legend").children().width() || 0; - - ctx = newCtx; - - // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE! - - // When combining smaller slices into an 'other' slice, we need to - // add a new series. Since Flot gives plugins no way to modify the - // list of series, the pie plugin uses a hack where the first call - // to processDatapoints results in a call to setData with the new - // list of series, then subsequent processDatapoints do nothing. - - // The plugin-global 'processed' flag is used to control this hack; - // it starts out false, and is set to true after the first call to - // processDatapoints. - - // Unfortunately this turns future setData calls into no-ops; they - // call processDatapoints, the flag is true, and nothing happens. - - // To fix this we'll set the flag back to false here in draw, when - // all series have been processed, so the next sequence of calls to - // processDatapoints once again starts out with a slice-combine. - // This is really a hack; in 0.9 we need to give plugins a proper - // way to modify series before any processing begins. - - processed = false; - - // calculate maximum radius and center point - - maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2; - centerTop = canvasHeight / 2 + options.series.pie.offset.top; - centerLeft = canvasWidth / 2; - - if (options.series.pie.offset.left == "auto") { - if (options.legend.position.match("w")) { - centerLeft += legendWidth / 2; - } else { - centerLeft -= legendWidth / 2; - } - if (centerLeft < maxRadius) { - centerLeft = maxRadius; - } else if (centerLeft > canvasWidth - maxRadius) { - centerLeft = canvasWidth - maxRadius; - } - } else { - centerLeft += options.series.pie.offset.left; - } - - var slices = plot.getData(), - attempts = 0; - - // Keep shrinking the pie's radius until drawPie returns true, - // indicating that all the labels fit, or we try too many times. - - do { - if (attempts > 0) { - maxRadius *= REDRAW_SHRINK; - } - attempts += 1; - clear(); - if (options.series.pie.tilt <= 0.8) { - drawShadow(); - } - } while (!drawPie() && attempts < REDRAW_ATTEMPTS) - - if (attempts >= REDRAW_ATTEMPTS) { - clear(); - target.prepend("
    Could not draw pie with labels contained inside canvas
    "); - } - - if (plot.setSeries && plot.insertLegend) { - plot.setSeries(slices); - plot.insertLegend(); - } - - // we're actually done at this point, just defining internal functions at this point - - function clear() { - ctx.clearRect(0, 0, canvasWidth, canvasHeight); - target.children().filter(".pieLabel, .pieLabelBackground").remove(); - } - - function drawShadow() { - - var shadowLeft = options.series.pie.shadow.left; - var shadowTop = options.series.pie.shadow.top; - var edge = 10; - var alpha = options.series.pie.shadow.alpha; - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) { - return; // shadow would be outside canvas, so don't draw it - } - - ctx.save(); - ctx.translate(shadowLeft,shadowTop); - ctx.globalAlpha = alpha; - ctx.fillStyle = "#000"; - - // center and rotate to starting position - - ctx.translate(centerLeft,centerTop); - ctx.scale(1, options.series.pie.tilt); - - //radius -= edge; - - for (var i = 1; i <= edge; i++) { - ctx.beginPath(); - ctx.arc(0, 0, radius, 0, Math.PI * 2, false); - ctx.fill(); - radius -= i; - } - - ctx.restore(); - } - - function drawPie() { - - var startAngle = Math.PI * options.series.pie.startAngle; - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - // center and rotate to starting position - - ctx.save(); - ctx.translate(centerLeft,centerTop); - ctx.scale(1, options.series.pie.tilt); - //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera - - // draw slices - - ctx.save(); - var currentAngle = startAngle; - for (var i = 0; i < slices.length; ++i) { - slices[i].startAngle = currentAngle; - drawSlice(slices[i].angle, slices[i].color, true); - } - ctx.restore(); - - // draw slice outlines - - if (options.series.pie.stroke.width > 0) { - ctx.save(); - ctx.lineWidth = options.series.pie.stroke.width; - currentAngle = startAngle; - for (var i = 0; i < slices.length; ++i) { - drawSlice(slices[i].angle, options.series.pie.stroke.color, false); - } - ctx.restore(); - } - - // draw donut hole - - drawDonutHole(ctx); - - ctx.restore(); - - // Draw the labels, returning true if they fit within the plot - - if (options.series.pie.label.show) { - return drawLabels(); - } else return true; - - function drawSlice(angle, color, fill) { - - if (angle <= 0 || isNaN(angle)) { - return; - } - - if (fill) { - ctx.fillStyle = color; - } else { - ctx.strokeStyle = color; - ctx.lineJoin = "round"; - } - - ctx.beginPath(); - if (Math.abs(angle - Math.PI * 2) > 0.000000001) { - ctx.moveTo(0, 0); // Center of the pie - } - - //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera - ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false); - ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false); - ctx.closePath(); - //ctx.rotate(angle); // This doesn't work properly in Opera - currentAngle += angle; - - if (fill) { - ctx.fill(); - } else { - ctx.stroke(); - } - } - - function drawLabels() { - - var currentAngle = startAngle; - var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius; - - for (var i = 0; i < slices.length; ++i) { - if (slices[i].percent >= options.series.pie.label.threshold * 100) { - if (!drawLabel(slices[i], currentAngle, i)) { - return false; - } - } - currentAngle += slices[i].angle; - } - - return true; - - function drawLabel(slice, startAngle, index) { - - if (slice.data[0][1] == 0) { - return true; - } - - // format label text - - var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; - - if (lf) { - text = lf(slice.label, slice); - } else { - text = slice.label; - } - - if (plf) { - text = plf(text, slice); - } - - var halfAngle = ((startAngle + slice.angle) + startAngle) / 2; - var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); - var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; - - var html = "" + text + ""; - target.append(html); - - var label = target.children("#pieLabel" + index); - var labelTop = (y - label.height() / 2); - var labelLeft = (x - label.width() / 2); - - label.css("top", labelTop); - label.css("left", labelLeft); - - // check to make sure that the label is not outside the canvas - - if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) { - return false; - } - - if (options.series.pie.label.background.opacity != 0) { - - // put in the transparent background separately to avoid blended labels and label boxes - - var c = options.series.pie.label.background.color; - - if (c == null) { - c = slice.color; - } - - var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;"; - $("
    ") - .css("opacity", options.series.pie.label.background.opacity) - .insertBefore(label); - } - - return true; - } // end individual label function - } // end drawLabels function - } // end drawPie function - } // end draw function - - // Placed here because it needs to be accessed from multiple locations - - function drawDonutHole(layer) { - if (options.series.pie.innerRadius > 0) { - - // subtract the center - - layer.save(); - var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; - layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color - layer.beginPath(); - layer.fillStyle = options.series.pie.stroke.color; - layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); - layer.fill(); - layer.closePath(); - layer.restore(); - - // add inner stroke - - layer.save(); - layer.beginPath(); - layer.strokeStyle = options.series.pie.stroke.color; - layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); - layer.stroke(); - layer.closePath(); - layer.restore(); - - // TODO: add extra shadow inside hole (with a mask) if the pie is tilted. - } - } - - //-- Additional Interactive related functions -- - - function isPointInPoly(poly, pt) { - for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) - ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) - && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) - && (c = !c); - return c; - } - - function findNearbySlice(mouseX, mouseY) { - - var slices = plot.getData(), - options = plot.getOptions(), - radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius, - x, y; - - for (var i = 0; i < slices.length; ++i) { - - var s = slices[i]; - - if (s.pie.show) { - - ctx.save(); - ctx.beginPath(); - ctx.moveTo(0, 0); // Center of the pie - //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. - ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false); - ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false); - ctx.closePath(); - x = mouseX - centerLeft; - y = mouseY - centerTop; - - if (ctx.isPointInPath) { - if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) { - ctx.restore(); - return { - datapoint: [s.percent, s.data], - dataIndex: 0, - series: s, - seriesIndex: i - }; - } - } else { - - // excanvas for IE doesn;t support isPointInPath, this is a workaround. - - var p1X = radius * Math.cos(s.startAngle), - p1Y = radius * Math.sin(s.startAngle), - p2X = radius * Math.cos(s.startAngle + s.angle / 4), - p2Y = radius * Math.sin(s.startAngle + s.angle / 4), - p3X = radius * Math.cos(s.startAngle + s.angle / 2), - p3Y = radius * Math.sin(s.startAngle + s.angle / 2), - p4X = radius * Math.cos(s.startAngle + s.angle / 1.5), - p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5), - p5X = radius * Math.cos(s.startAngle + s.angle), - p5Y = radius * Math.sin(s.startAngle + s.angle), - arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]], - arrPoint = [x, y]; - - // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? - - if (isPointInPoly(arrPoly, arrPoint)) { - ctx.restore(); - return { - datapoint: [s.percent, s.data], - dataIndex: 0, - series: s, - seriesIndex: i - }; - } - } - - ctx.restore(); - } - } - - return null; - } - - function onMouseMove(e) { - triggerClickHoverEvent("plothover", e); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e); - } - - // trigger click or hover event (they send the same parameters so we share their code) - - function triggerClickHoverEvent(eventname, e) { - - var offset = plot.offset(); - var canvasX = parseInt(e.pageX - offset.left); - var canvasY = parseInt(e.pageY - offset.top); - var item = findNearbySlice(canvasX, canvasY); - - if (options.grid.autoHighlight) { - - // clear auto-highlights - - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && !(item && h.series == item.series)) { - unhighlight(h.series); - } - } - } - - // highlight the slice - - if (item) { - highlight(item.series, eventname); - } - - // trigger any hover bind events - - var pos = { pageX: e.pageX, pageY: e.pageY }; - target.trigger(eventname, [pos, item]); - } - - function highlight(s, auto) { - //if (typeof s == "number") { - // s = series[s]; - //} - - var i = indexOfHighlight(s); - - if (i == -1) { - highlights.push({ series: s, auto: auto }); - plot.triggerRedrawOverlay(); - } else if (!auto) { - highlights[i].auto = false; - } - } - - function unhighlight(s) { - if (s == null) { - highlights = []; - plot.triggerRedrawOverlay(); - } - - //if (typeof s == "number") { - // s = series[s]; - //} - - var i = indexOfHighlight(s); - - if (i != -1) { - highlights.splice(i, 1); - plot.triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s) - return i; - } - return -1; - } - - function drawOverlay(plot, octx) { - - var options = plot.getOptions(); - - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - octx.save(); - octx.translate(centerLeft, centerTop); - octx.scale(1, options.series.pie.tilt); - - for (var i = 0; i < highlights.length; ++i) { - drawHighlight(highlights[i].series); - } - - drawDonutHole(octx); - - octx.restore(); - - function drawHighlight(series) { - - if (series.angle <= 0 || isNaN(series.angle)) { - return; - } - - //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); - octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor - octx.beginPath(); - if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) { - octx.moveTo(0, 0); // Center of the pie - } - octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false); - octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false); - octx.closePath(); - octx.fill(); - } - } - } // end init (plugin body) - - // define pie specific options and their default values - - var options = { - series: { - pie: { - show: false, - radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) - innerRadius: 0, /* for donut */ - startAngle: 3/2, - tilt: 1, - shadow: { - left: 5, // shadow left offset - top: 15, // shadow top offset - alpha: 0.02 // shadow alpha - }, - offset: { - top: 0, - left: "auto" - }, - stroke: { - color: "#fff", - width: 1 - }, - label: { - show: "auto", - formatter: function(label, slice) { - return "
    " + label + "
    " + Math.round(slice.percent) + "%
    "; - }, // formatter function - radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) - background: { - color: null, - opacity: 0 - }, - threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) - }, - combine: { - threshold: -1, // percentage at which to combine little slices into one larger slice - color: null, // color to give the new slice (auto-generated if null) - label: "Other" // label to give the new slice - }, - highlight: { - //color: "#fff", // will add this functionality once parseColor is available - opacity: 0.5 - } - } - } - }; - - $.plot.plugins.push({ - init: init, - options: options, - name: "pie", - version: "1.1" - }); - -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.pie.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.pie.min.js deleted file mode 100644 index 9bc488b1546..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.pie.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var REDRAW_ATTEMPTS=10;var REDRAW_SHRINK=.95;function init(plot){var canvas=null,target=null,options=null,maxRadius=null,centerLeft=null,centerTop=null,processed=false,ctx=null;var highlights=[];plot.hooks.processOptions.push(function(plot,options){if(options.series.pie.show){options.grid.show=false;if(options.series.pie.label.show=="auto"){if(options.legend.show){options.series.pie.label.show=false}else{options.series.pie.label.show=true}}if(options.series.pie.radius=="auto"){if(options.series.pie.label.show){options.series.pie.radius=3/4}else{options.series.pie.radius=1}}if(options.series.pie.tilt>1){options.series.pie.tilt=1}else if(options.series.pie.tilt<0){options.series.pie.tilt=0}}});plot.hooks.bindEvents.push(function(plot,eventHolder){var options=plot.getOptions();if(options.series.pie.show){if(options.grid.hoverable){eventHolder.unbind("mousemove").mousemove(onMouseMove)}if(options.grid.clickable){eventHolder.unbind("click").click(onClick)}}});plot.hooks.processDatapoints.push(function(plot,series,data,datapoints){var options=plot.getOptions();if(options.series.pie.show){processDatapoints(plot,series,data,datapoints)}});plot.hooks.drawOverlay.push(function(plot,octx){var options=plot.getOptions();if(options.series.pie.show){drawOverlay(plot,octx)}});plot.hooks.draw.push(function(plot,newCtx){var options=plot.getOptions();if(options.series.pie.show){draw(plot,newCtx)}});function processDatapoints(plot,series,datapoints){if(!processed){processed=true;canvas=plot.getCanvas();target=$(canvas).parent();options=plot.getOptions();plot.setData(combine(plot.getData()))}}function combine(data){var total=0,combined=0,numCombined=0,color=options.series.pie.combine.color,newdata=[];for(var i=0;ioptions.series.pie.combine.threshold){newdata.push($.extend(data[i],{data:[[1,value]],color:data[i].color,label:data[i].label,angle:value*Math.PI*2/total,percent:value/(total/100)}))}}if(numCombined>1){newdata.push({data:[[1,combined]],color:color,label:options.series.pie.combine.label,angle:combined*Math.PI*2/total,percent:combined/(total/100)})}return newdata}function draw(plot,newCtx){if(!target){return}var canvasWidth=plot.getPlaceholder().width(),canvasHeight=plot.getPlaceholder().height(),legendWidth=target.children().filter(".legend").children().width()||0;ctx=newCtx;processed=false;maxRadius=Math.min(canvasWidth,canvasHeight/options.series.pie.tilt)/2;centerTop=canvasHeight/2+options.series.pie.offset.top;centerLeft=canvasWidth/2;if(options.series.pie.offset.left=="auto"){if(options.legend.position.match("w")){centerLeft+=legendWidth/2}else{centerLeft-=legendWidth/2}if(centerLeftcanvasWidth-maxRadius){centerLeft=canvasWidth-maxRadius}}else{centerLeft+=options.series.pie.offset.left}var slices=plot.getData(),attempts=0;do{if(attempts>0){maxRadius*=REDRAW_SHRINK}attempts+=1;clear();if(options.series.pie.tilt<=.8){drawShadow()}}while(!drawPie()&&attempts=REDRAW_ATTEMPTS){clear();target.prepend("
    Could not draw pie with labels contained inside canvas
    ")}if(plot.setSeries&&plot.insertLegend){plot.setSeries(slices);plot.insertLegend()}function clear(){ctx.clearRect(0,0,canvasWidth,canvasHeight);target.children().filter(".pieLabel, .pieLabelBackground").remove()}function drawShadow(){var shadowLeft=options.series.pie.shadow.left;var shadowTop=options.series.pie.shadow.top;var edge=10;var alpha=options.series.pie.shadow.alpha;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;if(radius>=canvasWidth/2-shadowLeft||radius*options.series.pie.tilt>=canvasHeight/2-shadowTop||radius<=edge){return}ctx.save();ctx.translate(shadowLeft,shadowTop);ctx.globalAlpha=alpha;ctx.fillStyle="#000";ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);for(var i=1;i<=edge;i++){ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2,false);ctx.fill();radius-=i}ctx.restore()}function drawPie(){var startAngle=Math.PI*options.series.pie.startAngle;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;ctx.save();ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);ctx.save();var currentAngle=startAngle;for(var i=0;i0){ctx.save();ctx.lineWidth=options.series.pie.stroke.width;currentAngle=startAngle;for(var i=0;i1e-9){ctx.moveTo(0,0)}ctx.arc(0,0,radius,currentAngle,currentAngle+angle/2,false);ctx.arc(0,0,radius,currentAngle+angle/2,currentAngle+angle,false);ctx.closePath();currentAngle+=angle;if(fill){ctx.fill()}else{ctx.stroke()}}function drawLabels(){var currentAngle=startAngle;var radius=options.series.pie.label.radius>1?options.series.pie.label.radius:maxRadius*options.series.pie.label.radius;for(var i=0;i=options.series.pie.label.threshold*100){if(!drawLabel(slices[i],currentAngle,i)){return false}}currentAngle+=slices[i].angle}return true;function drawLabel(slice,startAngle,index){if(slice.data[0][1]==0){return true}var lf=options.legend.labelFormatter,text,plf=options.series.pie.label.formatter;if(lf){text=lf(slice.label,slice)}else{text=slice.label}if(plf){text=plf(text,slice)}var halfAngle=(startAngle+slice.angle+startAngle)/2;var x=centerLeft+Math.round(Math.cos(halfAngle)*radius);var y=centerTop+Math.round(Math.sin(halfAngle)*radius)*options.series.pie.tilt;var html=""+text+"";target.append(html);var label=target.children("#pieLabel"+index);var labelTop=y-label.height()/2;var labelLeft=x-label.width()/2;label.css("top",labelTop);label.css("left",labelLeft);if(0-labelTop>0||0-labelLeft>0||canvasHeight-(labelTop+label.height())<0||canvasWidth-(labelLeft+label.width())<0){return false}if(options.series.pie.label.background.opacity!=0){var c=options.series.pie.label.background.color;if(c==null){c=slice.color}var pos="top:"+labelTop+"px;left:"+labelLeft+"px;";$("
    ").css("opacity",options.series.pie.label.background.opacity).insertBefore(label)}return true}}}}function drawDonutHole(layer){if(options.series.pie.innerRadius>0){layer.save();var innerRadius=options.series.pie.innerRadius>1?options.series.pie.innerRadius:maxRadius*options.series.pie.innerRadius;layer.globalCompositeOperation="destination-out";layer.beginPath();layer.fillStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.fill();layer.closePath();layer.restore();layer.save();layer.beginPath();layer.strokeStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.stroke();layer.closePath();layer.restore()}}function isPointInPoly(poly,pt){for(var c=false,i=-1,l=poly.length,j=l-1;++i1?options.series.pie.radius:maxRadius*options.series.pie.radius,x,y;for(var i=0;i1?options.series.pie.radius:maxRadius*options.series.pie.radius;octx.save();octx.translate(centerLeft,centerTop);octx.scale(1,options.series.pie.tilt);for(var i=0;i1e-9){octx.moveTo(0,0)}octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle/2,false);octx.arc(0,0,radius,series.startAngle+series.angle/2,series.startAngle+series.angle,false);octx.closePath();octx.fill()}}}var options={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(label,slice){return"
    "+label+"
    "+Math.round(slice.percent)+"%
    "},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}};$.plot.plugins.push({init:init,options:options,name:"pie",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.resize.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.resize.js deleted file mode 100644 index 8a626dda0ad..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.resize.js +++ /dev/null @@ -1,59 +0,0 @@ -/* Flot plugin for automatically redrawing plots as the placeholder resizes. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -It works by listening for changes on the placeholder div (through the jQuery -resize event plugin) - if the size changes, it will redraw the plot. - -There are no options. If you need to disable the plugin for some plots, you -can just fix the size of their placeholders. - -*/ - -/* Inline dependency: - * jQuery resize event - v1.1 - 3/14/2010 - * http://benalman.com/projects/jquery-resize-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this); - -(function ($) { - var options = { }; // no options - - function init(plot) { - function onResize() { - var placeholder = plot.getPlaceholder(); - - // somebody might have hidden us and we can't plot - // when we don't have the dimensions - if (placeholder.width() == 0 || placeholder.height() == 0) - return; - - plot.resize(); - plot.setupGrid(); - plot.draw(); - } - - function bindEvents(plot, eventHolder) { - plot.getPlaceholder().resize(onResize); - } - - function shutdown(plot, eventHolder) { - plot.getPlaceholder().unbind("resize", onResize); - } - - plot.hooks.bindEvents.push(bindEvents); - plot.hooks.shutdown.push(shutdown); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'resize', - version: '1.0' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.resize.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.resize.min.js deleted file mode 100644 index 7e92aa681c9..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.resize.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.selection.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.selection.js deleted file mode 100644 index d3c20fa4e12..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.selection.js +++ /dev/null @@ -1,360 +0,0 @@ -/* Flot plugin for selecting regions of a plot. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin supports these options: - -selection: { - mode: null or "x" or "y" or "xy", - color: color, - shape: "round" or "miter" or "bevel", - minSize: number of pixels -} - -Selection support is enabled by setting the mode to one of "x", "y" or "xy". -In "x" mode, the user will only be able to specify the x range, similarly for -"y" mode. For "xy", the selection becomes a rectangle where both ranges can be -specified. "color" is color of the selection (if you need to change the color -later on, you can get to it with plot.getOptions().selection.color). "shape" -is the shape of the corners of the selection. - -"minSize" is the minimum size a selection can be in pixels. This value can -be customized to determine the smallest size a selection can be and still -have the selection rectangle be displayed. When customizing this value, the -fact that it refers to pixels, not axis units must be taken into account. -Thus, for example, if there is a bar graph in time mode with BarWidth set to 1 -minute, setting "minSize" to 1 will not make the minimum selection size 1 -minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent -"plotunselected" events from being fired when the user clicks the mouse without -dragging. - -When selection support is enabled, a "plotselected" event will be emitted on -the DOM element you passed into the plot function. The event handler gets a -parameter with the ranges selected on the axes, like this: - - placeholder.bind( "plotselected", function( event, ranges ) { - alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to) - // similar for yaxis - with multiple axes, the extra ones are in - // x2axis, x3axis, ... - }); - -The "plotselected" event is only fired when the user has finished making the -selection. A "plotselecting" event is fired during the process with the same -parameters as the "plotselected" event, in case you want to know what's -happening while it's happening, - -A "plotunselected" event with no arguments is emitted when the user clicks the -mouse to remove the selection. As stated above, setting "minSize" to 0 will -destroy this behavior. - -The plugin allso adds the following methods to the plot object: - -- setSelection( ranges, preventEvent ) - - Set the selection rectangle. The passed in ranges is on the same form as - returned in the "plotselected" event. If the selection mode is "x", you - should put in either an xaxis range, if the mode is "y" you need to put in - an yaxis range and both xaxis and yaxis if the selection mode is "xy", like - this: - - setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } }); - - setSelection will trigger the "plotselected" event when called. If you don't - want that to happen, e.g. if you're inside a "plotselected" handler, pass - true as the second parameter. If you are using multiple axes, you can - specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of - xaxis, the plugin picks the first one it sees. - -- clearSelection( preventEvent ) - - Clear the selection rectangle. Pass in true to avoid getting a - "plotunselected" event. - -- getSelection() - - Returns the current selection in the same format as the "plotselected" - event. If there's currently no selection, the function returns null. - -*/ - -(function ($) { - function init(plot) { - var selection = { - first: { x: -1, y: -1}, second: { x: -1, y: -1}, - show: false, - active: false - }; - - // FIXME: The drag handling implemented here should be - // abstracted out, there's some similar code from a library in - // the navigation plugin, this should be massaged a bit to fit - // the Flot cases here better and reused. Doing this would - // make this plugin much slimmer. - var savedhandlers = {}; - - var mouseUpHandler = null; - - function onMouseMove(e) { - if (selection.active) { - updateSelection(e); - - plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]); - } - } - - function onMouseDown(e) { - if (e.which != 1) // only accept left-click - return; - - // cancel out any text selections - document.body.focus(); - - // prevent text selection and drag in old-school browsers - if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) { - savedhandlers.onselectstart = document.onselectstart; - document.onselectstart = function () { return false; }; - } - if (document.ondrag !== undefined && savedhandlers.ondrag == null) { - savedhandlers.ondrag = document.ondrag; - document.ondrag = function () { return false; }; - } - - setSelectionPos(selection.first, e); - - selection.active = true; - - // this is a bit silly, but we have to use a closure to be - // able to whack the same handler again - mouseUpHandler = function (e) { onMouseUp(e); }; - - $(document).one("mouseup", mouseUpHandler); - } - - function onMouseUp(e) { - mouseUpHandler = null; - - // revert drag stuff for old-school browsers - if (document.onselectstart !== undefined) - document.onselectstart = savedhandlers.onselectstart; - if (document.ondrag !== undefined) - document.ondrag = savedhandlers.ondrag; - - // no more dragging - selection.active = false; - updateSelection(e); - - if (selectionIsSane()) - triggerSelectedEvent(); - else { - // this counts as a clear - plot.getPlaceholder().trigger("plotunselected", [ ]); - plot.getPlaceholder().trigger("plotselecting", [ null ]); - } - - return false; - } - - function getSelection() { - if (!selectionIsSane()) - return null; - - if (!selection.show) return null; - - var r = {}, c1 = selection.first, c2 = selection.second; - $.each(plot.getAxes(), function (name, axis) { - if (axis.used) { - var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); - r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) }; - } - }); - return r; - } - - function triggerSelectedEvent() { - var r = getSelection(); - - plot.getPlaceholder().trigger("plotselected", [ r ]); - - // backwards-compat stuff, to be removed in future - if (r.xaxis && r.yaxis) - plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]); - } - - function clamp(min, value, max) { - return value < min ? min: (value > max ? max: value); - } - - function setSelectionPos(pos, e) { - var o = plot.getOptions(); - var offset = plot.getPlaceholder().offset(); - var plotOffset = plot.getPlotOffset(); - pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width()); - pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height()); - - if (o.selection.mode == "y") - pos.x = pos == selection.first ? 0 : plot.width(); - - if (o.selection.mode == "x") - pos.y = pos == selection.first ? 0 : plot.height(); - } - - function updateSelection(pos) { - if (pos.pageX == null) - return; - - setSelectionPos(selection.second, pos); - if (selectionIsSane()) { - selection.show = true; - plot.triggerRedrawOverlay(); - } - else - clearSelection(true); - } - - function clearSelection(preventEvent) { - if (selection.show) { - selection.show = false; - plot.triggerRedrawOverlay(); - if (!preventEvent) - plot.getPlaceholder().trigger("plotunselected", [ ]); - } - } - - // function taken from markings support in Flot - function extractRange(ranges, coord) { - var axis, from, to, key, axes = plot.getAxes(); - - for (var k in axes) { - axis = axes[k]; - if (axis.direction == coord) { - key = coord + axis.n + "axis"; - if (!ranges[key] && axis.n == 1) - key = coord + "axis"; // support x1axis as xaxis - if (ranges[key]) { - from = ranges[key].from; - to = ranges[key].to; - break; - } - } - } - - // backwards-compat stuff - to be removed in future - if (!ranges[key]) { - axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0]; - from = ranges[coord + "1"]; - to = ranges[coord + "2"]; - } - - // auto-reverse as an added bonus - if (from != null && to != null && from > to) { - var tmp = from; - from = to; - to = tmp; - } - - return { from: from, to: to, axis: axis }; - } - - function setSelection(ranges, preventEvent) { - var axis, range, o = plot.getOptions(); - - if (o.selection.mode == "y") { - selection.first.x = 0; - selection.second.x = plot.width(); - } - else { - range = extractRange(ranges, "x"); - - selection.first.x = range.axis.p2c(range.from); - selection.second.x = range.axis.p2c(range.to); - } - - if (o.selection.mode == "x") { - selection.first.y = 0; - selection.second.y = plot.height(); - } - else { - range = extractRange(ranges, "y"); - - selection.first.y = range.axis.p2c(range.from); - selection.second.y = range.axis.p2c(range.to); - } - - selection.show = true; - plot.triggerRedrawOverlay(); - if (!preventEvent && selectionIsSane()) - triggerSelectedEvent(); - } - - function selectionIsSane() { - var minSize = plot.getOptions().selection.minSize; - return Math.abs(selection.second.x - selection.first.x) >= minSize && - Math.abs(selection.second.y - selection.first.y) >= minSize; - } - - plot.clearSelection = clearSelection; - plot.setSelection = setSelection; - plot.getSelection = getSelection; - - plot.hooks.bindEvents.push(function(plot, eventHolder) { - var o = plot.getOptions(); - if (o.selection.mode != null) { - eventHolder.mousemove(onMouseMove); - eventHolder.mousedown(onMouseDown); - } - }); - - - plot.hooks.drawOverlay.push(function (plot, ctx) { - // draw selection - if (selection.show && selectionIsSane()) { - var plotOffset = plot.getPlotOffset(); - var o = plot.getOptions(); - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - var c = $.color.parse(o.selection.color); - - ctx.strokeStyle = c.scale('a', 0.8).toString(); - ctx.lineWidth = 1; - ctx.lineJoin = o.selection.shape; - ctx.fillStyle = c.scale('a', 0.4).toString(); - - var x = Math.min(selection.first.x, selection.second.x) + 0.5, - y = Math.min(selection.first.y, selection.second.y) + 0.5, - w = Math.abs(selection.second.x - selection.first.x) - 1, - h = Math.abs(selection.second.y - selection.first.y) - 1; - - ctx.fillRect(x, y, w, h); - ctx.strokeRect(x, y, w, h); - - ctx.restore(); - } - }); - - plot.hooks.shutdown.push(function (plot, eventHolder) { - eventHolder.unbind("mousemove", onMouseMove); - eventHolder.unbind("mousedown", onMouseDown); - - if (mouseUpHandler) - $(document).unbind("mouseup", mouseUpHandler); - }); - - } - - $.plot.plugins.push({ - init: init, - options: { - selection: { - mode: null, // one of null, "x", "y" or "xy" - color: "#e8cfac", - shape: "round", // one of "round", "miter", or "bevel" - minSize: 5 // minimum number of pixels - } - }, - name: 'selection', - version: '1.1' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.selection.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.selection.min.js deleted file mode 100644 index a0154fbc5bb..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.selection.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){function init(plot){var selection={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var savedhandlers={};var mouseUpHandler=null;function onMouseMove(e){if(selection.active){updateSelection(e);plot.getPlaceholder().trigger("plotselecting",[getSelection()])}}function onMouseDown(e){if(e.which!=1)return;document.body.focus();if(document.onselectstart!==undefined&&savedhandlers.onselectstart==null){savedhandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&savedhandlers.ondrag==null){savedhandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}setSelectionPos(selection.first,e);selection.active=true;mouseUpHandler=function(e){onMouseUp(e)};$(document).one("mouseup",mouseUpHandler)}function onMouseUp(e){mouseUpHandler=null;if(document.onselectstart!==undefined)document.onselectstart=savedhandlers.onselectstart;if(document.ondrag!==undefined)document.ondrag=savedhandlers.ondrag;selection.active=false;updateSelection(e);if(selectionIsSane())triggerSelectedEvent();else{plot.getPlaceholder().trigger("plotunselected",[]);plot.getPlaceholder().trigger("plotselecting",[null])}return false}function getSelection(){if(!selectionIsSane())return null;if(!selection.show)return null;var r={},c1=selection.first,c2=selection.second;$.each(plot.getAxes(),function(name,axis){if(axis.used){var p1=axis.c2p(c1[axis.direction]),p2=axis.c2p(c2[axis.direction]);r[name]={from:Math.min(p1,p2),to:Math.max(p1,p2)}}});return r}function triggerSelectedEvent(){var r=getSelection();plot.getPlaceholder().trigger("plotselected",[r]);if(r.xaxis&&r.yaxis)plot.getPlaceholder().trigger("selected",[{x1:r.xaxis.from,y1:r.yaxis.from,x2:r.xaxis.to,y2:r.yaxis.to}])}function clamp(min,value,max){return valuemax?max:value}function setSelectionPos(pos,e){var o=plot.getOptions();var offset=plot.getPlaceholder().offset();var plotOffset=plot.getPlotOffset();pos.x=clamp(0,e.pageX-offset.left-plotOffset.left,plot.width());pos.y=clamp(0,e.pageY-offset.top-plotOffset.top,plot.height());if(o.selection.mode=="y")pos.x=pos==selection.first?0:plot.width();if(o.selection.mode=="x")pos.y=pos==selection.first?0:plot.height()}function updateSelection(pos){if(pos.pageX==null)return;setSelectionPos(selection.second,pos);if(selectionIsSane()){selection.show=true;plot.triggerRedrawOverlay()}else clearSelection(true)}function clearSelection(preventEvent){if(selection.show){selection.show=false;plot.triggerRedrawOverlay();if(!preventEvent)plot.getPlaceholder().trigger("plotunselected",[])}}function extractRange(ranges,coord){var axis,from,to,key,axes=plot.getAxes();for(var k in axes){axis=axes[k];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1)key=coord+"axis";if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?plot.getXAxes()[0]:plot.getYAxes()[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function setSelection(ranges,preventEvent){var axis,range,o=plot.getOptions();if(o.selection.mode=="y"){selection.first.x=0;selection.second.x=plot.width()}else{range=extractRange(ranges,"x");selection.first.x=range.axis.p2c(range.from);selection.second.x=range.axis.p2c(range.to)}if(o.selection.mode=="x"){selection.first.y=0;selection.second.y=plot.height()}else{range=extractRange(ranges,"y");selection.first.y=range.axis.p2c(range.from);selection.second.y=range.axis.p2c(range.to)}selection.show=true;plot.triggerRedrawOverlay();if(!preventEvent&&selectionIsSane())triggerSelectedEvent()}function selectionIsSane(){var minSize=plot.getOptions().selection.minSize;return Math.abs(selection.second.x-selection.first.x)>=minSize&&Math.abs(selection.second.y-selection.first.y)>=minSize}plot.clearSelection=clearSelection;plot.setSelection=setSelection;plot.getSelection=getSelection;plot.hooks.bindEvents.push(function(plot,eventHolder){var o=plot.getOptions();if(o.selection.mode!=null){eventHolder.mousemove(onMouseMove);eventHolder.mousedown(onMouseDown)}});plot.hooks.drawOverlay.push(function(plot,ctx){if(selection.show&&selectionIsSane()){var plotOffset=plot.getPlotOffset();var o=plot.getOptions();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var c=$.color.parse(o.selection.color);ctx.strokeStyle=c.scale("a",.8).toString();ctx.lineWidth=1;ctx.lineJoin=o.selection.shape;ctx.fillStyle=c.scale("a",.4).toString();var x=Math.min(selection.first.x,selection.second.x)+.5,y=Math.min(selection.first.y,selection.second.y)+.5,w=Math.abs(selection.second.x-selection.first.x)-1,h=Math.abs(selection.second.y-selection.first.y)-1;ctx.fillRect(x,y,w,h);ctx.strokeRect(x,y,w,h);ctx.restore()}});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mousedown",onMouseDown);if(mouseUpHandler)$(document).unbind("mouseup",mouseUpHandler)})}$.plot.plugins.push({init:init,options:{selection:{mode:null,color:"#e8cfac",shape:"round",minSize:5}},name:"selection",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.stack.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.stack.js deleted file mode 100644 index e75a7dfc074..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.stack.js +++ /dev/null @@ -1,188 +0,0 @@ -/* Flot plugin for stacking data sets rather than overlyaing them. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin assumes the data is sorted on x (or y if stacking horizontally). -For line charts, it is assumed that if a line has an undefined gap (from a -null point), then the line above it should have the same gap - insert zeros -instead of "null" if you want another behaviour. This also holds for the start -and end of the chart. Note that stacking a mix of positive and negative values -in most instances doesn't make sense (so it looks weird). - -Two or more series are stacked when their "stack" attribute is set to the same -key (which can be any number or string or just "true"). To specify the default -stack, you can set the stack option like this: - - series: { - stack: null/false, true, or a key (number/string) - } - -You can also specify it for a single series, like this: - - $.plot( $("#placeholder"), [{ - data: [ ... ], - stack: true - }]) - -The stacking order is determined by the order of the data series in the array -(later series end up on top of the previous). - -Internally, the plugin modifies the datapoints in each series, adding an -offset to the y value. For line series, extra data points are inserted through -interpolation. If there's a second y value, it's also adjusted (e.g for bar -charts or filled areas). - -*/ - -(function ($) { - var options = { - series: { stack: null } // or number/string - }; - - function init(plot) { - function findMatchingSeries(s, allseries) { - var res = null; - for (var i = 0; i < allseries.length; ++i) { - if (s == allseries[i]) - break; - - if (allseries[i].stack == s.stack) - res = allseries[i]; - } - - return res; - } - - function stackData(plot, s, datapoints) { - if (s.stack == null || s.stack === false) - return; - - var other = findMatchingSeries(s, plot.getData()); - if (!other) - return; - - var ps = datapoints.pointsize, - points = datapoints.points, - otherps = other.datapoints.pointsize, - otherpoints = other.datapoints.points, - newpoints = [], - px, py, intery, qx, qy, bottom, - withlines = s.lines.show, - horizontal = s.bars.horizontal, - withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y), - withsteps = withlines && s.lines.steps, - fromgap = true, - keyOffset = horizontal ? 1 : 0, - accumulateOffset = horizontal ? 0 : 1, - i = 0, j = 0, l, m; - - while (true) { - if (i >= points.length) - break; - - l = newpoints.length; - - if (points[i] == null) { - // copy gaps - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - i += ps; - } - else if (j >= otherpoints.length) { - // for lines, we can't use the rest of the points - if (!withlines) { - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - } - i += ps; - } - else if (otherpoints[j] == null) { - // oops, got a gap - for (m = 0; m < ps; ++m) - newpoints.push(null); - fromgap = true; - j += otherps; - } - else { - // cases where we actually got two points - px = points[i + keyOffset]; - py = points[i + accumulateOffset]; - qx = otherpoints[j + keyOffset]; - qy = otherpoints[j + accumulateOffset]; - bottom = 0; - - if (px == qx) { - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - - newpoints[l + accumulateOffset] += qy; - bottom = qy; - - i += ps; - j += otherps; - } - else if (px > qx) { - // we got past point below, might need to - // insert interpolated extra point - if (withlines && i > 0 && points[i - ps] != null) { - intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px); - newpoints.push(qx); - newpoints.push(intery + qy); - for (m = 2; m < ps; ++m) - newpoints.push(points[i + m]); - bottom = qy; - } - - j += otherps; - } - else { // px < qx - if (fromgap && withlines) { - // if we come from a gap, we just skip this point - i += ps; - continue; - } - - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - - // we might be able to interpolate a point below, - // this can give us a better y - if (withlines && j > 0 && otherpoints[j - otherps] != null) - bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx); - - newpoints[l + accumulateOffset] += bottom; - - i += ps; - } - - fromgap = false; - - if (l != newpoints.length && withbottom) - newpoints[l + 2] += bottom; - } - - // maintain the line steps invariant - if (withsteps && l != newpoints.length && l > 0 - && newpoints[l] != null - && newpoints[l] != newpoints[l - ps] - && newpoints[l + 1] != newpoints[l - ps + 1]) { - for (m = 0; m < ps; ++m) - newpoints[l + ps + m] = newpoints[l + m]; - newpoints[l + 1] = newpoints[l - ps + 1]; - } - } - - datapoints.points = newpoints; - } - - plot.hooks.processDatapoints.push(stackData); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'stack', - version: '1.2' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.stack.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.stack.min.js deleted file mode 100644 index 920764f5e7c..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.stack.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var options={series:{stack:null}};function init(plot){function findMatchingSeries(s,allseries){var res=null;for(var i=0;i2&&(horizontal?datapoints.format[2].x:datapoints.format[2].y),withsteps=withlines&&s.lines.steps,fromgap=true,keyOffset=horizontal?1:0,accumulateOffset=horizontal?0:1,i=0,j=0,l,m;while(true){if(i>=points.length)break;l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+accumulateOffset]-py)*(qx-px)/(points[i-ps+keyOffset]-px);newpoints.push(qx);newpoints.push(intery+qy);for(m=2;m0&&otherpoints[j-otherps]!=null)bottom=qy+(otherpoints[j-otherps+accumulateOffset]-qy)*(px-qx)/(otherpoints[j-otherps+keyOffset]-qx);newpoints[l+accumulateOffset]+=bottom;i+=ps}fromgap=false;if(l!=newpoints.length&&withbottom)newpoints[l+2]+=bottom}if(withsteps&&l!=newpoints.length&&l>0&&newpoints[l]!=null&&newpoints[l]!=newpoints[l-ps]&&newpoints[l+1]!=newpoints[l-ps+1]){for(m=0;m s = r * sqrt(pi)/2 - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.rect(x - size, y - size, size + size, size + size); - }, - diamond: function (ctx, x, y, radius, shadow) { - // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) - var size = radius * Math.sqrt(Math.PI / 2); - ctx.moveTo(x - size, y); - ctx.lineTo(x, y - size); - ctx.lineTo(x + size, y); - ctx.lineTo(x, y + size); - ctx.lineTo(x - size, y); - }, - triangle: function (ctx, x, y, radius, shadow) { - // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) - var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); - var height = size * Math.sin(Math.PI / 3); - ctx.moveTo(x - size/2, y + height/2); - ctx.lineTo(x + size/2, y + height/2); - if (!shadow) { - ctx.lineTo(x, y - height/2); - ctx.lineTo(x - size/2, y + height/2); - } - }, - cross: function (ctx, x, y, radius, shadow) { - // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.moveTo(x - size, y - size); - ctx.lineTo(x + size, y + size); - ctx.moveTo(x - size, y + size); - ctx.lineTo(x + size, y - size); - } - }; - - var s = series.points.symbol; - if (handlers[s]) - series.points.symbol = handlers[s]; - } - - function init(plot) { - plot.hooks.processDatapoints.push(processRawData); - } - - $.plot.plugins.push({ - init: init, - name: 'symbols', - version: '1.0' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.symbol.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.symbol.min.js deleted file mode 100644 index f4a3430136b..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.symbol.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.threshold.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.threshold.js deleted file mode 100644 index 8c99c401d87..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.threshold.js +++ /dev/null @@ -1,142 +0,0 @@ -/* Flot plugin for thresholding data. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin supports these options: - - series: { - threshold: { - below: number - color: colorspec - } - } - -It can also be applied to a single series, like this: - - $.plot( $("#placeholder"), [{ - data: [ ... ], - threshold: { ... } - }]) - -An array can be passed for multiple thresholding, like this: - - threshold: [{ - below: number1 - color: color1 - },{ - below: number2 - color: color2 - }] - -These multiple threshold objects can be passed in any order since they are -sorted by the processing function. - -The data points below "below" are drawn with the specified color. This makes -it easy to mark points below 0, e.g. for budget data. - -Internally, the plugin works by splitting the data into two series, above and -below the threshold. The extra series below the threshold will have its label -cleared and the special "originSeries" attribute set to the original series. -You may need to check for this in hover events. - -*/ - -(function ($) { - var options = { - series: { threshold: null } // or { below: number, color: color spec} - }; - - function init(plot) { - function thresholdData(plot, s, datapoints, below, color) { - var ps = datapoints.pointsize, i, x, y, p, prevp, - thresholded = $.extend({}, s); // note: shallow copy - - thresholded.datapoints = { points: [], pointsize: ps, format: datapoints.format }; - thresholded.label = null; - thresholded.color = color; - thresholded.threshold = null; - thresholded.originSeries = s; - thresholded.data = []; - - var origpoints = datapoints.points, - addCrossingPoints = s.lines.show; - - var threspoints = []; - var newpoints = []; - var m; - - for (i = 0; i < origpoints.length; i += ps) { - x = origpoints[i]; - y = origpoints[i + 1]; - - prevp = p; - if (y < below) - p = threspoints; - else - p = newpoints; - - if (addCrossingPoints && prevp != p && x != null - && i > 0 && origpoints[i - ps] != null) { - var interx = x + (below - y) * (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]); - prevp.push(interx); - prevp.push(below); - for (m = 2; m < ps; ++m) - prevp.push(origpoints[i + m]); - - p.push(null); // start new segment - p.push(null); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - p.push(interx); - p.push(below); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - } - - p.push(x); - p.push(y); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - } - - datapoints.points = newpoints; - thresholded.datapoints.points = threspoints; - - if (thresholded.datapoints.points.length > 0) { - var origIndex = $.inArray(s, plot.getData()); - // Insert newly-generated series right after original one (to prevent it from becoming top-most) - plot.getData().splice(origIndex + 1, 0, thresholded); - } - - // FIXME: there are probably some edge cases left in bars - } - - function processThresholds(plot, s, datapoints) { - if (!s.threshold) - return; - - if (s.threshold instanceof Array) { - s.threshold.sort(function(a, b) { - return a.below - b.below; - }); - - $(s.threshold).each(function(i, th) { - thresholdData(plot, s, datapoints, th.below, th.color); - }); - } - else { - thresholdData(plot, s, datapoints, s.threshold.below, s.threshold.color); - } - } - - plot.hooks.processDatapoints.push(processThresholds); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'threshold', - version: '1.2' - }); -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.threshold.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.threshold.min.js deleted file mode 100644 index ce93e0f4808..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.threshold.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var options={series:{threshold:null}};function init(plot){function thresholdData(plot,s,datapoints,below,color){var ps=datapoints.pointsize,i,x,y,p,prevp,thresholded=$.extend({},s);thresholded.datapoints={points:[],pointsize:ps,format:datapoints.format};thresholded.label=null;thresholded.color=color;thresholded.threshold=null;thresholded.originSeries=s;thresholded.data=[];var origpoints=datapoints.points,addCrossingPoints=s.lines.show;var threspoints=[];var newpoints=[];var m;for(i=0;i0&&origpoints[i-ps]!=null){var interx=x+(below-y)*(x-origpoints[i-ps])/(y-origpoints[i-ps+1]);prevp.push(interx);prevp.push(below);for(m=2;m0){var origIndex=$.inArray(s,plot.getData());plot.getData().splice(origIndex+1,0,thresholded)}}function processThresholds(plot,s,datapoints){if(!s.threshold)return;if(s.threshold instanceof Array){s.threshold.sort(function(a,b){return a.below-b.below});$(s.threshold).each(function(i,th){thresholdData(plot,s,datapoints,th.below,th.color)})}else{thresholdData(plot,s,datapoints,s.threshold.below,s.threshold.color)}}plot.hooks.processDatapoints.push(processThresholds)}$.plot.plugins.push({init:init,options:options,name:"threshold",version:"1.2"})})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.time.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.time.js deleted file mode 100644 index 34c1d121259..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.time.js +++ /dev/null @@ -1,432 +0,0 @@ -/* Pretty handling of time axes. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -Set axis.mode to "time" to enable. See the section "Time series data" in -API.txt for details. - -*/ - -(function($) { - - var options = { - xaxis: { - timezone: null, // "browser" for local to the client or timezone for timezone-js - timeformat: null, // format string to use - twelveHourClock: false, // 12 or 24 time in time mode - monthNames: null // list of names of months - } - }; - - // round to nearby lower multiple of base - - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - - // Returns a string with the date d formatted according to fmt. - // A subset of the Open Group's strftime format is supported. - - function formatDate(d, fmt, monthNames, dayNames) { - - if (typeof d.strftime == "function") { - return d.strftime(fmt); - } - - var leftPad = function(n, pad) { - n = "" + n; - pad = "" + (pad == null ? "0" : pad); - return n.length == 1 ? pad + n : n; - }; - - var r = []; - var escape = false; - var hours = d.getHours(); - var isAM = hours < 12; - - if (monthNames == null) { - monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - } - - if (dayNames == null) { - dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - } - - var hours12; - - if (hours > 12) { - hours12 = hours - 12; - } else if (hours == 0) { - hours12 = 12; - } else { - hours12 = hours; - } - - for (var i = 0; i < fmt.length; ++i) { - - var c = fmt.charAt(i); - - if (escape) { - switch (c) { - case 'a': c = "" + dayNames[d.getDay()]; break; - case 'b': c = "" + monthNames[d.getMonth()]; break; - case 'd': c = leftPad(d.getDate()); break; - case 'e': c = leftPad(d.getDate(), " "); break; - case 'h': // For back-compat with 0.7; remove in 1.0 - case 'H': c = leftPad(hours); break; - case 'I': c = leftPad(hours12); break; - case 'l': c = leftPad(hours12, " "); break; - case 'm': c = leftPad(d.getMonth() + 1); break; - case 'M': c = leftPad(d.getMinutes()); break; - // quarters not in Open Group's strftime specification - case 'q': - c = "" + (Math.floor(d.getMonth() / 3) + 1); break; - case 'S': c = leftPad(d.getSeconds()); break; - case 'y': c = leftPad(d.getFullYear() % 100); break; - case 'Y': c = "" + d.getFullYear(); break; - case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; - case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; - case 'w': c = "" + d.getDay(); break; - } - r.push(c); - escape = false; - } else { - if (c == "%") { - escape = true; - } else { - r.push(c); - } - } - } - - return r.join(""); - } - - // To have a consistent view of time-based data independent of which time - // zone the client happens to be in we need a date-like object independent - // of time zones. This is done through a wrapper that only calls the UTC - // versions of the accessor methods. - - function makeUtcWrapper(d) { - - function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { - sourceObj[sourceMethod] = function() { - return targetObj[targetMethod].apply(targetObj, arguments); - }; - }; - - var utc = { - date: d - }; - - // support strftime, if found - - if (d.strftime != undefined) { - addProxyMethod(utc, "strftime", d, "strftime"); - } - - addProxyMethod(utc, "getTime", d, "getTime"); - addProxyMethod(utc, "setTime", d, "setTime"); - - var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; - - for (var p = 0; p < props.length; p++) { - addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); - addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); - } - - return utc; - }; - - // select time zone strategy. This returns a date-like object tied to the - // desired timezone - - function dateGenerator(ts, opts) { - if (opts.timezone == "browser") { - return new Date(ts); - } else if (!opts.timezone || opts.timezone == "utc") { - return makeUtcWrapper(new Date(ts)); - } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { - var d = new timezoneJS.Date(); - // timezone-js is fickle, so be sure to set the time zone before - // setting the time. - d.setTimezone(opts.timezone); - d.setTime(ts); - return d; - } else { - return makeUtcWrapper(new Date(ts)); - } - } - - // map of app. size of time units in milliseconds - - var timeUnitSize = { - "second": 1000, - "minute": 60 * 1000, - "hour": 60 * 60 * 1000, - "day": 24 * 60 * 60 * 1000, - "month": 30 * 24 * 60 * 60 * 1000, - "quarter": 3 * 30 * 24 * 60 * 60 * 1000, - "year": 365.2425 * 24 * 60 * 60 * 1000 - }; - - // the allowed tick sizes, after 1 year we use - // an integer algorithm - - var baseSpec = [ - [1, "second"], [2, "second"], [5, "second"], [10, "second"], - [30, "second"], - [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], - [30, "minute"], - [1, "hour"], [2, "hour"], [4, "hour"], - [8, "hour"], [12, "hour"], - [1, "day"], [2, "day"], [3, "day"], - [0.25, "month"], [0.5, "month"], [1, "month"], - [2, "month"] - ]; - - // we don't know which variant(s) we'll need yet, but generating both is - // cheap - - var specMonths = baseSpec.concat([[3, "month"], [6, "month"], - [1, "year"]]); - var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], - [1, "year"]]); - - function init(plot) { - plot.hooks.processOptions.push(function (plot, options) { - $.each(plot.getAxes(), function(axisName, axis) { - - var opts = axis.options; - - if (opts.mode == "time") { - axis.tickGenerator = function(axis) { - - var ticks = []; - var d = dateGenerator(axis.min, opts); - var minSize = 0; - - // make quarter use a possibility if quarters are - // mentioned in either of these options - - var spec = (opts.tickSize && opts.tickSize[1] === - "quarter") || - (opts.minTickSize && opts.minTickSize[1] === - "quarter") ? specQuarters : specMonths; - - if (opts.minTickSize != null) { - if (typeof opts.tickSize == "number") { - minSize = opts.tickSize; - } else { - minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; - } - } - - for (var i = 0; i < spec.length - 1; ++i) { - if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] - + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 - && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { - break; - } - } - - var size = spec[i][0]; - var unit = spec[i][1]; - - // special-case the possibility of several years - - if (unit == "year") { - - // if given a minTickSize in years, just use it, - // ensuring that it's an integer - - if (opts.minTickSize != null && opts.minTickSize[1] == "year") { - size = Math.floor(opts.minTickSize[0]); - } else { - - var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); - var norm = (axis.delta / timeUnitSize.year) / magn; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - } - - // minimum size for years is 1 - - if (size < 1) { - size = 1; - } - } - - axis.tickSize = opts.tickSize || [size, unit]; - var tickSize = axis.tickSize[0]; - unit = axis.tickSize[1]; - - var step = tickSize * timeUnitSize[unit]; - - if (unit == "second") { - d.setSeconds(floorInBase(d.getSeconds(), tickSize)); - } else if (unit == "minute") { - d.setMinutes(floorInBase(d.getMinutes(), tickSize)); - } else if (unit == "hour") { - d.setHours(floorInBase(d.getHours(), tickSize)); - } else if (unit == "month") { - d.setMonth(floorInBase(d.getMonth(), tickSize)); - } else if (unit == "quarter") { - d.setMonth(3 * floorInBase(d.getMonth() / 3, - tickSize)); - } else if (unit == "year") { - d.setFullYear(floorInBase(d.getFullYear(), tickSize)); - } - - // reset smaller components - - d.setMilliseconds(0); - - if (step >= timeUnitSize.minute) { - d.setSeconds(0); - } - if (step >= timeUnitSize.hour) { - d.setMinutes(0); - } - if (step >= timeUnitSize.day) { - d.setHours(0); - } - if (step >= timeUnitSize.day * 4) { - d.setDate(1); - } - if (step >= timeUnitSize.month * 2) { - d.setMonth(floorInBase(d.getMonth(), 3)); - } - if (step >= timeUnitSize.quarter * 2) { - d.setMonth(floorInBase(d.getMonth(), 6)); - } - if (step >= timeUnitSize.year) { - d.setMonth(0); - } - - var carry = 0; - var v = Number.NaN; - var prev; - - do { - - prev = v; - v = d.getTime(); - ticks.push(v); - - if (unit == "month" || unit == "quarter") { - if (tickSize < 1) { - - // a bit complicated - we'll divide the - // month/quarter up but we need to take - // care of fractions so we don't end up in - // the middle of a day - - d.setDate(1); - var start = d.getTime(); - d.setMonth(d.getMonth() + - (unit == "quarter" ? 3 : 1)); - var end = d.getTime(); - d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); - carry = d.getHours(); - d.setHours(0); - } else { - d.setMonth(d.getMonth() + - tickSize * (unit == "quarter" ? 3 : 1)); - } - } else if (unit == "year") { - d.setFullYear(d.getFullYear() + tickSize); - } else { - d.setTime(v + step); - } - } while (v < axis.max && v != prev); - - return ticks; - }; - - axis.tickFormatter = function (v, axis) { - - var d = dateGenerator(v, axis.options); - - // first check global format - - if (opts.timeformat != null) { - return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); - } - - // possibly use quarters if quarters are mentioned in - // any of these places - - var useQuarters = (axis.options.tickSize && - axis.options.tickSize[1] == "quarter") || - (axis.options.minTickSize && - axis.options.minTickSize[1] == "quarter"); - - var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; - var span = axis.max - axis.min; - var suffix = (opts.twelveHourClock) ? " %p" : ""; - var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; - var fmt; - - if (t < timeUnitSize.minute) { - fmt = hourCode + ":%M:%S" + suffix; - } else if (t < timeUnitSize.day) { - if (span < 2 * timeUnitSize.day) { - fmt = hourCode + ":%M" + suffix; - } else { - fmt = "%b %d " + hourCode + ":%M" + suffix; - } - } else if (t < timeUnitSize.month) { - fmt = "%b %d"; - } else if ((useQuarters && t < timeUnitSize.quarter) || - (!useQuarters && t < timeUnitSize.year)) { - if (span < timeUnitSize.year) { - fmt = "%b"; - } else { - fmt = "%b %Y"; - } - } else if (useQuarters && t < timeUnitSize.year) { - if (span < timeUnitSize.year) { - fmt = "Q%q"; - } else { - fmt = "Q%q %Y"; - } - } else { - fmt = "%Y"; - } - - var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); - - return rt; - }; - } - }); - }); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'time', - version: '1.0' - }); - - // Time-axis support used to be in Flot core, which exposed the - // formatDate function on the plot object. Various plugins depend - // on the function, so we need to re-expose it here. - - $.plot.formatDate = formatDate; - $.plot.dateGenerator = dateGenerator; - -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/flot/jquery.flot.time.min.js b/htdocs/includes/jquery/plugins/flot/jquery.flot.time.min.js deleted file mode 100644 index 690eb682551..00000000000 --- a/htdocs/includes/jquery/plugins/flot/jquery.flot.time.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ -(function($){var options={xaxis:{timezone:null,timeformat:null,twelveHourClock:false,monthNames:null}};function floorInBase(n,base){return base*Math.floor(n/base)}function formatDate(d,fmt,monthNames,dayNames){if(typeof d.strftime=="function"){return d.strftime(fmt)}var leftPad=function(n,pad){n=""+n;pad=""+(pad==null?"0":pad);return n.length==1?pad+n:n};var r=[];var escape=false;var hours=d.getHours();var isAM=hours<12;if(monthNames==null){monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(dayNames==null){dayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}var hours12;if(hours>12){hours12=hours-12}else if(hours==0){hours12=12}else{hours12=hours}for(var i=0;i=minSize){break}}var size=spec[i][0];var unit=spec[i][1];if(unit=="year"){if(opts.minTickSize!=null&&opts.minTickSize[1]=="year"){size=Math.floor(opts.minTickSize[0])}else{var magn=Math.pow(10,Math.floor(Math.log(axis.delta/timeUnitSize.year)/Math.LN10));var norm=axis.delta/timeUnitSize.year/magn;if(norm<1.5){size=1}else if(norm<3){size=2}else if(norm<7.5){size=5}else{size=10}size*=magn}if(size<1){size=1}}axis.tickSize=opts.tickSize||[size,unit];var tickSize=axis.tickSize[0];unit=axis.tickSize[1];var step=tickSize*timeUnitSize[unit];if(unit=="second"){d.setSeconds(floorInBase(d.getSeconds(),tickSize))}else if(unit=="minute"){d.setMinutes(floorInBase(d.getMinutes(),tickSize))}else if(unit=="hour"){d.setHours(floorInBase(d.getHours(),tickSize))}else if(unit=="month"){d.setMonth(floorInBase(d.getMonth(),tickSize))}else if(unit=="quarter"){d.setMonth(3*floorInBase(d.getMonth()/3,tickSize))}else if(unit=="year"){d.setFullYear(floorInBase(d.getFullYear(),tickSize))}d.setMilliseconds(0);if(step>=timeUnitSize.minute){d.setSeconds(0)}if(step>=timeUnitSize.hour){d.setMinutes(0)}if(step>=timeUnitSize.day){d.setHours(0)}if(step>=timeUnitSize.day*4){d.setDate(1)}if(step>=timeUnitSize.month*2){d.setMonth(floorInBase(d.getMonth(),3))}if(step>=timeUnitSize.quarter*2){d.setMonth(floorInBase(d.getMonth(),6))}if(step>=timeUnitSize.year){d.setMonth(0)}var carry=0;var v=Number.NaN;var prev;do{prev=v;v=d.getTime();ticks.push(v);if(unit=="month"||unit=="quarter"){if(tickSize<1){d.setDate(1);var start=d.getTime();d.setMonth(d.getMonth()+(unit=="quarter"?3:1));var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getHours();d.setHours(0)}else{d.setMonth(d.getMonth()+tickSize*(unit=="quarter"?3:1))}}else if(unit=="year"){d.setFullYear(d.getFullYear()+tickSize)}else{d.setTime(v+step)}}while(v Date: Thu, 2 Apr 2020 12:37:21 +0200 Subject: [PATCH 052/336] Remove Geoipv1 library. We use now v2 --- COPYRIGHT | 2 +- htdocs/core/class/dolgeoip.class.php | 16 +- htdocs/includes/geoip/README.txt | 43 - htdocs/includes/geoip/geoip.inc | 1890 ------- htdocs/includes/geoip/geoipcity.inc | 171 - htdocs/includes/geoip/geoipregionvars.php | 4633 ------------------ htdocs/includes/geoip/sample.php | 20 - htdocs/includes/geoip/sample_city.php | 32 - htdocs/includes/geoip/sample_distributed.php | 31 - htdocs/includes/geoip/sample_netspeed.php | 23 - htdocs/includes/geoip/sample_org.php | 23 - htdocs/includes/geoip/sample_region.php | 20 - htdocs/includes/geoip/timezone.php | 2243 --------- 13 files changed, 7 insertions(+), 9140 deletions(-) delete mode 100644 htdocs/includes/geoip/README.txt delete mode 100644 htdocs/includes/geoip/geoip.inc delete mode 100644 htdocs/includes/geoip/geoipcity.inc delete mode 100644 htdocs/includes/geoip/geoipregionvars.php delete mode 100644 htdocs/includes/geoip/sample.php delete mode 100644 htdocs/includes/geoip/sample_city.php delete mode 100644 htdocs/includes/geoip/sample_distributed.php delete mode 100644 htdocs/includes/geoip/sample_netspeed.php delete mode 100644 htdocs/includes/geoip/sample_org.php delete mode 100644 htdocs/includes/geoip/sample_region.php delete mode 100644 htdocs/includes/geoip/timezone.php diff --git a/COPYRIGHT b/COPYRIGHT index d32bb9b45ea..86f0489eeb3 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -16,7 +16,7 @@ AdoDb-Date 0.36 Modified BSD License Yes CKEditor 4.12.1 LGPL-2.1+ Yes Editor WYSIWYG EvalMath 1.0 BSD Yes Safe math expressions evaluation Escpos-php 2.2 MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers -GeoIP 1.4 LGPL-2.1+ Yes Sample code to make geoip convert (not into deb package) +GeoIP2 0.2.0 LGPL-2.1+ Yes Lib to make geoip convert Mobiledetect 2.8.34 MIT License Yes Detect mobile devices browsers NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package) PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency diff --git a/htdocs/core/class/dolgeoip.class.php b/htdocs/core/class/dolgeoip.class.php index 67042d2d53b..85ec9cebb24 100644 --- a/htdocs/core/class/dolgeoip.class.php +++ b/htdocs/core/class/dolgeoip.class.php @@ -45,7 +45,7 @@ class DolGeoIP { global $conf; - $geoipversion = '2'; // 'php', '1' or '2' + $geoipversion = '2'; // 'php', or '2' if (! empty($conf->global->GEOIP_VERSION)) $geoipversion = $conf->global->GEOIP_VERSION; if ($type == 'country') @@ -53,9 +53,7 @@ class DolGeoIP // geoip may have been already included with PEAR if ($geoipversion == '2' || ($geoipversion != 'php' && ! function_exists('geoip_country_code_by_name'))) { - if ($geoipversion == '1') $res=include_once GEOIP_PATH.'geoip.inc'; - //else $res=include_once DOL_DOCUMENT_ROOT.'/includes/geoip2/vendor/autoload.php'; - else require_once DOL_DOCUMENT_ROOT.'/includes/geoip2/geoip2.phar'; + require_once DOL_DOCUMENT_ROOT.'/includes/geoip2/geoip2.phar'; } } elseif ($type == 'city') @@ -63,9 +61,7 @@ class DolGeoIP // geoip may have been already included with PEAR if ($geoipversion == '2' || ($geoipversion != 'php' && ! function_exists('geoip_country_code_by_name'))) { - if ($geoipversion == '1') $res=include_once GEOIP_PATH.'geoipcity.inc'; - //else $res=include_once DOL_DOCUMENT_ROOT.'/includes/geoip2/vendor/autoload.php'; - else require_once DOL_DOCUMENT_ROOT.'/includes/geoip2/geoip2.phar'; + require_once DOL_DOCUMENT_ROOT.'/includes/geoip2/geoip2.phar'; } } else { print 'ErrorBadParameterInConstructor'; return 0; } @@ -119,7 +115,7 @@ class DolGeoIP { global $conf; - $geoipversion = '2'; // 'php', '1' or '2' + $geoipversion = '2'; // 'php', or '2' if (! empty($conf->global->GEOIP_VERSION)) $geoipversion = $conf->global->GEOIP_VERSION; if (empty($this->gi)) @@ -184,7 +180,7 @@ class DolGeoIP { global $conf; - $geoipversion = '2'; // 'php', '1' or '2' + $geoipversion = '2'; // 'php', or '2' if (! empty($conf->global->GEOIP_VERSION)) $geoipversion = $conf->global->GEOIP_VERSION; if (empty($this->gi)) @@ -218,7 +214,7 @@ class DolGeoIP { global $conf; - $geoipversion = '2'; // 'php', '1' or '2' + $geoipversion = '2'; // 'php', or '2' if (! empty($conf->global->GEOIP_VERSION)) $geoipversion = $conf->global->GEOIP_VERSION; if ($geoipversion == 'php') diff --git a/htdocs/includes/geoip/README.txt b/htdocs/includes/geoip/README.txt deleted file mode 100644 index 8456d2b0e35..00000000000 --- a/htdocs/includes/geoip/README.txt +++ /dev/null @@ -1,43 +0,0 @@ -Requirements - -None (only the 'GeoIP.dat' file is needed). To download a free GeoIP Standard Country -database, go to -http://maxmind.com/download/geoip/database/ - -Install - -Just place the 'geoip.inc' file somewhere according to the 'include_path' directive of -your 'php.ini' file, or just place it in the same directory as your PHP scripts. - -Usage - -Gets country name by hostname : - -include("geoip.inc"); - -$gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD); - -echo geoip_country_code_by_addr($gi, "24.24.24.24") . "\t" . - geoip_country_name_by_addr($gi, "24.24.24.24") . "\n"; -echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" . - geoip_country_name_by_addr($gi, "80.24.24.24") . "\n"; - -geoip_close($gi); - -Memory Caching: -To enable memory caching, pass GEOIP_SHARED_MEMORY or -GEOIP_MEMORY_CACHE to the second argument of geoip_open - -For GEOIP_SHARED_MEMORY, requires php >= 4.0.4, -and --enable-shmop passed at configure time, see -http://us2.php.net/manual/en/ref.shmop.php -In addition, you should call geoip_load_shared_mem -before calling geoip_open. See sample_city.php for an -example of shared memory caching. - -Working with PHP5. -geoip_country_code_by_addr should work -with PHP. For help with the other -routines, please contact support@maxmind.com - -Thanks to Jim Winstead. diff --git a/htdocs/includes/geoip/geoip.inc b/htdocs/includes/geoip/geoip.inc deleted file mode 100644 index 301c7f266eb..00000000000 --- a/htdocs/includes/geoip/geoip.inc +++ /dev/null @@ -1,1890 +0,0 @@ - 0, - "AP" => 1, - "EU" => 2, - "AD" => 3, - "AE" => 4, - "AF" => 5, - "AG" => 6, - "AI" => 7, - "AL" => 8, - "AM" => 9, - "CW" => 10, - "AO" => 11, - "AQ" => 12, - "AR" => 13, - "AS" => 14, - "AT" => 15, - "AU" => 16, - "AW" => 17, - "AZ" => 18, - "BA" => 19, - "BB" => 20, - "BD" => 21, - "BE" => 22, - "BF" => 23, - "BG" => 24, - "BH" => 25, - "BI" => 26, - "BJ" => 27, - "BM" => 28, - "BN" => 29, - "BO" => 30, - "BR" => 31, - "BS" => 32, - "BT" => 33, - "BV" => 34, - "BW" => 35, - "BY" => 36, - "BZ" => 37, - "CA" => 38, - "CC" => 39, - "CD" => 40, - "CF" => 41, - "CG" => 42, - "CH" => 43, - "CI" => 44, - "CK" => 45, - "CL" => 46, - "CM" => 47, - "CN" => 48, - "CO" => 49, - "CR" => 50, - "CU" => 51, - "CV" => 52, - "CX" => 53, - "CY" => 54, - "CZ" => 55, - "DE" => 56, - "DJ" => 57, - "DK" => 58, - "DM" => 59, - "DO" => 60, - "DZ" => 61, - "EC" => 62, - "EE" => 63, - "EG" => 64, - "EH" => 65, - "ER" => 66, - "ES" => 67, - "ET" => 68, - "FI" => 69, - "FJ" => 70, - "FK" => 71, - "FM" => 72, - "FO" => 73, - "FR" => 74, - "SX" => 75, - "GA" => 76, - "GB" => 77, - "GD" => 78, - "GE" => 79, - "GF" => 80, - "GH" => 81, - "GI" => 82, - "GL" => 83, - "GM" => 84, - "GN" => 85, - "GP" => 86, - "GQ" => 87, - "GR" => 88, - "GS" => 89, - "GT" => 90, - "GU" => 91, - "GW" => 92, - "GY" => 93, - "HK" => 94, - "HM" => 95, - "HN" => 96, - "HR" => 97, - "HT" => 98, - "HU" => 99, - "ID" => 100, - "IE" => 101, - "IL" => 102, - "IN" => 103, - "IO" => 104, - "IQ" => 105, - "IR" => 106, - "IS" => 107, - "IT" => 108, - "JM" => 109, - "JO" => 110, - "JP" => 111, - "KE" => 112, - "KG" => 113, - "KH" => 114, - "KI" => 115, - "KM" => 116, - "KN" => 117, - "KP" => 118, - "KR" => 119, - "KW" => 120, - "KY" => 121, - "KZ" => 122, - "LA" => 123, - "LB" => 124, - "LC" => 125, - "LI" => 126, - "LK" => 127, - "LR" => 128, - "LS" => 129, - "LT" => 130, - "LU" => 131, - "LV" => 132, - "LY" => 133, - "MA" => 134, - "MC" => 135, - "MD" => 136, - "MG" => 137, - "MH" => 138, - "MK" => 139, - "ML" => 140, - "MM" => 141, - "MN" => 142, - "MO" => 143, - "MP" => 144, - "MQ" => 145, - "MR" => 146, - "MS" => 147, - "MT" => 148, - "MU" => 149, - "MV" => 150, - "MW" => 151, - "MX" => 152, - "MY" => 153, - "MZ" => 154, - "NA" => 155, - "NC" => 156, - "NE" => 157, - "NF" => 158, - "NG" => 159, - "NI" => 160, - "NL" => 161, - "NO" => 162, - "NP" => 163, - "NR" => 164, - "NU" => 165, - "NZ" => 166, - "OM" => 167, - "PA" => 168, - "PE" => 169, - "PF" => 170, - "PG" => 171, - "PH" => 172, - "PK" => 173, - "PL" => 174, - "PM" => 175, - "PN" => 176, - "PR" => 177, - "PS" => 178, - "PT" => 179, - "PW" => 180, - "PY" => 181, - "QA" => 182, - "RE" => 183, - "RO" => 184, - "RU" => 185, - "RW" => 186, - "SA" => 187, - "SB" => 188, - "SC" => 189, - "SD" => 190, - "SE" => 191, - "SG" => 192, - "SH" => 193, - "SI" => 194, - "SJ" => 195, - "SK" => 196, - "SL" => 197, - "SM" => 198, - "SN" => 199, - "SO" => 200, - "SR" => 201, - "ST" => 202, - "SV" => 203, - "SY" => 204, - "SZ" => 205, - "TC" => 206, - "TD" => 207, - "TF" => 208, - "TG" => 209, - "TH" => 210, - "TJ" => 211, - "TK" => 212, - "TM" => 213, - "TN" => 214, - "TO" => 215, - "TL" => 216, - "TR" => 217, - "TT" => 218, - "TV" => 219, - "TW" => 220, - "TZ" => 221, - "UA" => 222, - "UG" => 223, - "UM" => 224, - "US" => 225, - "UY" => 226, - "UZ" => 227, - "VA" => 228, - "VC" => 229, - "VE" => 230, - "VG" => 231, - "VI" => 232, - "VN" => 233, - "VU" => 234, - "WF" => 235, - "WS" => 236, - "YE" => 237, - "YT" => 238, - "RS" => 239, - "ZA" => 240, - "ZM" => 241, - "ME" => 242, - "ZW" => 243, - "A1" => 244, - "A2" => 245, - "O1" => 246, - "AX" => 247, - "GG" => 248, - "IM" => 249, - "JE" => 250, - "BL" => 251, - "MF" => 252, - "BQ" => 253, - "SS" => 254 - ); - - public $GEOIP_COUNTRY_CODES = array( - "", - "AP", - "EU", - "AD", - "AE", - "AF", - "AG", - "AI", - "AL", - "AM", - "CW", - "AO", - "AQ", - "AR", - "AS", - "AT", - "AU", - "AW", - "AZ", - "BA", - "BB", - "BD", - "BE", - "BF", - "BG", - "BH", - "BI", - "BJ", - "BM", - "BN", - "BO", - "BR", - "BS", - "BT", - "BV", - "BW", - "BY", - "BZ", - "CA", - "CC", - "CD", - "CF", - "CG", - "CH", - "CI", - "CK", - "CL", - "CM", - "CN", - "CO", - "CR", - "CU", - "CV", - "CX", - "CY", - "CZ", - "DE", - "DJ", - "DK", - "DM", - "DO", - "DZ", - "EC", - "EE", - "EG", - "EH", - "ER", - "ES", - "ET", - "FI", - "FJ", - "FK", - "FM", - "FO", - "FR", - "SX", - "GA", - "GB", - "GD", - "GE", - "GF", - "GH", - "GI", - "GL", - "GM", - "GN", - "GP", - "GQ", - "GR", - "GS", - "GT", - "GU", - "GW", - "GY", - "HK", - "HM", - "HN", - "HR", - "HT", - "HU", - "ID", - "IE", - "IL", - "IN", - "IO", - "IQ", - "IR", - "IS", - "IT", - "JM", - "JO", - "JP", - "KE", - "KG", - "KH", - "KI", - "KM", - "KN", - "KP", - "KR", - "KW", - "KY", - "KZ", - "LA", - "LB", - "LC", - "LI", - "LK", - "LR", - "LS", - "LT", - "LU", - "LV", - "LY", - "MA", - "MC", - "MD", - "MG", - "MH", - "MK", - "ML", - "MM", - "MN", - "MO", - "MP", - "MQ", - "MR", - "MS", - "MT", - "MU", - "MV", - "MW", - "MX", - "MY", - "MZ", - "NA", - "NC", - "NE", - "NF", - "NG", - "NI", - "NL", - "NO", - "NP", - "NR", - "NU", - "NZ", - "OM", - "PA", - "PE", - "PF", - "PG", - "PH", - "PK", - "PL", - "PM", - "PN", - "PR", - "PS", - "PT", - "PW", - "PY", - "QA", - "RE", - "RO", - "RU", - "RW", - "SA", - "SB", - "SC", - "SD", - "SE", - "SG", - "SH", - "SI", - "SJ", - "SK", - "SL", - "SM", - "SN", - "SO", - "SR", - "ST", - "SV", - "SY", - "SZ", - "TC", - "TD", - "TF", - "TG", - "TH", - "TJ", - "TK", - "TM", - "TN", - "TO", - "TL", - "TR", - "TT", - "TV", - "TW", - "TZ", - "UA", - "UG", - "UM", - "US", - "UY", - "UZ", - "VA", - "VC", - "VE", - "VG", - "VI", - "VN", - "VU", - "WF", - "WS", - "YE", - "YT", - "RS", - "ZA", - "ZM", - "ME", - "ZW", - "A1", - "A2", - "O1", - "AX", - "GG", - "IM", - "JE", - "BL", - "MF", - "BQ", - "SS", - "O1" - ); - - public $GEOIP_COUNTRY_CODES3 = array( - "", - "AP", - "EU", - "AND", - "ARE", - "AFG", - "ATG", - "AIA", - "ALB", - "ARM", - "CUW", - "AGO", - "ATA", - "ARG", - "ASM", - "AUT", - "AUS", - "ABW", - "AZE", - "BIH", - "BRB", - "BGD", - "BEL", - "BFA", - "BGR", - "BHR", - "BDI", - "BEN", - "BMU", - "BRN", - "BOL", - "BRA", - "BHS", - "BTN", - "BVT", - "BWA", - "BLR", - "BLZ", - "CAN", - "CCK", - "COD", - "CAF", - "COG", - "CHE", - "CIV", - "COK", - "CHL", - "CMR", - "CHN", - "COL", - "CRI", - "CUB", - "CPV", - "CXR", - "CYP", - "CZE", - "DEU", - "DJI", - "DNK", - "DMA", - "DOM", - "DZA", - "ECU", - "EST", - "EGY", - "ESH", - "ERI", - "ESP", - "ETH", - "FIN", - "FJI", - "FLK", - "FSM", - "FRO", - "FRA", - "SXM", - "GAB", - "GBR", - "GRD", - "GEO", - "GUF", - "GHA", - "GIB", - "GRL", - "GMB", - "GIN", - "GLP", - "GNQ", - "GRC", - "SGS", - "GTM", - "GUM", - "GNB", - "GUY", - "HKG", - "HMD", - "HND", - "HRV", - "HTI", - "HUN", - "IDN", - "IRL", - "ISR", - "IND", - "IOT", - "IRQ", - "IRN", - "ISL", - "ITA", - "JAM", - "JOR", - "JPN", - "KEN", - "KGZ", - "KHM", - "KIR", - "COM", - "KNA", - "PRK", - "KOR", - "KWT", - "CYM", - "KAZ", - "LAO", - "LBN", - "LCA", - "LIE", - "LKA", - "LBR", - "LSO", - "LTU", - "LUX", - "LVA", - "LBY", - "MAR", - "MCO", - "MDA", - "MDG", - "MHL", - "MKD", - "MLI", - "MMR", - "MNG", - "MAC", - "MNP", - "MTQ", - "MRT", - "MSR", - "MLT", - "MUS", - "MDV", - "MWI", - "MEX", - "MYS", - "MOZ", - "NAM", - "NCL", - "NER", - "NFK", - "NGA", - "NIC", - "NLD", - "NOR", - "NPL", - "NRU", - "NIU", - "NZL", - "OMN", - "PAN", - "PER", - "PYF", - "PNG", - "PHL", - "PAK", - "POL", - "SPM", - "PCN", - "PRI", - "PSE", - "PRT", - "PLW", - "PRY", - "QAT", - "REU", - "ROU", - "RUS", - "RWA", - "SAU", - "SLB", - "SYC", - "SDN", - "SWE", - "SGP", - "SHN", - "SVN", - "SJM", - "SVK", - "SLE", - "SMR", - "SEN", - "SOM", - "SUR", - "STP", - "SLV", - "SYR", - "SWZ", - "TCA", - "TCD", - "ATF", - "TGO", - "THA", - "TJK", - "TKL", - "TKM", - "TUN", - "TON", - "TLS", - "TUR", - "TTO", - "TUV", - "TWN", - "TZA", - "UKR", - "UGA", - "UMI", - "USA", - "URY", - "UZB", - "VAT", - "VCT", - "VEN", - "VGB", - "VIR", - "VNM", - "VUT", - "WLF", - "WSM", - "YEM", - "MYT", - "SRB", - "ZAF", - "ZMB", - "MNE", - "ZWE", - "A1", - "A2", - "O1", - "ALA", - "GGY", - "IMN", - "JEY", - "BLM", - "MAF", - "BES", - "SSD", - "O1" - ); - - public $GEOIP_COUNTRY_NAMES = array( - "", - "Asia/Pacific Region", - "Europe", - "Andorra", - "United Arab Emirates", - "Afghanistan", - "Antigua and Barbuda", - "Anguilla", - "Albania", - "Armenia", - "Curacao", - "Angola", - "Antarctica", - "Argentina", - "American Samoa", - "Austria", - "Australia", - "Aruba", - "Azerbaijan", - "Bosnia and Herzegovina", - "Barbados", - "Bangladesh", - "Belgium", - "Burkina Faso", - "Bulgaria", - "Bahrain", - "Burundi", - "Benin", - "Bermuda", - "Brunei Darussalam", - "Bolivia", - "Brazil", - "Bahamas", - "Bhutan", - "Bouvet Island", - "Botswana", - "Belarus", - "Belize", - "Canada", - "Cocos (Keeling) Islands", - "Congo, The Democratic Republic of the", - "Central African Republic", - "Congo", - "Switzerland", - "Cote D'Ivoire", - "Cook Islands", - "Chile", - "Cameroon", - "China", - "Colombia", - "Costa Rica", - "Cuba", - "Cape Verde", - "Christmas Island", - "Cyprus", - "Czech Republic", - "Germany", - "Djibouti", - "Denmark", - "Dominica", - "Dominican Republic", - "Algeria", - "Ecuador", - "Estonia", - "Egypt", - "Western Sahara", - "Eritrea", - "Spain", - "Ethiopia", - "Finland", - "Fiji", - "Falkland Islands (Malvinas)", - "Micronesia, Federated States of", - "Faroe Islands", - "France", - "Sint Maarten (Dutch part)", - "Gabon", - "United Kingdom", - "Grenada", - "Georgia", - "French Guiana", - "Ghana", - "Gibraltar", - "Greenland", - "Gambia", - "Guinea", - "Guadeloupe", - "Equatorial Guinea", - "Greece", - "South Georgia and the South Sandwich Islands", - "Guatemala", - "Guam", - "Guinea-Bissau", - "Guyana", - "Hong Kong", - "Heard Island and McDonald Islands", - "Honduras", - "Croatia", - "Haiti", - "Hungary", - "Indonesia", - "Ireland", - "Israel", - "India", - "British Indian Ocean Territory", - "Iraq", - "Iran, Islamic Republic of", - "Iceland", - "Italy", - "Jamaica", - "Jordan", - "Japan", - "Kenya", - "Kyrgyzstan", - "Cambodia", - "Kiribati", - "Comoros", - "Saint Kitts and Nevis", - "Korea, Democratic People's Republic of", - "Korea, Republic of", - "Kuwait", - "Cayman Islands", - "Kazakhstan", - "Lao People's Democratic Republic", - "Lebanon", - "Saint Lucia", - "Liechtenstein", - "Sri Lanka", - "Liberia", - "Lesotho", - "Lithuania", - "Luxembourg", - "Latvia", - "Libya", - "Morocco", - "Monaco", - "Moldova, Republic of", - "Madagascar", - "Marshall Islands", - "Macedonia", - "Mali", - "Myanmar", - "Mongolia", - "Macau", - "Northern Mariana Islands", - "Martinique", - "Mauritania", - "Montserrat", - "Malta", - "Mauritius", - "Maldives", - "Malawi", - "Mexico", - "Malaysia", - "Mozambique", - "Namibia", - "New Caledonia", - "Niger", - "Norfolk Island", - "Nigeria", - "Nicaragua", - "Netherlands", - "Norway", - "Nepal", - "Nauru", - "Niue", - "New Zealand", - "Oman", - "Panama", - "Peru", - "French Polynesia", - "Papua New Guinea", - "Philippines", - "Pakistan", - "Poland", - "Saint Pierre and Miquelon", - "Pitcairn Islands", - "Puerto Rico", - "Palestinian Territory", - "Portugal", - "Palau", - "Paraguay", - "Qatar", - "Reunion", - "Romania", - "Russian Federation", - "Rwanda", - "Saudi Arabia", - "Solomon Islands", - "Seychelles", - "Sudan", - "Sweden", - "Singapore", - "Saint Helena", - "Slovenia", - "Svalbard and Jan Mayen", - "Slovakia", - "Sierra Leone", - "San Marino", - "Senegal", - "Somalia", - "Suriname", - "Sao Tome and Principe", - "El Salvador", - "Syrian Arab Republic", - "Swaziland", - "Turks and Caicos Islands", - "Chad", - "French Southern Territories", - "Togo", - "Thailand", - "Tajikistan", - "Tokelau", - "Turkmenistan", - "Tunisia", - "Tonga", - "Timor-Leste", - "Turkey", - "Trinidad and Tobago", - "Tuvalu", - "Taiwan", - "Tanzania, United Republic of", - "Ukraine", - "Uganda", - "United States Minor Outlying Islands", - "United States", - "Uruguay", - "Uzbekistan", - "Holy See (Vatican City State)", - "Saint Vincent and the Grenadines", - "Venezuela", - "Virgin Islands, British", - "Virgin Islands, U.S.", - "Vietnam", - "Vanuatu", - "Wallis and Futuna", - "Samoa", - "Yemen", - "Mayotte", - "Serbia", - "South Africa", - "Zambia", - "Montenegro", - "Zimbabwe", - "Anonymous Proxy", - "Satellite Provider", - "Other", - "Aland Islands", - "Guernsey", - "Isle of Man", - "Jersey", - "Saint Barthelemy", - "Saint Martin", - "Bonaire, Saint Eustatius and Saba", - "South Sudan", - "Other" - ); - - public $GEOIP_CONTINENT_CODES = array( - "--", - "AS", - "EU", - "EU", - "AS", - "AS", - "NA", - "NA", - "EU", - "AS", - "NA", - "AF", - "AN", - "SA", - "OC", - "EU", - "OC", - "NA", - "AS", - "EU", - "NA", - "AS", - "EU", - "AF", - "EU", - "AS", - "AF", - "AF", - "NA", - "AS", - "SA", - "SA", - "NA", - "AS", - "AN", - "AF", - "EU", - "NA", - "NA", - "AS", - "AF", - "AF", - "AF", - "EU", - "AF", - "OC", - "SA", - "AF", - "AS", - "SA", - "NA", - "NA", - "AF", - "AS", - "AS", - "EU", - "EU", - "AF", - "EU", - "NA", - "NA", - "AF", - "SA", - "EU", - "AF", - "AF", - "AF", - "EU", - "AF", - "EU", - "OC", - "SA", - "OC", - "EU", - "EU", - "NA", - "AF", - "EU", - "NA", - "AS", - "SA", - "AF", - "EU", - "NA", - "AF", - "AF", - "NA", - "AF", - "EU", - "AN", - "NA", - "OC", - "AF", - "SA", - "AS", - "AN", - "NA", - "EU", - "NA", - "EU", - "AS", - "EU", - "AS", - "AS", - "AS", - "AS", - "AS", - "EU", - "EU", - "NA", - "AS", - "AS", - "AF", - "AS", - "AS", - "OC", - "AF", - "NA", - "AS", - "AS", - "AS", - "NA", - "AS", - "AS", - "AS", - "NA", - "EU", - "AS", - "AF", - "AF", - "EU", - "EU", - "EU", - "AF", - "AF", - "EU", - "EU", - "AF", - "OC", - "EU", - "AF", - "AS", - "AS", - "AS", - "OC", - "NA", - "AF", - "NA", - "EU", - "AF", - "AS", - "AF", - "NA", - "AS", - "AF", - "AF", - "OC", - "AF", - "OC", - "AF", - "NA", - "EU", - "EU", - "AS", - "OC", - "OC", - "OC", - "AS", - "NA", - "SA", - "OC", - "OC", - "AS", - "AS", - "EU", - "NA", - "OC", - "NA", - "AS", - "EU", - "OC", - "SA", - "AS", - "AF", - "EU", - "EU", - "AF", - "AS", - "OC", - "AF", - "AF", - "EU", - "AS", - "AF", - "EU", - "EU", - "EU", - "AF", - "EU", - "AF", - "AF", - "SA", - "AF", - "NA", - "AS", - "AF", - "NA", - "AF", - "AN", - "AF", - "AS", - "AS", - "OC", - "AS", - "AF", - "OC", - "AS", - "EU", - "NA", - "OC", - "AS", - "AF", - "EU", - "AF", - "OC", - "NA", - "SA", - "AS", - "EU", - "NA", - "SA", - "NA", - "NA", - "AS", - "OC", - "OC", - "OC", - "AS", - "AF", - "EU", - "AF", - "AF", - "EU", - "AF", - "--", - "--", - "--", - "EU", - "EU", - "EU", - "EU", - "NA", - "NA", - "NA", - "AF", - "--" - ); -} - -function geoip_load_shared_mem($file) -{ - $fp = fopen($file, "rb"); - if (!$fp) { - print "error opening $file: $php_errormsg\n"; - exit; - } - $s_array = fstat($fp); - $size = $s_array['size']; - if (($shmid = @shmop_open(GEOIP_SHM_KEY, "w", 0, 0))) { - shmop_delete($shmid); - shmop_close($shmid); - } - $shmid = shmop_open(GEOIP_SHM_KEY, "c", 0644, $size); - shmop_write($shmid, fread($fp, $size), 0); - shmop_close($shmid); -} - -function _setup_segments($gi) -{ - $gi->databaseType = GEOIP_COUNTRY_EDITION; - $gi->record_length = STANDARD_RECORD_LENGTH; - if ($gi->flags & GEOIP_SHARED_MEMORY) { - $offset = shmop_size($gi->shmid) - 3; - for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) { - $delim = shmop_read($gi->shmid, $offset, 3); - $offset += 3; - if ($delim == (chr(255) . chr(255) . chr(255))) { - $gi->databaseType = ord(shmop_read($gi->shmid, $offset, 1)); - if ($gi->databaseType >= 106) { - $gi->databaseType -= 105; - } - $offset++; - - if ($gi->databaseType == GEOIP_REGION_EDITION_REV0) { - $gi->databaseSegments = GEOIP_STATE_BEGIN_REV0; - } elseif ($gi->databaseType == GEOIP_REGION_EDITION_REV1) { - $gi->databaseSegments = GEOIP_STATE_BEGIN_REV1; - } elseif (($gi->databaseType == GEOIP_CITY_EDITION_REV0) - || ($gi->databaseType == GEOIP_CITY_EDITION_REV1) - || ($gi->databaseType == GEOIP_ORG_EDITION) - || ($gi->databaseType == GEOIP_ORG_EDITION_V6) - || ($gi->databaseType == GEOIP_DOMAIN_EDITION) - || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) - || ($gi->databaseType == GEOIP_ISP_EDITION) - || ($gi->databaseType == GEOIP_ISP_EDITION_V6) - || ($gi->databaseType == GEOIP_USERTYPE_EDITION) - || ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6) - || ($gi->databaseType == GEOIP_LOCATIONA_EDITION) - || ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION) - || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) - || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) - || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1) - || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6) - || ($gi->databaseType == GEOIP_ASNUM_EDITION) - || ($gi->databaseType == GEOIP_ASNUM_EDITION_V6) - ) { - $gi->databaseSegments = 0; - $buf = shmop_read($gi->shmid, $offset, SEGMENT_RECORD_LENGTH); - for ($j = 0; $j < SEGMENT_RECORD_LENGTH; $j++) { - $gi->databaseSegments += (ord($buf[$j]) << ($j * 8)); - } - if (($gi->databaseType == GEOIP_ORG_EDITION) - || ($gi->databaseType == GEOIP_ORG_EDITION_V6) - || ($gi->databaseType == GEOIP_DOMAIN_EDITION) - || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) - || ($gi->databaseType == GEOIP_ISP_EDITION) - || ($gi->databaseType == GEOIP_ISP_EDITION_V6) - ) { - $gi->record_length = ORG_RECORD_LENGTH; - } - } - break; - } else { - $offset -= 4; - } - } - if (($gi->databaseType == GEOIP_COUNTRY_EDITION) || - ($gi->databaseType == GEOIP_COUNTRY_EDITION_V6) || - ($gi->databaseType == GEOIP_PROXY_EDITION) || - ($gi->databaseType == GEOIP_NETSPEED_EDITION) - ) { - $gi->databaseSegments = GEOIP_COUNTRY_BEGIN; - } - } else { - $filepos = ftell($gi->filehandle); - fseek($gi->filehandle, -3, SEEK_END); - for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) { - $delim = fread($gi->filehandle, 3); - if ($delim == (chr(255) . chr(255) . chr(255))) { - $gi->databaseType = ord(fread($gi->filehandle, 1)); - if ($gi->databaseType >= 106) { - $gi->databaseType -= 105; - } - if ($gi->databaseType == GEOIP_REGION_EDITION_REV0) { - $gi->databaseSegments = GEOIP_STATE_BEGIN_REV0; - } elseif ($gi->databaseType == GEOIP_REGION_EDITION_REV1) { - $gi->databaseSegments = GEOIP_STATE_BEGIN_REV1; - } elseif (($gi->databaseType == GEOIP_CITY_EDITION_REV0) - || ($gi->databaseType == GEOIP_CITY_EDITION_REV1) - || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) - || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) - || ($gi->databaseType == GEOIP_ORG_EDITION) - || ($gi->databaseType == GEOIP_DOMAIN_EDITION) - || ($gi->databaseType == GEOIP_ISP_EDITION) - || ($gi->databaseType == GEOIP_ORG_EDITION_V6) - || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) - || ($gi->databaseType == GEOIP_ISP_EDITION_V6) - || ($gi->databaseType == GEOIP_LOCATIONA_EDITION) - || ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION) - || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) - || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) - || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1) - || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6) - || ($gi->databaseType == GEOIP_USERTYPE_EDITION) - || ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6) - || ($gi->databaseType == GEOIP_ASNUM_EDITION) - || ($gi->databaseType == GEOIP_ASNUM_EDITION_V6) - ) { - $gi->databaseSegments = 0; - - $buf = fread($gi->filehandle, SEGMENT_RECORD_LENGTH); - for ($j = 0; $j < SEGMENT_RECORD_LENGTH; $j++) { - $gi->databaseSegments += (ord($buf[$j]) << ($j * 8)); - } - if (($gi->databaseType == GEOIP_ORG_EDITION) - || ($gi->databaseType == GEOIP_DOMAIN_EDITION) - || ($gi->databaseType == GEOIP_ISP_EDITION) - || ($gi->databaseType == GEOIP_ORG_EDITION_V6) - || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) - || ($gi->databaseType == GEOIP_ISP_EDITION_V6) - ) { - $gi->record_length = ORG_RECORD_LENGTH; - } - } - break; - } else { - fseek($gi->filehandle, -4, SEEK_CUR); - } - } - if (($gi->databaseType == GEOIP_COUNTRY_EDITION) || - ($gi->databaseType == GEOIP_COUNTRY_EDITION_V6) || - ($gi->databaseType == GEOIP_PROXY_EDITION) || - ($gi->databaseType == GEOIP_NETSPEED_EDITION) - ) { - $gi->databaseSegments = GEOIP_COUNTRY_BEGIN; - } - fseek($gi->filehandle, $filepos, SEEK_SET); - } - return $gi; -} - -# This should be only used for variable-length records where -# $start + $maxLength may be greater than the shared mem size -function _sharedMemRead($gi, $start, $maxLength) -{ - $readLength = min(shmop_size($gi->shmid) - $start, $maxLength); - return shmop_read($gi->shmid, $start, $readLength); -} - -function geoip_open($filename, $flags) -{ - $gi = new GeoIP; - $gi->flags = $flags; - if ($gi->flags & GEOIP_SHARED_MEMORY) { - $gi->shmid = shmop_open(GEOIP_SHM_KEY, "a", 0, 0); - } else { - $gi->filehandle = fopen($filename, "rb") or trigger_error("GeoIP API: Can not open $filename\n", E_USER_ERROR); - if ($gi->flags & GEOIP_MEMORY_CACHE) { - $s_array = fstat($gi->filehandle); - $gi->memory_buffer = fread($gi->filehandle, $s_array['size']); - } - } - - $gi = _setup_segments($gi); - return $gi; -} - -function geoip_close($gi) -{ - if ($gi->flags & GEOIP_SHARED_MEMORY) { - return true; - } - - return fclose($gi->filehandle); -} - -function geoip_country_id_by_name_v6($gi, $name) -{ - $rec = dns_get_record($name, DNS_AAAA); - if (!$rec) { - return false; - } - $addr = $rec[0]["ipv6"]; - if (!$addr || $addr == $name) { - return false; - } - return geoip_country_id_by_addr_v6($gi, $addr); -} - -function geoip_country_id_by_name($gi, $name) -{ - $addr = gethostbyname($name); - if (!$addr || $addr == $name) { - return false; - } - return geoip_country_id_by_addr($gi, $addr); -} - -function geoip_country_code_by_name_v6($gi, $name) -{ - $country_id = geoip_country_id_by_name_v6($gi, $name); - if ($country_id !== false) { - return $gi->GEOIP_COUNTRY_CODES[$country_id]; - } - return false; -} - -function geoip_country_code_by_name($gi, $name) -{ - $country_id = geoip_country_id_by_name($gi, $name); - if ($country_id !== false) { - return $gi->GEOIP_COUNTRY_CODES[$country_id]; - } - return false; -} - -function geoip_country_name_by_name_v6($gi, $name) -{ - $country_id = geoip_country_id_by_name_v6($gi, $name); - if ($country_id !== false) { - return $gi->GEOIP_COUNTRY_NAMES[$country_id]; - } - return false; -} - -function geoip_country_name_by_name($gi, $name) -{ - $country_id = geoip_country_id_by_name($gi, $name); - if ($country_id !== false) { - return $gi->GEOIP_COUNTRY_NAMES[$country_id]; - } - return false; -} - -function geoip_country_id_by_addr_v6($gi, $addr) -{ - $ipnum = inet_pton($addr); - return _geoip_seek_country_v6($gi, $ipnum) - GEOIP_COUNTRY_BEGIN; -} - -function geoip_country_id_by_addr($gi, $addr) -{ - $ipnum = ip2long($addr); - return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN; -} - -function geoip_country_code_by_addr_v6($gi, $addr) -{ - $country_id = geoip_country_id_by_addr_v6($gi, $addr); - if ($country_id !== false) { - return $gi->GEOIP_COUNTRY_CODES[$country_id]; - } - return false; -} - -function geoip_country_code_by_addr($gi, $addr) -{ - if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) { - $record = GeoIP_record_by_addr($gi, $addr); - if ($record) { - return $record->country_code; - } - } else { - $country_id = geoip_country_id_by_addr($gi, $addr); - if ($country_id !== false) { - return $gi->GEOIP_COUNTRY_CODES[$country_id]; - } - } - return false; -} - -function geoip_country_name_by_addr_v6($gi, $addr) -{ - $country_id = geoip_country_id_by_addr_v6($gi, $addr); - if ($country_id !== false) { - return $gi->GEOIP_COUNTRY_NAMES[$country_id]; - } - return false; -} - -function geoip_country_name_by_addr($gi, $addr) -{ - if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) { - $record = GeoIP_record_by_addr($gi, $addr); - return $record->country_name; - } else { - $country_id = geoip_country_id_by_addr($gi, $addr); - if ($country_id !== false) { - return $gi->GEOIP_COUNTRY_NAMES[$country_id]; - } - } - return false; -} - -function _geoip_seek_country_v6($gi, $ipnum) -{ - # arrays from unpack start with offset 1 - # yet another php mystery. array_merge work around - # this broken behaviour - $v6vec = array_merge(unpack("C16", $ipnum)); - - $offset = 0; - for ($depth = 127; $depth >= 0; --$depth) { - if ($gi->flags & GEOIP_MEMORY_CACHE) { - $buf = _safe_substr( - $gi->memory_buffer, - 2 * $gi->record_length * $offset, - 2 * $gi->record_length - ); - } elseif ($gi->flags & GEOIP_SHARED_MEMORY) { - $buf = _sharedMemRead($gi, - 2 * $gi->record_length * $offset, - 2 * $gi->record_length - ); - } else { - fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0 - or trigger_error("GeoIP API: fseek failed", E_USER_ERROR); - $buf = fread($gi->filehandle, 2 * $gi->record_length); - } - $x = array(0, 0); - for ($i = 0; $i < 2; ++$i) { - for ($j = 0; $j < $gi->record_length; ++$j) { - $x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8); - } - } - - $bnum = 127 - $depth; - $idx = $bnum >> 3; - $b_mask = 1 << ($bnum & 7 ^ 7); - if (($v6vec[$idx] & $b_mask) > 0) { - if ($x[1] >= $gi->databaseSegments) { - return $x[1]; - } - $offset = $x[1]; - } else { - if ($x[0] >= $gi->databaseSegments) { - return $x[0]; - } - $offset = $x[0]; - } - } - trigger_error("GeoIP API: Error traversing database - perhaps it is corrupt?", E_USER_ERROR); - return false; -} - -function _geoip_seek_country($gi, $ipnum) -{ - $offset = 0; - for ($depth = 31; $depth >= 0; --$depth) { - if ($gi->flags & GEOIP_MEMORY_CACHE) { - $buf = _safe_substr( - $gi->memory_buffer, - 2 * $gi->record_length * $offset, - 2 * $gi->record_length - ); - } elseif ($gi->flags & GEOIP_SHARED_MEMORY) { - $buf = _sharedMemRead( - $gi, - 2 * $gi->record_length * $offset, - 2 * $gi->record_length - ); - } else { - fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0 - or trigger_error("GeoIP API: fseek failed", E_USER_ERROR); - $buf = fread($gi->filehandle, 2 * $gi->record_length); - } - $x = array(0, 0); - for ($i = 0; $i < 2; ++$i) { - for ($j = 0; $j < $gi->record_length; ++$j) { - $x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8); - } - } - if ($ipnum & (1 << $depth)) { - if ($x[1] >= $gi->databaseSegments) { - return $x[1]; - } - $offset = $x[1]; - } else { - if ($x[0] >= $gi->databaseSegments) { - return $x[0]; - } - $offset = $x[0]; - } - } - trigger_error("GeoIP API: Error traversing database - perhaps it is corrupt?", E_USER_ERROR); - return false; -} - -function _common_get_org($gi, $seek_org) -{ - $record_pointer = $seek_org + (2 * $gi->record_length - 1) * $gi->databaseSegments; - if ($gi->flags & GEOIP_SHARED_MEMORY) { - $org_buf = _sharedMemRead($gi, $record_pointer, MAX_ORG_RECORD_LENGTH); - } else { - fseek($gi->filehandle, $record_pointer, SEEK_SET); - $org_buf = fread($gi->filehandle, MAX_ORG_RECORD_LENGTH); - } - $org_buf = _safe_substr($org_buf, 0, strpos($org_buf, "\0")); - return $org_buf; -} - -function _get_org_v6($gi, $ipnum) -{ - $seek_org = _geoip_seek_country_v6($gi, $ipnum); - if ($seek_org == $gi->databaseSegments) { - return null; - } - return _common_get_org($gi, $seek_org); -} - -function _get_org($gi, $ipnum) -{ - $seek_org = _geoip_seek_country($gi, $ipnum); - if ($seek_org == $gi->databaseSegments) { - return null; - } - return _common_get_org($gi, $seek_org); -} - - -function geoip_name_by_addr_v6($gi, $addr) -{ - if ($addr == null) { - return 0; - } - $ipnum = inet_pton($addr); - return _get_org_v6($gi, $ipnum); -} - -function geoip_name_by_addr($gi, $addr) -{ - if ($addr == null) { - return 0; - } - $ipnum = ip2long($addr); - return _get_org($gi, $ipnum); -} - -function geoip_org_by_addr($gi, $addr) -{ - return geoip_name_by_addr($gi, $addr); -} - -function _get_region($gi, $ipnum) -{ - if ($gi->databaseType == GEOIP_REGION_EDITION_REV0) { - $seek_region = _geoip_seek_country($gi, $ipnum) - GEOIP_STATE_BEGIN_REV0; - if ($seek_region >= 1000) { - $country_code = "US"; - $region = chr(($seek_region - 1000) / 26 + 65) . chr(($seek_region - 1000) % 26 + 65); - } else { - $country_code = $gi->GEOIP_COUNTRY_CODES[$seek_region]; - $region = ""; - } - return array($country_code, $region); - } elseif ($gi->databaseType == GEOIP_REGION_EDITION_REV1) { - $seek_region = _geoip_seek_country($gi, $ipnum) - GEOIP_STATE_BEGIN_REV1; - if ($seek_region < US_OFFSET) { - $country_code = ""; - $region = ""; - } elseif ($seek_region < CANADA_OFFSET) { - $country_code = "US"; - $region = chr(($seek_region - US_OFFSET) / 26 + 65) . chr(($seek_region - US_OFFSET) % 26 + 65); - } elseif ($seek_region < WORLD_OFFSET) { - $country_code = "CA"; - $region = chr(($seek_region - CANADA_OFFSET) / 26 + 65) . chr(($seek_region - CANADA_OFFSET) % 26 + 65); - } else { - $country_code = $gi->GEOIP_COUNTRY_CODES[(int) (($seek_region - WORLD_OFFSET) / FIPS_RANGE)]; - $region = ""; - } - return array($country_code, $region); - } - return null; -} - -function geoip_region_by_addr($gi, $addr) -{ - if ($addr == null) { - return 0; - } - $ipnum = ip2long($addr); - return _get_region($gi, $ipnum); -} - -function _safe_substr($string, $start, $length) -{ - // workaround php's broken substr, strpos, etc handling with - // mbstring.func_overload and mbstring.internal_encoding - $mbExists = extension_loaded('mbstring'); - - if ($mbExists) { - $enc = mb_internal_encoding(); - mb_internal_encoding('ISO-8859-1'); - } - - $buf = substr($string, $start, $length); - - if ($mbExists) { - mb_internal_encoding($enc); - } - - return $buf; -} diff --git a/htdocs/includes/geoip/geoipcity.inc b/htdocs/includes/geoip/geoipcity.inc deleted file mode 100644 index 671f4e2c8e4..00000000000 --- a/htdocs/includes/geoip/geoipcity.inc +++ /dev/null @@ -1,171 +0,0 @@ -databaseSegments) { - return null; - } - return _common_get_record($gi, $seek_country); -} - -function _common_get_record($gi, $seek_country) -{ - // workaround php's broken substr, strpos, etc handling with - // mbstring.func_overload and mbstring.internal_encoding - $mbExists = extension_loaded('mbstring'); - if ($mbExists) { - $enc = mb_internal_encoding(); - mb_internal_encoding('ISO-8859-1'); - } - - $record_pointer = $seek_country + (2 * $gi->record_length - 1) * $gi->databaseSegments; - - if ($gi->flags & GEOIP_MEMORY_CACHE) { - $record_buf = substr($gi->memory_buffer, $record_pointer, FULL_RECORD_LENGTH); - } elseif ($gi->flags & GEOIP_SHARED_MEMORY) { - $record_buf = _sharedMemRead($gi, $record_pointer, FULL_RECORD_LENGTH); - } else { - fseek($gi->filehandle, $record_pointer, SEEK_SET); - $record_buf = fread($gi->filehandle, FULL_RECORD_LENGTH); - } - $record = new geoiprecord; - $record_buf_pos = 0; - $char = ord(substr($record_buf, $record_buf_pos, 1)); - $record->country_code = $gi->GEOIP_COUNTRY_CODES[$char]; - $record->country_code3 = $gi->GEOIP_COUNTRY_CODES3[$char]; - $record->country_name = $gi->GEOIP_COUNTRY_NAMES[$char]; - $record->continent_code = $gi->GEOIP_CONTINENT_CODES[$char]; - $record_buf_pos++; - $str_length = 0; - - // Get region - $char = ord(substr($record_buf, $record_buf_pos + $str_length, 1)); - while ($char != 0) { - $str_length++; - $char = ord(substr($record_buf, $record_buf_pos + $str_length, 1)); - } - if ($str_length > 0) { - $record->region = substr($record_buf, $record_buf_pos, $str_length); - } - $record_buf_pos += $str_length + 1; - $str_length = 0; - // Get city - $char = ord(substr($record_buf, $record_buf_pos + $str_length, 1)); - while ($char != 0) { - $str_length++; - $char = ord(substr($record_buf, $record_buf_pos + $str_length, 1)); - } - if ($str_length > 0) { - $record->city = substr($record_buf, $record_buf_pos, $str_length); - } - $record_buf_pos += $str_length + 1; - $str_length = 0; - // Get postal code - $char = ord(substr($record_buf, $record_buf_pos + $str_length, 1)); - while ($char != 0) { - $str_length++; - $char = ord(substr($record_buf, $record_buf_pos + $str_length, 1)); - } - if ($str_length > 0) { - $record->postal_code = substr($record_buf, $record_buf_pos, $str_length); - } - $record_buf_pos += $str_length + 1; - - // Get latitude and longitude - $latitude = 0; - $longitude = 0; - for ($j = 0; $j < 3; ++$j) { - $char = ord(substr($record_buf, $record_buf_pos++, 1)); - $latitude += ($char << ($j * 8)); - } - $record->latitude = ($latitude / 10000) - 180; - for ($j = 0; $j < 3; ++$j) { - $char = ord(substr($record_buf, $record_buf_pos++, 1)); - $longitude += ($char << ($j * 8)); - } - $record->longitude = ($longitude / 10000) - 180; - if (GEOIP_CITY_EDITION_REV1 == $gi->databaseType) { - $metroarea_combo = 0; - if ($record->country_code == "US") { - for ($j = 0; $j < 3; ++$j) { - $char = ord(substr($record_buf, $record_buf_pos++, 1)); - $metroarea_combo += ($char << ($j * 8)); - } - $record->metro_code = $record->dma_code = floor($metroarea_combo / 1000); - $record->area_code = $metroarea_combo % 1000; - } - } - if ($mbExists) { - mb_internal_encoding($enc); - } - return $record; -} - -function GeoIP_record_by_addr_v6($gi, $addr) -{ - if ($addr == null) { - return 0; - } - $ipnum = inet_pton($addr); - return _get_record_v6($gi, $ipnum); -} - -function _get_record($gi, $ipnum) -{ - $seek_country = _geoip_seek_country($gi, $ipnum); - if ($seek_country == $gi->databaseSegments) { - return null; - } - return _common_get_record($gi, $seek_country); -} - -function GeoIP_record_by_addr($gi, $addr) -{ - if ($addr == null) { - return 0; - } - $ipnum = ip2long($addr); - return _get_record($gi, $ipnum); -} \ No newline at end of file diff --git a/htdocs/includes/geoip/geoipregionvars.php b/htdocs/includes/geoip/geoipregionvars.php deleted file mode 100644 index 2ba9e0b0653..00000000000 --- a/htdocs/includes/geoip/geoipregionvars.php +++ /dev/null @@ -1,4633 +0,0 @@ - - array ( - '02' => 'Canillo', - '03' => 'Encamp', - '04' => 'La Massana', - '05' => 'Ordino', - '06' => 'Sant Julia de Loria', - '07' => 'Andorra la Vella', - '08' => 'Escaldes-Engordany', - ), - 'AE' => - array ( - '01' => 'Abu Dhabi', - '02' => 'Ajman', - '03' => 'Dubai', - '04' => 'Fujairah', - '05' => 'Ras Al Khaimah', - '06' => 'Sharjah', - '07' => 'Umm Al Quwain', - ), - 'AF' => - array ( - '01' => 'Badakhshan', - '02' => 'Badghis', - '03' => 'Baghlan', - '05' => 'Bamian', - '06' => 'Farah', - '07' => 'Faryab', - '08' => 'Ghazni', - '09' => 'Ghowr', - 10 => 'Helmand', - 11 => 'Herat', - 13 => 'Kabol', - 14 => 'Kapisa', - 17 => 'Lowgar', - 18 => 'Nangarhar', - 19 => 'Nimruz', - 23 => 'Kandahar', - 24 => 'Kondoz', - 26 => 'Takhar', - 27 => 'Vardak', - 28 => 'Zabol', - 29 => 'Paktika', - 30 => 'Balkh', - 31 => 'Jowzjan', - 32 => 'Samangan', - 33 => 'Sar-e Pol', - 34 => 'Konar', - 35 => 'Laghman', - 36 => 'Paktia', - 37 => 'Khowst', - 38 => 'Nurestan', - 39 => 'Oruzgan', - 40 => 'Parvan', - 41 => 'Daykondi', - 42 => 'Panjshir', - ), - 'AG' => - array ( - '01' => 'Barbuda', - '03' => 'Saint George', - '04' => 'Saint John', - '05' => 'Saint Mary', - '06' => 'Saint Paul', - '07' => 'Saint Peter', - '08' => 'Saint Philip', - '09' => 'Redonda', - ), - 'AL' => - array ( - 40 => 'Berat', - 41 => 'Diber', - 42 => 'Durres', - 43 => 'Elbasan', - 44 => 'Fier', - 45 => 'Gjirokaster', - 46 => 'Korce', - 47 => 'Kukes', - 48 => 'Lezhe', - 49 => 'Shkoder', - 50 => 'Tirane', - 51 => 'Vlore', - ), - 'AM' => - array ( - '01' => 'Aragatsotn', - '02' => 'Ararat', - '03' => 'Armavir', - '04' => 'Geghark\'unik\'', - '05' => 'Kotayk\'', - '06' => 'Lorri', - '07' => 'Shirak', - '08' => 'Syunik\'', - '09' => 'Tavush', - 10 => 'Vayots\' Dzor', - 11 => 'Yerevan', - ), - 'AO' => - array ( - '01' => 'Benguela', - '02' => 'Bie', - '03' => 'Cabinda', - '04' => 'Cuando Cubango', - '05' => 'Cuanza Norte', - '06' => 'Cuanza Sul', - '07' => 'Cunene', - '08' => 'Huambo', - '09' => 'Huila', - 12 => 'Malanje', - 13 => 'Namibe', - 14 => 'Moxico', - 15 => 'Uige', - 16 => 'Zaire', - 17 => 'Lunda Norte', - 18 => 'Lunda Sul', - 19 => 'Bengo', - 20 => 'Luanda', - ), - 'AR' => - array ( - '01' => 'Buenos Aires', - '02' => 'Catamarca', - '03' => 'Chaco', - '04' => 'Chubut', - '05' => 'Cordoba', - '06' => 'Corrientes', - '07' => 'Distrito Federal', - '08' => 'Entre Rios', - '09' => 'Formosa', - 10 => 'Jujuy', - 11 => 'La Pampa', - 12 => 'La Rioja', - 13 => 'Mendoza', - 14 => 'Misiones', - 15 => 'Neuquen', - 16 => 'Rio Negro', - 17 => 'Salta', - 18 => 'San Juan', - 19 => 'San Luis', - 20 => 'Santa Cruz', - 21 => 'Santa Fe', - 22 => 'Santiago del Estero', - 23 => 'Tierra del Fuego', - 24 => 'Tucuman', - ), - 'AT' => - array ( - '01' => 'Burgenland', - '02' => 'Karnten', - '03' => 'Niederosterreich', - '04' => 'Oberosterreich', - '05' => 'Salzburg', - '06' => 'Steiermark', - '07' => 'Tirol', - '08' => 'Vorarlberg', - '09' => 'Wien', - ), - 'AU' => - array ( - '01' => 'Australian Capital Territory', - '02' => 'New South Wales', - '03' => 'Northern Territory', - '04' => 'Queensland', - '05' => 'South Australia', - '06' => 'Tasmania', - '07' => 'Victoria', - '08' => 'Western Australia', - ), - 'AZ' => - array ( - '01' => 'Abseron', - '02' => 'Agcabadi', - '03' => 'Agdam', - '04' => 'Agdas', - '05' => 'Agstafa', - '06' => 'Agsu', - '07' => 'Ali Bayramli', - '08' => 'Astara', - '09' => 'Baki', - 10 => 'Balakan', - 11 => 'Barda', - 12 => 'Beylaqan', - 13 => 'Bilasuvar', - 14 => 'Cabrayil', - 15 => 'Calilabad', - 16 => 'Daskasan', - 17 => 'Davaci', - 18 => 'Fuzuli', - 19 => 'Gadabay', - 20 => 'Ganca', - 21 => 'Goranboy', - 22 => 'Goycay', - 23 => 'Haciqabul', - 24 => 'Imisli', - 25 => 'Ismayilli', - 26 => 'Kalbacar', - 27 => 'Kurdamir', - 28 => 'Lacin', - 30 => 'Lankaran', - 31 => 'Lerik', - 32 => 'Masalli', - 33 => 'Mingacevir', - 34 => 'Naftalan', - 35 => 'Naxcivan', - 36 => 'Neftcala', - 37 => 'Oguz', - 38 => 'Qabala', - 39 => 'Qax', - 40 => 'Qazax', - 41 => 'Qobustan', - 42 => 'Quba', - 43 => 'Qubadli', - 44 => 'Qusar', - 45 => 'Saatli', - 46 => 'Sabirabad', - 48 => 'Saki', - 49 => 'Salyan', - 50 => 'Samaxi', - 51 => 'Samkir', - 52 => 'Samux', - 53 => 'Siyazan', - 54 => 'Sumqayit', - 56 => 'Susa', - 57 => 'Tartar', - 58 => 'Tovuz', - 59 => 'Ucar', - 60 => 'Xacmaz', - 61 => 'Xankandi', - 62 => 'Xanlar', - 63 => 'Xizi', - 64 => 'Xocali', - 65 => 'Xocavand', - 66 => 'Yardimli', - 68 => 'Yevlax', - 69 => 'Zangilan', - 70 => 'Zaqatala', - 71 => 'Zardab', - ), - 'BA' => - array ( - '01' => 'Federation of Bosnia and Herzegovina', - '03' => 'Brcko District', - '02' => 'Republika Srpska', - ), - 'BB' => - array ( - '01' => 'Christ Church', - '02' => 'Saint Andrew', - '03' => 'Saint George', - '04' => 'Saint James', - '05' => 'Saint John', - '06' => 'Saint Joseph', - '07' => 'Saint Lucy', - '08' => 'Saint Michael', - '09' => 'Saint Peter', - 10 => 'Saint Philip', - 11 => 'Saint Thomas', - ), - 'BD' => - array ( - 81 => 'Dhaka', - 82 => 'Khulna', - 83 => 'Rajshahi', - 84 => 'Chittagong', - 85 => 'Barisal', - 86 => 'Sylhet', - 87 => 'Rangpur', - ), - 'BE' => - array ( - '01' => 'Antwerpen', - '03' => 'Hainaut', - '04' => 'Liege', - '05' => 'Limburg', - '06' => 'Luxembourg', - '07' => 'Namur', - '08' => 'Oost-Vlaanderen', - '09' => 'West-Vlaanderen', - 10 => 'Brabant Wallon', - 11 => 'Brussels Hoofdstedelijk Gewest', - 12 => 'Vlaams-Brabant', - 13 => 'Flanders', - 14 => 'Wallonia', - ), - 'BF' => - array ( - 15 => 'Bam', - 19 => 'Boulkiemde', - 20 => 'Ganzourgou', - 21 => 'Gnagna', - 28 => 'Kouritenga', - 33 => 'Oudalan', - 34 => 'Passore', - 36 => 'Sanguie', - 40 => 'Soum', - 42 => 'Tapoa', - 44 => 'Zoundweogo', - 45 => 'Bale', - 46 => 'Banwa', - 47 => 'Bazega', - 48 => 'Bougouriba', - 49 => 'Boulgou', - 50 => 'Gourma', - 51 => 'Houet', - 52 => 'Ioba', - 53 => 'Kadiogo', - 54 => 'Kenedougou', - 55 => 'Komoe', - 56 => 'Komondjari', - 57 => 'Kompienga', - 58 => 'Kossi', - 59 => 'Koulpelogo', - 60 => 'Kourweogo', - 61 => 'Leraba', - 62 => 'Loroum', - 63 => 'Mouhoun', - 64 => 'Namentenga', - 65 => 'Naouri', - 66 => 'Nayala', - 67 => 'Noumbiel', - 68 => 'Oubritenga', - 69 => 'Poni', - 70 => 'Sanmatenga', - 71 => 'Seno', - 72 => 'Sissili', - 73 => 'Sourou', - 74 => 'Tuy', - 75 => 'Yagha', - 76 => 'Yatenga', - 77 => 'Ziro', - 78 => 'Zondoma', - ), - 'BG' => - array ( - 33 => 'Mikhaylovgrad', - 38 => 'Blagoevgrad', - 39 => 'Burgas', - 40 => 'Dobrich', - 41 => 'Gabrovo', - 42 => 'Grad Sofiya', - 43 => 'Khaskovo', - 44 => 'Kurdzhali', - 45 => 'Kyustendil', - 46 => 'Lovech', - 47 => 'Montana', - 48 => 'Pazardzhik', - 49 => 'Pernik', - 50 => 'Pleven', - 51 => 'Plovdiv', - 52 => 'Razgrad', - 53 => 'Ruse', - 54 => 'Shumen', - 55 => 'Silistra', - 56 => 'Sliven', - 57 => 'Smolyan', - 58 => 'Sofiya', - 59 => 'Stara Zagora', - 60 => 'Turgovishte', - 61 => 'Varna', - 62 => 'Veliko Turnovo', - 63 => 'Vidin', - 64 => 'Vratsa', - 65 => 'Yambol', - ), - 'BH' => - array ( - '01' => 'Al Hadd', - '02' => 'Al Manamah', - '05' => 'Jidd Hafs', - '06' => 'Sitrah', - '08' => 'Al Mintaqah al Gharbiyah', - '09' => 'Mintaqat Juzur Hawar', - 10 => 'Al Mintaqah ash Shamaliyah', - 11 => 'Al Mintaqah al Wusta', - 12 => 'Madinat', - 13 => 'Ar Rifa', - 14 => 'Madinat Hamad', - 15 => 'Al Muharraq', - 16 => 'Al Asimah', - 17 => 'Al Janubiyah', - 18 => 'Ash Shamaliyah', - 19 => 'Al Wusta', - ), - 'BI' => - array ( - '02' => 'Bujumbura', - '09' => 'Bubanza', - 10 => 'Bururi', - 11 => 'Cankuzo', - 12 => 'Cibitoke', - 13 => 'Gitega', - 14 => 'Karuzi', - 15 => 'Kayanza', - 16 => 'Kirundo', - 17 => 'Makamba', - 18 => 'Muyinga', - 19 => 'Ngozi', - 20 => 'Rutana', - 21 => 'Ruyigi', - 22 => 'Muramvya', - 23 => 'Mwaro', - ), - 'BJ' => - array ( - '07' => 'Alibori', - '08' => 'Atakora', - '09' => 'Atlanyique', - 10 => 'Borgou', - 11 => 'Collines', - 12 => 'Kouffo', - 13 => 'Donga', - 14 => 'Littoral', - 15 => 'Mono', - 16 => 'Oueme', - 17 => 'Plateau', - 18 => 'Zou', - ), - 'BM' => - array ( - '01' => 'Devonshire', - '03' => 'Hamilton', - '04' => 'Paget', - '05' => 'Pembroke', - '06' => 'Saint George', - '07' => 'Saint George\'s', - '08' => 'Sandys', - '09' => 'Smiths', - 10 => 'Southampton', - 11 => 'Warwick', - ), - 'BN' => - array ( - '07' => 'Alibori', - '08' => 'Belait', - '09' => 'Brunei and Muara', - 10 => 'Temburong', - 11 => 'Collines', - 12 => 'Kouffo', - 13 => 'Donga', - 14 => 'Littoral', - 15 => 'Tutong', - 16 => 'Oueme', - 17 => 'Plateau', - 18 => 'Zou', - ), - 'BO' => - array ( - '01' => 'Chuquisaca', - '02' => 'Cochabamba', - '03' => 'El Beni', - '04' => 'La Paz', - '05' => 'Oruro', - '06' => 'Pando', - '07' => 'Potosi', - '08' => 'Santa Cruz', - '09' => 'Tarija', - ), - 'BR' => - array ( - '01' => 'Acre', - '02' => 'Alagoas', - '03' => 'Amapa', - '04' => 'Amazonas', - '05' => 'Bahia', - '06' => 'Ceara', - '07' => 'Distrito Federal', - '08' => 'Espirito Santo', - 11 => 'Mato Grosso do Sul', - 13 => 'Maranhao', - 14 => 'Mato Grosso', - 15 => 'Minas Gerais', - 16 => 'Para', - 17 => 'Paraiba', - 18 => 'Parana', - 20 => 'Piaui', - 21 => 'Rio de Janeiro', - 22 => 'Rio Grande do Norte', - 23 => 'Rio Grande do Sul', - 24 => 'Rondonia', - 25 => 'Roraima', - 26 => 'Santa Catarina', - 27 => 'Sao Paulo', - 28 => 'Sergipe', - 29 => 'Goias', - 30 => 'Pernambuco', - 31 => 'Tocantins', - ), - 'BS' => - array ( - '05' => 'Bimini', - '06' => 'Cat Island', - 10 => 'Exuma', - 13 => 'Inagua', - 15 => 'Long Island', - 16 => 'Mayaguana', - 18 => 'Ragged Island', - 22 => 'Harbour Island', - 23 => 'New Providence', - 24 => 'Acklins and Crooked Islands', - 25 => 'Freeport', - 26 => 'Fresh Creek', - 27 => 'Governor\'s Harbour', - 28 => 'Green Turtle Cay', - 29 => 'High Rock', - 30 => 'Kemps Bay', - 31 => 'Marsh Harbour', - 32 => 'Nichollstown and Berry Islands', - 33 => 'Rock Sound', - 34 => 'Sandy Point', - 35 => 'San Salvador and Rum Cay', - ), - 'BT' => - array ( - '05' => 'Bumthang', - '06' => 'Chhukha', - '07' => 'Chirang', - '08' => 'Daga', - '09' => 'Geylegphug', - 10 => 'Ha', - 11 => 'Lhuntshi', - 12 => 'Mongar', - 13 => 'Paro', - 14 => 'Pemagatsel', - 15 => 'Punakha', - 16 => 'Samchi', - 17 => 'Samdrup', - 18 => 'Shemgang', - 19 => 'Tashigang', - 20 => 'Thimphu', - 21 => 'Tongsa', - 22 => 'Wangdi Phodrang', - ), - 'BW' => - array ( - '01' => 'Central', - '03' => 'Ghanzi', - '04' => 'Kgalagadi', - '05' => 'Kgatleng', - '06' => 'Kweneng', - '08' => 'North-East', - '09' => 'South-East', - 10 => 'Southern', - 11 => 'North-West', - ), - 'BY' => - array ( - '01' => 'Brestskaya Voblasts\'', - '02' => 'Homyel\'skaya Voblasts\'', - '03' => 'Hrodzyenskaya Voblasts\'', - '04' => 'Minsk', - '05' => 'Minskaya Voblasts\'', - '06' => 'Mahilyowskaya Voblasts\'', - '07' => 'Vitsyebskaya Voblasts\'', - ), - 'BZ' => - array ( - '01' => 'Belize', - '02' => 'Cayo', - '03' => 'Corozal', - '04' => 'Orange Walk', - '05' => 'Stann Creek', - '06' => 'Toledo', - ), - 'CA' => - array ( - 'AB' => 'Alberta', - 'BC' => 'British Columbia', - 'MB' => 'Manitoba', - 'NB' => 'New Brunswick', - 'NL' => 'Newfoundland', - 'NS' => 'Nova Scotia', - 'NT' => 'Northwest Territories', - 'NU' => 'Nunavut', - 'ON' => 'Ontario', - 'PE' => 'Prince Edward Island', - 'QC' => 'Quebec', - 'SK' => 'Saskatchewan', - 'YT' => 'Yukon Territory', - ), - 'CD' => - array ( - '01' => 'Bandundu', - '02' => 'Equateur', - '04' => 'Kasai-Oriental', - '05' => 'Katanga', - '06' => 'Kinshasa', - '08' => 'Bas-Congo', - '09' => 'Orientale', - 10 => 'Maniema', - 11 => 'Nord-Kivu', - 12 => 'Sud-Kivu', - ), - 'CF' => - array ( - '01' => 'Bamingui-Bangoran', - '02' => 'Basse-Kotto', - '03' => 'Haute-Kotto', - '04' => 'Mambere-Kadei', - '05' => 'Haut-Mbomou', - '06' => 'Kemo', - '07' => 'Lobaye', - '08' => 'Mbomou', - '09' => 'Nana-Mambere', - 11 => 'Ouaka', - 12 => 'Ouham', - 13 => 'Ouham-Pende', - 14 => 'Cuvette-Ouest', - 15 => 'Nana-Grebizi', - 16 => 'Sangha-Mbaere', - 17 => 'Ombella-Mpoko', - 18 => 'Bangui', - ), - 'CG' => - array ( - '01' => 'Bouenza', - '04' => 'Kouilou', - '05' => 'Lekoumou', - '06' => 'Likouala', - '07' => 'Niari', - '08' => 'Plateaux', - 10 => 'Sangha', - 11 => 'Pool', - 12 => 'Brazzaville', - 13 => 'Cuvette', - 14 => 'Cuvette-Ouest', - ), - 'CH' => - array ( - '01' => 'Aargau', - '02' => 'Ausser-Rhoden', - '03' => 'Basel-Landschaft', - '04' => 'Basel-Stadt', - '05' => 'Bern', - '06' => 'Fribourg', - '07' => 'Geneve', - '08' => 'Glarus', - '09' => 'Graubunden', - 10 => 'Inner-Rhoden', - 11 => 'Luzern', - 12 => 'Neuchatel', - 13 => 'Nidwalden', - 14 => 'Obwalden', - 15 => 'Sankt Gallen', - 16 => 'Schaffhausen', - 17 => 'Schwyz', - 18 => 'Solothurn', - 19 => 'Thurgau', - 20 => 'Ticino', - 21 => 'Uri', - 22 => 'Valais', - 23 => 'Vaud', - 24 => 'Zug', - 25 => 'Zurich', - 26 => 'Jura', - ), - 'CI' => - array ( - 74 => 'Agneby', - 75 => 'Bafing', - 76 => 'Bas-Sassandra', - 77 => 'Denguele', - 78 => 'Dix-Huit Montagnes', - 79 => 'Fromager', - 80 => 'Haut-Sassandra', - 81 => 'Lacs', - 82 => 'Lagunes', - 83 => 'Marahoue', - 84 => 'Moyen-Cavally', - 85 => 'Moyen-Comoe', - 86 => 'N\'zi-Comoe', - 87 => 'Savanes', - 88 => 'Sud-Bandama', - 89 => 'Sud-Comoe', - 90 => 'Vallee du Bandama', - 91 => 'Worodougou', - 92 => 'Zanzan', - ), - 'CL' => - array ( - '01' => 'Valparaiso', - '02' => 'Aisen del General Carlos Ibanez del Campo', - '03' => 'Antofagasta', - '04' => 'Araucania', - '05' => 'Atacama', - '06' => 'Bio-Bio', - '07' => 'Coquimbo', - '08' => 'Libertador General Bernardo O\'Higgins', - 14 => 'Los Lagos', - 10 => 'Magallanes y de la Antartica Chilena', - 11 => 'Maule', - 12 => 'Region Metropolitana', - 15 => 'Tarapaca', - 16 => 'Arica y Parinacota', - 17 => 'Los Rios', - ), - 'CM' => - array ( - '04' => 'Est', - '05' => 'Littoral', - '07' => 'Nord-Ouest', - '08' => 'Ouest', - '09' => 'Sud-Ouest', - 10 => 'Adamaoua', - 11 => 'Centre', - 12 => 'Extreme-Nord', - 13 => 'Nord', - 14 => 'Sud', - ), - 'CN' => - array ( - '01' => 'Anhui', - '02' => 'Zhejiang', - '03' => 'Jiangxi', - '04' => 'Jiangsu', - '05' => 'Jilin', - '06' => 'Qinghai', - '07' => 'Fujian', - '08' => 'Heilongjiang', - '09' => 'Henan', - 10 => 'Hebei', - 11 => 'Hunan', - 12 => 'Hubei', - 13 => 'Xinjiang', - 14 => 'Xizang', - 15 => 'Gansu', - 16 => 'Guangxi', - 18 => 'Guizhou', - 19 => 'Liaoning', - 20 => 'Nei Mongol', - 21 => 'Ningxia', - 22 => 'Beijing', - 23 => 'Shanghai', - 24 => 'Shanxi', - 25 => 'Shandong', - 26 => 'Shaanxi', - 28 => 'Tianjin', - 29 => 'Yunnan', - 30 => 'Guangdong', - 31 => 'Hainan', - 32 => 'Sichuan', - 33 => 'Chongqing', - ), - 'CO' => - array ( - '01' => 'Amazonas', - '02' => 'Antioquia', - '03' => 'Arauca', - '04' => 'Atlantico', - '08' => 'Caqueta', - '09' => 'Cauca', - 10 => 'Cesar', - 11 => 'Choco', - 12 => 'Cordoba', - 14 => 'Guaviare', - 15 => 'Guainia', - 16 => 'Huila', - 17 => 'La Guajira', - 19 => 'Meta', - 20 => 'Narino', - 21 => 'Norte de Santander', - 22 => 'Putumayo', - 23 => 'Quindio', - 24 => 'Risaralda', - 25 => 'San Andres y Providencia', - 26 => 'Santander', - 27 => 'Sucre', - 28 => 'Tolima', - 29 => 'Valle del Cauca', - 30 => 'Vaupes', - 31 => 'Vichada', - 32 => 'Casanare', - 33 => 'Cundinamarca', - 34 => 'Distrito Especial', - 35 => 'Bolivar', - 36 => 'Boyaca', - 37 => 'Caldas', - 38 => 'Magdalena', - ), - 'CR' => - array ( - '01' => 'Alajuela', - '02' => 'Cartago', - '03' => 'Guanacaste', - '04' => 'Heredia', - '06' => 'Limon', - '07' => 'Puntarenas', - '08' => 'San Jose', - ), - 'CU' => - array ( - '01' => 'Pinar del Rio', - '02' => 'Ciudad de la Habana', - '03' => 'Matanzas', - '04' => 'Isla de la Juventud', - '05' => 'Camaguey', - '07' => 'Ciego de Avila', - '08' => 'Cienfuegos', - '09' => 'Granma', - 10 => 'Guantanamo', - 11 => 'La Habana', - 12 => 'Holguin', - 13 => 'Las Tunas', - 14 => 'Sancti Spiritus', - 15 => 'Santiago de Cuba', - 16 => 'Villa Clara', - ), - 'CV' => - array ( - '01' => 'Boa Vista', - '02' => 'Brava', - '04' => 'Maio', - '05' => 'Paul', - '07' => 'Ribeira Grande', - '08' => 'Sal', - 10 => 'Sao Nicolau', - 11 => 'Sao Vicente', - 13 => 'Mosteiros', - 14 => 'Praia', - 15 => 'Santa Catarina', - 16 => 'Santa Cruz', - 17 => 'Sao Domingos', - 18 => 'Sao Filipe', - 19 => 'Sao Miguel', - 20 => 'Tarrafal', - ), - 'CY' => - array ( - '01' => 'Famagusta', - '02' => 'Kyrenia', - '03' => 'Larnaca', - '04' => 'Nicosia', - '05' => 'Limassol', - '06' => 'Paphos', - ), - 'CZ' => - array ( - 52 => 'Hlavni mesto Praha', - 78 => 'Jihomoravsky kraj', - 79 => 'Jihocesky kraj', - 80 => 'Vysocina', - 81 => 'Karlovarsky kraj', - 82 => 'Kralovehradecky kraj', - 83 => 'Liberecky kraj', - 84 => 'Olomoucky kraj', - 85 => 'Moravskoslezsky kraj', - 86 => 'Pardubicky kraj', - 87 => 'Plzensky kraj', - 88 => 'Stredocesky kraj', - 89 => 'Ustecky kraj', - 90 => 'Zlinsky kraj', - ), - 'DE' => - array ( - '01' => 'Baden-Wurttemberg', - '02' => 'Bayern', - '03' => 'Bremen', - '04' => 'Hamburg', - '05' => 'Hessen', - '06' => 'Niedersachsen', - '07' => 'Nordrhein-Westfalen', - '08' => 'Rheinland-Pfalz', - '09' => 'Saarland', - 10 => 'Schleswig-Holstein', - 11 => 'Brandenburg', - 12 => 'Mecklenburg-Vorpommern', - 13 => 'Sachsen', - 14 => 'Sachsen-Anhalt', - 15 => 'Thuringen', - 16 => 'Berlin', - ), - 'DJ' => - array ( - '01' => 'Ali Sabieh', - '04' => 'Obock', - '05' => 'Tadjoura', - '06' => 'Dikhil', - '07' => 'Djibouti', - '08' => 'Arta', - ), - 'DK' => - array ( - 17 => 'Hovedstaden', - 18 => 'Midtjylland', - 19 => 'Nordjylland', - 20 => 'Sjelland', - 21 => 'Syddanmark', - ), - 'DM' => - array ( - '02' => 'Saint Andrew', - '03' => 'Saint David', - '04' => 'Saint George', - '05' => 'Saint John', - '06' => 'Saint Joseph', - '07' => 'Saint Luke', - '08' => 'Saint Mark', - '09' => 'Saint Patrick', - 10 => 'Saint Paul', - 11 => 'Saint Peter', - ), - 'DO' => - array ( - '01' => 'Azua', - '02' => 'Baoruco', - '03' => 'Barahona', - '04' => 'Dajabon', - 34 => 'Distrito Nacional', - '06' => 'Duarte', - '08' => 'Espaillat', - '09' => 'Independencia', - 10 => 'La Altagracia', - 11 => 'Elias Pina', - 12 => 'La Romana', - 14 => 'Maria Trinidad Sanchez', - 15 => 'Monte Cristi', - 16 => 'Pedernales', - 35 => 'Peravia', - 18 => 'Puerto Plata', - 19 => 'Salcedo', - 20 => 'Samana', - 21 => 'Sanchez Ramirez', - 23 => 'San Juan', - 24 => 'San Pedro De Macoris', - 25 => 'Santiago', - 26 => 'Santiago Rodriguez', - 27 => 'Valverde', - 28 => 'El Seibo', - 29 => 'Hato Mayor', - 30 => 'La Vega', - 31 => 'Monsenor Nouel', - 32 => 'Monte Plata', - 33 => 'San Cristobal', - 36 => 'San Jose de Ocoa', - 37 => 'Santo Domingo', - ), - 'DZ' => - array ( - '01' => 'Alger', - '03' => 'Batna', - '04' => 'Constantine', - '06' => 'Medea', - '07' => 'Mostaganem', - '09' => 'Oran', - 10 => 'Saida', - 12 => 'Setif', - 13 => 'Tiaret', - 14 => 'Tizi Ouzou', - 15 => 'Tlemcen', - 18 => 'Bejaia', - 19 => 'Biskra', - 20 => 'Blida', - 21 => 'Bouira', - 22 => 'Djelfa', - 23 => 'Guelma', - 24 => 'Jijel', - 25 => 'Laghouat', - 26 => 'Mascara', - 27 => 'M\'sila', - 29 => 'Oum el Bouaghi', - 30 => 'Sidi Bel Abbes', - 31 => 'Skikda', - 33 => 'Tebessa', - 34 => 'Adrar', - 35 => 'Ain Defla', - 36 => 'Ain Temouchent', - 37 => 'Annaba', - 38 => 'Bechar', - 39 => 'Bordj Bou Arreridj', - 40 => 'Boumerdes', - 41 => 'Chlef', - 42 => 'El Bayadh', - 43 => 'El Oued', - 44 => 'El Tarf', - 45 => 'Ghardaia', - 46 => 'Illizi', - 47 => 'Khenchela', - 48 => 'Mila', - 49 => 'Naama', - 50 => 'Ouargla', - 51 => 'Relizane', - 52 => 'Souk Ahras', - 53 => 'Tamanghasset', - 54 => 'Tindouf', - 55 => 'Tipaza', - 56 => 'Tissemsilt', - ), - 'EC' => - array ( - '01' => 'Galapagos', - '02' => 'Azuay', - '03' => 'Bolivar', - '04' => 'Canar', - '05' => 'Carchi', - '06' => 'Chimborazo', - '07' => 'Cotopaxi', - '08' => 'El Oro', - '09' => 'Esmeraldas', - 10 => 'Guayas', - 11 => 'Imbabura', - 12 => 'Loja', - 13 => 'Los Rios', - 14 => 'Manabi', - 15 => 'Morona-Santiago', - 17 => 'Pastaza', - 18 => 'Pichincha', - 19 => 'Tungurahua', - 20 => 'Zamora-Chinchipe', - 22 => 'Sucumbios', - 23 => 'Napo', - 24 => 'Orellana', - ), - 'EE' => - array ( - '01' => 'Harjumaa', - '02' => 'Hiiumaa', - '03' => 'Ida-Virumaa', - '04' => 'Jarvamaa', - '05' => 'Jogevamaa', - '06' => 'Kohtla-Jarve', - '07' => 'Laanemaa', - '08' => 'Laane-Virumaa', - '09' => 'Narva', - 10 => 'Parnu', - 11 => 'Parnumaa', - 12 => 'Polvamaa', - 13 => 'Raplamaa', - 14 => 'Saaremaa', - 15 => 'Sillamae', - 16 => 'Tallinn', - 17 => 'Tartu', - 18 => 'Tartumaa', - 19 => 'Valgamaa', - 20 => 'Viljandimaa', - 21 => 'Vorumaa', - ), - 'EG' => - array ( - '01' => 'Ad Daqahliyah', - '02' => 'Al Bahr al Ahmar', - '03' => 'Al Buhayrah', - '04' => 'Al Fayyum', - '05' => 'Al Gharbiyah', - '06' => 'Al Iskandariyah', - '07' => 'Al Isma\'iliyah', - '08' => 'Al Jizah', - '09' => 'Al Minufiyah', - 10 => 'Al Minya', - 11 => 'Al Qahirah', - 12 => 'Al Qalyubiyah', - 13 => 'Al Wadi al Jadid', - 14 => 'Ash Sharqiyah', - 15 => 'As Suways', - 16 => 'Aswan', - 17 => 'Asyut', - 18 => 'Bani Suwayf', - 19 => 'Bur Sa\'id', - 20 => 'Dumyat', - 21 => 'Kafr ash Shaykh', - 22 => 'Matruh', - 23 => 'Qina', - 24 => 'Suhaj', - 26 => 'Janub Sina\'', - 27 => 'Shamal Sina\'', - 28 => 'Al Uqsur', - ), - 'ER' => - array ( - '01' => 'Anseba', - '02' => 'Debub', - '03' => 'Debubawi K\'eyih Bahri', - '04' => 'Gash Barka', - '05' => 'Ma\'akel', - '06' => 'Semenawi K\'eyih Bahri', - ), - 'ES' => - array ( - '07' => 'Islas Baleares', - 27 => 'La Rioja', - 29 => 'Madrid', - 31 => 'Murcia', - 32 => 'Navarra', - 34 => 'Asturias', - 39 => 'Cantabria', - 51 => 'Andalucia', - 52 => 'Aragon', - 53 => 'Canarias', - 54 => 'Castilla-La Mancha', - 55 => 'Castilla y Leon', - 56 => 'Catalonia', - 57 => 'Extremadura', - 58 => 'Galicia', - 59 => 'Pais Vasco', - 60 => 'Comunidad Valenciana', - ), - 'ET' => - array ( - 44 => 'Adis Abeba', - 45 => 'Afar', - 46 => 'Amara', - 47 => 'Binshangul Gumuz', - 48 => 'Dire Dawa', - 49 => 'Gambela Hizboch', - 50 => 'Hareri Hizb', - 51 => 'Oromiya', - 52 => 'Sumale', - 53 => 'Tigray', - 54 => 'YeDebub Biheroch Bihereseboch na Hizboch', - ), - 'FI' => - array ( - '01' => 'Aland', - '06' => 'Lapland', - '08' => 'Oulu', - 13 => 'Southern Finland', - 14 => 'Eastern Finland', - 15 => 'Western Finland', - ), - 'FJ' => - array ( - '01' => 'Central', - '02' => 'Eastern', - '03' => 'Northern', - '04' => 'Rotuma', - '05' => 'Western', - ), - 'FM' => - array ( - '01' => 'Kosrae', - '02' => 'Pohnpei', - '03' => 'Chuuk', - '04' => 'Yap', - ), - 'FR' => - array ( - 97 => 'Aquitaine', - 98 => 'Auvergne', - 99 => 'Basse-Normandie', - 'A1' => 'Bourgogne', - 'A2' => 'Bretagne', - 'A3' => 'Centre', - 'A4' => 'Champagne-Ardenne', - 'A5' => 'Corse', - 'A6' => 'Franche-Comte', - 'A7' => 'Haute-Normandie', - 'A8' => 'Ile-de-France', - 'A9' => 'Languedoc-Roussillon', - 'B1' => 'Limousin', - 'B2' => 'Lorraine', - 'B3' => 'Midi-Pyrenees', - 'B4' => 'Nord-Pas-de-Calais', - 'B5' => 'Pays de la Loire', - 'B6' => 'Picardie', - 'B7' => 'Poitou-Charentes', - 'B8' => 'Provence-Alpes-Cote d\'Azur', - 'B9' => 'Rhone-Alpes', - 'C1' => 'Alsace', - ), - 'GA' => - array ( - '01' => 'Estuaire', - '02' => 'Haut-Ogooue', - '03' => 'Moyen-Ogooue', - '04' => 'Ngounie', - '05' => 'Nyanga', - '06' => 'Ogooue-Ivindo', - '07' => 'Ogooue-Lolo', - '08' => 'Ogooue-Maritime', - '09' => 'Woleu-Ntem', - ), - 'GB' => - array ( - 'A1' => 'Barking and Dagenham', - 'A2' => 'Barnet', - 'A3' => 'Barnsley', - 'A4' => 'Bath and North East Somerset', - 'Z5' => 'Bedfordshire', - 'A6' => 'Bexley', - 'A7' => 'Birmingham', - 'A8' => 'Blackburn with Darwen', - 'A9' => 'Blackpool', - 'B1' => 'Bolton', - 'B2' => 'Bournemouth', - 'B3' => 'Bracknell Forest', - 'B4' => 'Bradford', - 'B5' => 'Brent', - 'B6' => 'Brighton and Hove', - 'B7' => 'Bristol', - 'B8' => 'Bromley', - 'B9' => 'Buckinghamshire', - 'C1' => 'Bury', - 'C2' => 'Calderdale', - 'C3' => 'Cambridgeshire', - 'C4' => 'Camden', - 'C5' => 'Cheshire', - 'C6' => 'Cornwall', - 'C7' => 'Coventry', - 'C8' => 'Croydon', - 'C9' => 'Cumbria', - 'D1' => 'Darlington', - 'D2' => 'Derby', - 'D3' => 'Derbyshire', - 'D4' => 'Devon', - 'D5' => 'Doncaster', - 'D6' => 'Dorset', - 'D7' => 'Dudley', - 'D8' => 'Durham', - 'D9' => 'Ealing', - 'E1' => 'East Riding of Yorkshire', - 'E2' => 'East Sussex', - 'E3' => 'Enfield', - 'E4' => 'Essex', - 'E5' => 'Gateshead', - 'E6' => 'Gloucestershire', - 'E7' => 'Greenwich', - 'E8' => 'Hackney', - 'E9' => 'Halton', - 'F1' => 'Hammersmith and Fulham', - 'F2' => 'Hampshire', - 'F3' => 'Haringey', - 'F4' => 'Harrow', - 'F5' => 'Hartlepool', - 'F6' => 'Havering', - 'F7' => 'Herefordshire', - 'F8' => 'Hertford', - 'F9' => 'Hillingdon', - 'G1' => 'Hounslow', - 'G2' => 'Isle of Wight', - 'G3' => 'Islington', - 'G4' => 'Kensington and Chelsea', - 'G5' => 'Kent', - 'G6' => 'Kingston upon Hull', - 'G7' => 'Kingston upon Thames', - 'G8' => 'Kirklees', - 'G9' => 'Knowsley', - 'H1' => 'Lambeth', - 'H2' => 'Lancashire', - 'H3' => 'Leeds', - 'H4' => 'Leicester', - 'H5' => 'Leicestershire', - 'H6' => 'Lewisham', - 'H7' => 'Lincolnshire', - 'H8' => 'Liverpool', - 'H9' => 'London', - 'I1' => 'Luton', - 'I2' => 'Manchester', - 'I3' => 'Medway', - 'I4' => 'Merton', - 'I5' => 'Middlesbrough', - 'I6' => 'Milton Keynes', - 'I7' => 'Newcastle upon Tyne', - 'I8' => 'Newham', - 'I9' => 'Norfolk', - 'J1' => 'Northamptonshire', - 'J2' => 'North East Lincolnshire', - 'J3' => 'North Lincolnshire', - 'J4' => 'North Somerset', - 'J5' => 'North Tyneside', - 'J6' => 'Northumberland', - 'J7' => 'North Yorkshire', - 'J8' => 'Nottingham', - 'J9' => 'Nottinghamshire', - 'K1' => 'Oldham', - 'K2' => 'Oxfordshire', - 'K3' => 'Peterborough', - 'K4' => 'Plymouth', - 'K5' => 'Poole', - 'K6' => 'Portsmouth', - 'K7' => 'Reading', - 'K8' => 'Redbridge', - 'K9' => 'Redcar and Cleveland', - 'L1' => 'Richmond upon Thames', - 'L2' => 'Rochdale', - 'L3' => 'Rotherham', - 'L4' => 'Rutland', - 'L5' => 'Salford', - 'L6' => 'Shropshire', - 'L7' => 'Sandwell', - 'L8' => 'Sefton', - 'L9' => 'Sheffield', - 'M1' => 'Slough', - 'M2' => 'Solihull', - 'M3' => 'Somerset', - 'M4' => 'Southampton', - 'M5' => 'Southend-on-Sea', - 'M6' => 'South Gloucestershire', - 'M7' => 'South Tyneside', - 'M8' => 'Southwark', - 'M9' => 'Staffordshire', - 'N1' => 'St. Helens', - 'N2' => 'Stockport', - 'N3' => 'Stockton-on-Tees', - 'N4' => 'Stoke-on-Trent', - 'N5' => 'Suffolk', - 'N6' => 'Sunderland', - 'N7' => 'Surrey', - 'N8' => 'Sutton', - 'N9' => 'Swindon', - 'O1' => 'Tameside', - 'O2' => 'Telford and Wrekin', - 'O3' => 'Thurrock', - 'O4' => 'Torbay', - 'O5' => 'Tower Hamlets', - 'O6' => 'Trafford', - 'O7' => 'Wakefield', - 'O8' => 'Walsall', - 'O9' => 'Waltham Forest', - 'P1' => 'Wandsworth', - 'P2' => 'Warrington', - 'P3' => 'Warwickshire', - 'P4' => 'West Berkshire', - 'P5' => 'Westminster', - 'P6' => 'West Sussex', - 'P7' => 'Wigan', - 'P8' => 'Wiltshire', - 'P9' => 'Windsor and Maidenhead', - 'Q1' => 'Wirral', - 'Q2' => 'Wokingham', - 'Q3' => 'Wolverhampton', - 'Q4' => 'Worcestershire', - 'Q5' => 'York', - 'Q6' => 'Antrim', - 'Q7' => 'Ards', - 'Q8' => 'Armagh', - 'Q9' => 'Ballymena', - 'R1' => 'Ballymoney', - 'R2' => 'Banbridge', - 'R3' => 'Belfast', - 'R4' => 'Carrickfergus', - 'R5' => 'Castlereagh', - 'R6' => 'Coleraine', - 'R7' => 'Cookstown', - 'R8' => 'Craigavon', - 'R9' => 'Down', - 'S1' => 'Dungannon', - 'S2' => 'Fermanagh', - 'S3' => 'Larne', - 'S4' => 'Limavady', - 'S5' => 'Lisburn', - 'S6' => 'Derry', - 'S7' => 'Magherafelt', - 'S8' => 'Moyle', - 'S9' => 'Newry and Mourne', - 'T1' => 'Newtownabbey', - 'T2' => 'North Down', - 'T3' => 'Omagh', - 'T4' => 'Strabane', - 'T5' => 'Aberdeen City', - 'T6' => 'Aberdeenshire', - 'T7' => 'Angus', - 'T8' => 'Argyll and Bute', - 'T9' => 'Scottish Borders', - 'U1' => 'Clackmannanshire', - 'U2' => 'Dumfries and Galloway', - 'U3' => 'Dundee City', - 'U4' => 'East Ayrshire', - 'U5' => 'East Dunbartonshire', - 'U6' => 'East Lothian', - 'U7' => 'East Renfrewshire', - 'U8' => 'Edinburgh', - 'U9' => 'Falkirk', - 'V1' => 'Fife', - 'V2' => 'Glasgow City', - 'V3' => 'Highland', - 'V4' => 'Inverclyde', - 'V5' => 'Midlothian', - 'V6' => 'Moray', - 'V7' => 'North Ayrshire', - 'V8' => 'North Lanarkshire', - 'V9' => 'Orkney', - 'W1' => 'Perth and Kinross', - 'W2' => 'Renfrewshire', - 'W3' => 'Shetland Islands', - 'W4' => 'South Ayrshire', - 'W5' => 'South Lanarkshire', - 'W6' => 'Stirling', - 'W7' => 'West Dunbartonshire', - 'W8' => 'Eilean Siar', - 'W9' => 'West Lothian', - 'X1' => 'Isle of Anglesey', - 'X2' => 'Blaenau Gwent', - 'X3' => 'Bridgend', - 'X4' => 'Caerphilly', - 'X5' => 'Cardiff', - 'X6' => 'Ceredigion', - 'X7' => 'Carmarthenshire', - 'X8' => 'Conwy', - 'X9' => 'Denbighshire', - 'Y1' => 'Flintshire', - 'Y2' => 'Gwynedd', - 'Y3' => 'Merthyr Tydfil', - 'Y4' => 'Monmouthshire', - 'Y5' => 'Neath Port Talbot', - 'Y6' => 'Newport', - 'Y7' => 'Pembrokeshire', - 'Y8' => 'Powys', - 'Y9' => 'Rhondda Cynon Taff', - 'Z1' => 'Swansea', - 'Z2' => 'Torfaen', - 'Z3' => 'Vale of Glamorgan', - 'Z4' => 'Wrexham', - 'Z6' => 'Central Bedfordshire', - 'Z7' => 'Cheshire East', - 'Z8' => 'Cheshire West and Chester', - 'Z9' => 'Isles of Scilly', - ), - 'GD' => - array ( - '01' => 'Saint Andrew', - '02' => 'Saint David', - '03' => 'Saint George', - '04' => 'Saint John', - '05' => 'Saint Mark', - '06' => 'Saint Patrick', - ), - 'GE' => - array ( - '01' => 'Abashis Raioni', - '02' => 'Abkhazia', - '03' => 'Adigenis Raioni', - '04' => 'Ajaria', - '05' => 'Akhalgoris Raioni', - '06' => 'Akhalk\'alak\'is Raioni', - '07' => 'Akhalts\'ikhis Raioni', - '08' => 'Akhmetis Raioni', - '09' => 'Ambrolauris Raioni', - 10 => 'Aspindzis Raioni', - 11 => 'Baghdat\'is Raioni', - 12 => 'Bolnisis Raioni', - 13 => 'Borjomis Raioni', - 14 => 'Chiat\'ura', - 15 => 'Ch\'khorotsqus Raioni', - 16 => 'Ch\'okhatauris Raioni', - 17 => 'Dedop\'listsqaros Raioni', - 18 => 'Dmanisis Raioni', - 19 => 'Dushet\'is Raioni', - 20 => 'Gardabanis Raioni', - 21 => 'Gori', - 22 => 'Goris Raioni', - 23 => 'Gurjaanis Raioni', - 24 => 'Javis Raioni', - 25 => 'K\'arelis Raioni', - 26 => 'Kaspis Raioni', - 27 => 'Kharagaulis Raioni', - 28 => 'Khashuris Raioni', - 29 => 'Khobis Raioni', - 30 => 'Khonis Raioni', - 31 => 'K\'ut\'aisi', - 32 => 'Lagodekhis Raioni', - 33 => 'Lanch\'khut\'is Raioni', - 34 => 'Lentekhis Raioni', - 35 => 'Marneulis Raioni', - 36 => 'Martvilis Raioni', - 37 => 'Mestiis Raioni', - 38 => 'Mts\'khet\'is Raioni', - 39 => 'Ninotsmindis Raioni', - 40 => 'Onis Raioni', - 41 => 'Ozurget\'is Raioni', - 42 => 'P\'ot\'i', - 43 => 'Qazbegis Raioni', - 44 => 'Qvarlis Raioni', - 45 => 'Rust\'avi', - 46 => 'Sach\'kheris Raioni', - 47 => 'Sagarejos Raioni', - 48 => 'Samtrediis Raioni', - 49 => 'Senakis Raioni', - 50 => 'Sighnaghis Raioni', - 51 => 'T\'bilisi', - 52 => 'T\'elavis Raioni', - 53 => 'T\'erjolis Raioni', - 54 => 'T\'et\'ritsqaros Raioni', - 55 => 'T\'ianet\'is Raioni', - 56 => 'Tqibuli', - 57 => 'Ts\'ageris Raioni', - 58 => 'Tsalenjikhis Raioni', - 59 => 'Tsalkis Raioni', - 60 => 'Tsqaltubo', - 61 => 'Vanis Raioni', - 62 => 'Zestap\'onis Raioni', - 63 => 'Zugdidi', - 64 => 'Zugdidis Raioni', - ), - 'GH' => - array ( - '01' => 'Greater Accra', - '02' => 'Ashanti', - '03' => 'Brong-Ahafo', - '04' => 'Central', - '05' => 'Eastern', - '06' => 'Northern', - '08' => 'Volta', - '09' => 'Western', - 10 => 'Upper East', - 11 => 'Upper West', - ), - 'GL' => - array ( - '01' => 'Nordgronland', - '02' => 'Ostgronland', - '03' => 'Vestgronland', - ), - 'GM' => - array ( - '01' => 'Banjul', - '02' => 'Lower River', - '03' => 'Central River', - '04' => 'Upper River', - '05' => 'Western', - '07' => 'North Bank', - ), - 'GN' => - array ( - '01' => 'Beyla', - '02' => 'Boffa', - '03' => 'Boke', - '04' => 'Conakry', - '05' => 'Dabola', - '06' => 'Dalaba', - '07' => 'Dinguiraye', - '09' => 'Faranah', - 10 => 'Forecariah', - 11 => 'Fria', - 12 => 'Gaoual', - 13 => 'Gueckedou', - 15 => 'Kerouane', - 16 => 'Kindia', - 17 => 'Kissidougou', - 18 => 'Koundara', - 19 => 'Kouroussa', - 21 => 'Macenta', - 22 => 'Mali', - 23 => 'Mamou', - 25 => 'Pita', - 27 => 'Telimele', - 28 => 'Tougue', - 29 => 'Yomou', - 30 => 'Coyah', - 31 => 'Dubreka', - 32 => 'Kankan', - 33 => 'Koubia', - 34 => 'Labe', - 35 => 'Lelouma', - 36 => 'Lola', - 37 => 'Mandiana', - 38 => 'Nzerekore', - 39 => 'Siguiri', - ), - 'GQ' => - array ( - '03' => 'Annobon', - '04' => 'Bioko Norte', - '05' => 'Bioko Sur', - '06' => 'Centro Sur', - '07' => 'Kie-Ntem', - '08' => 'Litoral', - '09' => 'Wele-Nzas', - ), - 'GR' => - array ( - '01' => 'Evros', - '02' => 'Rodhopi', - '03' => 'Xanthi', - '04' => 'Drama', - '05' => 'Serrai', - '06' => 'Kilkis', - '07' => 'Pella', - '08' => 'Florina', - '09' => 'Kastoria', - 10 => 'Grevena', - 11 => 'Kozani', - 12 => 'Imathia', - 13 => 'Thessaloniki', - 14 => 'Kavala', - 15 => 'Khalkidhiki', - 16 => 'Pieria', - 17 => 'Ioannina', - 18 => 'Thesprotia', - 19 => 'Preveza', - 20 => 'Arta', - 21 => 'Larisa', - 22 => 'Trikala', - 23 => 'Kardhitsa', - 24 => 'Magnisia', - 25 => 'Kerkira', - 26 => 'Levkas', - 27 => 'Kefallinia', - 28 => 'Zakinthos', - 29 => 'Fthiotis', - 30 => 'Evritania', - 31 => 'Aitolia kai Akarnania', - 32 => 'Fokis', - 33 => 'Voiotia', - 34 => 'Evvoia', - 35 => 'Attiki', - 36 => 'Argolis', - 37 => 'Korinthia', - 38 => 'Akhaia', - 39 => 'Ilia', - 40 => 'Messinia', - 41 => 'Arkadhia', - 42 => 'Lakonia', - 43 => 'Khania', - 44 => 'Rethimni', - 45 => 'Iraklion', - 46 => 'Lasithi', - 47 => 'Dhodhekanisos', - 48 => 'Samos', - 49 => 'Kikladhes', - 50 => 'Khios', - 51 => 'Lesvos', - ), - 'GT' => - array ( - '01' => 'Alta Verapaz', - '02' => 'Baja Verapaz', - '03' => 'Chimaltenango', - '04' => 'Chiquimula', - '05' => 'El Progreso', - '06' => 'Escuintla', - '07' => 'Guatemala', - '08' => 'Huehuetenango', - '09' => 'Izabal', - 10 => 'Jalapa', - 11 => 'Jutiapa', - 12 => 'Peten', - 13 => 'Quetzaltenango', - 14 => 'Quiche', - 15 => 'Retalhuleu', - 16 => 'Sacatepequez', - 17 => 'San Marcos', - 18 => 'Santa Rosa', - 19 => 'Solola', - 20 => 'Suchitepequez', - 21 => 'Totonicapan', - 22 => 'Zacapa', - ), - 'GW' => - array ( - '01' => 'Bafata', - '02' => 'Quinara', - '04' => 'Oio', - '05' => 'Bolama', - '06' => 'Cacheu', - '07' => 'Tombali', - 10 => 'Gabu', - 11 => 'Bissau', - 12 => 'Biombo', - ), - 'GY' => - array ( - 10 => 'Barima-Waini', - 11 => 'Cuyuni-Mazaruni', - 12 => 'Demerara-Mahaica', - 13 => 'East Berbice-Corentyne', - 14 => 'Essequibo Islands-West Demerara', - 15 => 'Mahaica-Berbice', - 16 => 'Pomeroon-Supenaam', - 17 => 'Potaro-Siparuni', - 18 => 'Upper Demerara-Berbice', - 19 => 'Upper Takutu-Upper Essequibo', - ), - 'HN' => - array ( - '01' => 'Atlantida', - '02' => 'Choluteca', - '03' => 'Colon', - '04' => 'Comayagua', - '05' => 'Copan', - '06' => 'Cortes', - '07' => 'El Paraiso', - '08' => 'Francisco Morazan', - '09' => 'Gracias a Dios', - 10 => 'Intibuca', - 11 => 'Islas de la Bahia', - 12 => 'La Paz', - 13 => 'Lempira', - 14 => 'Ocotepeque', - 15 => 'Olancho', - 16 => 'Santa Barbara', - 17 => 'Valle', - 18 => 'Yoro', - ), - 'HR' => - array ( - '01' => 'Bjelovarsko-Bilogorska', - '02' => 'Brodsko-Posavska', - '03' => 'Dubrovacko-Neretvanska', - '04' => 'Istarska', - '05' => 'Karlovacka', - '06' => 'Koprivnicko-Krizevacka', - '07' => 'Krapinsko-Zagorska', - '08' => 'Licko-Senjska', - '09' => 'Medimurska', - 10 => 'Osjecko-Baranjska', - 11 => 'Pozesko-Slavonska', - 12 => 'Primorsko-Goranska', - 13 => 'Sibensko-Kninska', - 14 => 'Sisacko-Moslavacka', - 15 => 'Splitsko-Dalmatinska', - 16 => 'Varazdinska', - 17 => 'Viroviticko-Podravska', - 18 => 'Vukovarsko-Srijemska', - 19 => 'Zadarska', - 20 => 'Zagrebacka', - 21 => 'Grad Zagreb', - ), - 'HT' => - array ( - '03' => 'Nord-Ouest', - '06' => 'Artibonite', - '07' => 'Centre', - '09' => 'Nord', - 10 => 'Nord-Est', - 11 => 'Ouest', - 12 => 'Sud', - 13 => 'Sud-Est', - 14 => 'Grand\' Anse', - 15 => 'Nippes', - ), - 'HU' => - array ( - '01' => 'Bacs-Kiskun', - '02' => 'Baranya', - '03' => 'Bekes', - '04' => 'Borsod-Abauj-Zemplen', - '05' => 'Budapest', - '06' => 'Csongrad', - '07' => 'Debrecen', - '08' => 'Fejer', - '09' => 'Gyor-Moson-Sopron', - 10 => 'Hajdu-Bihar', - 11 => 'Heves', - 12 => 'Komarom-Esztergom', - 13 => 'Miskolc', - 14 => 'Nograd', - 15 => 'Pecs', - 16 => 'Pest', - 17 => 'Somogy', - 18 => 'Szabolcs-Szatmar-Bereg', - 19 => 'Szeged', - 20 => 'Jasz-Nagykun-Szolnok', - 21 => 'Tolna', - 22 => 'Vas', - 39 => 'Veszprem', - 24 => 'Zala', - 25 => 'Gyor', - 26 => 'Bekescsaba', - 27 => 'Dunaujvaros', - 28 => 'Eger', - 29 => 'Hodmezovasarhely', - 30 => 'Kaposvar', - 31 => 'Kecskemet', - 32 => 'Nagykanizsa', - 33 => 'Nyiregyhaza', - 34 => 'Sopron', - 35 => 'Szekesfehervar', - 36 => 'Szolnok', - 37 => 'Szombathely', - 38 => 'Tatabanya', - 40 => 'Zalaegerszeg', - 41 => 'Salgotarjan', - 42 => 'Szekszard', - 43 => 'Erd', - ), - 'ID' => - array ( - '01' => 'Aceh', - '02' => 'Bali', - '03' => 'Bengkulu', - '04' => 'Jakarta Raya', - '05' => 'Jambi', - '07' => 'Jawa Tengah', - '08' => 'Jawa Timur', - 10 => 'Yogyakarta', - 11 => 'Kalimantan Barat', - 12 => 'Kalimantan Selatan', - 13 => 'Kalimantan Tengah', - 14 => 'Kalimantan Timur', - 15 => 'Lampung', - 17 => 'Nusa Tenggara Barat', - 18 => 'Nusa Tenggara Timur', - 21 => 'Sulawesi Tengah', - 22 => 'Sulawesi Tenggara', - 24 => 'Sumatera Barat', - 26 => 'Sumatera Utara', - 28 => 'Maluku', - 29 => 'Maluku Utara', - 30 => 'Jawa Barat', - 31 => 'Sulawesi Utara', - 32 => 'Sumatera Selatan', - 33 => 'Banten', - 34 => 'Gorontalo', - 35 => 'Kepulauan Bangka Belitung', - 36 => 'Papua', - 37 => 'Riau', - 38 => 'Sulawesi Selatan', - 39 => 'Irian Jaya Barat', - 40 => 'Kepulauan Riau', - 41 => 'Sulawesi Barat', - ), - 'IE' => - array ( - '01' => 'Carlow', - '02' => 'Cavan', - '03' => 'Clare', - '04' => 'Cork', - '06' => 'Donegal', - '07' => 'Dublin', - 10 => 'Galway', - 11 => 'Kerry', - 12 => 'Kildare', - 13 => 'Kilkenny', - 14 => 'Leitrim', - 15 => 'Laois', - 16 => 'Limerick', - 18 => 'Longford', - 19 => 'Louth', - 20 => 'Mayo', - 21 => 'Meath', - 22 => 'Monaghan', - 23 => 'Offaly', - 24 => 'Roscommon', - 25 => 'Sligo', - 26 => 'Tipperary', - 27 => 'Waterford', - 29 => 'Westmeath', - 30 => 'Wexford', - 31 => 'Wicklow', - ), - 'IL' => - array ( - '01' => 'HaDarom', - '02' => 'HaMerkaz', - '03' => 'HaZafon', - '04' => 'Hefa', - '05' => 'Tel Aviv', - '06' => 'Yerushalayim', - ), - 'IN' => - array ( - '01' => 'Andaman and Nicobar Islands', - '02' => 'Andhra Pradesh', - '03' => 'Assam', - '05' => 'Chandigarh', - '06' => 'Dadra and Nagar Haveli', - '07' => 'Delhi', - '09' => 'Gujarat', - 10 => 'Haryana', - 11 => 'Himachal Pradesh', - 12 => 'Jammu and Kashmir', - 13 => 'Kerala', - 14 => 'Lakshadweep', - 16 => 'Maharashtra', - 17 => 'Manipur', - 18 => 'Meghalaya', - 19 => 'Karnataka', - 20 => 'Nagaland', - 21 => 'Orissa', - 22 => 'Puducherry', - 23 => 'Punjab', - 24 => 'Rajasthan', - 25 => 'Tamil Nadu', - 26 => 'Tripura', - 28 => 'West Bengal', - 29 => 'Sikkim', - 30 => 'Arunachal Pradesh', - 31 => 'Mizoram', - 32 => 'Daman and Diu', - 33 => 'Goa', - 34 => 'Bihar', - 35 => 'Madhya Pradesh', - 36 => 'Uttar Pradesh', - 37 => 'Chhattisgarh', - 38 => 'Jharkhand', - 39 => 'Uttarakhand', - ), - 'IQ' => - array ( - '01' => 'Al Anbar', - '02' => 'Al Basrah', - '03' => 'Al Muthanna', - '04' => 'Al Qadisiyah', - '05' => 'As Sulaymaniyah', - '06' => 'Babil', - '07' => 'Baghdad', - '08' => 'Dahuk', - '09' => 'Dhi Qar', - 10 => 'Diyala', - 11 => 'Arbil', - 12 => 'Karbala\'', - 13 => 'At Ta\'mim', - 14 => 'Maysan', - 15 => 'Ninawa', - 16 => 'Wasit', - 17 => 'An Najaf', - 18 => 'Salah ad Din', - ), - 'IR' => - array ( - '01' => 'Azarbayjan-e Bakhtari', - '03' => 'Chahar Mahall va Bakhtiari', - '04' => 'Sistan va Baluchestan', - '05' => 'Kohkiluyeh va Buyer Ahmadi', - '07' => 'Fars', - '08' => 'Gilan', - '09' => 'Hamadan', - 10 => 'Ilam', - 11 => 'Hormozgan', - 29 => 'Kerman', - 13 => 'Bakhtaran', - 15 => 'Khuzestan', - 16 => 'Kordestan', - 35 => 'Mazandaran', - 18 => 'Semnan Province', - 34 => 'Markazi', - 36 => 'Zanjan', - 22 => 'Bushehr', - 23 => 'Lorestan', - 25 => 'Semnan', - 26 => 'Tehran', - 28 => 'Esfahan', - 30 => 'Khorasan', - 40 => 'Yazd', - 32 => 'Ardabil', - 33 => 'East Azarbaijan', - 37 => 'Golestan', - 38 => 'Qazvin', - 39 => 'Qom', - 41 => 'Khorasan-e Janubi', - 42 => 'Khorasan-e Razavi', - 43 => 'Khorasan-e Shemali', - 44 => 'Alborz', - ), - 'IS' => - array ( - '03' => 'Arnessysla', - '05' => 'Austur-Hunavatnssysla', - '06' => 'Austur-Skaftafellssysla', - '07' => 'Borgarfjardarsysla', - '09' => 'Eyjafjardarsysla', - 10 => 'Gullbringusysla', - 15 => 'Kjosarsysla', - 17 => 'Myrasysla', - 20 => 'Nordur-Mulasysla', - 21 => 'Nordur-Tingeyjarsysla', - 23 => 'Rangarvallasysla', - 28 => 'Skagafjardarsysla', - 29 => 'Snafellsnes- og Hnappadalssysla', - 30 => 'Strandasysla', - 31 => 'Sudur-Mulasysla', - 32 => 'Sudur-Tingeyjarsysla', - 34 => 'Vestur-Bardastrandarsysla', - 35 => 'Vestur-Hunavatnssysla', - 36 => 'Vestur-Isafjardarsysla', - 37 => 'Vestur-Skaftafellssysla', - 38 => 'Austurland', - 39 => 'Hofuoborgarsvaoio', - 40 => 'Norourland Eystra', - 41 => 'Norourland Vestra', - 42 => 'Suourland', - 43 => 'Suournes', - 44 => 'Vestfiroir', - 45 => 'Vesturland', - ), - 'IT' => - array ( - '01' => 'Abruzzi', - '02' => 'Basilicata', - '03' => 'Calabria', - '04' => 'Campania', - '05' => 'Emilia-Romagna', - '06' => 'Friuli-Venezia Giulia', - '07' => 'Lazio', - '08' => 'Liguria', - '09' => 'Lombardia', - 10 => 'Marche', - 11 => 'Molise', - 12 => 'Piemonte', - 13 => 'Puglia', - 14 => 'Sardegna', - 15 => 'Sicilia', - 16 => 'Toscana', - 17 => 'Trentino-Alto Adige', - 18 => 'Umbria', - 19 => 'Valle d\'Aosta', - 20 => 'Veneto', - ), - 'JM' => - array ( - '01' => 'Clarendon', - '02' => 'Hanover', - '04' => 'Manchester', - '07' => 'Portland', - '08' => 'Saint Andrew', - '09' => 'Saint Ann', - 10 => 'Saint Catherine', - 11 => 'Saint Elizabeth', - 12 => 'Saint James', - 13 => 'Saint Mary', - 14 => 'Saint Thomas', - 15 => 'Trelawny', - 16 => 'Westmoreland', - 17 => 'Kingston', - ), - 'JO' => - array ( - '02' => 'Al Balqa\'', - '09' => 'Al Karak', - 12 => 'At Tafilah', - 15 => 'Al Mafraq', - 16 => 'Amman', - 17 => 'Az Zaraqa', - 18 => 'Irbid', - 19 => 'Ma\'an', - 20 => 'Ajlun', - 21 => 'Al Aqabah', - 22 => 'Jarash', - 23 => 'Madaba', - ), - 'JP' => - array ( - '01' => 'Aichi', - '02' => 'Akita', - '03' => 'Aomori', - '04' => 'Chiba', - '05' => 'Ehime', - '06' => 'Fukui', - '07' => 'Fukuoka', - '08' => 'Fukushima', - '09' => 'Gifu', - 10 => 'Gumma', - 11 => 'Hiroshima', - 12 => 'Hokkaido', - 13 => 'Hyogo', - 14 => 'Ibaraki', - 15 => 'Ishikawa', - 16 => 'Iwate', - 17 => 'Kagawa', - 18 => 'Kagoshima', - 19 => 'Kanagawa', - 20 => 'Kochi', - 21 => 'Kumamoto', - 22 => 'Kyoto', - 23 => 'Mie', - 24 => 'Miyagi', - 25 => 'Miyazaki', - 26 => 'Nagano', - 27 => 'Nagasaki', - 28 => 'Nara', - 29 => 'Niigata', - 30 => 'Oita', - 31 => 'Okayama', - 32 => 'Osaka', - 33 => 'Saga', - 34 => 'Saitama', - 35 => 'Shiga', - 36 => 'Shimane', - 37 => 'Shizuoka', - 38 => 'Tochigi', - 39 => 'Tokushima', - 40 => 'Tokyo', - 41 => 'Tottori', - 42 => 'Toyama', - 43 => 'Wakayama', - 44 => 'Yamagata', - 45 => 'Yamaguchi', - 46 => 'Yamanashi', - 47 => 'Okinawa', - ), - 'KE' => - array ( - '01' => 'Central', - '02' => 'Coast', - '03' => 'Eastern', - '05' => 'Nairobi Area', - '06' => 'North-Eastern', - '07' => 'Nyanza', - '08' => 'Rift Valley', - '09' => 'Western', - ), - 'KG' => - array ( - '01' => 'Bishkek', - '02' => 'Chuy', - '03' => 'Jalal-Abad', - '04' => 'Naryn', - '08' => 'Osh', - '06' => 'Talas', - '07' => 'Ysyk-Kol', - '09' => 'Batken', - ), - 'KH' => - array ( - 29 => 'Batdambang', - '02' => 'Kampong Cham', - '03' => 'Kampong Chhnang', - '04' => 'Kampong Speu', - '05' => 'Kampong Thum', - '06' => 'Kampot', - '07' => 'Kandal', - '08' => 'Koh Kong', - '09' => 'Kracheh', - 10 => 'Mondulkiri', - 22 => 'Phnum Penh', - 12 => 'Pursat', - 13 => 'Preah Vihear', - 14 => 'Prey Veng', - 15 => 'Ratanakiri Kiri', - 16 => 'Siem Reap', - 17 => 'Stung Treng', - 18 => 'Svay Rieng', - 19 => 'Takeo', - 23 => 'Ratanakiri', - 25 => 'Banteay Meanchey', - 28 => 'Preah Seihanu', - 30 => 'Pailin', - ), - 'KI' => - array ( - '01' => 'Gilbert Islands', - '02' => 'Line Islands', - '03' => 'Phoenix Islands', - ), - 'KM' => - array ( - '01' => 'Anjouan', - '02' => 'Grande Comore', - '03' => 'Moheli', - ), - 'KN' => - array ( - '01' => 'Christ Church Nichola Town', - '02' => 'Saint Anne Sandy Point', - '03' => 'Saint George Basseterre', - '04' => 'Saint George Gingerland', - '05' => 'Saint James Windward', - '06' => 'Saint John Capisterre', - '07' => 'Saint John Figtree', - '08' => 'Saint Mary Cayon', - '09' => 'Saint Paul Capisterre', - 10 => 'Saint Paul Charlestown', - 11 => 'Saint Peter Basseterre', - 12 => 'Saint Thomas Lowland', - 13 => 'Saint Thomas Middle Island', - 15 => 'Trinity Palmetto Point', - ), - 'KP' => - array ( - '01' => 'Chagang-do', - '03' => 'Hamgyong-namdo', - '06' => 'Hwanghae-namdo', - '07' => 'Hwanghae-bukto', - '08' => 'Kaesong-si', - '09' => 'Kangwon-do', - 11 => 'P\'yongan-bukto', - 12 => 'P\'yongyang-si', - 13 => 'Yanggang-do', - 14 => 'Namp\'o-si', - 15 => 'P\'yongan-namdo', - 17 => 'Hamgyong-bukto', - 18 => 'Najin Sonbong-si', - ), - 'KR' => - array ( - '01' => 'Cheju-do', - '03' => 'Cholla-bukto', - '05' => 'Ch\'ungch\'ong-bukto', - '06' => 'Kangwon-do', - 10 => 'Pusan-jikhalsi', - 11 => 'Seoul-t\'ukpyolsi', - 12 => 'Inch\'on-jikhalsi', - 13 => 'Kyonggi-do', - 14 => 'Kyongsang-bukto', - 15 => 'Taegu-jikhalsi', - 16 => 'Cholla-namdo', - 17 => 'Ch\'ungch\'ong-namdo', - 18 => 'Kwangju-jikhalsi', - 19 => 'Taejon-jikhalsi', - 20 => 'Kyongsang-namdo', - 21 => 'Ulsan-gwangyoksi', - ), - 'KW' => - array ( - '01' => 'Al Ahmadi', - '02' => 'Al Kuwayt', - '05' => 'Al Jahra', - '07' => 'Al Farwaniyah', - '08' => 'Hawalli', - '09' => 'Mubarak al Kabir', - ), - 'KY' => - array ( - '01' => 'Creek', - '02' => 'Eastern', - '03' => 'Midland', - '04' => 'South Town', - '05' => 'Spot Bay', - '06' => 'Stake Bay', - '07' => 'West End', - '08' => 'Western', - ), - 'KZ' => - array ( - '01' => 'Almaty', - '02' => 'Almaty City', - '03' => 'Aqmola', - '04' => 'Aqtobe', - '05' => 'Astana', - '06' => 'Atyrau', - '07' => 'West Kazakhstan', - '08' => 'Bayqonyr', - '09' => 'Mangghystau', - 10 => 'South Kazakhstan', - 11 => 'Pavlodar', - 12 => 'Qaraghandy', - 13 => 'Qostanay', - 14 => 'Qyzylorda', - 15 => 'East Kazakhstan', - 16 => 'North Kazakhstan', - 17 => 'Zhambyl', - ), - 'LA' => - array ( - '01' => 'Attapu', - '02' => 'Champasak', - '03' => 'Houaphan', - '04' => 'Khammouan', - '05' => 'Louang Namtha', - '07' => 'Oudomxai', - '08' => 'Phongsali', - '09' => 'Saravan', - 10 => 'Savannakhet', - 11 => 'Vientiane', - 13 => 'Xaignabouri', - 14 => 'Xiangkhoang', - 17 => 'Louangphrabang', - ), - 'LB' => - array ( - '08' => 'Beqaa', - '02' => 'Al Janub', - '09' => 'Liban-Nord', - '04' => 'Beyrouth', - '05' => 'Mont-Liban', - '06' => 'Liban-Sud', - '07' => 'Nabatiye', - 10 => 'Aakk', - 11 => 'Baalbek-Hermel', - ), - 'LC' => - array ( - '01' => 'Anse-la-Raye', - '02' => 'Dauphin', - '03' => 'Castries', - '04' => 'Choiseul', - '05' => 'Dennery', - '06' => 'Gros-Islet', - '07' => 'Laborie', - '08' => 'Micoud', - '09' => 'Soufriere', - 10 => 'Vieux-Fort', - 11 => 'Praslin', - ), - 'LI' => - array ( - '01' => 'Balzers', - '02' => 'Eschen', - '03' => 'Gamprin', - '04' => 'Mauren', - '05' => 'Planken', - '06' => 'Ruggell', - '07' => 'Schaan', - '08' => 'Schellenberg', - '09' => 'Triesen', - 10 => 'Triesenberg', - 11 => 'Vaduz', - 21 => 'Gbarpolu', - 22 => 'River Gee', - ), - 'LK' => - array ( - 29 => 'Central', - 30 => 'North Central', - 32 => 'North Western', - 33 => 'Sabaragamuwa', - 34 => 'Southern', - 35 => 'Uva', - 36 => 'Western', - 37 => 'Eastern', - 38 => 'Northern', - ), - 'LR' => - array ( - '01' => 'Bong', - 12 => 'Grand Cape Mount', - 20 => 'Lofa', - 13 => 'Maryland', - '07' => 'Monrovia', - '09' => 'Nimba', - 10 => 'Sino', - 11 => 'Grand Bassa', - 14 => 'Montserrado', - 17 => 'Margibi', - 18 => 'River Cess', - 19 => 'Grand Gedeh', - 21 => 'Gbarpolu', - 22 => 'River Gee', - ), - 'LS' => - array ( - 10 => 'Berea', - 11 => 'Butha-Buthe', - 12 => 'Leribe', - 13 => 'Mafeteng', - 14 => 'Maseru', - 15 => 'Mohales Hoek', - 16 => 'Mokhotlong', - 17 => 'Qachas Nek', - 18 => 'Quthing', - 19 => 'Thaba-Tseka', - ), - 'LT' => - array ( - 56 => 'Alytaus Apskritis', - 57 => 'Kauno Apskritis', - 58 => 'Klaipedos Apskritis', - 59 => 'Marijampoles Apskritis', - 60 => 'Panevezio Apskritis', - 61 => 'Siauliu Apskritis', - 62 => 'Taurages Apskritis', - 63 => 'Telsiu Apskritis', - 64 => 'Utenos Apskritis', - 65 => 'Vilniaus Apskritis', - ), - 'LU' => - array ( - '01' => 'Diekirch', - '02' => 'Grevenmacher', - '03' => 'Luxembourg', - ), - 'LV' => - array ( - '01' => 'Aizkraukles', - '02' => 'Aluksnes', - '03' => 'Balvu', - '04' => 'Bauskas', - '05' => 'Cesu', - '07' => 'Daugavpils', - '08' => 'Dobeles', - '09' => 'Gulbenes', - 10 => 'Jekabpils', - 11 => 'Jelgava', - 12 => 'Jelgavas', - 13 => 'Jurmala', - 14 => 'Kraslavas', - 15 => 'Kuldigas', - 16 => 'Liepaja', - 17 => 'Liepajas', - 18 => 'Limbazu', - 19 => 'Ludzas', - 20 => 'Madonas', - 21 => 'Ogres', - 22 => 'Preilu', - 23 => 'Rezekne', - 24 => 'Rezeknes', - 25 => 'Riga', - 26 => 'Rigas', - 27 => 'Saldus', - 28 => 'Talsu', - 29 => 'Tukuma', - 30 => 'Valkas', - 31 => 'Valmieras', - 33 => 'Ventspils', - ), - 'LY' => - array ( - '03' => 'Al Aziziyah', - '05' => 'Al Jufrah', - '08' => 'Al Kufrah', - 13 => 'Ash Shati\'', - 30 => 'Murzuq', - 34 => 'Sabha', - 41 => 'Tarhunah', - 42 => 'Tubruq', - 45 => 'Zlitan', - 47 => 'Ajdabiya', - 48 => 'Al Fatih', - 49 => 'Al Jabal al Akhdar', - 50 => 'Al Khums', - 51 => 'An Nuqat al Khams', - 52 => 'Awbari', - 53 => 'Az Zawiyah', - 54 => 'Banghazi', - 55 => 'Darnah', - 56 => 'Ghadamis', - 57 => 'Gharyan', - 58 => 'Misratah', - 59 => 'Sawfajjin', - 60 => 'Surt', - 61 => 'Tarabulus', - 62 => 'Yafran', - ), - 'MA' => - array ( - 45 => 'Grand Casablanca', - 46 => 'Fes-Boulemane', - 47 => 'Marrakech-Tensift-Al Haouz', - 48 => 'Meknes-Tafilalet', - 49 => 'Rabat-Sale-Zemmour-Zaer', - 50 => 'Chaouia-Ouardigha', - 51 => 'Doukkala-Abda', - 52 => 'Gharb-Chrarda-Beni Hssen', - 53 => 'Guelmim-Es Smara', - 54 => 'Oriental', - 55 => 'Souss-Massa-Dr', - 56 => 'Tadla-Azilal', - 57 => 'Tanger-Tetouan', - 58 => 'Taza-Al Hoceima-Taounate', - 59 => 'La', - ), - 'MC' => - array ( - '01' => 'La Condamine', - '02' => 'Monaco', - '03' => 'Monte-Carlo', - ), - 'MD' => - array ( - 51 => 'Gagauzia', - 57 => 'Chisinau', - 58 => 'Stinga Nistrului', - 59 => 'Anenii Noi', - 60 => 'Balti', - 61 => 'Basarabeasca', - 62 => 'Bender', - 63 => 'Briceni', - 64 => 'Cahul', - 65 => 'Cantemir', - 66 => 'Calarasi', - 67 => 'Causeni', - 68 => 'Cimislia', - 69 => 'Criuleni', - 70 => 'Donduseni', - 71 => 'Drochia', - 72 => 'Dubasari', - 73 => 'Edinet', - 74 => 'Falesti', - 75 => 'Floresti', - 76 => 'Glodeni', - 77 => 'Hincesti', - 78 => 'Ialoveni', - 79 => 'Leova', - 80 => 'Nisporeni', - 81 => 'Ocnita', - 82 => 'Orhei', - 83 => 'Rezina', - 84 => 'Riscani', - 85 => 'Singerei', - 86 => 'Soldanesti', - 87 => 'Soroca', - 88 => 'Stefan-Voda', - 89 => 'Straseni', - 90 => 'Taraclia', - 91 => 'Telenesti', - 92 => 'Ungheni', - ), - 'MG' => - array ( - '01' => 'Antsiranana', - '02' => 'Fianarantsoa', - '03' => 'Mahajanga', - '04' => 'Toamasina', - '05' => 'Antananarivo', - '06' => 'Toliara', - ), - 'MK' => - array ( - '01' => 'Aracinovo', - '02' => 'Bac', - '03' => 'Belcista', - '04' => 'Berovo', - '05' => 'Bistrica', - '06' => 'Bitola', - '07' => 'Blatec', - '08' => 'Bogdanci', - '09' => 'Bogomila', - 10 => 'Bogovinje', - 11 => 'Bosilovo', - 12 => 'Brvenica', - 'C8' => 'Cair', - 14 => 'Capari', - 'C9' => 'Caska', - 16 => 'Cegrane', - 17 => 'Centar', - 18 => 'Centar Zupa', - 19 => 'Cesinovo', - 20 => 'Cucer-Sandevo', - 'D2' => 'Debar', - 22 => 'Delcevo', - 23 => 'Delogozdi', - 'D3' => 'Demir Hisar', - 25 => 'Demir Kapija', - 26 => 'Dobrusevo', - 27 => 'Dolna Banjica', - 28 => 'Dolneni', - 29 => 'Dorce Petrov', - 30 => 'Drugovo', - 31 => 'Dzepciste', - 32 => 'Gazi Baba', - 33 => 'Gevgelija', - 'D4' => 'Gostivar', - 35 => 'Gradsko', - 36 => 'Ilinden', - 37 => 'Izvor', - 'D5' => 'Jegunovce', - 39 => 'Kamenjane', - 40 => 'Karbinci', - 41 => 'Karpos', - 'D6' => 'Kavadarci', - 43 => 'Kicevo', - 44 => 'Kisela Voda', - 45 => 'Klecevce', - 46 => 'Kocani', - 47 => 'Konce', - 48 => 'Kondovo', - 49 => 'Konopiste', - 50 => 'Kosel', - 51 => 'Kratovo', - 52 => 'Kriva Palanka', - 53 => 'Krivogastani', - 54 => 'Krusevo', - 55 => 'Kuklis', - 56 => 'Kukurecani', - 'D7' => 'Kumanovo', - 58 => 'Labunista', - 59 => 'Lipkovo', - 60 => 'Lozovo', - 61 => 'Lukovo', - 62 => 'Makedonska Kamenica', - 'D8' => 'Makedonski Brod', - 64 => 'Mavrovi Anovi', - 65 => 'Meseista', - 66 => 'Miravci', - 67 => 'Mogila', - 68 => 'Murtino', - 69 => 'Negotino', - 70 => 'Negotino-Polosko', - 71 => 'Novaci', - 72 => 'Novo Selo', - 73 => 'Oblesevo', - 'E2' => 'Ohrid', - 75 => 'Orasac', - 76 => 'Orizari', - 77 => 'Oslomej', - 78 => 'Pehcevo', - 79 => 'Petrovec', - 80 => 'Plasnica', - 81 => 'Podares', - 'E3' => 'Prilep', - 83 => 'Probistip', - 84 => 'Radovis', - 85 => 'Rankovce', - 86 => 'Resen', - 87 => 'Rosoman', - 88 => 'Rostusa', - 89 => 'Samokov', - 90 => 'Saraj', - 91 => 'Sipkovica', - 92 => 'Sopiste', - 93 => 'Sopotnica', - 94 => 'Srbinovo', - 95 => 'Staravina', - 96 => 'Star Dojran', - 97 => 'Staro Nagoricane', - 98 => 'Stip', - 'E6' => 'Struga', - 'E7' => 'Strumica', - 'A2' => 'Studenicani', - 'A3' => 'Suto Orizari', - 'A4' => 'Sveti Nikole', - 'A5' => 'Tearce', - 'E8' => 'Tetovo', - 'A7' => 'Topolcani', - 'E9' => 'Valandovo', - 'A9' => 'Vasilevo', - 'F1' => 'Veles', - 'B2' => 'Velesta', - 'B3' => 'Vevcani', - 'B4' => 'Vinica', - 'B5' => 'Vitoliste', - 'B6' => 'Vranestica', - 'B7' => 'Vrapciste', - 'B8' => 'Vratnica', - 'B9' => 'Vrutok', - 'C1' => 'Zajas', - 'C2' => 'Zelenikovo', - 'C3' => 'Zelino', - 'C4' => 'Zitose', - 'C5' => 'Zletovo', - 'C6' => 'Zrnovci', - 'E5' => 'Dojran', - 'F2' => 'Aerodrom', - ), - 'ML' => - array ( - '01' => 'Bamako', - '03' => 'Kayes', - '04' => 'Mopti', - '05' => 'Segou', - '06' => 'Sikasso', - '07' => 'Koulikoro', - '08' => 'Tombouctou', - '09' => 'Gao', - 10 => 'Kidal', - ), - 'MM' => - array ( - '01' => 'Rakhine State', - '02' => 'Chin State', - '03' => 'Irrawaddy', - '04' => 'Kachin State', - '05' => 'Karan State', - '06' => 'Kayah State', - '07' => 'Magwe', - '08' => 'Mandalay', - '09' => 'Pegu', - 10 => 'Sagaing', - 11 => 'Shan State', - 12 => 'Tenasserim', - 13 => 'Mon State', - 14 => 'Rangoon', - 17 => 'Yangon', - ), - 'MN' => - array ( - '01' => 'Arhangay', - '02' => 'Bayanhongor', - '03' => 'Bayan-Olgiy', - '05' => 'Darhan', - '06' => 'Dornod', - '07' => 'Dornogovi', - '08' => 'Dundgovi', - '09' => 'Dzavhan', - 10 => 'Govi-Altay', - 11 => 'Hentiy', - 12 => 'Hovd', - 13 => 'Hovsgol', - 14 => 'Omnogovi', - 15 => 'Ovorhangay', - 16 => 'Selenge', - 17 => 'Suhbaatar', - 18 => 'Tov', - 19 => 'Uvs', - 20 => 'Ulaanbaatar', - 21 => 'Bulgan', - 22 => 'Erdenet', - 23 => 'Darhan-Uul', - 24 => 'Govisumber', - 25 => 'Orhon', - ), - 'MO' => - array ( - '01' => 'Ilhas', - '02' => 'Macau', - ), - 'MR' => - array ( - '01' => 'Hodh Ech Chargui', - '02' => 'Hodh El Gharbi', - '03' => 'Assaba', - '04' => 'Gorgol', - '05' => 'Brakna', - '06' => 'Trarza', - '07' => 'Adrar', - '08' => 'Dakhlet Nouadhibou', - '09' => 'Tagant', - 10 => 'Guidimaka', - 11 => 'Tiris Zemmour', - 12 => 'Inchiri', - ), - 'MS' => - array ( - '01' => 'Saint Anthony', - '02' => 'Saint Georges', - '03' => 'Saint Peter', - ), - 'MU' => - array ( - 12 => 'Black River', - 13 => 'Flacq', - 14 => 'Grand Port', - 15 => 'Moka', - 16 => 'Pamplemousses', - 17 => 'Plaines Wilhems', - 18 => 'Port Louis', - 19 => 'Riviere du Rempart', - 20 => 'Savanne', - 21 => 'Agalega Islands', - 22 => 'Cargados Carajos', - 23 => 'Rodrigues', - ), - 'MV' => - array ( - '01' => 'Seenu', - '05' => 'Laamu', - 30 => 'Alifu', - 31 => 'Baa', - 32 => 'Dhaalu', - 33 => 'Faafu', - 34 => 'Gaafu Alifu', - 35 => 'Gaafu Dhaalu', - 36 => 'Haa Alifu', - 37 => 'Haa Dhaalu', - 38 => 'Kaafu', - 39 => 'Lhaviyani', - 40 => 'Maale', - 41 => 'Meemu', - 42 => 'Gnaviyani', - 43 => 'Noonu', - 44 => 'Raa', - 45 => 'Shaviyani', - 46 => 'Thaa', - 47 => 'Vaavu', - ), - 'MW' => - array ( - '02' => 'Chikwawa', - '03' => 'Chiradzulu', - '04' => 'Chitipa', - '05' => 'Thyolo', - '06' => 'Dedza', - '07' => 'Dowa', - '08' => 'Karonga', - '09' => 'Kasungu', - 11 => 'Lilongwe', - 12 => 'Mangochi', - 13 => 'Mchinji', - 15 => 'Mzimba', - 16 => 'Ntcheu', - 17 => 'Nkhata Bay', - 18 => 'Nkhotakota', - 19 => 'Nsanje', - 20 => 'Ntchisi', - 21 => 'Rumphi', - 22 => 'Salima', - 23 => 'Zomba', - 24 => 'Blantyre', - 25 => 'Mwanza', - 26 => 'Balaka', - 27 => 'Likoma', - 28 => 'Machinga', - 29 => 'Mulanje', - 30 => 'Phalombe', - ), - 'MX' => - array ( - '01' => 'Aguascalientes', - '02' => 'Baja California', - '03' => 'Baja California Sur', - '04' => 'Campeche', - '05' => 'Chiapas', - '06' => 'Chihuahua', - '07' => 'Coahuila de Zaragoza', - '08' => 'Colima', - '09' => 'Distrito Federal', - 10 => 'Durango', - 11 => 'Guanajuato', - 12 => 'Guerrero', - 13 => 'Hidalgo', - 14 => 'Jalisco', - 15 => 'Mexico', - 16 => 'Michoacan de Ocampo', - 17 => 'Morelos', - 18 => 'Nayarit', - 19 => 'Nuevo Leon', - 20 => 'Oaxaca', - 21 => 'Puebla', - 22 => 'Queretaro de Arteaga', - 23 => 'Quintana Roo', - 24 => 'San Luis Potosi', - 25 => 'Sinaloa', - 26 => 'Sonora', - 27 => 'Tabasco', - 28 => 'Tamaulipas', - 29 => 'Tlaxcala', - 30 => 'Veracruz-Llave', - 31 => 'Yucatan', - 32 => 'Zacatecas', - ), - 'MY' => - array ( - '01' => 'Johor', - '02' => 'Kedah', - '03' => 'Kelantan', - '04' => 'Melaka', - '05' => 'Negeri Sembilan', - '06' => 'Pahang', - '07' => 'Perak', - '08' => 'Perlis', - '09' => 'Pulau Pinang', - 11 => 'Sarawak', - 12 => 'Selangor', - 13 => 'Terengganu', - 14 => 'Kuala Lumpur', - 15 => 'Labuan', - 16 => 'Sabah', - 17 => 'Putrajaya', - ), - 'MZ' => - array ( - '01' => 'Cabo Delgado', - '02' => 'Gaza', - '03' => 'Inhambane', - 11 => 'Maputo', - '05' => 'Sofala', - '06' => 'Nampula', - '07' => 'Niassa', - '08' => 'Tete', - '09' => 'Zambezia', - 10 => 'Manica', - ), - 'NA' => - array ( - '01' => 'Bethanien', - '02' => 'Caprivi Oos', - '03' => 'Boesmanland', - '04' => 'Gobabis', - '05' => 'Grootfontein', - '06' => 'Kaokoland', - '07' => 'Karibib', - '08' => 'Keetmanshoop', - '09' => 'Luderitz', - 10 => 'Maltahohe', - 11 => 'Okahandja', - 12 => 'Omaruru', - 13 => 'Otjiwarongo', - 14 => 'Outjo', - 15 => 'Owambo', - 16 => 'Rehoboth', - 17 => 'Swakopmund', - 18 => 'Tsumeb', - 20 => 'Karasburg', - 21 => 'Windhoek', - 22 => 'Damaraland', - 23 => 'Hereroland Oos', - 24 => 'Hereroland Wes', - 25 => 'Kavango', - 26 => 'Mariental', - 27 => 'Namaland', - 28 => 'Caprivi', - 29 => 'Erongo', - 30 => 'Hardap', - 31 => 'Karas', - 32 => 'Kunene', - 33 => 'Ohangwena', - 34 => 'Okavango', - 35 => 'Omaheke', - 36 => 'Omusati', - 37 => 'Oshana', - 38 => 'Oshikoto', - 39 => 'Otjozondjupa', - ), - 'NE' => - array ( - '01' => 'Agadez', - '02' => 'Diffa', - '03' => 'Dosso', - '04' => 'Maradi', - '08' => 'Niamey', - '06' => 'Tahoua', - '07' => 'Zinder', - ), - 'NG' => - array ( - '05' => 'Lagos', - 11 => 'Federal Capital Territory', - 16 => 'Ogun', - 21 => 'Akwa Ibom', - 22 => 'Cross River', - 23 => 'Kaduna', - 24 => 'Katsina', - 25 => 'Anambra', - 26 => 'Benue', - 27 => 'Borno', - 28 => 'Imo', - 29 => 'Kano', - 30 => 'Kwara', - 31 => 'Niger', - 32 => 'Oyo', - 35 => 'Adamawa', - 36 => 'Delta', - 37 => 'Edo', - 39 => 'Jigawa', - 40 => 'Kebbi', - 41 => 'Kogi', - 42 => 'Osun', - 43 => 'Taraba', - 44 => 'Yobe', - 45 => 'Abia', - 46 => 'Bauchi', - 47 => 'Enugu', - 48 => 'Ondo', - 49 => 'Plateau', - 50 => 'Rivers', - 51 => 'Sokoto', - 52 => 'Bayelsa', - 53 => 'Ebonyi', - 54 => 'Ekiti', - 55 => 'Gombe', - 56 => 'Nassarawa', - 57 => 'Zamfara', - ), - 'NI' => - array ( - '01' => 'Boaco', - '02' => 'Carazo', - '03' => 'Chinandega', - '04' => 'Chontales', - '05' => 'Esteli', - '06' => 'Granada', - '07' => 'Jinotega', - '08' => 'Leon', - '09' => 'Madriz', - 10 => 'Managua', - 11 => 'Masaya', - 12 => 'Matagalpa', - 13 => 'Nueva Segovia', - 14 => 'Rio San Juan', - 15 => 'Rivas', - 16 => 'Zelaya', - 17 => 'Autonoma Atlantico Norte', - 18 => 'Region Autonoma Atlantico Sur', - ), - 'NL' => - array ( - '01' => 'Drenthe', - '02' => 'Friesland', - '03' => 'Gelderland', - '04' => 'Groningen', - '05' => 'Limburg', - '06' => 'Noord-Brabant', - '07' => 'Noord-Holland', - '09' => 'Utrecht', - 10 => 'Zeeland', - 11 => 'Zuid-Holland', - 15 => 'Overijssel', - 16 => 'Flevoland', - ), - 'NO' => - array ( - '01' => 'Akershus', - '02' => 'Aust-Agder', - '04' => 'Buskerud', - '05' => 'Finnmark', - '06' => 'Hedmark', - '07' => 'Hordaland', - '08' => 'More og Romsdal', - '09' => 'Nordland', - 10 => 'Nord-Trondelag', - 11 => 'Oppland', - 12 => 'Oslo', - 13 => 'Ostfold', - 14 => 'Rogaland', - 15 => 'Sogn og Fjordane', - 16 => 'Sor-Trondelag', - 17 => 'Telemark', - 18 => 'Troms', - 19 => 'Vest-Agder', - 20 => 'Vestfold', - ), - 'NP' => - array ( - '01' => 'Bagmati', - '02' => 'Bheri', - '03' => 'Dhawalagiri', - '04' => 'Gandaki', - '05' => 'Janakpur', - '06' => 'Karnali', - '07' => 'Kosi', - '08' => 'Lumbini', - '09' => 'Mahakali', - 10 => 'Mechi', - 11 => 'Narayani', - 12 => 'Rapti', - 13 => 'Sagarmatha', - 14 => 'Seti', - ), - 'NR' => - array ( - '01' => 'Aiwo', - '02' => 'Anabar', - '03' => 'Anetan', - '04' => 'Anibare', - '05' => 'Baiti', - '06' => 'Boe', - '07' => 'Buada', - '08' => 'Denigomodu', - '09' => 'Ewa', - 10 => 'Ijuw', - 11 => 'Meneng', - 12 => 'Nibok', - 13 => 'Uaboe', - 14 => 'Yaren', - ), - 'NZ' => - array ( - 10 => 'Chatham Islands', - 'E7' => 'Auckland', - 'E8' => 'Bay of Plenty', - 'E9' => 'Canterbury', - 'F1' => 'Gisborne', - 'F2' => 'Hawke\'s Bay', - 'F3' => 'Manawatu-Wanganui', - 'F4' => 'Marlborough', - 'F5' => 'Nelson', - 'F6' => 'Northland', - 'F7' => 'Otago', - 'F8' => 'Southland', - 'F9' => 'Taranaki', - 'G1' => 'Waikato', - 'G2' => 'Wellington', - 'G3' => 'West Coast', - ), - 'OM' => - array ( - '01' => 'Ad Dakhiliyah', - '02' => 'Al Batinah', - '03' => 'Al Wusta', - '04' => 'Ash Sharqiyah', - '05' => 'Az Zahirah', - '06' => 'Masqat', - '07' => 'Musandam', - '08' => 'Zufar', - ), - 'PA' => - array ( - '01' => 'Bocas del Toro', - '02' => 'Chiriqui', - '03' => 'Cocle', - '04' => 'Colon', - '05' => 'Darien', - '06' => 'Herrera', - '07' => 'Los Santos', - '08' => 'Panama', - '09' => 'San Blas', - 10 => 'Veraguas', - ), - 'PE' => - array ( - '01' => 'Amazonas', - '02' => 'Ancash', - '03' => 'Apurimac', - '04' => 'Arequipa', - '05' => 'Ayacucho', - '06' => 'Cajamarca', - '07' => 'Callao', - '08' => 'Cusco', - '09' => 'Huancavelica', - 10 => 'Huanuco', - 11 => 'Ica', - 12 => 'Junin', - 13 => 'La Libertad', - 14 => 'Lambayeque', - 15 => 'Lima', - 16 => 'Loreto', - 17 => 'Madre de Dios', - 18 => 'Moquegua', - 19 => 'Pasco', - 20 => 'Piura', - 21 => 'Puno', - 22 => 'San Martin', - 23 => 'Tacna', - 24 => 'Tumbes', - 25 => 'Ucayali', - ), - 'PG' => - array ( - '01' => 'Central', - '02' => 'Gulf', - '03' => 'Milne Bay', - '04' => 'Northern', - '05' => 'Southern Highlands', - '06' => 'Western', - '07' => 'North Solomons', - '08' => 'Chimbu', - '09' => 'Eastern Highlands', - 10 => 'East New Britain', - 11 => 'East Sepik', - 12 => 'Madang', - 13 => 'Manus', - 14 => 'Morobe', - 15 => 'New Ireland', - 16 => 'Western Highlands', - 17 => 'West New Britain', - 18 => 'Sandaun', - 19 => 'Enga', - 20 => 'National Capital', - ), - 'PH' => - array ( - '01' => 'Abra', - '02' => 'Agusan del Norte', - '03' => 'Agusan del Sur', - '04' => 'Aklan', - '05' => 'Albay', - '06' => 'Antique', - '07' => 'Bataan', - '08' => 'Batanes', - '09' => 'Batangas', - 10 => 'Benguet', - 11 => 'Bohol', - 12 => 'Bukidnon', - 13 => 'Bulacan', - 14 => 'Cagayan', - 15 => 'Camarines Norte', - 16 => 'Camarines Sur', - 17 => 'Camiguin', - 18 => 'Capiz', - 19 => 'Catanduanes', - 20 => 'Cavite', - 21 => 'Cebu', - 22 => 'Basilan', - 23 => 'Eastern Samar', - 24 => 'Davao', - 25 => 'Davao del Sur', - 26 => 'Davao Oriental', - 27 => 'Ifugao', - 28 => 'Ilocos Norte', - 29 => 'Ilocos Sur', - 30 => 'Iloilo', - 31 => 'Isabela', - 32 => 'Kalinga-Apayao', - 33 => 'Laguna', - 34 => 'Lanao del Norte', - 35 => 'Lanao del Sur', - 36 => 'La Union', - 37 => 'Leyte', - 38 => 'Marinduque', - 39 => 'Masbate', - 40 => 'Mindoro Occidental', - 41 => 'Mindoro Oriental', - 42 => 'Misamis Occidental', - 43 => 'Misamis Oriental', - 44 => 'Mountain', - 'H3' => 'Negros Occidental', - 46 => 'Negros Oriental', - 47 => 'Nueva Ecija', - 48 => 'Nueva Vizcaya', - 49 => 'Palawan', - 50 => 'Pampanga', - 51 => 'Pangasinan', - 53 => 'Rizal', - 54 => 'Romblon', - 55 => 'Samar', - 56 => 'Maguindanao', - 57 => 'North Cotabato', - 58 => 'Sorsogon', - 59 => 'Southern Leyte', - 60 => 'Sulu', - 'N3' => 'Surigao del Norte', - 62 => 'Surigao del Sur', - 63 => 'Tarlac', - 'P1' => 'Zambales', - 65 => 'Zamboanga del Norte', - 66 => 'Zamboanga del Sur', - 67 => 'Northern Samar', - 68 => 'Quirino', - 69 => 'Siquijor', - 70 => 'South Cotabato', - 71 => 'Sultan Kudarat', - 72 => 'Tawitawi', - 'A1' => 'Angeles', - 'A2' => 'Bacolod', - 'A3' => 'Bago', - 'A4' => 'Baguio', - 'A5' => 'Bais', - 'A6' => 'Basilan City', - 'A7' => 'Batangas City', - 'A8' => 'Butuan', - 'A9' => 'Cabanatuan', - 'B1' => 'Cadiz', - 'B2' => 'Cagayan de Oro', - 'B3' => 'Calbayog', - 'B4' => 'Caloocan', - 'B5' => 'Canlaon', - 'B6' => 'Cavite City', - 'B7' => 'Cebu City', - 'B8' => 'Cotabato', - 'B9' => 'Dagupan', - 'C1' => 'Danao', - 'C2' => 'Dapitan', - 'C3' => 'Davao City', - 'C4' => 'Dipolog', - 'C5' => 'Dumaguete', - 'C6' => 'General Santos', - 'C7' => 'Gingoog', - 'C8' => 'Iligan', - 'C9' => 'Iloilo City', - 'D1' => 'Iriga', - 'D2' => 'La Carlota', - 'D3' => 'Laoag', - 'D4' => 'Lapu-Lapu', - 'D5' => 'Legaspi', - 'D6' => 'Lipa', - 'D7' => 'Lucena', - 'D8' => 'Mandaue', - 'D9' => 'Manila', - 'E1' => 'Marawi', - 'E2' => 'Naga', - 'E3' => 'Olongapo', - 'E4' => 'Ormoc', - 'E5' => 'Oroquieta', - 'E6' => 'Ozamis', - 'E7' => 'Pagadian', - 'E8' => 'Palayan', - 'E9' => 'Pasay', - 'F1' => 'Puerto Princesa', - 'F2' => 'Quezon City', - 'F3' => 'Roxas', - 'F5' => 'San Carlos', - 'F6' => 'San Jose', - 'F7' => 'San Pablo', - 'F8' => 'Silay', - 'F9' => 'Surigao', - 'G1' => 'Tacloban', - 'G2' => 'Tagaytay', - 'G3' => 'Tagbilaran', - 'G4' => 'Tangub', - 'G5' => 'Toledo', - 'G6' => 'Trece Martires', - 'P2' => 'Zamboanga', - 'G8' => 'Aurora', - 'H2' => 'Quezon', - 'H9' => 'Biliran', - 'I6' => 'Compostela Valley', - 'I7' => 'Davao del Norte', - 'J3' => 'Guimaras', - 'J4' => 'Himamaylan', - 'J7' => 'Kalinga', - 'K1' => 'Las Pinas', - 'K5' => 'Malabon', - 'K6' => 'Malaybalay', - 'L4' => 'Muntinlupa', - 'L5' => 'Navotas', - 'L7' => 'Paranaque', - 'L9' => 'Passi', - 'M5' => 'San Jose del Monte', - 'M6' => 'San Juan', - 'M8' => 'Santiago', - 'M9' => 'Sarangani', - 'N1' => 'Sipalay', - ), - 'PK' => - array ( - '01' => 'Federally Administered Tribal Areas', - '02' => 'Balochistan', - '03' => 'North-West Frontier', - '04' => 'Punjab', - '05' => 'Sindh', - '06' => 'Azad Kashmir', - '07' => 'Northern Areas', - '08' => 'Islamabad', - ), - 'PL' => - array ( - 72 => 'Dolnoslaskie', - 73 => 'Kujawsko-Pomorskie', - 74 => 'Lodzkie', - 75 => 'Lubelskie', - 76 => 'Lubuskie', - 77 => 'Malopolskie', - 78 => 'Mazowieckie', - 79 => 'Opolskie', - 80 => 'Podkarpackie', - 81 => 'Podlaskie', - 82 => 'Pomorskie', - 83 => 'Slaskie', - 84 => 'Swietokrzyskie', - 85 => 'Warminsko-Mazurskie', - 86 => 'Wielkopolskie', - 87 => 'Zachodniopomorskie', - ), - 'PS' => - array ( - 'GZ' => 'Gaza', - 'WE' => 'West Bank', - ), - 'PT' => - array ( - '02' => 'Aveiro', - '03' => 'Beja', - '04' => 'Braga', - '05' => 'Braganca', - '06' => 'Castelo Branco', - '07' => 'Coimbra', - '08' => 'Evora', - '09' => 'Faro', - 10 => 'Madeira', - 11 => 'Guarda', - 13 => 'Leiria', - 14 => 'Lisboa', - 16 => 'Portalegre', - 17 => 'Porto', - 18 => 'Santarem', - 19 => 'Setubal', - 20 => 'Viana do Castelo', - 21 => 'Vila Real', - 22 => 'Viseu', - 23 => 'Azores', - ), - 'PY' => - array ( - '01' => 'Alto Parana', - '02' => 'Amambay', - '04' => 'Caaguazu', - '05' => 'Caazapa', - '06' => 'Central', - '07' => 'Concepcion', - '08' => 'Cordillera', - 10 => 'Guaira', - 11 => 'Itapua', - 12 => 'Misiones', - 13 => 'Neembucu', - 15 => 'Paraguari', - 16 => 'Presidente Hayes', - 17 => 'San Pedro', - 19 => 'Canindeyu', - 22 => 'Asuncion', - 23 => 'Alto Paraguay', - 24 => 'Boqueron', - ), - 'QA' => - array ( - '01' => 'Ad Dawhah', - '02' => 'Al Ghuwariyah', - '03' => 'Al Jumaliyah', - '04' => 'Al Khawr', - '05' => 'Al Wakrah Municipality', - '06' => 'Ar Rayyan', - '08' => 'Madinat ach Shamal', - '09' => 'Umm Salal', - 10 => 'Al Wakrah', - 11 => 'Jariyan al Batnah', - 12 => 'Umm Sa\'id', - ), - 'RO' => - array ( - '01' => 'Alba', - '02' => 'Arad', - '03' => 'Arges', - '04' => 'Bacau', - '05' => 'Bihor', - '06' => 'Bistrita-Nasaud', - '07' => 'Botosani', - '08' => 'Braila', - '09' => 'Brasov', - 10 => 'Bucuresti', - 11 => 'Buzau', - 12 => 'Caras-Severin', - 13 => 'Cluj', - 14 => 'Constanta', - 15 => 'Covasna', - 16 => 'Dambovita', - 17 => 'Dolj', - 18 => 'Galati', - 19 => 'Gorj', - 20 => 'Harghita', - 21 => 'Hunedoara', - 22 => 'Ialomita', - 23 => 'Iasi', - 25 => 'Maramures', - 26 => 'Mehedinti', - 27 => 'Mures', - 28 => 'Neamt', - 29 => 'Olt', - 30 => 'Prahova', - 31 => 'Salaj', - 32 => 'Satu Mare', - 33 => 'Sibiu', - 34 => 'Suceava', - 35 => 'Teleorman', - 36 => 'Timis', - 37 => 'Tulcea', - 38 => 'Vaslui', - 39 => 'Valcea', - 40 => 'Vrancea', - 41 => 'Calarasi', - 42 => 'Giurgiu', - 43 => 'Ilfov', - ), - 'RS' => - array ( - '01' => 'Kosovo', - '02' => 'Vojvodina', - ), - 'RU' => - array ( - '01' => 'Adygeya', - '02' => 'Aginsky Buryatsky AO', - '03' => 'Gorno-Altay', - '04' => 'Altaisky krai', - '05' => 'Amur', - '06' => 'Arkhangel\'sk', - '07' => 'Astrakhan\'', - '08' => 'Bashkortostan', - '09' => 'Belgorod', - 10 => 'Bryansk', - 11 => 'Buryat', - 12 => 'Chechnya', - 13 => 'Chelyabinsk', - 14 => 'Chita', - 15 => 'Chukot', - 16 => 'Chuvashia', - 17 => 'Dagestan', - 18 => 'Evenk', - 19 => 'Ingush', - 20 => 'Irkutsk', - 21 => 'Ivanovo', - 22 => 'Kabardin-Balkar', - 23 => 'Kaliningrad', - 24 => 'Kalmyk', - 25 => 'Kaluga', - 26 => 'Kamchatka', - 27 => 'Karachay-Cherkess', - 28 => 'Karelia', - 29 => 'Kemerovo', - 30 => 'Khabarovsk', - 31 => 'Khakass', - 32 => 'Khanty-Mansiy', - 33 => 'Kirov', - 34 => 'Komi', - 36 => 'Koryak', - 37 => 'Kostroma', - 38 => 'Krasnodar', - 39 => 'Krasnoyarsk', - 40 => 'Kurgan', - 41 => 'Kursk', - 42 => 'Leningrad', - 43 => 'Lipetsk', - 44 => 'Magadan', - 45 => 'Mariy-El', - 46 => 'Mordovia', - 47 => 'Moskva', - 48 => 'Moscow City', - 49 => 'Murmansk', - 50 => 'Nenets', - 51 => 'Nizhegorod', - 52 => 'Novgorod', - 53 => 'Novosibirsk', - 54 => 'Omsk', - 55 => 'Orenburg', - 56 => 'Orel', - 57 => 'Penza', - 58 => 'Perm\'', - 59 => 'Primor\'ye', - 60 => 'Pskov', - 61 => 'Rostov', - 62 => 'Ryazan\'', - 63 => 'Sakha', - 64 => 'Sakhalin', - 65 => 'Samara', - 66 => 'Saint Petersburg City', - 67 => 'Saratov', - 68 => 'North Ossetia', - 69 => 'Smolensk', - 70 => 'Stavropol\'', - 71 => 'Sverdlovsk', - 72 => 'Tambovskaya oblast', - 73 => 'Tatarstan', - 74 => 'Taymyr', - 75 => 'Tomsk', - 76 => 'Tula', - 77 => 'Tver\'', - 78 => 'Tyumen\'', - 79 => 'Tuva', - 80 => 'Udmurt', - 81 => 'Ul\'yanovsk', - 83 => 'Vladimir', - 84 => 'Volgograd', - 85 => 'Vologda', - 86 => 'Voronezh', - 87 => 'Yamal-Nenets', - 88 => 'Yaroslavl\'', - 89 => 'Yevrey', - 90 => 'Permskiy Kray', - 91 => 'Krasnoyarskiy Kray', - 92 => 'Kamchatskiy Kray', - 93 => 'Zabaykal\'skiy Kray', - ), - 'RW' => - array ( - '01' => 'Butare', - '06' => 'Gitarama', - '07' => 'Kibungo', - 12 => 'Kigali', - 11 => 'Est', - 13 => 'Nord', - 14 => 'Ouest', - 15 => 'Sud', - ), - 'SA' => - array ( - '02' => 'Al Bahah', - '05' => 'Al Madinah', - '06' => 'Ash Sharqiyah', - '08' => 'Al Qasim', - 10 => 'Ar Riyad', - 11 => 'Asir Province', - 13 => 'Ha\'il', - 14 => 'Makkah', - 15 => 'Al Hudud ash Shamaliyah', - 16 => 'Najran', - 17 => 'Jizan', - 19 => 'Tabuk', - 20 => 'Al Jawf', - ), - 'SB' => - array ( - '03' => 'Malaita', - '06' => 'Guadalcanal', - '07' => 'Isabel', - '08' => 'Makira', - '09' => 'Temotu', - 10 => 'Central', - 11 => 'Western', - 12 => 'Choiseul', - 13 => 'Rennell and Bellona', - ), - 'SC' => - array ( - '01' => 'Anse aux Pins', - '02' => 'Anse Boileau', - '03' => 'Anse Etoile', - '04' => 'Anse Louis', - '05' => 'Anse Royale', - '06' => 'Baie Lazare', - '07' => 'Baie Sainte Anne', - '08' => 'Beau Vallon', - '09' => 'Bel Air', - 10 => 'Bel Ombre', - 11 => 'Cascade', - 12 => 'Glacis', - 14 => 'Grand\' Anse', - 15 => 'La Digue', - 16 => 'La Riviere Anglaise', - 17 => 'Mont Buxton', - 18 => 'Mont Fleuri', - 19 => 'Plaisance', - 20 => 'Pointe La Rue', - 21 => 'Port Glaud', - 22 => 'Saint Louis', - 23 => 'Takamaka', - ), - 'SD' => - array ( - 27 => 'Al Wusta', - 28 => 'Al Istiwa\'iyah', - 29 => 'Al Khartum', - 30 => 'Ash Shamaliyah', - 31 => 'Ash Sharqiyah', - 32 => 'Bahr al Ghazal', - 33 => 'Darfur', - 34 => 'Kurdufan', - 35 => 'Upper Nile', - 40 => 'Al Wahadah State', - 44 => 'Central Equatoria State', - 49 => 'Southern Darfur', - 50 => 'Southern Kordofan', - 52 => 'Kassala', - 53 => 'River Nile', - 55 => 'Northern Darfur', - ), - 'SE' => - array ( - '02' => 'Blekinge Lan', - '03' => 'Gavleborgs Lan', - '05' => 'Gotlands Lan', - '06' => 'Hallands Lan', - '07' => 'Jamtlands Lan', - '08' => 'Jonkopings Lan', - '09' => 'Kalmar Lan', - 10 => 'Dalarnas Lan', - 12 => 'Kronobergs Lan', - 14 => 'Norrbottens Lan', - 15 => 'Orebro Lan', - 16 => 'Ostergotlands Lan', - 18 => 'Sodermanlands Lan', - 21 => 'Uppsala Lan', - 22 => 'Varmlands Lan', - 23 => 'Vasterbottens Lan', - 24 => 'Vasternorrlands Lan', - 25 => 'Vastmanlands Lan', - 26 => 'Stockholms Lan', - 27 => 'Skane Lan', - 28 => 'Vastra Gotaland', - ), - 'SH' => - array ( - '01' => 'Ascension', - '02' => 'Saint Helena', - '03' => 'Tristan da Cunha', - ), - 'SI' => - array ( - '01' => 'Ajdovscina Commune', - '02' => 'Beltinci Commune', - '03' => 'Bled Commune', - '04' => 'Bohinj Commune', - '05' => 'Borovnica Commune', - '06' => 'Bovec Commune', - '07' => 'Brda Commune', - '08' => 'Brezice Commune', - '09' => 'Brezovica Commune', - 11 => 'Celje Commune', - 12 => 'Cerklje na Gorenjskem Commune', - 13 => 'Cerknica Commune', - 14 => 'Cerkno Commune', - 15 => 'Crensovci Commune', - 16 => 'Crna na Koroskem Commune', - 17 => 'Crnomelj Commune', - 19 => 'Divaca Commune', - 20 => 'Dobrepolje Commune', - 22 => 'Dol pri Ljubljani Commune', - 24 => 'Dornava Commune', - 25 => 'Dravograd Commune', - 26 => 'Duplek Commune', - 27 => 'Gorenja vas-Poljane Commune', - 28 => 'Gorisnica Commune', - 29 => 'Gornja Radgona Commune', - 30 => 'Gornji Grad Commune', - 31 => 'Gornji Petrovci Commune', - 32 => 'Grosuplje Commune', - 34 => 'Hrastnik Commune', - 35 => 'Hrpelje-Kozina Commune', - 36 => 'Idrija Commune', - 37 => 'Ig Commune', - 38 => 'Ilirska Bistrica Commune', - 39 => 'Ivancna Gorica Commune', - 40 => 'Izola-Isola Commune', - 42 => 'Jursinci Commune', - 44 => 'Kanal Commune', - 45 => 'Kidricevo Commune', - 46 => 'Kobarid Commune', - 47 => 'Kobilje Commune', - 49 => 'Komen Commune', - 50 => 'Koper-Capodistria Urban Commune', - 51 => 'Kozje Commune', - 52 => 'Kranj Commune', - 53 => 'Kranjska Gora Commune', - 54 => 'Krsko Commune', - 55 => 'Kungota Commune', - 57 => 'Lasko Commune', - 61 => 'Ljubljana Urban Commune', - 62 => 'Ljubno Commune', - 64 => 'Logatec Commune', - 66 => 'Loski Potok Commune', - 68 => 'Lukovica Commune', - 71 => 'Medvode Commune', - 72 => 'Menges Commune', - 73 => 'Metlika Commune', - 74 => 'Mezica Commune', - 76 => 'Mislinja Commune', - 77 => 'Moravce Commune', - 78 => 'Moravske Toplice Commune', - 79 => 'Mozirje Commune', - 80 => 'Murska Sobota Urban Commune', - 81 => 'Muta Commune', - 82 => 'Naklo Commune', - 83 => 'Nazarje Commune', - 84 => 'Nova Gorica Urban Commune', - 86 => 'Odranci Commune', - 87 => 'Ormoz Commune', - 88 => 'Osilnica Commune', - 89 => 'Pesnica Commune', - 91 => 'Pivka Commune', - 92 => 'Podcetrtek Commune', - 94 => 'Postojna Commune', - 97 => 'Puconci Commune', - 98 => 'Race-Fram Commune', - 99 => 'Radece Commune', - 'A1' => 'Radenci Commune', - 'A2' => 'Radlje ob Dravi Commune', - 'A3' => 'Radovljica Commune', - 'A6' => 'Rogasovci Commune', - 'A7' => 'Rogaska Slatina Commune', - 'A8' => 'Rogatec Commune', - 'B1' => 'Semic Commune', - 'B2' => 'Sencur Commune', - 'B3' => 'Sentilj Commune', - 'B4' => 'Sentjernej Commune', - 'B6' => 'Sevnica Commune', - 'B7' => 'Sezana Commune', - 'B8' => 'Skocjan Commune', - 'B9' => 'Skofja Loka Commune', - 'C1' => 'Skofljica Commune', - 'C2' => 'Slovenj Gradec Urban Commune', - 'C4' => 'Slovenske Konjice Commune', - 'C5' => 'Smarje pri Jelsah Commune', - 'C6' => 'Smartno ob Paki Commune', - 'C7' => 'Sostanj Commune', - 'C8' => 'Starse Commune', - 'C9' => 'Store Commune', - 'D1' => 'Sveti Jurij Commune', - 'D2' => 'Tolmin Commune', - 'D3' => 'Trbovlje Commune', - 'D4' => 'Trebnje Commune', - 'D5' => 'Trzic Commune', - 'D6' => 'Turnisce Commune', - 'D7' => 'Velenje Urban Commune', - 'D8' => 'Velike Lasce Commune', - 'E1' => 'Vipava Commune', - 'E2' => 'Vitanje Commune', - 'E3' => 'Vodice Commune', - 'E5' => 'Vrhnika Commune', - 'E6' => 'Vuzenica Commune', - 'E7' => 'Zagorje ob Savi Commune', - 'E9' => 'Zavrc Commune', - 'F1' => 'Zelezniki Commune', - 'F2' => 'Ziri Commune', - 'F3' => 'Zrece Commune', - 'F4' => 'Benedikt Commune', - 'F5' => 'Bistrica ob Sotli Commune', - 'F6' => 'Bloke Commune', - 'F7' => 'Braslovce Commune', - 'F8' => 'Cankova Commune', - 'F9' => 'Cerkvenjak Commune', - 'G1' => 'Destrnik Commune', - 'G2' => 'Dobje Commune', - 'G3' => 'Dobrna Commune', - 'G4' => 'Dobrova-Horjul-Polhov Gradec Commune', - 'G5' => 'Dobrovnik-Dobronak Commune', - 'G6' => 'Dolenjske Toplice Commune', - 'G7' => 'Domzale Commune', - 'G8' => 'Grad Commune', - 'G9' => 'Hajdina Commune', - 'H1' => 'Hoce-Slivnica Commune', - 'H2' => 'Hodos-Hodos Commune', - 'H3' => 'Horjul Commune', - 'H4' => 'Jesenice Commune', - 'H5' => 'Jezersko Commune', - 'H6' => 'Kamnik Commune', - 'H7' => 'Kocevje Commune', - 'H8' => 'Komenda Commune', - 'H9' => 'Kostel Commune', - 'I1' => 'Krizevci Commune', - 'I2' => 'Kuzma Commune', - 'I3' => 'Lenart Commune', - 'I4' => 'Lendava-Lendva Commune', - 'I5' => 'Litija Commune', - 'I6' => 'Ljutomer Commune', - 'I7' => 'Loska Dolina Commune', - 'I8' => 'Lovrenc na Pohorju Commune', - 'I9' => 'Luce Commune', - 'J1' => 'Majsperk Commune', - 'J2' => 'Maribor Commune', - 'J3' => 'Markovci Commune', - 'J4' => 'Miklavz na Dravskem polju Commune', - 'J5' => 'Miren-Kostanjevica Commune', - 'J6' => 'Mirna Pec Commune', - 'J7' => 'Novo mesto Urban Commune', - 'J8' => 'Oplotnica Commune', - 'J9' => 'Piran-Pirano Commune', - 'K1' => 'Podlehnik Commune', - 'K2' => 'Podvelka Commune', - 'K3' => 'Polzela Commune', - 'K4' => 'Prebold Commune', - 'K5' => 'Preddvor Commune', - 'K6' => 'Prevalje Commune', - 'K7' => 'Ptuj Urban Commune', - 'K8' => 'Ravne na Koroskem Commune', - 'K9' => 'Razkrizje Commune', - 'L1' => 'Ribnica Commune', - 'L2' => 'Ribnica na Pohorju Commune', - 'L3' => 'Ruse Commune', - 'L4' => 'Salovci Commune', - 'L5' => 'Selnica ob Dravi Commune', - 'L6' => 'Sempeter-Vrtojba Commune', - 'L7' => 'Sentjur pri Celju Commune', - 'L8' => 'Slovenska Bistrica Commune', - 'L9' => 'Smartno pri Litiji Commune', - 'M1' => 'Sodrazica Commune', - 'M2' => 'Solcava Commune', - 'M3' => 'Sveta Ana Commune', - 'M4' => 'Sveti Andraz v Slovenskih goricah Commune', - 'M5' => 'Tabor Commune', - 'M6' => 'Tisina Commune', - 'M7' => 'Trnovska vas Commune', - 'M8' => 'Trzin Commune', - 'M9' => 'Velika Polana Commune', - 'N1' => 'Verzej Commune', - 'N2' => 'Videm Commune', - 'N3' => 'Vojnik Commune', - 'N4' => 'Vransko Commune', - 'N5' => 'Zalec Commune', - 'N6' => 'Zetale Commune', - 'N7' => 'Zirovnica Commune', - 'N8' => 'Zuzemberk Commune', - 'N9' => 'Apace Commune', - 'O1' => 'Cirkulane Commune', - 'O2' => 'Gorje', - 'O3' => 'Kostanjevica na Krki', - 'O4' => 'Log-Dragomer', - 'O5' => 'Makole', - 'O6' => 'Mirna', - 'O7' => 'Mokronog-Trebelno', - 'O8' => 'Poljcane', - 'O9' => 'Recica ob Savinji', - 'P1' => 'Rence-Vogrsko', - 'P2' => 'Sentrupert', - 'P3' => 'Smarjesk Toplice', - 'P4' => 'Sredisce ob Dravi', - 'P5' => 'Straza', - 'P7' => 'Sveti Jurij v Slovenskih Goricah', - ), - 'SK' => - array ( - '01' => 'Banska Bystrica', - '02' => 'Bratislava', - '03' => 'Kosice', - '04' => 'Nitra', - '05' => 'Presov', - '06' => 'Trencin', - '07' => 'Trnava', - '08' => 'Zilina', - ), - 'SL' => - array ( - '01' => 'Eastern', - '02' => 'Northern', - '03' => 'Southern', - '04' => 'Western Area', - ), - 'SM' => - array ( - '01' => 'Acquaviva', - '02' => 'Chiesanuova', - '03' => 'Domagnano', - '04' => 'Faetano', - '05' => 'Fiorentino', - '06' => 'Borgo Maggiore', - '07' => 'San Marino', - '08' => 'Monte Giardino', - '09' => 'Serravalle', - ), - 'SN' => - array ( - '01' => 'Dakar', - '03' => 'Diourbel', - '05' => 'Tambacounda', - '07' => 'Thies', - '09' => 'Fatick', - 10 => 'Kaolack', - 11 => 'Kolda', - 12 => 'Ziguinchor', - 13 => 'Louga', - 14 => 'Saint-Louis', - 15 => 'Matam', - ), - 'SO' => - array ( - '01' => 'Bakool', - '02' => 'Banaadir', - '03' => 'Bari', - '04' => 'Bay', - '05' => 'Galguduud', - '06' => 'Gedo', - '07' => 'Hiiraan', - '08' => 'Jubbada Dhexe', - '09' => 'Jubbada Hoose', - 10 => 'Mudug', - 18 => 'Nugaal', - 12 => 'Sanaag', - 13 => 'Shabeellaha Dhexe', - 14 => 'Shabeellaha Hoose', - 20 => 'Woqooyi Galbeed', - 19 => 'Togdheer', - 21 => 'Awdal', - 22 => 'Sool', - ), - 'SR' => - array ( - 10 => 'Brokopondo', - 11 => 'Commewijne', - 12 => 'Coronie', - 13 => 'Marowijne', - 14 => 'Nickerie', - 15 => 'Para', - 16 => 'Paramaribo', - 17 => 'Saramacca', - 18 => 'Sipaliwini', - 19 => 'Wanica', - ), - 'SS' => - array ( - '01' => 'Central Equatoria', - '02' => 'Eastern Equatoria', - '03' => 'Jonglei', - '04' => 'Lakes', - '05' => 'Northern Bahr el Ghazal', - '06' => 'Unity', - '07' => 'Upper Nile', - '08' => 'Warrap', - '09' => 'Western Bahr el Ghazal', - 10 => 'Western Equatoria', - ), - 'ST' => - array ( - '01' => 'Principe', - '02' => 'Sao Tome', - ), - 'SV' => - array ( - '01' => 'Ahuachapan', - '02' => 'Cabanas', - '03' => 'Chalatenango', - '04' => 'Cuscatlan', - '05' => 'La Libertad', - '06' => 'La Paz', - '07' => 'La Union', - '08' => 'Morazan', - '09' => 'San Miguel', - 10 => 'San Salvador', - 11 => 'Santa Ana', - 12 => 'San Vicente', - 13 => 'Sonsonate', - 14 => 'Usulutan', - ), - 'SY' => - array ( - '01' => 'Al Hasakah', - '02' => 'Al Ladhiqiyah', - '03' => 'Al Qunaytirah', - '04' => 'Ar Raqqah', - '05' => 'As Suwayda\'', - '06' => 'Dar', - '07' => 'Dayr az Zawr', - '08' => 'Rif Dimashq', - '09' => 'Halab', - 10 => 'Hamah', - 11 => 'Hims', - 12 => 'Idlib', - 13 => 'Dimashq', - 14 => 'Tartus', - ), - 'SZ' => - array ( - '01' => 'Hhohho', - '02' => 'Lubombo', - '03' => 'Manzini', - '04' => 'Shiselweni', - '05' => 'Praslin', - ), - 'TD' => - array ( - '01' => 'Batha', - '02' => 'Biltine', - '03' => 'Borkou-Ennedi-Tibesti', - '04' => 'Chari-Baguirmi', - '05' => 'Guera', - '06' => 'Kanem', - '07' => 'Lac', - '08' => 'Logone Occidental', - '09' => 'Logone Oriental', - 10 => 'Mayo-Kebbi', - 11 => 'Moyen-Chari', - 12 => 'Ouaddai', - 13 => 'Salamat', - 14 => 'Tandjile', - ), - 'TG' => - array ( - 22 => 'Centrale', - 23 => 'Kara', - 24 => 'Maritime', - 25 => 'Plateaux', - 26 => 'Savanes', - ), - 'TH' => - array ( - '01' => 'Mae Hong Son', - '02' => 'Chiang Mai', - '03' => 'Chiang Rai', - '04' => 'Nan', - '05' => 'Lamphun', - '06' => 'Lampang', - '07' => 'Phrae', - '08' => 'Tak', - '09' => 'Sukhothai', - 10 => 'Uttaradit', - 11 => 'Kamphaeng Phet', - 12 => 'Phitsanulok', - 13 => 'Phichit', - 14 => 'Phetchabun', - 15 => 'Uthai Thani', - 16 => 'Nakhon Sawan', - 17 => 'Nong Khai', - 18 => 'Loei', - 20 => 'Sakon Nakhon', - 73 => 'Nakhon Phanom', - 22 => 'Khon Kaen', - 23 => 'Kalasin', - 24 => 'Maha Sarakham', - 25 => 'Roi Et', - 26 => 'Chaiyaphum', - 27 => 'Nakhon Ratchasima', - 28 => 'Buriram', - 29 => 'Surin', - 30 => 'Sisaket', - 31 => 'Narathiwat', - 32 => 'Chai Nat', - 33 => 'Sing Buri', - 34 => 'Lop Buri', - 35 => 'Ang Thong', - 36 => 'Phra Nakhon Si Ayutthaya', - 37 => 'Saraburi', - 38 => 'Nonthaburi', - 39 => 'Pathum Thani', - 40 => 'Krung Thep', - 41 => 'Phayao', - 42 => 'Samut Prakan', - 43 => 'Nakhon Nayok', - 44 => 'Chachoengsao', - 74 => 'Prachin Buri', - 46 => 'Chon Buri', - 47 => 'Rayong', - 48 => 'Chanthaburi', - 49 => 'Trat', - 50 => 'Kanchanaburi', - 51 => 'Suphan Buri', - 52 => 'Ratchaburi', - 53 => 'Nakhon Pathom', - 54 => 'Samut Songkhram', - 55 => 'Samut Sakhon', - 56 => 'Phetchaburi', - 57 => 'Prachuap Khiri Khan', - 58 => 'Chumphon', - 59 => 'Ranong', - 60 => 'Surat Thani', - 61 => 'Phangnga', - 62 => 'Phuket', - 63 => 'Krabi', - 64 => 'Nakhon Si Thammarat', - 65 => 'Trang', - 66 => 'Phatthalung', - 67 => 'Satun', - 68 => 'Songkhla', - 69 => 'Pattani', - 70 => 'Yala', - 75 => 'Ubon Ratchathani', - 72 => 'Yasothon', - 76 => 'Udon Thani', - 77 => 'Amnat Charoen', - 78 => 'Mukdahan', - 79 => 'Nong Bua Lamphu', - 80 => 'Sa Kaeo', - 81 => 'Bueng Kan', - ), - 'TJ' => - array ( - '01' => 'Kuhistoni Badakhshon', - '02' => 'Khatlon', - '03' => 'Sughd', - '04' => 'Dushanbe', - '05' => 'Nohiyahoi Tobei Jumhuri', - ), - 'TL' => - array ( - '06' => 'Dili', - ), - 'TM' => - array ( - '01' => 'Ahal', - '02' => 'Balkan', - '03' => 'Dashoguz', - '04' => 'Lebap', - '05' => 'Mary', - ), - 'TN' => - array ( - '02' => 'Kasserine', - '03' => 'Kairouan', - '06' => 'Jendouba', - 10 => 'Qafsah', - 14 => 'El Kef', - 15 => 'Al Mahdia', - 16 => 'Al Munastir', - 17 => 'Bajah', - 18 => 'Bizerte', - 19 => 'Nabeul', - 22 => 'Siliana', - 23 => 'Sousse', - 27 => 'Ben Arous', - 28 => 'Madanin', - 29 => 'Gabes', - 31 => 'Kebili', - 32 => 'Sfax', - 33 => 'Sidi Bou Zid', - 34 => 'Tataouine', - 35 => 'Tozeur', - 36 => 'Tunis', - 37 => 'Zaghouan', - 38 => 'Aiana', - 39 => 'Manouba', - ), - 'TO' => - array ( - '01' => 'Ha', - '02' => 'Tongatapu', - '03' => 'Vava', - ), - 'TR' => - array ( - '02' => 'Adiyaman', - '03' => 'Afyonkarahisar', - '04' => 'Agri', - '05' => 'Amasya', - '07' => 'Antalya', - '08' => 'Artvin', - '09' => 'Aydin', - 10 => 'Balikesir', - 11 => 'Bilecik', - 12 => 'Bingol', - 13 => 'Bitlis', - 14 => 'Bolu', - 15 => 'Burdur', - 16 => 'Bursa', - 17 => 'Canakkale', - 19 => 'Corum', - 20 => 'Denizli', - 21 => 'Diyarbakir', - 22 => 'Edirne', - 23 => 'Elazig', - 24 => 'Erzincan', - 25 => 'Erzurum', - 26 => 'Eskisehir', - 28 => 'Giresun', - 31 => 'Hatay', - 32 => 'Mersin', - 33 => 'Isparta', - 34 => 'Istanbul', - 35 => 'Izmir', - 37 => 'Kastamonu', - 38 => 'Kayseri', - 39 => 'Kirklareli', - 40 => 'Kirsehir', - 41 => 'Kocaeli', - 43 => 'Kutahya', - 44 => 'Malatya', - 45 => 'Manisa', - 46 => 'Kahramanmaras', - 48 => 'Mugla', - 49 => 'Mus', - 50 => 'Nevsehir', - 52 => 'Ordu', - 53 => 'Rize', - 54 => 'Sakarya', - 55 => 'Samsun', - 57 => 'Sinop', - 58 => 'Sivas', - 59 => 'Tekirdag', - 60 => 'Tokat', - 61 => 'Trabzon', - 62 => 'Tunceli', - 63 => 'Sanliurfa', - 64 => 'Usak', - 65 => 'Van', - 66 => 'Yozgat', - 68 => 'Ankara', - 69 => 'Gumushane', - 70 => 'Hakkari', - 71 => 'Konya', - 72 => 'Mardin', - 73 => 'Nigde', - 74 => 'Siirt', - 75 => 'Aksaray', - 76 => 'Batman', - 77 => 'Bayburt', - 78 => 'Karaman', - 79 => 'Kirikkale', - 80 => 'Sirnak', - 81 => 'Adana', - 82 => 'Cankiri', - 83 => 'Gaziantep', - 84 => 'Kars', - 85 => 'Zonguldak', - 86 => 'Ardahan', - 87 => 'Bartin', - 88 => 'Igdir', - 89 => 'Karabuk', - 90 => 'Kilis', - 91 => 'Osmaniye', - 92 => 'Yalova', - 93 => 'Duzce', - ), - 'TT' => - array ( - '01' => 'Arima', - '02' => 'Caroni', - '03' => 'Mayaro', - '04' => 'Nariva', - '05' => 'Port-of-Spain', - '06' => 'Saint Andrew', - '07' => 'Saint David', - '08' => 'Saint George', - '09' => 'Saint Patrick', - 10 => 'San Fernando', - 11 => 'Tobago', - 12 => 'Victoria', - ), - 'TW' => - array ( - '01' => 'Fu-chien', - '02' => 'Kao-hsiung', - '03' => 'T\'ai-pei', - '04' => 'T\'ai-wan', - ), - 'TZ' => - array ( - '02' => 'Pwani', - '03' => 'Dodoma', - '04' => 'Iringa', - '05' => 'Kigoma', - '06' => 'Kilimanjaro', - '07' => 'Lindi', - '08' => 'Mara', - '09' => 'Mbeya', - 10 => 'Morogoro', - 11 => 'Mtwara', - 12 => 'Mwanza', - 13 => 'Pemba North', - 14 => 'Ruvuma', - 15 => 'Shinyanga', - 16 => 'Singida', - 17 => 'Tabora', - 18 => 'Tanga', - 19 => 'Kagera', - 20 => 'Pemba South', - 21 => 'Zanzibar Central', - 22 => 'Zanzibar North', - 23 => 'Dar es Salaam', - 24 => 'Rukwa', - 25 => 'Zanzibar Urban', - 26 => 'Arusha', - 27 => 'Manyara', - ), - 'UA' => - array ( - '01' => 'Cherkas\'ka Oblast\'', - '02' => 'Chernihivs\'ka Oblast\'', - '03' => 'Chernivets\'ka Oblast\'', - '04' => 'Dnipropetrovs\'ka Oblast\'', - '05' => 'Donets\'ka Oblast\'', - '06' => 'Ivano-Frankivs\'ka Oblast\'', - '07' => 'Kharkivs\'ka Oblast\'', - '08' => 'Khersons\'ka Oblast\'', - '09' => 'Khmel\'nyts\'ka Oblast\'', - 10 => 'Kirovohrads\'ka Oblast\'', - 11 => 'Krym', - 12 => 'Kyyiv', - 13 => 'Kyyivs\'ka Oblast\'', - 14 => 'Luhans\'ka Oblast\'', - 15 => 'L\'vivs\'ka Oblast\'', - 16 => 'Mykolayivs\'ka Oblast\'', - 17 => 'Odes\'ka Oblast\'', - 18 => 'Poltavs\'ka Oblast\'', - 19 => 'Rivnens\'ka Oblast\'', - 20 => 'Sevastopol\'', - 21 => 'Sums\'ka Oblast\'', - 22 => 'Ternopil\'s\'ka Oblast\'', - 23 => 'Vinnyts\'ka Oblast\'', - 24 => 'Volyns\'ka Oblast\'', - 25 => 'Zakarpats\'ka Oblast\'', - 26 => 'Zaporiz\'ka Oblast\'', - 27 => 'Zhytomyrs\'ka Oblast\'', - ), - 'UG' => - array ( - 26 => 'Apac', - 28 => 'Bundibugyo', - 29 => 'Bushenyi', - 30 => 'Gulu', - 31 => 'Hoima', - 33 => 'Jinja', - 36 => 'Kalangala', - 37 => 'Kampala', - 38 => 'Kamuli', - 39 => 'Kapchorwa', - 40 => 'Kasese', - 41 => 'Kibale', - 42 => 'Kiboga', - 43 => 'Kisoro', - 45 => 'Kotido', - 46 => 'Kumi', - 47 => 'Lira', - 50 => 'Masindi', - 52 => 'Mbarara', - 56 => 'Mubende', - 58 => 'Nebbi', - 59 => 'Ntungamo', - 60 => 'Pallisa', - 61 => 'Rakai', - 65 => 'Adjumani', - 66 => 'Bugiri', - 67 => 'Busia', - 69 => 'Katakwi', - 70 => 'Luwero', - 71 => 'Masaka', - 72 => 'Moyo', - 73 => 'Nakasongola', - 74 => 'Sembabule', - 76 => 'Tororo', - 77 => 'Arua', - 78 => 'Iganga', - 79 => 'Kabarole', - 80 => 'Kaberamaido', - 81 => 'Kamwenge', - 82 => 'Kanungu', - 83 => 'Kayunga', - 84 => 'Kitgum', - 85 => 'Kyenjojo', - 86 => 'Mayuge', - 87 => 'Mbale', - 88 => 'Moroto', - 89 => 'Mpigi', - 90 => 'Mukono', - 91 => 'Nakapiripirit', - 92 => 'Pader', - 93 => 'Rukungiri', - 94 => 'Sironko', - 95 => 'Soroti', - 96 => 'Wakiso', - 97 => 'Yumbe', - ), - 'US' => - array ( - 'AA' => 'Armed Forces Americas', - 'AE' => 'Armed Forces Europe', - 'AK' => 'Alaska', - 'AL' => 'Alabama', - 'AP' => 'Armed Forces Pacific', - 'AR' => 'Arkansas', - 'AS' => 'American Samoa', - 'AZ' => 'Arizona', - 'CA' => 'California', - 'CO' => 'Colorado', - 'CT' => 'Connecticut', - 'DC' => 'District of Columbia', - 'DE' => 'Delaware', - 'FL' => 'Florida', - 'FM' => 'Federated States of Micronesia', - 'GA' => 'Georgia', - 'GU' => 'Guam', - 'HI' => 'Hawaii', - 'IA' => 'Iowa', - 'ID' => 'Idaho', - 'IL' => 'Illinois', - 'IN' => 'Indiana', - 'KS' => 'Kansas', - 'KY' => 'Kentucky', - 'LA' => 'Louisiana', - 'MA' => 'Massachusetts', - 'MD' => 'Maryland', - 'ME' => 'Maine', - 'MH' => 'Marshall Islands', - 'MI' => 'Michigan', - 'MN' => 'Minnesota', - 'MO' => 'Missouri', - 'MP' => 'Northern Mariana Islands', - 'MS' => 'Mississippi', - 'MT' => 'Montana', - 'NC' => 'North Carolina', - 'ND' => 'North Dakota', - 'NE' => 'Nebraska', - 'NH' => 'New Hampshire', - 'NJ' => 'New Jersey', - 'NM' => 'New Mexico', - 'NV' => 'Nevada', - 'NY' => 'New York', - 'OH' => 'Ohio', - 'OK' => 'Oklahoma', - 'OR' => 'Oregon', - 'PA' => 'Pennsylvania', - 'PW' => 'Palau', - 'RI' => 'Rhode Island', - 'SC' => 'South Carolina', - 'SD' => 'South Dakota', - 'TN' => 'Tennessee', - 'TX' => 'Texas', - 'UT' => 'Utah', - 'VA' => 'Virginia', - 'VI' => 'Virgin Islands', - 'VT' => 'Vermont', - 'WA' => 'Washington', - 'WI' => 'Wisconsin', - 'WV' => 'West Virginia', - 'WY' => 'Wyoming', - ), - 'UY' => - array ( - '01' => 'Artigas', - '02' => 'Canelones', - '03' => 'Cerro Largo', - '04' => 'Colonia', - '05' => 'Durazno', - '06' => 'Flores', - '07' => 'Florida', - '08' => 'Lavalleja', - '09' => 'Maldonado', - 10 => 'Montevideo', - 11 => 'Paysandu', - 12 => 'Rio Negro', - 13 => 'Rivera', - 14 => 'Rocha', - 15 => 'Salto', - 16 => 'San Jose', - 17 => 'Soriano', - 18 => 'Tacuarembo', - 19 => 'Treinta y Tres', - ), - 'UZ' => - array ( - '01' => 'Andijon', - '02' => 'Bukhoro', - '03' => 'Farghona', - '04' => 'Jizzakh', - '05' => 'Khorazm', - '06' => 'Namangan', - '07' => 'Nawoiy', - '08' => 'Qashqadaryo', - '09' => 'Qoraqalpoghiston', - 10 => 'Samarqand', - 11 => 'Sirdaryo', - 12 => 'Surkhondaryo', - 14 => 'Toshkent', - 15 => 'Jizzax', - ), - 'VC' => - array ( - '01' => 'Charlotte', - '02' => 'Saint Andrew', - '03' => 'Saint David', - '04' => 'Saint George', - '05' => 'Saint Patrick', - '06' => 'Grenadines', - ), - 'VE' => - array ( - '01' => 'Amazonas', - '02' => 'Anzoategui', - '03' => 'Apure', - '04' => 'Aragua', - '05' => 'Barinas', - '06' => 'Bolivar', - '07' => 'Carabobo', - '08' => 'Cojedes', - '09' => 'Delta Amacuro', - 11 => 'Falcon', - 12 => 'Guarico', - 13 => 'Lara', - 14 => 'Merida', - 15 => 'Miranda', - 16 => 'Monagas', - 17 => 'Nueva Esparta', - 18 => 'Portuguesa', - 19 => 'Sucre', - 20 => 'Tachira', - 21 => 'Trujillo', - 22 => 'Yaracuy', - 23 => 'Zulia', - 24 => 'Dependencias Federales', - 25 => 'Distrito Federal', - 26 => 'Vargas', - ), - 'VN' => - array ( - '01' => 'An Giang', - '03' => 'Ben Tre', - '05' => 'Cao Bang', - '09' => 'Dong Thap', - 13 => 'Hai Phong', - 20 => 'Ho Chi Minh', - 21 => 'Kien Giang', - 23 => 'Lam Dong', - 24 => 'Long An', - 30 => 'Quang Ninh', - 32 => 'Son La', - 33 => 'Tay Ninh', - 34 => 'Thanh Hoa', - 35 => 'Thai Binh', - 37 => 'Tien Giang', - 39 => 'Lang Son', - 43 => 'Dong Nai', - 44 => 'Ha Noi', - 45 => 'Ba Ria-Vung Tau', - 46 => 'Binh Dinh', - 47 => 'Binh Thuan', - 49 => 'Gia Lai', - 50 => 'Ha Giang', - 52 => 'Ha Tinh', - 53 => 'Hoa Binh', - 54 => 'Khanh Hoa', - 55 => 'Kon Tum', - 58 => 'Nghe An', - 59 => 'Ninh Binh', - 60 => 'Ninh Thuan', - 61 => 'Phu Yen', - 62 => 'Quang Binh', - 63 => 'Quang Ngai', - 64 => 'Quang Tri', - 65 => 'Soc Trang', - 66 => 'Thua Thien-Hue', - 67 => 'Tra Vinh', - 68 => 'Tuyen Quang', - 69 => 'Vinh Long', - 70 => 'Yen Bai', - 71 => 'Bac Giang', - 72 => 'Bac Kan', - 73 => 'Bac Lieu', - 74 => 'Bac Ninh', - 75 => 'Binh Duong', - 76 => 'Binh Phuoc', - 77 => 'Ca Mau', - 78 => 'Da Nang', - 79 => 'Hai Duong', - 80 => 'Ha Nam', - 81 => 'Hung Yen', - 82 => 'Nam Dinh', - 83 => 'Phu Tho', - 84 => 'Quang Nam', - 85 => 'Thai Nguyen', - 86 => 'Vinh Phuc', - 87 => 'Can Tho', - 88 => 'Dac Lak', - 89 => 'Lai Chau', - 90 => 'Lao Cai', - 91 => 'Dak Nong', - 92 => 'Dien Bien', - 93 => 'Hau Giang', - ), - 'VU' => - array ( - '05' => 'Ambrym', - '06' => 'Aoba', - '07' => 'Torba', - '08' => 'Efate', - '09' => 'Epi', - 10 => 'Malakula', - 11 => 'Paama', - 12 => 'Pentecote', - 13 => 'Sanma', - 14 => 'Shepherd', - 15 => 'Tafea', - 16 => 'Malampa', - 17 => 'Penama', - 18 => 'Shefa', - ), - 'WS' => - array ( - '02' => 'Aiga-i-le-Tai', - '03' => 'Atua', - '04' => 'Fa', - '05' => 'Gaga', - '06' => 'Va', - '07' => 'Gagaifomauga', - '08' => 'Palauli', - '09' => 'Satupa', - 10 => 'Tuamasaga', - 11 => 'Vaisigano', - ), - 'YE' => - array ( - '01' => 'Abyan', - '02' => 'Adan', - '03' => 'Al Mahrah', - '04' => 'Hadramawt', - '05' => 'Shabwah', - 24 => 'Lahij', - 20 => 'Al Bayda\'', - '08' => 'Al Hudaydah', - 21 => 'Al Jawf', - 10 => 'Al Mahwit', - 11 => 'Dhamar', - 22 => 'Hajjah', - 23 => 'Ibb', - 14 => 'Ma\'rib', - 15 => 'Sa\'dah', - 16 => 'San\'a\'', - 25 => 'Taizz', - 18 => 'Ad Dali', - 19 => 'Amran', - ), - 'ZA' => - array ( - '01' => 'North-Western Province', - '02' => 'KwaZulu-Natal', - '03' => 'Free State', - '05' => 'Eastern Cape', - '06' => 'Gauteng', - '07' => 'Mpumalanga', - '08' => 'Northern Cape', - '09' => 'Limpopo', - 10 => 'North-West', - 11 => 'Western Cape', - ), - 'ZM' => - array ( - '01' => 'Western', - '02' => 'Central', - '03' => 'Eastern', - '04' => 'Luapula', - '05' => 'Northern', - '06' => 'North-Western', - '07' => 'Southern', - '08' => 'Copperbelt', - '09' => 'Lusaka', - ), - 'ZW' => - array ( - '01' => 'Manicaland', - '02' => 'Midlands', - '03' => 'Mashonaland Central', - '04' => 'Mashonaland East', - '05' => 'Mashonaland West', - '06' => 'Matabeleland North', - '07' => 'Matabeleland South', - '08' => 'Masvingo', - '09' => 'Bulawayo', - 10 => 'Harare', - ), -); \ No newline at end of file diff --git a/htdocs/includes/geoip/sample.php b/htdocs/includes/geoip/sample.php deleted file mode 100644 index 75a36c0e5c5..00000000000 --- a/htdocs/includes/geoip/sample.php +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/php -q - diff --git a/htdocs/includes/geoip/sample_city.php b/htdocs/includes/geoip/sample_city.php deleted file mode 100644 index 38a9f4b9b2b..00000000000 --- a/htdocs/includes/geoip/sample_city.php +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/php -q -country_code . " " . $record->country_code3 . " " . $record->country_name . "\n"; -print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n"; -print $record->city . "\n"; -print $record->postal_code . "\n"; -print $record->latitude . "\n"; -print $record->longitude . "\n"; -print $record->metro_code . "\n"; -print $record->area_code . "\n"; - -geoip_close($gi); - -?> diff --git a/htdocs/includes/geoip/sample_distributed.php b/htdocs/includes/geoip/sample_distributed.php deleted file mode 100644 index d139be51d51..00000000000 --- a/htdocs/includes/geoip/sample_distributed.php +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/php -q -country_code . "\n"; -print "country code3: " . $r->country_code3 . "\n"; -print "country name: " . $r->country_name . "\n"; -print "city: " . $r->city . "\n"; -print "region: " . $r->region . "\n"; -print "region name: " . $r->regionname . "\n"; -print "postal_code: " . $r->postal_code . "\n"; -print "latitude: " . $r->latitude . "\n"; -print "longitude: " . $r->longitude . "\n"; -print "area code: " . $r->areacode . "\n"; -print "dma code: " . $r->dmacode . "\n"; -print "isp: " . $r->isp . "\n"; -print "org: " . $r->org . "\n"; -?> diff --git a/htdocs/includes/geoip/sample_netspeed.php b/htdocs/includes/geoip/sample_netspeed.php deleted file mode 100644 index d8ec83714ab..00000000000 --- a/htdocs/includes/geoip/sample_netspeed.php +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/php -q - diff --git a/htdocs/includes/geoip/sample_org.php b/htdocs/includes/geoip/sample_org.php deleted file mode 100644 index 009a5bd0f49..00000000000 --- a/htdocs/includes/geoip/sample_org.php +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/php -q - - diff --git a/htdocs/includes/geoip/sample_region.php b/htdocs/includes/geoip/sample_region.php deleted file mode 100644 index 9669c9c2df9..00000000000 --- a/htdocs/includes/geoip/sample_region.php +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/php -q - diff --git a/htdocs/includes/geoip/timezone.php b/htdocs/includes/geoip/timezone.php deleted file mode 100644 index e5d991d8133..00000000000 --- a/htdocs/includes/geoip/timezone.php +++ /dev/null @@ -1,2243 +0,0 @@ - Date: Wed, 1 Apr 2020 11:09:40 +0100 Subject: [PATCH 053/336] On _checkAccessToResource: category -> categorie --- htdocs/categories/class/api_categories.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/categories/class/api_categories.class.php b/htdocs/categories/class/api_categories.class.php index 459b61ba740..4274dd37344 100644 --- a/htdocs/categories/class/api_categories.class.php +++ b/htdocs/categories/class/api_categories.class.php @@ -226,7 +226,7 @@ class Categories extends DolibarrApi throw new RestException(404, 'category not found'); } - if (!DolibarrApi::_checkAccessToResource('category', $this->category->id)) { + if (!DolibarrApi::_checkAccessToResource('categorie', $this->category->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } @@ -261,7 +261,7 @@ class Categories extends DolibarrApi throw new RestException(404, 'category not found'); } - if (!DolibarrApi::_checkAccessToResource('category', $this->category->id)) { + if (!DolibarrApi::_checkAccessToResource('categorie', $this->category->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } @@ -750,7 +750,7 @@ class Categories extends DolibarrApi throw new RestException(404, 'category not found'); } - if (!DolibarrApi::_checkAccessToResource('category', $this->category->id)) { + if (!DolibarrApi::_checkAccessToResource('categorie', $this->category->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } From c225f35eff4694dbb2c3bab6cfa7d06ad369f863 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 12:49:20 +0200 Subject: [PATCH 054/336] Update 11.0.0-12.0.0.sql --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 713dc91a32f..27efb88f8b2 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -206,8 +206,8 @@ ALTER TABLE llx_societe_remise_except ADD COLUMN vat_src_code varchar(10) DEFAUL ALTER TABLE llx_blockedlog MODIFY COLUMN object_data mediumtext; ALTER TABLE llx_blockedlog ADD COLUMN object_version varchar(32) DEFAULT ''; -ALTER TABLE llx_product_lot MODIFY batch varchar(128); -ALTER TABLE llx_product_batch MODIFY batch varchar(128); -ALTER TABLE llx_commande_fournisseur_dispatch MODIFY batch varchar(128); -ALTER TABLE llx_stock_mouvement MODIFY batch varchar(128); -ALTER TABLE llx_mrp_production MODIFY batch varchar(128); +ALTER TABLE llx_product_lot MODIFY COLUMN batch varchar(128); +ALTER TABLE llx_product_batch MODIFY COLUMN batch varchar(128); +ALTER TABLE llx_commande_fournisseur_dispatch MODIFY COLUMN batch varchar(128); +ALTER TABLE llx_stock_mouvement MODIFY COLUMN batch varchar(128); +ALTER TABLE llx_mrp_production MODIFY COLUMN batch varchar(128); From a94f8572f1ecdf82b8ff11fe8424b00f42ba99dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 12:53:41 +0200 Subject: [PATCH 055/336] Update api_setup.class.php --- htdocs/api/class/api_setup.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 15493159110..1b619acfeb7 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -407,11 +407,11 @@ class Setup extends DolibarrApi * * @param object $object Object with label to translate * @param string $lang Code of the language the name of the object must be translated to - * @param string $prefix Prefix for translation + * @param string $prefix Prefix for translation key * * @return void */ - private function translateLabel($object, $lang, $prefix) + private function translateLabel($object, $lang, $prefix = 'Country') { if (!empty($lang)) { // Load the translations if this is a new language. From a2fd363f91f3846b9dbe5130b0e8c6f70a7e483c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 12:55:06 +0200 Subject: [PATCH 056/336] Update livraison.class.php --- htdocs/livraison/class/livraison.class.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/livraison/class/livraison.class.php b/htdocs/livraison/class/livraison.class.php index e96a9d36035..da1fc75b5b2 100644 --- a/htdocs/livraison/class/livraison.class.php +++ b/htdocs/livraison/class/livraison.class.php @@ -775,7 +775,7 @@ class Livraison extends CommonObject $this->lines = array(); $sql = "SELECT ld.rowid, ld.fk_product, ld.description, ld.subprice, ld.total_ht, ld.qty as qty_shipped, ld.fk_origin_line, "; - $sql.= " cd.qty as qty_asked, cd.label as custom_label, cd.fk_unit ,"; + $sql.= " cd.qty as qty_asked, cd.label as custom_label, cd.fk_unit,"; $sql.= " p.ref as product_ref, p.fk_product_type as fk_product_type, p.label as product_label, p.description as product_desc,"; $sql.= " p.weight, p.weight_units, p.width, p.width_units, p.length, p.length_units, p.height, p.height_units, p.surface, p.surface_units, p.volume, p.volume_units, p.tobatch as product_tobatch"; $sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd, ".MAIN_DB_PREFIX."livraisondet as ld"; @@ -813,7 +813,7 @@ class Livraison extends CommonObject $line->price = $obj->price; $line->total_ht = $obj->total_ht; - // Add + // units $line->weight = $obj->weight; $line->weight_units = $obj->weight_units; $line->width = $obj->width; @@ -827,7 +827,6 @@ class Livraison extends CommonObject $line->volume = $obj->volume; $line->volume_units = $obj->volume_units; - $line->fk_unit = $obj->fk_unit; $this->lines[$i] = $line; From c6f57c46a890bf8736e98497bb09e6935ad4e607 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 13:01:49 +0200 Subject: [PATCH 057/336] Update supplier_proposal.class.php --- .../class/supplier_proposal.class.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 6ad2dd1a2df..b91c6c43ffe 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -1849,8 +1849,8 @@ class SupplierProposal extends CommonObject public function createPriceFournisseur($product, $user) { global $conf; - if(!empty($conf->multicurrency->enabled)) include_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php'; - $price=price2num($product->subprice*$product->qty, 'MU'); + + $price=price2num($product->subprice*$product->qty, 'MU'); $qty=price2num($product->qty); $unitPrice = price2num($product->subprice, 'MU'); $now=dol_now(); @@ -1865,9 +1865,10 @@ class SupplierProposal extends CommonObject $product->tva_tx, $user->id ); - if(!empty($conf->multicurrency->enabled)) { - $multicurrency = new MultiCurrency($this->db); //need to fetch because empty fk_multicurrency and rate - if(!empty($product->multicurrency_code)) { + if (!empty($conf->multicurrency->enabled)) { + if (!empty($product->multicurrency_code)) { + include_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php'; + $multicurrency = new MultiCurrency($this->db); //need to fetch because empty fk_multicurrency and rate $multicurrency->fetch(0, $product->multicurrency_code); if(! empty($multicurrency->id)) { $values[] = $multicurrency->id; From 386b27a14c2ff4a2bb7026987091fd17457ed433 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 14:32:54 +0200 Subject: [PATCH 058/336] Standardize code --- htdocs/categories/viewcat.php | 236 ++++++++++++++++++----------- htdocs/langs/en_US/categories.lang | 8 +- 2 files changed, 151 insertions(+), 93 deletions(-) diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index 513d411d188..a61d29b6a48 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -292,6 +292,7 @@ if ($user->rights->categorie->supprimer) print "
    "; +$newcardbutton = ''; if (! empty($user->rights->categorie->creer)) { $link = DOL_URL_ROOT.'/categories/card.php'; @@ -300,9 +301,9 @@ if (! empty($user->rights->categorie->creer)) $link .= '&catorigin='.$object->id; $link .= '&backtopage='.urlencode($_SERVER["PHP_SELF"].'?type='.$type.'&id='.$id); - print '
    '; - print dolGetButtonTitle($langs->trans('NewCategory'), '', 'fa fa-plus-circle', $link); - print "
    "; + $newcardbutton = '
    '; + $newcardbutton .= dolGetButtonTitle($langs->trans('NewCategory'), '', 'fa fa-plus-circle', $link); + $newcardbutton .= '
    '; } @@ -311,6 +312,10 @@ if (! empty($user->rights->categorie->creer)) */ print '
    '; + +print load_fiche_titre($langs->trans("SubCats"), $newcardbutton); + + print ''; print ''; @@ -442,19 +447,23 @@ $arrayofmassactions = array( ); $massactionbutton = $form->selectMassAction('', $arrayofmassactions); +$typeid = $type; + + // List of products or services (type is type of category) if ($type == Categorie::TYPE_PRODUCT) { - $prods = $object->getObjectsInCateg("product", 0, $limit, $offset); + $permission = ($user->rights->produit->creer || $user->rights->service->creer); + + $prods = $object->getObjectsInCateg($type, 0, $limit, $offset); if ($prods < 0) { dol_print_error($db, $prods->error, $prods->errors); } else { - $showclassifyform = 1; $typeid = Categorie::TYPE_PRODUCT; - // Form to add record into a category + $showclassifyform = 1; if ($showclassifyform) { print '
    '; @@ -468,7 +477,7 @@ if ($type == Categorie::TYPE_PRODUCT) print ''; + print ''; print ''; print '
    '; print $langs->trans("AddProductServiceIntoCategory").'  '; $form->select_produits('', 'elemid', '', 0, 0, -1, 2, '', 1); - print '
    '; print ''; @@ -483,9 +492,10 @@ if ($type == Categorie::TYPE_PRODUCT) print '
    '; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($prods); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("ProductsAndServices"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("ProductsAndServices"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'products', 0, $newcardbutton, '', $limit); - print "\n"; + + print '
    '."\n"; print ''."\n"; if (count($prods) > 0) @@ -503,17 +513,11 @@ if ($type == Categorie::TYPE_PRODUCT) print '\n"; // Link to delete from category print ''; @@ -522,7 +526,7 @@ if ($type == Categorie::TYPE_PRODUCT) } else { - print ''; + print ''; } print "
    '.$langs->trans("Ref").'
    '.$prod->label."'; - $permission = 0; - if ($type == Categorie::TYPE_PRODUCT) $permission = ($user->rights->produit->creer || $user->rights->service->creer); - if ($type == Categorie::TYPE_SUPPLIER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_CUSTOMER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_MEMBER) $permission = $user->rights->adherent->creer; - if ($type == Categorie::TYPE_PROJECT) $permission = $user->rights->projet->creer; if ($permission) { print ""; print $langs->trans("DeleteFromCat"); - print img_picto($langs->trans("DeleteFromCat"), 'unlink'); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; } print '
    '.$langs->trans("ThisCategoryHasNoProduct").'
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; @@ -532,7 +536,9 @@ if ($type == Categorie::TYPE_PRODUCT) if ($type == Categorie::TYPE_SUPPLIER) { - $socs = $object->getObjectsInCateg("supplier", 0, $limit, $offset); + $permission = $user->rights->societe->creer; + + $socs = $object->getObjectsInCateg($type, 0, $limit, $offset); if ($socs < 0) { dol_print_error($db, $socs->error, $socs->errors); @@ -548,7 +554,7 @@ if ($type == Categorie::TYPE_SUPPLIER) print '
    '; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($socs); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Suppliers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("Suppliers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'companies', 0, $newcardbutton, '', $limit); print ''."\n"; print '\n"; @@ -567,17 +573,11 @@ if ($type == Categorie::TYPE_SUPPLIER) print "\n"; // Link to delete from category print ''; @@ -587,7 +587,7 @@ if ($type == Categorie::TYPE_SUPPLIER) } else { - print ''; + print ''; } print "
    '.$langs->trans("Name")."
    '; - $permission = 0; - if ($type == Categorie::TYPE_PRODUCT) $permission = ($user->rights->produit->creer || $user->rights->service->creer); - if ($type == Categorie::TYPE_SUPPLIER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_CUSTOMER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_MEMBER) $permission = $user->rights->adherent->creer; - if ($type == Categorie::TYPE_PROJECT) $permission = $user->rights->projet->creer; if ($permission) { print ""; print $langs->trans("DeleteFromCat"); - print img_picto($langs->trans("DeleteFromCat"), 'unlink'); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; } print '
    '.$langs->trans("ThisCategoryHasNoSupplier").'
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; @@ -597,7 +597,9 @@ if ($type == Categorie::TYPE_SUPPLIER) if ($type == Categorie::TYPE_CUSTOMER) { - $socs = $object->getObjectsInCateg("customer", 0, $limit, $offset); + $permission = $user->rights->societe->creer; + + $socs = $object->getObjectsInCateg($type, 0, $limit, $offset); if ($socs < 0) { dol_print_error($db, $socs->error, $socs->errors); @@ -613,7 +615,7 @@ if ($type == Categorie::TYPE_CUSTOMER) print '
    '; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($socs); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Customers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("Customers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'companies', 0, $newcardbutton, '', $limit); print ''."\n"; print ''."\n"; @@ -632,17 +634,11 @@ if ($type == Categorie::TYPE_CUSTOMER) print "\n"; // Link to delete from category print ''; @@ -651,7 +647,7 @@ if ($type == Categorie::TYPE_CUSTOMER) } else { - print ''; + print ''; } print "
    '.$langs->trans("Name").'
    '; - $permission = 0; - if ($type == Categorie::TYPE_PRODUCT) $permission = ($user->rights->produit->creer || $user->rights->service->creer); - if ($type == Categorie::TYPE_SUPPLIER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_CUSTOMER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_MEMBER) $permission = $user->rights->adherent->creer; - if ($type == Categorie::TYPE_PROJECT) $permission = $user->rights->projet->creer; if ($permission) { print ""; print $langs->trans("DeleteFromCat"); - print img_picto($langs->trans("DeleteFromCat"), 'unlink'); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; } print '
    '.$langs->trans("ThisCategoryHasNoCustomer").'
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; @@ -664,7 +660,9 @@ if ($type == Categorie::TYPE_MEMBER) { require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; - $prods = $object->getObjectsInCateg("member", 0, $limit, $offset); + $permission = $user->rights->adherent->creer; + + $prods = $object->getObjectsInCateg($type, 0, $limit, $offset); if ($prods < 0) { dol_print_error($db, $prods->error, $prods->errors); @@ -680,7 +678,7 @@ if ($type == Categorie::TYPE_MEMBER) print '
    '; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($prods); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Member"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("Member"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'adherents', 0, $newcardbutton, '', $limit); print "\n"; print ''."\n"; @@ -702,17 +700,11 @@ if ($type == Categorie::TYPE_MEMBER) print '\n"; // Link to delete from category print '\n"; @@ -720,7 +712,7 @@ if ($type == Categorie::TYPE_MEMBER) } else { - print ''; + print ''; } print "
    '.$langs->trans("Name").'
    '.$member->firstname."'; - $permission = 0; - if ($type == Categorie::TYPE_PRODUCT) $permission = ($user->rights->produit->creer || $user->rights->service->creer); - if ($type == Categorie::TYPE_SUPPLIER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_CUSTOMER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_MEMBER) $permission = $user->rights->adherent->creer; - if ($type == Categorie::TYPE_PROJECT) $permission = $user->rights->projet->creer; if ($permission) { print ""; print $langs->trans("DeleteFromCat"); - print img_picto($langs->trans("DeleteFromCat"), 'unlink'); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; } print "
    '.$langs->trans("ThisCategoryHasNoMember").'
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; @@ -731,7 +723,9 @@ if ($type == Categorie::TYPE_MEMBER) // Categorie contact if ($type == Categorie::TYPE_CONTACT) { - $contacts = $object->getObjectsInCateg("contact", 0, $limit, $offset); + $permission = $user->rights->societe->creer; + + $contacts = $object->getObjectsInCateg($type, 0, $limit, $offset); if ($contacts < 0) { dol_print_error($db, $contacts->error, $contacts->errors); @@ -746,8 +740,11 @@ if ($type == Categorie::TYPE_CONTACT) print ''; print '
    '; - $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($contacts); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Contact"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); + $param = '&limit='.$limit.'&id='.$id.'&type='.$type; + $num = count($contacts); + $nbtotalofrecords = ''; + $newcardbutton = ''; + print_barre_liste($langs->trans("Contact"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'contacts', 0, $newcardbutton, '', $limit); print ''."\n"; print ''."\n"; @@ -766,17 +763,11 @@ if ($type == Categorie::TYPE_CONTACT) print "\n"; // Link to delete from category print ''; @@ -785,7 +776,7 @@ if ($type == Categorie::TYPE_CONTACT) } else { - print ''; + print ''; } print "
    '.$langs->trans("Ref").'
    '; - $permission = 0; - if ($type == Categorie::TYPE_PRODUCT) $permission = ($user->rights->produit->creer || $user->rights->service->creer); - if ($type == Categorie::TYPE_SUPPLIER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_CUSTOMER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_MEMBER) $permission = $user->rights->adherent->creer; - if ($type == Categorie::TYPE_PROJECT) $permission = $user->rights->projet->creer; if ($permission) { print ""; print $langs->trans("DeleteFromCat"); - print img_picto($langs->trans("DeleteFromCat"), 'unlink'); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; } print '
    '.$langs->trans("ThisCategoryHasNoContact").'
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; @@ -798,7 +789,9 @@ if ($type == Categorie::TYPE_ACCOUNT) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; - $accounts = $object->getObjectsInCateg("account", 0, $limit, $offset); + $permission = $user->rights->banque->creer; + + $accounts = $object->getObjectsInCateg($type, 0, $limit, $offset); if ($accounts < 0) { dol_print_error($db, $accounts->error, $accounts->errors); @@ -814,7 +807,7 @@ if ($type == Categorie::TYPE_ACCOUNT) print '
    '; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($accounts); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Account"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("Account"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'account', 0, $newcardbutton, '', $limit); print "\n"; print ''."\n"; @@ -835,17 +828,11 @@ if ($type == Categorie::TYPE_ACCOUNT) print '\n"; // Link to delete from category print '\n"; @@ -853,7 +840,7 @@ if ($type == Categorie::TYPE_ACCOUNT) } else { - print ''; + print ''; } print "
    '.$langs->trans("Ref").'
    '.$account->number."'; - $permission = 0; - if ($type == Categorie::TYPE_PRODUCT) $permission = ($user->rights->produit->creer || $user->rights->service->creer); - if ($type == Categorie::TYPE_SUPPLIER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_CUSTOMER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_MEMBER) $permission = $user->rights->adherent->creer; - if ($type == Categorie::TYPE_PROJECT) $permission = $user->rights->projet->creer; if ($permission) { print ""; print $langs->trans("DeleteFromCat"); - print img_picto($langs->trans("DeleteFromCat"), 'unlink'); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; } print "
    '.$langs->trans("ThisCategoryHasNoAccount").'
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; @@ -866,8 +853,10 @@ if ($type == Categorie::TYPE_PROJECT) { require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; - $projects = $object->getObjectsInCateg("project", 0, $limit, $offset); - if ($projects < 0) + $permission = $user->rights->projet->creer; + + $objects = $object->getObjectsInCateg($type, 0, $limit, $offset); + if ($objects < 0) { dol_print_error($db, $object->error, $object->errors); } @@ -881,16 +870,17 @@ if ($type == Categorie::TYPE_PROJECT) print ''; print '
    '; - $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($projects); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Project"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); + $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($objects); $nbtotalofrecords = ''; $newcardbutton = ''; + + print_barre_liste($langs->trans("Project"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'projects', 0, $newcardbutton, '', $limit); print "\n"; print ''."\n"; - if (count($projects) > 0) + if (count($objects) > 0) { $i = 0; - foreach ($projects as $key => $project) + foreach ($objects as $key => $project) { $i++; if ($i > $limit) break; @@ -903,17 +893,11 @@ if ($type == Categorie::TYPE_PROJECT) print '\n"; // Link to delete from category print '\n"; @@ -921,7 +905,7 @@ if ($type == Categorie::TYPE_PROJECT) } else { - print ''; + print ''; } print "
    '.$langs->trans("Ref").'
    '.$project->title."'; - $permission = 0; - if ($type == Categorie::TYPE_PRODUCT) $permission = ($user->rights->produit->creer || $user->rights->service->creer); - if ($type == Categorie::TYPE_SUPPLIER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_CUSTOMER) $permission = $user->rights->societe->creer; - if ($type == Categorie::TYPE_MEMBER) $permission = $user->rights->adherent->creer; - if ($type == Categorie::TYPE_PROJECT) $permission = $user->rights->projet->creer; if ($permission) { print ""; print $langs->trans("DeleteFromCat"); - print img_picto($langs->trans("DeleteFromCat"), 'unlink'); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; } print "
    '.$langs->trans("ThisCategoryHasNoProject").'
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; @@ -934,14 +918,25 @@ if ($type == Categorie::TYPE_USER) { require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; - $users = $object->getObjectsInCateg("user"); + $users = $object->getObjectsInCateg($type); if ($users < 0) { dol_print_error($db, $object->error, $object->errors); } else { - print "
    "; + print '
    '; + print ''; + print ''; + print ''; + print ''; + print ''; + + print '
    '; + $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($objects); $nbtotalofrecords = ''; $newcardbutton = ''; + + print_barre_liste($langs->trans("Users"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'user', 0, $newcardbutton, '', $limit); + print "\n"; print ''."\n"; @@ -962,7 +957,7 @@ if ($type == Categorie::TYPE_USER) { print ""; print $langs->trans("DeleteFromCat"); - print img_picto($langs->trans("DeleteFromCat"), 'unlink'); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; } print "\n"; @@ -970,12 +965,81 @@ if ($type == Categorie::TYPE_USER) } else { - print ''; + print ''; } print "
    '.$langs->trans("Users").' '.count($users).'
    '.$langs->trans("ThisCategoryHasNoUsers").'
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; + + print '
    '."\n"; } } + +// List of Project +if ($type == Categorie::TYPE_WAREHOUSE) +{ + $permission = $user->rights->stock->creer; + + require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php'; + + $objects = $object->getObjectsInCateg($type, 0, $limit, $offset); + if ($objects < 0) + { + dol_print_error($db, $object->error, $object->errors); + } + else + { + print '
    '; + print ''; + print ''; + print ''; + print ''; + print ''; + + print '
    '; + $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($objects); $nbtotalofrecords = ''; $newcardbutton = ''; + + print_barre_liste($langs->trans("Warehouses"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'generic', 0, $newcardbutton, '', $limit); + + print "\n"; + print ''."\n"; + + if (count($objects) > 0) + { + $i = 0; + foreach ($objects as $key => $project) + { + $i++; + if ($i > $limit) break; + + print "\t".''."\n"; + print '\n"; + print '\n"; + print '\n"; + // Link to delete from category + print '\n"; + } + } + else + { + print ''; + } + print "
    '.$langs->trans("Ref").'
    '; + print $project->getNomUrl(1); + print "'.$project->ref."'.$project->title."'; + if ($permission) + { + print ""; + print $langs->trans("DeleteFromCat"); + print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); + print ""; + } + print "
    '.$langs->trans("ThisCategoryHasNoItems").'
    \n"; + + print '
    '."\n"; + } +} + + // End of page llxFooter(); $db->close(); diff --git a/htdocs/langs/en_US/categories.lang b/htdocs/langs/en_US/categories.lang index 1ec9b5bd409..30bace0574c 100644 --- a/htdocs/langs/en_US/categories.lang +++ b/htdocs/langs/en_US/categories.lang @@ -63,13 +63,7 @@ AccountsCategoriesShort=Accounts tags/categories ProjectsCategoriesShort=Projects tags/categories UsersCategoriesShort=Users tags/categories StockCategoriesShort=Warehouse tags/categories -ThisCategoryHasNoProduct=This category does not contain any product. -ThisCategoryHasNoSupplier=This category does not contain any vendor. -ThisCategoryHasNoCustomer=This category does not contain any customer. -ThisCategoryHasNoMember=This category does not contain any member. -ThisCategoryHasNoContact=This category does not contain any contact. -ThisCategoryHasNoAccount=This category does not contain any account. -ThisCategoryHasNoProject=This category does not contain any project. +ThisCategoryHasNoItems=This category does not contain any items. CategId=Tag/category id CatSupList=List of vendor tags/categories CatCusList=List of customer/prospect tags/categories From a55d1fca0aa22aa6ef18df7e23a1ebba01829407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 2 Apr 2020 14:33:49 +0200 Subject: [PATCH 059/336] Update list.php --- htdocs/user/list.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/user/list.php b/htdocs/user/list.php index c82420c3337..f779818140f 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -201,7 +201,7 @@ $sql = "SELECT DISTINCT u.rowid, u.lastname, u.firstname, u.admin, u.fk_soc, u.l $sql .= " u.datelastlogin, u.datepreviouslogin,"; $sql .= " u.ldap_sid, u.statut, u.entity,"; $sql .= " u.tms as date_update, u.datec as date_creation,"; -$sql .= " u2.rowid as id2, u2.login as login2, u2.firstname as firstname2, u2.lastname as lastname2, u2.admin as admin2, u2.fk_soc as fk_soc2, u2.email as email2, u2.gender as gender2, u2.photo as photo2, u2.entity as entity2,"; +$sql .= " u2.rowid as id2, u2.login as login2, u2.firstname as firstname2, u2.lastname as lastname2, u2.admin as admin2, u2.fk_soc as fk_soc2, u2.email as email2, u2.gender as gender2, u2.photo as photo2, u2.entity as entity2, u2.statut as statut2,"; $sql .= " s.nom as name, s.canvas"; // Add fields from extrafields if (!empty($extrafields->attributes[$object->table_element]['label'])) { @@ -625,6 +625,7 @@ while ($i < min($num, $limit)) $user2->admin = $obj->admin2; $user2->email = $obj->email2; $user2->socid = $obj->fk_soc2; + $user2->statut = $obj->statut2; print $user2->getNomUrl(-1, '', 0, 0, 24, 0, '', '', 1); if (!empty($conf->multicompany->enabled) && $obj->admin2 && !$obj->entity2) { From b8c2dd6025eee54a8cf2531e2c092bf88e167498 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 15:11:46 +0200 Subject: [PATCH 060/336] Look and feel v12 --- .../class/accountingaccount.class.php | 2 +- .../class/accountingjournal.class.php | 2 +- htdocs/categories/viewcat.php | 8 ++-- htdocs/compta/bank/bankentries_list.php | 10 ++-- htdocs/compta/bank/categ.php | 2 +- htdocs/compta/bank/line.php | 4 +- htdocs/compta/bank/list.php | 48 ++++++++++--------- 7 files changed, 39 insertions(+), 37 deletions(-) diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index 794ce3c8e7c..ff1e7ff8b72 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -507,7 +507,7 @@ class AccountingAccount extends CommonObject } $label_link = length_accountg($this->account_number); - if ($withlabel) $label_link .= ' - ' . $labeltoshow; + if ($withlabel) $label_link .= ' - ' . ($nourl ? '' : '').$labeltoshow.($nourl ? '' : ''); if ($withpicto) $result.=($linkstart.img_object(($notooltip?'':$label), $picto, ($notooltip?'':'class="classfortooltip"'), 0, 0, $notooltip?0:1).$linkend); if ($withpicto && $withpicto != 2) $result .= ' '; diff --git a/htdocs/accountancy/class/accountingjournal.class.php b/htdocs/accountancy/class/accountingjournal.class.php index 1191187a139..727e68346fa 100644 --- a/htdocs/accountancy/class/accountingjournal.class.php +++ b/htdocs/accountancy/class/accountingjournal.class.php @@ -266,7 +266,7 @@ class AccountingJournal extends CommonObject } $label_link = $this->code; - if ($withlabel) $label_link .= ' - '.$langs->transnoentities($this->label); + if ($withlabel) $label_link .= ' - '.($nourl ? '' : '').$langs->transnoentities($this->label).($nourl ? '' : ''); $result .= $linkstart; if ($withpicto) $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index a61d29b6a48..dd45d7e59fe 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -1,6 +1,6 @@ - * Copyright (C) 2006-2015 Laurent Destailleur + * Copyright (C) 2006-2020 Laurent Destailleur * Copyright (C) 2007 Patrick Raguin * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2015 Raphaël Doursenaud @@ -678,7 +678,7 @@ if ($type == Categorie::TYPE_MEMBER) print '
    '; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($prods); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Member"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'adherents', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("Member"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit); print "\n"; print ''."\n"; @@ -807,7 +807,7 @@ if ($type == Categorie::TYPE_ACCOUNT) print '
    '; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($accounts); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Account"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'account', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("Account"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bank', 0, $newcardbutton, '', $limit); print "
    '.$langs->trans("Name").'
    \n"; print ''."\n"; @@ -872,7 +872,7 @@ if ($type == Categorie::TYPE_PROJECT) print '
    '; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($objects); $nbtotalofrecords = ''; $newcardbutton = ''; - print_barre_liste($langs->trans("Project"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'projects', 0, $newcardbutton, '', $limit); + print_barre_liste($langs->trans("Project"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'project', 0, $newcardbutton, '', $limit); print "
    '.$langs->trans("Ref").'
    \n"; print ''."\n"; diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index 26563f98dd4..0bf5bbc6ade 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -806,7 +806,7 @@ if ($resql) $morehtml = '
    '; $morehtml .= ' "; // ' Page '; - $morehtml .= ''; + $morehtml .= ''; $morehtml .= '/'.$nbtotalofpages.' '; $morehtml .= '
    '; @@ -1374,7 +1374,7 @@ if ($resql) // Third party if (!empty($arrayfields['bu.label']['checked'])) { - print "'; - else print ''; + else print ''; } elseif ($totalarray['totaldebfield'] == $i) print ''; elseif ($totalarray['totalcredfield'] == $i) print ''; diff --git a/htdocs/compta/bank/categ.php b/htdocs/compta/bank/categ.php index 21712e9a36f..e220df40e42 100644 --- a/htdocs/compta/bank/categ.php +++ b/htdocs/compta/bank/categ.php @@ -138,7 +138,7 @@ if ($result) { print ""; print ''; } diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index 963a3edf26f..c5c4464bf41 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -304,14 +304,14 @@ if ($result) print ''; print ''; - dol_fiche_head($tabs, 0, $langs->trans('LineRecord'), -1, 'account', 0); + dol_fiche_head($tabs, 0, $langs->trans('LineRecord'), 0, 'account', 0); $linkback = ''.$langs->trans("BackToList").''; dol_banner_tab($bankline, 'rowid', $linkback); - print '
    '; + print '
    '; print '
    '; print '
    '.$langs->trans("Ref").'
    "; + print ''; if ($objp->url_id) { $companystatic->id = $objp->url_id; @@ -1520,13 +1520,13 @@ if ($resql) { if ($user->rights->banque->modifier || $user->rights->banque->consolidate) { - print ''; + print ''; print img_edit(); print ''; } else { - print ''; + print ''; print img_view(); print ''; } @@ -1574,7 +1574,7 @@ if ($resql) if ($i == 1) { if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").''.$langs->trans("Totalforthispage").''.$langs->trans("Totalforthispage").''.price(-1 * $totalarray['totaldeb']).''.price($totalarray['totalcred']).'".$objp->label."'; - print ''.img_edit().'  '; + print ''.img_edit().'  '; print ''.img_delete().''; print '
    '; diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index 82728fc693d..6adc1e4ccd2 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -313,14 +313,14 @@ print ''; if (!empty($arrayfields['b.ref']['checked'])) { print ''; } // Label if (!empty($arrayfields['b.label']['checked'])) { print ''; } // Account type @@ -333,7 +333,7 @@ if (!empty($arrayfields['accountype']['checked'])) if (!empty($arrayfields['b.number']['checked'])) { print ''; } // Account number @@ -527,26 +527,28 @@ foreach ($accounts as $key=>$type) // Transactions to reconcile if (!empty($arrayfields['toreconcile']['checked'])) { - print ''; + print ''; if (!$i) $totalarray['nbfield']++; } From d204cfe6c64393515c1332ccc6f6b3a3d3948eb6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 15:54:33 +0200 Subject: [PATCH 061/336] FIX Protection when database has a corrupted product id --- htdocs/product/stock/class/mouvementstock.class.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index 7b92af43ef0..e0266172463 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -109,7 +109,7 @@ class MouvementStock extends CommonObject * @param string $batch batch number * @param boolean $skip_batch If set to true, stock movement is done without impacting batch record * @param int $id_product_batch Id product_batch (when skip_batch is false and we already know which record of product_batch to use) - * @return int <0 if KO, 0 if fk_product is null, >0 if OK + * @return int <0 if KO, 0 if fk_product is null or product id does not exists, >0 if OK */ public function _create($user, $fk_product, $entrepot_id, $qty, $type, $price = 0, $label = '', $inventorycode = '', $datem = '', $eatby = '', $sellby = '', $batch = '', $skip_batch = false, $id_product_batch = 0) { @@ -155,13 +155,15 @@ class MouvementStock extends CommonObject $product = new Product($this->db); $result=$product->fetch($fk_product); - if ($result < 0) - { + if ($result < 0) { $this->error = $product->error; $this->errors = $product->errors; dol_print_error('', "Failed to fetch product"); return -1; } + if ($product->id <= 0) { // Can happen if database is corrupted + return 0; + } $this->db->begin(); From 3408f67348ef1bc5118d9ec17d01382c920db20e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 16:00:09 +0200 Subject: [PATCH 062/336] Clean orhpelins in llx_product_association --- htdocs/install/mysql/migration/repair.sql | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 7f5e6fafe3d..4297c5f324d 100644 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -165,6 +165,10 @@ DELETE FROM llx_product_batch WHERE qty = 0; UPDATE llx_product p SET p.stock= (SELECT SUM(ps.reel) FROM llx_product_stock ps WHERE ps.fk_product = p.rowid); +-- Fix: delete orphelins in product_association +delete from llx_product_association where fk_product_pere NOT IN (select rowid from llx_product); +delete from llx_product_association where fk_product_fils NOT IN (select rowid from llx_product); + -- Fix: delete category child with no category parent. drop table tmp_categorie; create table tmp_categorie as select * from llx_categorie; From f3d35b5a19fa71718a9618a46b3c5a78407a4d3d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 17:06:57 +0200 Subject: [PATCH 063/336] Fix phpcs --- htdocs/fourn/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index c60cda07cf7..e4c502069e0 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -966,7 +966,7 @@ if (empty($reshook)) // FIXME Missing special_code into addline and updateline methods $object->special_code = $lines[$i]->special_code; - + // FIXME If currency different from main currency, take multicurrency price if ($object->multicurrency_code != $conf->currency || $object->multicurrency_tx != 1) { From d2e35fc1f705efb8c6b8f64852a7d447a7035fc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josep=20Llu=C3=ADs?= Date: Thu, 2 Apr 2020 17:49:01 +0200 Subject: [PATCH 064/336] NEW: add addlinktonotes in members list --- htdocs/adherents/class/adherent.class.php | 29 ++++++++++++++++------- htdocs/adherents/list.php | 5 +++- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index fa8ae9fc2f3..538e433cd16 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -7,11 +7,12 @@ * Copyright (C) 2009-2017 Regis Houssin * Copyright (C) 2014-2018 Alexandre Spangaro * Copyright (C) 2015 Marcos García - * Copyright (C) 2015-2018 Frédéric France + * Copyright (C) 2015-2018 Frédéric France * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2016 Juanjo Menent - * Copyright (C) 2018-2019 Thibault FOUCART - * Copyright (C) 2019 Nicolas ZABOURI + * Copyright (C) 2018-2019 Thibault FOUCART + * Copyright (C) 2019 Nicolas ZABOURI + * Copyright (C) 2020 Josep Lluís Amador * * 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 @@ -1958,13 +1959,14 @@ class Adherent extends CommonObject * @param int $withpictoimg 0=No picto, 1=Include picto into link, 2=Only picto, -1=Include photo into link, -2=Only picto photo, -3=Only photo very small) * @param int $maxlen length max label * @param string $option Page for link ('card', 'category', 'subscription', ...) - * @param string $mode ''=Show firstname+lastname as label (using default order), 'firstname'=Show only firstname, 'login'=Show login, 'ref'=Show ref - * @param string $morecss Add more css on link - * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking - * @param int $notooltip 1=Disable tooltip + * @param string $mode ''=Show firstname+lastname as label (using default order), 'firstname'=Show only firstname, 'login'=Show login, 'ref'=Show ref + * @param string $morecss Add more css on link + * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking + * @param int $notooltip 1=Disable tooltip + * @param int $addlinktonotes 1=Add link to notes * @return string Chaine avec URL */ - public function getNomUrl($withpictoimg = 0, $maxlen = 0, $option = 'card', $mode = '', $morecss = '', $save_lastsearch_value = -1, $notooltip = 0) + public function getNomUrl($withpictoimg = 0, $maxlen = 0, $option = 'card', $mode = '', $morecss = '', $save_lastsearch_value = -1, $notooltip = 0, $addlinktonotes = 0) { global $conf, $langs; @@ -2046,6 +2048,17 @@ class Adherent extends CommonObject if ($withpictoimg) $result .= ''; $result .= $linkend; + if ($addlinktonotes) { + if ($this->note_private) { + $notetoshow = $langs->trans("ViewPrivateNote").':
    '.dol_string_nohtmltag($this->note_private, 1); + $result .= ' '; + $result .= ''; + $result .= img_picto('', 'note'); + $result .= ''; + $result .= ''; + } + } + return $result; } diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index cbbf434709b..7a230d7d421 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -255,6 +255,7 @@ $sql = "SELECT d.rowid, d.login, d.lastname, d.firstname, d.gender, d.societe as $sql .= " d.civility, d.datefin, d.address, d.zip, d.town, d.state_id, d.country,"; $sql .= " d.email, d.phone, d.phone_perso, d.phone_mobile, d.skype, d.birth, d.public, d.photo,"; $sql .= " d.fk_adherent_type as type_id, d.morphy, d.statut, d.datec as date_creation, d.tms as date_update,"; +$sql .= " d.note_private, d.note_public,"; $sql .= " s.nom,"; $sql .= " t.libelle as type, t.subscription,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; @@ -686,6 +687,8 @@ while ($i < min($num, $limit)) $memberstatic->socid = $obj->fk_soc; $memberstatic->photo = $obj->photo; $memberstatic->morphy = $obj->morphy; + $memberstatic->note_public = $obj->note_public; + $memberstatic->note_private = $obj->note_private; if (!empty($obj->fk_soc)) { $memberstatic->fetch_thirdparty(); @@ -707,7 +710,7 @@ while ($i < min($num, $limit)) if (!empty($arrayfields['d.ref']['checked'])) { print "
    \n"; if (!$i) $totalarray['nbfield']++; } From 7cee643c05b3bcf4f6932b2fe7142fdfe4d7cc51 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 18:51:25 +0200 Subject: [PATCH 065/336] Prepare 10.0.8 --- htdocs/filefunc.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 1f8d9bf3b8f..cf32d969ef9 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -31,7 +31,7 @@ */ if (! defined('DOL_APPLICATION_TITLE')) define('DOL_APPLICATION_TITLE', 'Dolibarr'); -if (! defined('DOL_VERSION')) define('DOL_VERSION', '10.0.7'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c +if (! defined('DOL_VERSION')) define('DOL_VERSION', '10.0.8'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c if (! defined('EURO')) define('EURO', chr(128)); From 644d83d79913b2072441f49342bfaaf547b9b8e6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 19:42:08 +0200 Subject: [PATCH 066/336] Rename field to avoid confusion --- htdocs/admin/defaultvalues.php | 11 ++++++----- htdocs/langs/en_US/admin.lang | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/htdocs/admin/defaultvalues.php b/htdocs/admin/defaultvalues.php index d6981448ea6..0d9775e0fbd 100644 --- a/htdocs/admin/defaultvalues.php +++ b/htdocs/admin/defaultvalues.php @@ -38,6 +38,7 @@ if (!$user->admin) accessforbidden(); $id = GETPOST('rowid', 'int'); $action = GETPOST('action', 'alpha'); +$optioncss = GETPOST('optionscss', 'alphanohtml'); $mode = GETPOST('mode', 'aZ09') ?GETPOST('mode', 'aZ09') : 'createform'; // 'createform', 'filters', 'sortorder', 'focus' @@ -212,10 +213,10 @@ print "
    \n"; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); -if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); -if ($defaulturl) $param .= '&defaulturl='.urlencode($defaulturl); -if ($defaultkey) $param .= '&defaultkey='.urlencode($defaultkey); -if ($defaultvalue) $param .= '&defaultvalue='.urlencode($defaultvalue); +if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); +if ($defaulturl) $param .= '&defaulturl='.urlencode($defaulturl); +if ($defaultkey) $param .= '&defaultkey='.urlencode($defaultkey); +if ($defaultvalue) $param .= '&defaultvalue='.urlencode($defaultvalue); print '
    entity) && $debug) ? '?debug=1' : '').'" method="POST">'; @@ -252,7 +253,7 @@ $texthelp = $langs->trans("PageUrlForDefaultValues"); if ($mode == 'createform') $texthelp .= $langs->trans("PageUrlForDefaultValuesCreate", 'societe/card.php', 'societe/card.php?abc=val1&def=val2'); else $texthelp .= $langs->trans("PageUrlForDefaultValuesList", 'societe/list.php', 'societe/list.php?abc=val1&def=val2'); $texthelp .= '

    '.$langs->trans("AlsoDefaultValuesAreEffectiveForActionCreate"); -$texturl = $form->textwithpicto($langs->trans("Url"), $texthelp); +$texturl = $form->textwithpicto($langs->trans("RelativeURL"), $texthelp); print_liste_field_titre($texturl, $_SERVER["PHP_SELF"], 'page,param', '', $param, '', $sortfield, $sortorder); // Field $texthelp = $langs->trans("TheKeyIsTheNameOfHtmlField"); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 3fde658960e..3d774b7afdd 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -221,6 +221,7 @@ DoliPartnersDesc=List of companies providing custom-developed modules or feature WebSiteDesc=External websites for more add-on (non-core) modules... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL +RelativeURL=Relative URL BoxesAvailable=Widgets available BoxesActivated=Widgets activated ActivateOn=Activate on From 67a1c3ea897de3e02601c267e4fb025e51dea4ad Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Thu, 2 Apr 2020 19:43:29 +0200 Subject: [PATCH 067/336] NEW better filter on shipment list as other list --- htdocs/expedition/list.php | 98 ++++++++++++++++++++++++++++++++++---- 1 file changed, 88 insertions(+), 10 deletions(-) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 5122ac5897e..da71e81a97d 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2016-2018 Ferran Marcet * Copyright (C) 2019 Nicolas ZABOURI + * Copyright (C) 2020 Thibault FOUCART * * 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 @@ -28,6 +29,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -64,6 +66,11 @@ $search_datedelivery_end = dol_mktime(23, 59, 59, GETPOST('search_datedelivery_e $search_datereceipt_start = dol_mktime(0, 0, 0, GETPOST('search_datereceipt_startmonth', 'int'), GETPOST('search_datereceipt_startday', 'int'), GETPOST('search_datereceipt_startyear', 'int')); $search_datereceipt_end = dol_mktime(23, 59, 59, GETPOST('search_datereceipt_endmonth', 'int'), GETPOST('search_datereceipt_endday', 'int'), GETPOST('search_datereceipt_endyear', 'int')); $sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); +$socid = GETPOST('socid', 'int'); +$search_user = GETPOST('search_user', 'int'); +$search_sale = GETPOST('search_sale', 'int'); +$search_categ_cus = trim(GETPOST("search_categ_cus", 'int')); +$search_product_category = GETPOST('search_product_category', 'int'); $optioncss = GETPOST('optioncss', 'alpha'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; @@ -149,7 +156,11 @@ include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; // Purge search criteria if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers { - $search_ref_exp = ''; + $search_categ = ''; + $search_user = ''; + $search_sale = ''; + $search_product_category = ''; + $search_ref_exp = ''; $search_ref_liv = ''; $search_ref_customer = ''; $search_company = ''; @@ -185,20 +196,27 @@ if (empty($reshook)) * View */ +$now = dol_now(); + $form = new Form($db); +$formother = new FormOther($db); $formfile = new FormFile($db); $companystatic = new Societe($db); -$shipment = new Expedition($db); $formcompany = new FormCompany($db); +$shipment = new Expedition($db); $helpurl = 'EN:Module_Shipments|FR:Module_Expéditions|ES:Módulo_Expediciones'; llxHeader('', $langs->trans('ListOfSendings'), $helpurl); -$sql = "SELECT e.rowid, e.ref, e.ref_customer, e.date_expedition as date_expedition, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut, e.billed,"; -$sql .= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, '; +$sql = 'SELECT'; +if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; +$sql .= " e.rowid, e.ref, e.ref_customer, e.date_expedition as date_expedition, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut, e.billed,"; +$sql .= " s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, "; $sql .= " typent.code as typent_code,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; -$sql .= ' e.date_creation as date_creation, e.tms as date_update'; +$sql .= " e.date_creation as date_creation, e.tms as date_update,"; +$sql .= " u.login"; +if ($search_categ_cus) $sql .= ", cc.fk_categorie, cc.fk_soc"; // Add fields from extrafields if (!empty($extrafields->attributes[$object->table_element]['label'])) { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key.' as options_'.$key : ''); @@ -209,17 +227,30 @@ $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // N $sql .= $hookmanager->resPrint; $sql .= " FROM ".MAIN_DB_PREFIX."expedition as e"; if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (e.rowid = ef.fk_object)"; +if ($sall || $search_product_category > 0) { +$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'expeditiondet as ed ON e.rowid=ed.fk_expedition'; +$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet as pd ON pd.rowid=ed.fk_origin_line'; +} +if ($search_product_category > 0) $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product'; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = e.fk_soc"; +if (!empty($search_categ_cus)) $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_societe as cc ON s.rowid = cc.fk_soc"; // We'll need this table joined to the select in order to filter by categ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays)"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent)"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as state on (state.rowid = s.fk_departement)"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as ee ON e.rowid = ee.fk_source AND ee.sourcetype = 'shipping' AND ee.targettype = 'delivery'"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."livraison as l ON l.rowid = ee.fk_target"; -if (!$user->rights->societe->client->voir && !$socid) // Internal user with no permission to see all +$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON e.fk_user_author = u.rowid'; + +// We'll need this table joined to the select in order to filter by sale +if ($search_sale > 0 || (!$user->rights->societe->client->voir && !$socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; +if ($search_user > 0) { - $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= ", ".MAIN_DB_PREFIX."element_contact as ec"; + $sql .= ", ".MAIN_DB_PREFIX."c_type_contact as tc"; } $sql .= " WHERE e.entity IN (".getEntity('expedition').")"; +if ($search_product_category > 0) $sql .= " AND cp.fk_categorie = ".$search_product_category; +if ($socid > 0) $sql .= ' AND s.rowid = '.$socid; if (!$user->rights->societe->client->voir && !$socid) // Internal user with no permission to see all { $sql .= " AND e.fk_soc = sc.fk_soc"; @@ -239,6 +270,7 @@ if ($search_zip) $sql .= natural_search("s.zip", $search_zip); if ($search_state) $sql .= natural_search("state.nom", $search_state); if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')'; if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')'; +if ($search_sale > 0) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$search_sale; if ($search_ref_exp) $sql .= natural_search('e.ref', $search_ref_exp); if ($search_ref_liv) $sql .= natural_search('l.ref', $search_ref_liv); if ($search_company) $sql .= natural_search('s.nom', $search_company); @@ -247,6 +279,8 @@ if ($search_datedelivery_end) $sql .= " AND e.date_delivery <= '".$db->idate($se if ($search_datereceipt_start) $sql .= " AND l.date_delivery >= '".$db->idate($search_datereceipt_start)."'"; if ($search_datereceipt_end) $sql .= " AND l.date_delivery <= '".$db->idate($search_datereceipt_end)."'"; if ($sall) $sql .= natural_search(array_keys($fieldstosearchall), $sall); +if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus); +if ($search_categ_cus == -2) $sql .= " AND cc.fk_categorie IS NULL"; // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; @@ -289,13 +323,18 @@ if ($resql) if ($search_ref_exp) $param .= "&search_ref_exp=".urlencode($search_ref_exp); if ($search_ref_liv) $param .= "&search_ref_liv=".urlencode($search_ref_liv); if ($search_ref_customer) $param .= "&search_ref_customer=".urlencode($search_ref_customer); + if ($search_user > 0) $param .= '&search_user='.urlencode($search_user); + if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale); if ($search_company) $param .= "&search_company=".urlencode($search_company); if ($search_town) $param .= '&search_town='.urlencode($search_town); if ($search_zip) $param .= '&search_zip='.urlencode($search_zip); + if ($search_datedelivery_start) $param .= '&search_datedelivery_start='.urlencode($search_datedelivery_start); if ($search_datedelivery_end) $param .= '&search_datedelivery_end='.urlencode($search_datedelivery_end); if ($search_datereceipt_start) $param .= '&search_datereceipt_start='.urlencode($search_datereceipt_start); if ($search_datereceipt_end) $param .= '&search_datereceipt_end='.urlencode($search_datereceipt_end); + if ($search_product_category != '') $param .= '&search_product_category='.urlencode($search_product_category); + if ($search_categ_cus > 0) $param .= '&search_categ_cus='.urlencode($search_categ_cus); if ($viewstatut != '') $param .= '&viewstatut='.urlencode($viewstatut); if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); // Add $param from extra fields @@ -303,6 +342,7 @@ if ($resql) $arrayofmassactions = array( 'builddoc' => $langs->trans("PDFMerge"), + //'classifyclose'=>$langs->trans("Close"), TODO massive close shipment ie: when truck is charged 'presend' => $langs->trans("SendByMail"), ); if (in_array($massaction, array('presend'))) $arrayofmassactions = array(); @@ -339,13 +379,51 @@ if ($resql) } $moreforfilter = ''; + + // If the user can view prospects other than his' + if ($user->rights->societe->client->voir || $socid) + { + $langs->load("commercial"); + $moreforfilter .= '
    '; + $moreforfilter .= $langs->trans('ThirdPartiesOfSaleRepresentative').': '; + $moreforfilter .= $formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth200'); + $moreforfilter .= '
    '; + } + // If the user can view other users + if ($user->rights->user->user->lire) + { + $moreforfilter .= '
    '; + $moreforfilter .= $langs->trans('LinkedToSpecificUsers').': '; + $moreforfilter .= $form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth200'); + $moreforfilter .= '
    '; + } + // If the user can view prospects other than his' + if ($conf->categorie->enabled && ($user->rights->produit->lire || $user->rights->service->lire)) + { + include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + $moreforfilter .= '
    '; + $moreforfilter .= $langs->trans('IncludingProductWithTag').': '; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1); + $moreforfilter .= $form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, 'maxwidth300', 1); + $moreforfilter .= '
    '; + } + if (!empty($conf->categorie->enabled)) + { + require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + $moreforfilter .= '
    '; + $moreforfilter .= $langs->trans('CustomersProspectsCategoriesShort').': '; + $moreforfilter .= $formother->select_categories('customer', $search_categ_cus, 'search_categ_cus', 1); + $moreforfilter .= '
    '; + } + $parameters = array(); + $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook + if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint; + else $moreforfilter = $hookmanager->resPrint; + if (!empty($moreforfilter)) { print '
    '; print $moreforfilter; - $parameters = array('type'=>$type); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
    '; } From 8b95e8a7029909f56260665742685698b286caa5 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 2 Apr 2020 17:45:28 +0000 Subject: [PATCH 068/336] Fixing style errors. --- htdocs/expedition/list.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index da71e81a97d..f55393f9b89 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -4,7 +4,7 @@ * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2016-2018 Ferran Marcet * Copyright (C) 2019 Nicolas ZABOURI - * Copyright (C) 2020 Thibault FOUCART + * Copyright (C) 2020 Thibault FOUCART * * 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 @@ -160,7 +160,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $search_user = ''; $search_sale = ''; $search_product_category = ''; - $search_ref_exp = ''; + $search_ref_exp = ''; $search_ref_liv = ''; $search_ref_customer = ''; $search_company = ''; @@ -228,8 +228,8 @@ $sql .= $hookmanager->resPrint; $sql .= " FROM ".MAIN_DB_PREFIX."expedition as e"; if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (e.rowid = ef.fk_object)"; if ($sall || $search_product_category > 0) { -$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'expeditiondet as ed ON e.rowid=ed.fk_expedition'; -$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet as pd ON pd.rowid=ed.fk_origin_line'; + $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'expeditiondet as ed ON e.rowid=ed.fk_expedition'; + $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet as pd ON pd.rowid=ed.fk_origin_line'; } if ($search_product_category > 0) $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product'; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = e.fk_soc"; @@ -328,7 +328,7 @@ if ($resql) if ($search_company) $param .= "&search_company=".urlencode($search_company); if ($search_town) $param .= '&search_town='.urlencode($search_town); if ($search_zip) $param .= '&search_zip='.urlencode($search_zip); - + if ($search_datedelivery_start) $param .= '&search_datedelivery_start='.urlencode($search_datedelivery_start); if ($search_datedelivery_end) $param .= '&search_datedelivery_end='.urlencode($search_datedelivery_end); if ($search_datereceipt_start) $param .= '&search_datereceipt_start='.urlencode($search_datereceipt_start); From 84f0c216d12a3fabc48f1ecbae5f4d9cb6e746e1 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Thu, 2 Apr 2020 20:10:57 +0200 Subject: [PATCH 069/336] Update list.php --- htdocs/expedition/list.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index f55393f9b89..05dd4a6a3ab 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -176,8 +176,9 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $search_datereceipt_start = ''; $search_datereceipt_end = ''; $viewstatut = ''; - $toselect = ''; + $toselect = ''; $search_array_options = array(); + $search_categ_cus = 0; } if (empty($reshook)) From 4c8a04cf38a89e204d098914ebfdd5f054d713d1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 21:17:04 +0200 Subject: [PATCH 070/336] Fix phpcs --- htdocs/supplier_proposal/class/supplier_proposal.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 17ab143b6a7..3c2d68f653d 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -1857,7 +1857,7 @@ class SupplierProposal extends CommonObject public function createPriceFournisseur($product, $user) { global $conf; - + $price=price2num($product->subprice*$product->qty, 'MU'); $qty=price2num($product->qty); $unitPrice = price2num($product->subprice, 'MU'); From 98d2db440a56787d881aab07aef1e419c977cd70 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 2 Apr 2020 21:34:51 +0200 Subject: [PATCH 071/336] Complete tooltip --- htdocs/langs/en_US/users.lang | 2 +- htdocs/user/card.php | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 8780e7d2c0d..3b3710fee89 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -70,7 +70,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An internal user is a user that is part of your company/organization.
    An external user is a customer, vendor or other.

    In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +InternalExternalDesc=An internal user is a user that is part of your company/organization.
    An external user is a customer, vendor or other (Creating an external user for a third-party can be done from the contact record of the third-party).

    In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 81852b3edc1..384b3e864ba 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -46,6 +46,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; if (!empty($conf->ldap->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/class/ldap.class.php'; if (!empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; if (!empty($conf->categorie->enabled)) require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; @@ -858,7 +859,6 @@ if ($action == 'create' || $action == 'adduserldap') $generated_password = ''; if (empty($ldap_sid)) // ldap_sid is for activedirectory { - require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; $generated_password = getRandomPassword(false); } $password=(GETPOSTISSET('password')?GETPOST('password'):$generated_password); @@ -901,19 +901,16 @@ if ($action == 'create' || $action == 'adduserldap') if (!empty($conf->api->enabled)) { // API key - $generated_api_key = ''; - require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; - $generated_password = getRandomPassword(false); + //$generated_password = getRandomPassword(false); print '
    '; print ''; } else { - require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; // PARTIAL WORKAROUND $generated_fake_api_key = getRandomPassword(false); print ''; From 3255c185671198dba0cb1f29cdf0367ff459b959 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Thu, 2 Apr 2020 22:11:16 +0200 Subject: [PATCH 072/336] Receipt compatibility with receipt printer module --- htdocs/takepos/index.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index 1012e62f65d..4c86e26c2c4 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -870,11 +870,13 @@ if ($conf->global->TAKEPOS_BAR_RESTAURANT) { $menus[$r++] = array('title'=>$langs->trans("Order"), 'action'=>'TakeposPrintingOrder();'); } - //add temp ticket button + //Button to print receipt before payment if ($conf->global->TAKEPOS_BAR_RESTAURANT) { if ($conf->global->TAKEPOS_PRINT_METHOD == "takeposconnector") { $menus[$r++] = array('title'=>'
    '.$langs->trans("Receipt").'
    ', 'action'=>'TakeposPrinting(placeid);'); + } else if ($conf->global->TAKEPOS_PRINT_METHOD == "receiptprinter") { + $menus[$r++] = array('title'=>'
    '.$langs->trans("Receipt").'
    ', 'action'=>'DolibarrTakeposPrinting(placeid);'); } else { $menus[$r++] = array('title'=>'
    '.$langs->trans("Receipt").'
    ', 'action'=>'Print(placeid);'); } From 27eec2e5dbb9f99072f17c7695b321ae8d044493 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Thu, 2 Apr 2020 23:28:25 +0200 Subject: [PATCH 073/336] Travis fix --- htdocs/takepos/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index 4c86e26c2c4..4f5ef29bc70 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -875,7 +875,7 @@ if ($conf->global->TAKEPOS_BAR_RESTAURANT) { if ($conf->global->TAKEPOS_PRINT_METHOD == "takeposconnector") { $menus[$r++] = array('title'=>'
    '.$langs->trans("Receipt").'
    ', 'action'=>'TakeposPrinting(placeid);'); - } else if ($conf->global->TAKEPOS_PRINT_METHOD == "receiptprinter") { + } elseif ($conf->global->TAKEPOS_PRINT_METHOD == "receiptprinter") { $menus[$r++] = array('title'=>'
    '.$langs->trans("Receipt").'
    ', 'action'=>'DolibarrTakeposPrinting(placeid);'); } else { $menus[$r++] = array('title'=>'
    '.$langs->trans("Receipt").'
    ', 'action'=>'Print(placeid);'); From 193a10bc39a8c644066fffa1fe497c3f49030fe9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 02:29:10 +0200 Subject: [PATCH 074/336] FIX cloning of emailing when no content selected --- htdocs/comm/mailing/card.php | 4 ++-- htdocs/comm/mailing/class/mailing.class.php | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index a21ea9d7d0a..e4e4237db05 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -90,13 +90,13 @@ if (empty($reshook)) // Action clone object if ($action == 'confirm_clone' && $confirm == 'yes') { - if (empty($_REQUEST["clone_content"]) && empty($_REQUEST["clone_receivers"])) + if (! GETPOST("clone_content", 'alpha') && ! GETPOST("clone_receivers", 'alpha')) { setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); } else { - $result = $object->createFromClone($user, $object->id, $_REQUEST["clone_content"], $_REQUEST["clone_receivers"]); + $result = $object->createFromClone($user, $object->id, GETPOST("clone_content", 'alpha'), GETPOST("clone_receivers", 'alpha')); if ($result > 0) { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index 553c5e79c15..a671db7b7f9 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -273,8 +273,8 @@ class Mailing extends CommonObject * * @param User $user User making the clone * @param int $fromid Id of object to clone - * @param int $option1 1=Copy content, 0=Forget content - * @param int $option2 Not used + * @param int $option1 1=Clone content, 0=Forget content + * @param int $option2 1=Clone recipients * @return int New id of clone */ public function createFromClone(User $user, $fromid, $option1, $option2) @@ -305,7 +305,7 @@ class Mailing extends CommonObject $object->bgcolor = ''; $object->bgimage = ''; - $object->email_from = ''; + //$object->email_from = ''; // We do not reset from email because it is a mandatory value $object->email_replyto = ''; $object->email_errorsto = ''; @@ -331,7 +331,7 @@ class Mailing extends CommonObject if (! $error) { - //Clone target + // Clone recipient targets if (!empty($option2)) { require_once DOL_DOCUMENT_ROOT .'/core/modules/mailings/modules_mailings.php'; From 237615aa71a818334b14e78762d1860b3b0dec28 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 02:35:55 +0200 Subject: [PATCH 075/336] Fix offset for ecuador must be ID of country so 84 + 5 zeros --- htdocs/install/mysql/data/llx_accounting_account_ec.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/data/llx_accounting_account_ec.sql b/htdocs/install/mysql/data/llx_accounting_account_ec.sql index a57f49b2d54..fe31b3d00ce 100644 --- a/htdocs/install/mysql/data/llx_accounting_account_ec.sql +++ b/htdocs/install/mysql/data/llx_accounting_account_ec.sql @@ -29,7 +29,7 @@ -- Description of chart of account EC EC-SUPERCIAS -- ID 1 - 445 --- ADD 45000 to rowid # Do no remove this comment -- +-- ADD 8400000 to rowid # Do no remove this comment -- INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,1,'EC-SUPERCIAS','Activo','1',0,'ACTIVO',1); INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__,2,'EC-SUPERCIAS','Activo','101',1,'ACTIVO CORRIENTE',1); From b5e5d96d5034bbc422616e9f5c30ff75cc8a22f0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 03:04:23 +0200 Subject: [PATCH 076/336] Doxygen --- htdocs/api/class/api_access.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/api/class/api_access.class.php b/htdocs/api/class/api_access.class.php index 53139b0df8c..52cc9223903 100644 --- a/htdocs/api/class/api_access.class.php +++ b/htdocs/api/class/api_access.class.php @@ -64,7 +64,9 @@ class DolibarrApiAccess implements iAuthenticate * Check access * * @return bool - * @throws RestException + * + * @throws RestException 401 Forbidden + * @throws RestException 503 Technical error */ public function __isAllowed() { From 4170580d885da8201513a8ee8f3e39523b6ecd9c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 12:54:23 +0200 Subject: [PATCH 077/336] Rename const --- ChangeLog | 4 ++-- htdocs/commande/class/commande.class.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index a8c32a72670..911775b0a54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24,8 +24,8 @@ Following changes may create regressions for some external modules, but were nec * Removed hidden constant MAIN_EXTRAFIELDS_IN_ONE_TD that was useless. * Reference of object including a "/" are no more allowed. It is never used by default but to support setup that introduced it, the "/" will be replaced by a "_" automatically when a reference (with a custom numbering mask that use it) is generated. - - +* Library jflot (replace with chartjs) and geoip (replaced with geoip2) were removed. +* Hidden constant COMMANDE_VALID_AFTER_CLOSE_PROPAL were renamed into ORDER_VALID_AFTER_CLOSE_PROPAL. ***** ChangeLog for 11.0.3 compared to 11.0.2 ***** FIX: unit price for selected supplier products not set. NaN was used. diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index a4b4cdbfd11..4f5f8c8f1e1 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -931,7 +931,7 @@ class Commande extends CommonOrder dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); return -2; } - if (!empty($conf->global->COMMANDE_REQUIRE_SOURCE) && $this->source < 0) + if (!empty($conf->global->ORDER_REQUIRE_SOURCE) && $this->source < 0) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Source")); dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); @@ -1412,8 +1412,8 @@ class Commande extends CommonOrder if (!$error) { - // Ne pas passer par la commande provisoire - if ($conf->global->COMMANDE_VALID_AFTER_CLOSE_PROPAL == 1) + // Validate immediatly the order + if (! empty($conf->global->ORDER_VALID_AFTER_CLOSE_PROPAL)) { $this->fetch($ret); $this->valid($user); From 71910b21812e80aa983f156d5fff04c4dd4451dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 13:01:17 +0200 Subject: [PATCH 078/336] Fix warning --- htdocs/modulebuilder/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 0afcd403406..b67508cf08b 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -2082,7 +2082,7 @@ elseif (! empty($module)) print_liste_field_titre("Condition", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); print "\n"; - if (is_array($dicts)) + if (is_array($dicts) && is_array($dicts['tabname'])) { $i = 0; $maxi = count($dicts['tabname']); From 99e53f6b183efb2da6fdcc9ecf066705541b0e50 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Fri, 3 Apr 2020 13:12:00 +0200 Subject: [PATCH 079/336] FIX preg_math --- htdocs/api/class/api_setup.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 1b619acfeb7..5dbccb69fb4 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -1426,7 +1426,7 @@ class Setup extends DolibarrApi throw new RestException(403, 'Error API open to admin users only or to the login user defined with constant API_LOGIN_ALLOWED_FOR_ADMIN_CHECK'); } - if (! preg_match('/[^a-zA-Z0-9_]/', $confname) || ! isset($conf->global->$confname)) { + if (! preg_match('/[a-zA-Z0-9_]/', $confname) || ! isset($conf->global->$confname)) { throw new RestException(500, 'Error Bad or unknown value for constname'); } if (preg_match('/(_pass|password|secret|_key|key$)/i', $confname)) { From f7b6895dc688006f6d4cedf54858a6a1b0a8a473 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 14:02:37 +0200 Subject: [PATCH 080/336] Fix option to not generate doc in modulebuilder. --- htdocs/core/tpl/card_presend.tpl.php | 1 + htdocs/modulebuilder/index.php | 6 ++++-- htdocs/modulebuilder/template/class/myobject.class.php | 9 ++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/htdocs/core/tpl/card_presend.tpl.php b/htdocs/core/tpl/card_presend.tpl.php index 795483b08ba..37920ed1ebc 100644 --- a/htdocs/core/tpl/card_presend.tpl.php +++ b/htdocs/core/tpl/card_presend.tpl.php @@ -219,6 +219,7 @@ if ($action == 'presend') if (!empty($origin) && !empty($origin_id)) { $element = $subelement = $origin; + $regs = array(); if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) { $element = $regs[1]; $subelement = $regs[2]; diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index b67508cf08b..0827d38a2f7 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -887,8 +887,10 @@ if ($dirins && $action == 'initobject' && $module && $objectname) // Edit the setup file and the card page if (GETPOST('includedocgeneration', 'aZ09')) { - // TODO - // dolReplaceInFile(); + // Replace '$includedocgeneration = 0;' into '$includedocgeneration = 1;' into files + $arrayreplacement = array('$includedocgeneration = 0;', '$includedocgeneration = 1;'); + dolReplaceInFile($destdir.'/class/'.strtolower($objectname).'.class.php', $arrayreplacement, '', 0, 0, 1); + } // Scan for object class files diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 596e47e12c0..8e1f6a945c9 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -982,6 +982,9 @@ class MyObject extends CommonObject { global $conf, $langs; + $result = 0; + $includedocgeneration = 0; + $langs->load("mymodule@mymodule"); if (!dol_strlen($modele)) { @@ -996,7 +999,11 @@ class MyObject extends CommonObject $modelpath = "core/modules/mymodule/doc/"; - return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams); + if ($includedocgeneration) { + $result = $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams); + } + + return $result; } /** From bc0d98b91c8c2f35d1903d1cff828f635bb3a369 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Fri, 3 Apr 2020 14:24:59 +0200 Subject: [PATCH 081/336] FIX 11.0 Ticket Module - Visibility 4, don't display extrafields at the creation --- htdocs/core/class/commonobject.class.php | 14 +++++++++----- htdocs/core/class/html.formticket.class.php | 4 ++-- htdocs/core/tpl/extrafields_view.tpl.php | 2 +- htdocs/ticket/card.php | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index f5553032a09..d30eccb5136 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -6634,7 +6634,8 @@ abstract class CommonObject $perms = dol_eval($extrafields->attributes[$this->table_element]['perms'][$key], 1); } - if (($mode == 'create' || $mode == 'edit') && abs($visibility) != 1 && abs($visibility) != 3) continue; // <> -1 and <> 1 and <> 3 = not visible on forms, only on list + if (($mode == 'create') && abs($visibility) != 1 && abs($visibility) != 3) continue; // <> -1 and <> 1 and <> 3 = not visible on forms, only on list + elseif (($mode == 'edit') && abs($visibility) != 1 && abs($visibility) != 3 && abs($visibility) != 4) continue; // <> -1 and <> 1 and <> 3 = not visible on forms, only on list and <> 4 = not visible at the creation elseif ($mode == 'view' && empty($visibility)) continue; if (empty($perms)) continue; @@ -6661,9 +6662,11 @@ abstract class CommonObject case "view": $value = $this->array_options["options_".$key.$keysuffix]; break; - case "edit": - $getposttemp = GETPOST($keyprefix.'options_'.$key.$keysuffix, 'none'); // GETPOST can get value from GET, POST or setup of default values. - // GETPOST("options_" . $key) can be 'abc' or array(0=>'abc') + case "create": + case "edit": + + $getposttemp = GETPOST($keyprefix.'options_'.$key.$keysuffix, 'none'); // GETPOST can get value from GET, POST or setup of default values. + // GETPOST("options_" . $key) can be 'abc' or array(0=>'abc') if (is_array($getposttemp) || $getposttemp != '' || GETPOSTISSET($keyprefix.'options_'.$key.$keysuffix)) { if (is_array($getposttemp)) { @@ -6768,7 +6771,8 @@ abstract class CommonObject case "view": $out .= $extrafields->showOutputField($key, $value); break; - case "edit": + case "create": + case "edit": $out .= $extrafields->showInputField($key, $value, '', $keysuffix, '', 0, $this->id, $this->table_element); break; } diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index ecf137adb04..a48cf36c117 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -127,7 +127,7 @@ class FormTicket * @param int $withdolfichehead With dol_fiche_head * @return void */ - public function showForm($withdolfichehead = 0) + public function showForm($withdolfichehead = 0, $mode = 'edit') { global $conf, $langs, $user, $hookmanager; @@ -414,7 +414,7 @@ class FormTicket $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $ticketstat, $this->action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { - print $ticketstat->showOptionals($extrafields, 'edit'); + print $ticketstat->showOptionals($extrafields, 'create'); } print '
    '; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - if ($objecttmp->rappro) - { - $result = $objecttmp->load_board($user, $objecttmp->id); - if ($result < 0) { - setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); - } else { - print ''.$result->nbtodo.''; - if ($result->nbtodolate) { - print ''; - print ' '.$result->nbtodolate; - print ''; - } - } - } - else - { - print ''.$langs->trans("FeatureDisabled").''; - } - print ''; + + $conciliate = $objecttmp->canBeConciliated(); + if ($conciliate == -2) print ''.$langs->trans("CashAccount").''; + elseif ($conciliate == -3) print ''.$langs->trans("Closed").''; + elseif (empty($objecttmp->rappro)) { + print ''.$langs->trans("ConciliationDisabled").''; + } else { + $result = $objecttmp->load_board($user, $objecttmp->id); + if ($result < 0) { + setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); + } else { + print ''.$result->nbtodo.''; + if ($result->nbtodolate) { + print ''; + print ' '.$result->nbtodolate; + print ''; + } + } + } + + print '"; - print $memberstatic->getNomUrl(-1, 0, 'card', 'ref'); + print $memberstatic->getNomUrl(-1, 0, 'card', 'ref', '', -1, 0, 1); print "
    '.$langs->trans("ApiKey").''; - print ''; + print ''; if (!empty($conf->use_javascript_ajax)) print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_api_key" class="linkobject"'); print '
    '; diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index 1ef3ef07255..e6cbad245d9 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -73,7 +73,7 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] //print $key.'-'.$enabled.'-'.$perms.'-'.$label.$_POST["options_" . $key].'
    '."\n"; if (empty($enabled)) continue; // 0 = Never visible field - if (abs($enabled) != 1 && abs($enabled) != 3 && abs($enabled) != 5) continue; // <> -1 and <> 1 and <> 3 = not visible on forms, only on list + if (abs($enabled) != 1 && abs($enabled) != 3 && abs($enabled) != 5 && abs($enabled) != 4) continue; // <> -1 and <> 1 and <> 3 = not visible on forms, only on list <> 4 = not visible at the creation if (empty($perms)) continue; // 0 = Not visible // Load language if required diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index 8ca8bd22bfe..d59581fa914 100644 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -637,7 +637,7 @@ if ($action == 'create' || $action == 'presend') $defaultref = ''; } - $formticket->showForm(1); + $formticket->showForm(1, 'create'); } if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'dellink' || $action == 'presend' || $action == 'presend_addmessage' || $action == 'close' || $action == 'delete' || $action == 'editcustomer' || $action == 'progression' || $action == 'reopen' From a5a5fe55f6476b0a0cc2a07366f4c880e196c52f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 14:55:46 +0200 Subject: [PATCH 082/336] Code simpler --- htdocs/admin/modules.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 4056bca0ee3..280f17adfe2 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -761,6 +761,7 @@ if ($mode == 'common') print ''."\n"; // Link config + print ''; if (!empty($objMod->config_page_url) && !$disableSetup) { $backtourlparam = ''; @@ -770,9 +771,9 @@ if ($mode == 'common') if ($search_status > -1) $backtourlparam .= ($backtourlparam ? '&' : '?').'search_status='.$search_status; $backtourl = $_SERVER["PHP_SELF"].$backtourlparam; + $regs = array(); if (is_array($objMod->config_page_url)) { - print ''; $i = 0; foreach ($objMod->config_page_url as $page) { @@ -796,21 +797,21 @@ if ($mode == 'common') } } } - print "\n"; } elseif (preg_match('/^([^@]+)@([^@]+)$/i', $objMod->config_page_url, $regs)) { - print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; } else { - print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; } } else { - print ''.img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"').''; + print img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"'); } + print ''; } else // Module not yet activated { From a13287e2857d9dcf010a33d978a567b803b41ecf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 14:56:15 +0200 Subject: [PATCH 083/336] Fix: validate of object is ok even if some fields are missing --- htdocs/core/lib/modulebuilder.lib.php | 6 +-- htdocs/modulebuilder/index.php | 53 ++++++++++++++++--- .../template/class/myobject.class.php | 6 +-- .../modulebuilder/template/myobject_card.php | 2 - 4 files changed, 53 insertions(+), 14 deletions(-) diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php index fe5d707b10a..6ea1d949833 100644 --- a/htdocs/core/lib/modulebuilder.lib.php +++ b/htdocs/core/lib/modulebuilder.lib.php @@ -127,10 +127,10 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir = { $i++; $texttoinsert .= "\t\t'".$key."' => array('type'=>'".$val['type']."', 'label'=>'".$val['label']."',"; - $texttoinsert .= " 'enabled'=>".($val['enabled'] != '' ? $val['enabled'] : 1).","; - $texttoinsert .= " 'position'=>".($val['position'] != '' ? $val['position'] : 50).","; + $texttoinsert .= " 'enabled'=>".($val['enabled'] !== '' ? $val['enabled'] : 1).","; + $texttoinsert .= " 'position'=>".($val['position'] !== '' ? $val['position'] : 50).","; $texttoinsert .= " 'notnull'=>".(empty($val['notnull']) ? 0 : $val['notnull']).","; - $texttoinsert .= " 'visible'=>".($val['visible'] != '' ? $val['visible'] : -1).","; + $texttoinsert .= " 'visible'=>".($val['visible'] !== '' ? $val['visible'] : -1).","; if ($val['noteditable']) $texttoinsert .= " 'noteditable'=>'".$val['noteditable']."',"; if ($val['default']) $texttoinsert .= " 'default'=>'".$val['default']."',"; if ($val['index']) $texttoinsert .= " 'index'=>".$val['index'].","; diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 0827d38a2f7..16684fc36e4 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -92,6 +92,7 @@ if (empty($newmask)) // This should no happen $result = restrictedArea($user, 'modulebuilder', null); +$error = 0; /* @@ -782,6 +783,8 @@ if ($dirins && $action == 'initobject' && $module && GETPOST('createtablearray', if ($dirins && $action == 'initobject' && $module && $objectname) { + $objectname = ucfirst($objectname); + if (preg_match('/[^a-z0-9_]/i', $objectname)) { $error++; @@ -890,7 +893,6 @@ if ($dirins && $action == 'initobject' && $module && $objectname) // Replace '$includedocgeneration = 0;' into '$includedocgeneration = 1;' into files $arrayreplacement = array('$includedocgeneration = 0;', '$includedocgeneration = 1;'); dolReplaceInFile($destdir.'/class/'.strtolower($objectname).'.class.php', $arrayreplacement, '', 0, 0, 1); - } // Scan for object class files @@ -1711,6 +1713,44 @@ elseif (! empty($module)) $linktoenabledisable.=''; $linktoenabledisable.=img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', '', 1); $linktoenabledisable.=''; + + $objMod = $moduleobj; + $backtourlparam = ''; + $backtourlparam .= ($backtourlparam ? '&' : '?').'module='.$module; // No urlencode here, done later + if ($tab) $backtourlparam .= ($backtourlparam ? '&' : '?').'tab='.$tab; // No urlencode here, done later + $backtourl = $_SERVER["PHP_SELF"].$backtourlparam; + + $regs = array(); + if (is_array($objMod->config_page_url)) + { + $i = 0; + foreach ($objMod->config_page_url as $page) + { + $urlpage = $page; + if ($i++) + { + $linktoenabledisable .= ' '.img_picto(ucfirst($page), "setup").''; + // print ''.ucfirst($page).' '; + } + else + { + if (preg_match('/^([^@]+)@([^@]+)$/i', $urlpage, $regs)) + { + $urltouse = dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1); + $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + else + { + $urltouse = $urlpage; + $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + } + } + } + elseif (preg_match('/^([^@]+)@([^@]+)$/i', $objMod->config_page_url, $regs)) + { + $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } } else { @@ -1718,6 +1758,7 @@ elseif (! empty($module)) $linktoenabledisable.=img_picto($langs->trans("Disabled"), 'switch_off', '', false, 0, 0, '', '', 1); $linktoenabledisable.="\n"; } + if (empty($conf->$modulelowercase->enabled)) { $modulestatusinfo=$form->textwithpicto($langs->trans("ModuleIsNotActive", $urltomodulesetup), '', -1, 'help'); @@ -1747,16 +1788,16 @@ elseif (! empty($module)) $head2[$h][2] = 'objects'; $h++; - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=menus&module='.$module.($forceddirread?'@'.$dirread:''); - $head2[$h][1] = $langs->trans("Menus"); - $head2[$h][2] = 'menus'; - $h++; - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=permissions&module='.$module.($forceddirread?'@'.$dirread:''); $head2[$h][1] = $langs->trans("Permissions"); $head2[$h][2] = 'permissions'; $h++; + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=menus&module='.$module.($forceddirread?'@'.$dirread:''); + $head2[$h][1] = $langs->trans("Menus"); + $head2[$h][2] = 'menus'; + $h++; + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=hooks&module='.$module.($forceddirread?'@'.$dirread:''); $head2[$h][1] = $langs->trans("Hooks"); $head2[$h][2] = 'hooks'; diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 8e1f6a945c9..3dbb2b3b233 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -554,9 +554,9 @@ class MyObject extends CommonObject // Validate $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; $sql .= " SET ref = '".$this->db->escape($num)."',"; - $sql .= " status = ".self::STATUS_VALIDATED.","; - $sql .= " date_validation = '".$this->db->idate($now)."',"; - $sql .= " fk_user_valid = ".$user->id; + $sql .= " status = ".self::STATUS_VALIDATED; + if (! empty($this->fields['date_validation'])) $sql .= ", date_validation = '".$this->db->idate($now)."',"; + if (! empty($this->fields['fk_user_valid'])) $sql .= ", fk_user_valid = ".$user->id; $sql .= " WHERE rowid = ".$this->id; dol_syslog(get_class($this)."::validate()", LOG_DEBUG); diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 93eb7560aaa..ca2516eddb6 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -581,7 +581,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } //Select mail models is same action as presend - /* if (GETPOST('modelselected')) $action = 'presend'; // Presend form @@ -591,7 +590,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $trackid = 'myobject'.$object->id; include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php'; - */ } // End of page From d7e4e5f18cb20b0966e70c246f33dace82a914e8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 15:14:59 +0200 Subject: [PATCH 084/336] Fix modulebuilder clone message --- htdocs/langs/en_US/main.lang | 1 + htdocs/modulebuilder/index.php | 11 +++++++++-- htdocs/modulebuilder/template/myobject_card.php | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 8f8480a03cb..31e0d5a1c8d 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -174,6 +174,7 @@ SaveAndStay=Save and stay SaveAndNew=Save and new TestConnection=Test connection ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object %s? ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 16684fc36e4..65f6f4b3643 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -791,6 +791,12 @@ if ($dirins && $action == 'initobject' && $module && $objectname) setEventMessages($langs->trans("SpaceOrSpecialCharAreNotAllowed"), null, 'errors'); $tabobj = 'newobject'; } + if (class_exists($objectname)) { + // TODO Add a more efficient detection. Scan disk ? + $error++; + setEventMessages($langs->trans("AnObjectWithThisClassNameAlreadyExists"), null, 'errors'); + $tabobj = 'newobject'; + } $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $destdir = $dirins.'/'.strtolower($module); @@ -891,7 +897,7 @@ if ($dirins && $action == 'initobject' && $module && $objectname) // Edit the setup file and the card page if (GETPOST('includedocgeneration', 'aZ09')) { // Replace '$includedocgeneration = 0;' into '$includedocgeneration = 1;' into files - $arrayreplacement = array('$includedocgeneration = 0;', '$includedocgeneration = 1;'); + $arrayreplacement = array('/\$includedocgeneration = 0;/' => '$includedocgeneration = 1;'); dolReplaceInFile($destdir.'/class/'.strtolower($objectname).'.class.php', $arrayreplacement, '', 0, 0, 1); } @@ -2609,6 +2615,7 @@ elseif (! empty($module)) print ''; print ''; + // List of existing properties foreach ($properties as $propkey => $propval) { /* If from Reflection @@ -2680,7 +2687,7 @@ elseif (! empty($module)) print $propenabled?$propenabled:''; print ''; print ''; - print $propvisible?$propvisible:''; + print $propvisible?$propvisible:'0'; print ''; print ''; print $propnoteditable?$propnoteditable:''; diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index ca2516eddb6..97adff0558f 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -290,7 +290,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($action == 'clone') { // Create an array for form $formquestion = array(); - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneMyObject', $object->ref), 'confirm_clone', $formquestion, 'yes', 1); + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1); } // Confirmation of action xxxx From e9bddf5c26783612fef9ea78259036e0d69c7dda Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 15:36:41 +0200 Subject: [PATCH 085/336] Fix enable/disable of module --- htdocs/modulebuilder/index.php | 163 +++++++++++++++++---------------- 1 file changed, 86 insertions(+), 77 deletions(-) diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 65f6f4b3643..313eb65e727 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -1647,12 +1647,90 @@ $head[$h][1] = ''.$langs->trans("New $head[$h][2] = 'initmodule'; $h++; -foreach ($listofmodules as $tmpmodule => $tmpmodulearray) -{ - $head[$h][0] = $_SERVER["PHP_SELF"].'?module='.$tmpmodulearray['modulenamewithcase'].($forceddirread ? '@'.$dirread : ''); - $head[$h][1] = $tmpmodulearray['modulenamewithcase']; - $head[$h][2] = $tmpmodulearray['modulenamewithcase']; - $h++; +$linktoenabledisable = ''; +$modulestatusinfo = ''; + +if (is_array($listofmodules) && count($listofmodules) > 0) { + // Define $linktoenabledisable and $modulestatusinfo + $modulelowercase=strtolower($module); + $const_name = 'MAIN_MODULE_'.strtoupper($module); + + $param=''; + if ($tab) $param.='&tab='.urlencode($tab); + if ($module) $param.='&module='.urlencode($module); + if ($tabobj) $param.='&tabobj='.urlencode($tabobj); + + $urltomodulesetup=''.$langs->trans('Home').'-'.$langs->trans("Setup").'-'.$langs->trans("Modules").''; + if (! empty($conf->global->$const_name)) // If module is already activated + { + $linktoenabledisable.=''; + $linktoenabledisable.=img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', '', 1); + $linktoenabledisable.=''; + + $objMod = $moduleobj; + $backtourlparam = ''; + $backtourlparam .= ($backtourlparam ? '&' : '?').'module='.$module; // No urlencode here, done later + if ($tab) $backtourlparam .= ($backtourlparam ? '&' : '?').'tab='.$tab; // No urlencode here, done later + $backtourl = $_SERVER["PHP_SELF"].$backtourlparam; + + $regs = array(); + if (is_array($objMod->config_page_url)) + { + $i = 0; + foreach ($objMod->config_page_url as $page) + { + $urlpage = $page; + if ($i++) + { + $linktoenabledisable .= ' '.img_picto(ucfirst($page), "setup").''; + // print ''.ucfirst($page).' '; + } + else + { + if (preg_match('/^([^@]+)@([^@]+)$/i', $urlpage, $regs)) + { + $urltouse = dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1); + $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + else + { + $urltouse = $urlpage; + $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + } + } + } + elseif (preg_match('/^([^@]+)@([^@]+)$/i', $objMod->config_page_url, $regs)) + { + $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + } + else + { + $linktoenabledisable.=''; + $linktoenabledisable.=img_picto($langs->trans("ModuleIsNotActive", $urltomodulesetup), 'switch_off', '', false, 0, 0, '', 'classfortooltip', 1); + $linktoenabledisable.="\n"; + } + + if (! empty($conf->$modulelowercase->enabled)) + { + $modulestatusinfo=$form->textwithpicto('', $langs->trans("Warning").' : '.$langs->trans("ModuleIsLive"), -1, 'warning'); + } + + // Loop to show tab of each module + foreach ($listofmodules as $tmpmodule => $tmpmodulearray) + { + $head[$h][0] = $_SERVER["PHP_SELF"].'?module='.$tmpmodulearray['modulenamewithcase'].($forceddirread ? '@'.$dirread : ''); + $head[$h][1] = $tmpmodulearray['modulenamewithcase']; + $head[$h][2] = $tmpmodulearray['modulenamewithcase']; + + /*if ($tmpmodule == $modulelowercase) { + $head[$h][1] .= ' '.$modulestatusinfo; + $head[$h][1] .= ' '.$linktoenabledisable; + }*/ + + $h++; + } } $head[$h][0] = $_SERVER["PHP_SELF"].'?module=deletemodule'; @@ -1704,75 +1782,6 @@ elseif (! empty($module)) $head2 = array(); $h=0; - $modulelowercase=strtolower($module); - $const_name = 'MAIN_MODULE_'.strtoupper($module); - - $param=''; - if ($tab) $param.='&tab='.urlencode($tab); - if ($module) $param.='&module='.urlencode($module); - if ($tabobj) $param.='&tabobj='.urlencode($tabobj); - - $urltomodulesetup=''.$langs->trans('Home').'-'.$langs->trans("Setup").'-'.$langs->trans("Modules").''; - $linktoenabledisable=''; - if (! empty($conf->global->$const_name)) // If module is already activated - { - $linktoenabledisable.=''; - $linktoenabledisable.=img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', '', 1); - $linktoenabledisable.=''; - - $objMod = $moduleobj; - $backtourlparam = ''; - $backtourlparam .= ($backtourlparam ? '&' : '?').'module='.$module; // No urlencode here, done later - if ($tab) $backtourlparam .= ($backtourlparam ? '&' : '?').'tab='.$tab; // No urlencode here, done later - $backtourl = $_SERVER["PHP_SELF"].$backtourlparam; - - $regs = array(); - if (is_array($objMod->config_page_url)) - { - $i = 0; - foreach ($objMod->config_page_url as $page) - { - $urlpage = $page; - if ($i++) - { - $linktoenabledisable .= ' '.img_picto(ucfirst($page), "setup").''; - // print ''.ucfirst($page).' '; - } - else - { - if (preg_match('/^([^@]+)@([^@]+)$/i', $urlpage, $regs)) - { - $urltouse = dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1); - $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; - } - else - { - $urltouse = $urlpage; - $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; - } - } - } - } - elseif (preg_match('/^([^@]+)@([^@]+)$/i', $objMod->config_page_url, $regs)) - { - $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; - } - } - else - { - $linktoenabledisable.=''; - $linktoenabledisable.=img_picto($langs->trans("Disabled"), 'switch_off', '', false, 0, 0, '', '', 1); - $linktoenabledisable.="\n"; - } - - if (empty($conf->$modulelowercase->enabled)) - { - $modulestatusinfo=$form->textwithpicto($langs->trans("ModuleIsNotActive", $urltomodulesetup), '', -1, 'help'); - } - else - { - $modulestatusinfo=$form->textwithpicto($langs->trans("ModuleIsLive"), $langs->trans("Warning"), -1, 'warning'); - } $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=description&module='.$module.($forceddirread?'@'.$dirread:''); $head2[$h][1] = $langs->trans("Description"); @@ -1850,8 +1859,8 @@ elseif (! empty($module)) $h++; // Link to enable / disable - print $modulestatusinfo; - print ' '.$linktoenabledisable.'
    '; + print '
    '.$modulestatusinfo; + print ' '.$linktoenabledisable.'
    '; print '
    '; From 372d719693dac9da56656b07ba7b4351e514fc96 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 15:48:54 +0200 Subject: [PATCH 086/336] #13482 --- .../template/class/myobject.class.php | 71 ++++++++++--------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 3dbb2b3b233..f893e244a7c 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -551,29 +551,31 @@ class MyObject extends CommonObject } $this->newref = $num; - // Validate - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; - $sql .= " SET ref = '".$this->db->escape($num)."',"; - $sql .= " status = ".self::STATUS_VALIDATED; - if (! empty($this->fields['date_validation'])) $sql .= ", date_validation = '".$this->db->idate($now)."',"; - if (! empty($this->fields['fk_user_valid'])) $sql .= ", fk_user_valid = ".$user->id; - $sql .= " WHERE rowid = ".$this->id; + if (! empty($num)) { + // Validate + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql .= " SET ref = '".$this->db->escape($num)."',"; + $sql .= " status = ".self::STATUS_VALIDATED; + if (! empty($this->fields['date_validation'])) $sql .= ", date_validation = '".$this->db->idate($now)."',"; + if (! empty($this->fields['fk_user_valid'])) $sql .= ", fk_user_valid = ".$user->id; + $sql .= " WHERE rowid = ".$this->id; - dol_syslog(get_class($this)."::validate()", LOG_DEBUG); - $resql = $this->db->query($sql); - if (!$resql) - { - dol_print_error($this->db); - $this->error = $this->db->lasterror(); - $error++; - } + dol_syslog(get_class($this)."::validate()", LOG_DEBUG); + $resql = $this->db->query($sql); + if (!$resql) + { + dol_print_error($this->db); + $this->error = $this->db->lasterror(); + $error++; + } - if (!$error && !$notrigger) - { - // Call trigger - $result = $this->call_trigger('MYOBJECT_VALIDATE', $user); - if ($result < 0) $error++; - // End call triggers + if (!$error && !$notrigger) + { + // Call trigger + $result = $this->call_trigger('MYOBJECT_VALIDATE', $user); + if ($result < 0) $error++; + // End call triggers + } } if (!$error) @@ -946,23 +948,28 @@ class MyObject extends CommonObject return ''; } - $obj = new $classname(); - $numref = $obj->getNextValue($this); + if (class_exists($classname)) { + $obj = new $classname(); + $numref = $obj->getNextValue($this); - if ($numref != "") - { - return $numref; - } - else - { - $this->error = $obj->error; - //dol_print_error($this->db,get_class($this)."::getNextNumRef ".$obj->error); + if ($numref != "") + { + return $numref; + } + else + { + $this->error = $obj->error; + //dol_print_error($this->db,get_class($this)."::getNextNumRef ".$obj->error); + return ""; + } + } else { + print $langs->trans("Error")." ".$langs->trans("ClassNotFound"); return ""; } } else { - print $langs->trans("Error")." ".$langs->trans("Error_MYMODULE_MYOBJECT_ADDON_NotDefined"); + print $langs->trans("ErrorNumberingModuleNotSetup", $this->element); return ""; } } From d46417c8bd907df8cb9292c05a151fe9f3705b14 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 17:53:17 +0200 Subject: [PATCH 087/336] FIX #13482 --- htdocs/modulebuilder/index.php | 20 ++++++++++++++++--- .../template/class/myobject.class.php | 6 +++--- .../mymodule/mod_myobject_advanced.php | 15 +++++++++----- .../mymodule/mod_myobject_standard.php | 19 ++++++++++++++---- 4 files changed, 45 insertions(+), 15 deletions(-) diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 313eb65e727..31d593926d1 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -888,17 +888,31 @@ if ($dirins && $action == 'initobject' && $module && $objectname) // Edit the class 'class/'.strtolower($objectname).'.class.php' if (GETPOST('includerefgeneration', 'aZ09')) { // Replace 'visible'=>1, 'noteditable'=>0, 'default'=>'' - $arrayreplacement = array('/\'visible\'=>1,\s*\'noteditable\'=>0,\s*\'default\'=>\'\'/' => "'visible'=>4, 'noteditable'=>1, 'default'=>'(PROV)'"); + $arrayreplacement = array( + '/\'visible\'=>1,\s*\'noteditable\'=>0,\s*\'default\'=>\'\'/' => "'visible'=>4, 'noteditable'=>1, 'default'=>'(PROV)'" + ); //var_dump($arrayreplacement);exit; //var_dump($destdir.'/class/'.strtolower($objectname).'.class.php');exit; dolReplaceInFile($destdir.'/class/'.strtolower($objectname).'.class.php', $arrayreplacement, '', 0, 0, 1); + + $arrayreplacement = array( + '/\'models\' => 0,/' => '\'models\' => 1,' + ); + dolReplaceInFile($destdir.'/core/modules/mod'.$module.'.class.php', $arrayreplacement, '', 0, 0, 1); } // Edit the setup file and the card page if (GETPOST('includedocgeneration', 'aZ09')) { - // Replace '$includedocgeneration = 0;' into '$includedocgeneration = 1;' into files - $arrayreplacement = array('/\$includedocgeneration = 0;/' => '$includedocgeneration = 1;'); + // Replace some var init into some files + $arrayreplacement = array( + '/\$includedocgeneration = 0;/' => '$includedocgeneration = 1;' + ); dolReplaceInFile($destdir.'/class/'.strtolower($objectname).'.class.php', $arrayreplacement, '', 0, 0, 1); + + $arrayreplacement = array( + '/\'models\' => 0,/' => '\'models\' => 1,' + ); + dolReplaceInFile($destdir.'/core/modules/mod'.$module.'.class.php', $arrayreplacement, '', 0, 0, 1); } // Scan for object class files diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index f893e244a7c..97997a57542 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -922,7 +922,7 @@ class MyObject extends CommonObject $langs->load("mymodule@myobject"); if (empty($conf->global->MYMODULE_MYOBJECT_ADDON)) { - $conf->global->MYMODULE_MYOBJECT_ADDON = 'mod_mymobject_standard'; + $conf->global->MYMODULE_MYOBJECT_ADDON = 'mod_myobject_standard'; } if (!empty($conf->global->MYMODULE_MYOBJECT_ADDON)) @@ -952,7 +952,7 @@ class MyObject extends CommonObject $obj = new $classname(); $numref = $obj->getNextValue($this); - if ($numref != "") + if ($numref != '' && $numref != '-1') { return $numref; } @@ -963,7 +963,7 @@ class MyObject extends CommonObject return ""; } } else { - print $langs->trans("Error")." ".$langs->trans("ClassNotFound"); + print $langs->trans("Error")." ".$langs->trans("ClassNotFound").' '.$classname; return ""; } } diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php index 26866a6b9f1..33edc24e983 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php @@ -100,13 +100,18 @@ class mod_myobject_advanced extends ModeleNumRefMyObject { global $conf,$langs,$mysoc; - $old_code_client=$mysoc->code_client; + $object = new MyObject($this->db); + $object->initAsSpecimen(); + + /*$old_code_client=$mysoc->code_client; $old_code_type=$mysoc->typent_code; $mysoc->code_client='CCCCCCCCCC'; - $mysoc->typent_code='TTTTTTTTTT'; - $numExample = $this->getNextValue($mysoc, ''); - $mysoc->code_client=$old_code_client; - $mysoc->typent_code=$old_code_type; + $mysoc->typent_code='TTTTTTTTTT';*/ + + $numExample = $this->getNextValue($object, ''); + + /*$mysoc->code_client=$old_code_client; + $mysoc->typent_code=$old_code_type;*/ if (! $numExample) { diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php index e18e7636b6d..a213fee7174 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php @@ -76,9 +76,10 @@ class mod_myobject_standard extends ModeleNumRefMyObject * Checks if the numbers already in force in the data base do not * cause conflicts that would prevent this numbering from working. * - * @return boolean false if conflict, true if ok + * @param Object $object Object we need next value for + * @return boolean false if conflict, true if ok */ - public function canBeActivated() + public function canBeActivated($object) { global $conf,$langs,$db; @@ -88,7 +89,12 @@ class mod_myobject_standard extends ModeleNumRefMyObject $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."mymodule_myobject"; $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - $sql.= " AND entity = ".$conf->entity; + if ($object->ismultientitymanaged == 1) { + $sql.= " AND entity = ".$conf->entity; + } + elseif ($object->ismultientitymanaged == 2) { + // TODO + } $resql=$db->query($sql); if ($resql) @@ -121,7 +127,12 @@ class mod_myobject_standard extends ModeleNumRefMyObject $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."mymodule_myobject"; $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - $sql.= " AND entity = ".$conf->entity; + if ($object->ismultientitymanaged == 1) { + $sql.= " AND entity = ".$conf->entity; + } + elseif ($object->ismultientitymanaged == 2) { + // TODO + } $resql=$db->query($sql); if ($resql) From e6641b536934099c8881e1d9d81c47e254932ff4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 18:01:54 +0200 Subject: [PATCH 088/336] Fix doc --- htdocs/core/modules/barcode/doc/phpbarcode.modules.php | 4 ++-- htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php | 4 ++-- htdocs/core/modules/bom/mod_bom_standard.php | 4 ++-- htdocs/core/modules/bom/modules_bom.php | 4 ++-- htdocs/core/modules/cheque/mod_chequereceipt_mint.php | 4 ++-- htdocs/core/modules/cheque/modules_chequereceipts.php | 4 ++-- htdocs/core/modules/commande/mod_commande_marbre.php | 4 ++-- htdocs/core/modules/commande/modules_commande.php | 4 ++-- htdocs/core/modules/dons/modules_don.php | 4 ++-- .../modules/expensereport/mod_expensereport_jade.php | 4 ++-- .../core/modules/expensereport/modules_expensereport.php | 2 +- htdocs/core/modules/facture/mod_facture_mars.php | 4 ++-- htdocs/core/modules/facture/mod_facture_terre.php | 4 ++-- htdocs/core/modules/facture/modules_facture.php | 4 ++-- htdocs/core/modules/fichinter/mod_pacific.php | 4 ++-- htdocs/core/modules/fichinter/modules_fichinter.php | 4 ++-- htdocs/core/modules/livraison/mod_livraison_jade.php | 4 ++-- htdocs/core/modules/livraison/modules_livraison.php | 4 ++-- htdocs/core/modules/mrp/mod_mo_standard.php | 4 ++-- htdocs/core/modules/mrp/modules_mo.php | 4 ++-- htdocs/core/modules/payment/mod_payment_cicada.php | 4 ++-- htdocs/core/modules/payment/modules_payment.php | 4 ++-- htdocs/core/modules/product/modules_product.class.php | 4 ++-- htdocs/core/modules/project/mod_project_simple.php | 4 ++-- htdocs/core/modules/project/modules_project.php | 4 ++-- htdocs/core/modules/project/task/mod_task_simple.php | 4 ++-- htdocs/core/modules/project/task/modules_task.php | 4 ++-- htdocs/core/modules/propale/mod_propale_marbre.php | 4 ++-- htdocs/core/modules/propale/modules_propale.php | 4 ++-- htdocs/core/modules/societe/modules_societe.class.php | 8 ++++---- .../supplier_order/mod_commande_fournisseur_muguet.php | 4 ++-- .../supplier_payment/mod_supplier_payment_bronan.php | 4 ++-- .../supplier_payment/modules_supplier_payment.php | 4 ++-- .../supplier_proposal/mod_supplier_proposal_marbre.php | 4 ++-- .../supplier_proposal/modules_supplier_proposal.php | 4 ++-- htdocs/core/modules/takepos/modules_takepos.php | 4 ++-- htdocs/core/modules/ticket/mod_ticket_simple.php | 4 ++-- htdocs/core/modules/ticket/modules_ticket.php | 4 ++-- .../core/modules/mymodule/mod_myobject_standard.php | 9 +++++---- .../template/core/modules/mymodule/modules_myobject.php | 9 +++++---- 40 files changed, 87 insertions(+), 85 deletions(-) diff --git a/htdocs/core/modules/barcode/doc/phpbarcode.modules.php b/htdocs/core/modules/barcode/doc/phpbarcode.modules.php index 4da49e779e7..6002db02ab8 100644 --- a/htdocs/core/modules/barcode/doc/phpbarcode.modules.php +++ b/htdocs/core/modules/barcode/doc/phpbarcode.modules.php @@ -71,8 +71,8 @@ class modPhpbarcode extends ModeleBarCode } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php b/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php index 6161412572e..2abec661981 100644 --- a/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php +++ b/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php @@ -67,8 +67,8 @@ class modTcpdfbarcode extends ModeleBarCode } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/bom/mod_bom_standard.php b/htdocs/core/modules/bom/mod_bom_standard.php index 77c0856d3f6..16df1dd0d92 100644 --- a/htdocs/core/modules/bom/mod_bom_standard.php +++ b/htdocs/core/modules/bom/mod_bom_standard.php @@ -72,8 +72,8 @@ class mod_bom_standard extends ModeleNumRefboms /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/bom/modules_bom.php b/htdocs/core/modules/bom/modules_bom.php index 45bca8a38b3..2b150402fb0 100644 --- a/htdocs/core/modules/bom/modules_bom.php +++ b/htdocs/core/modules/bom/modules_bom.php @@ -109,8 +109,8 @@ abstract class ModeleNumRefBoms } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/cheque/mod_chequereceipt_mint.php b/htdocs/core/modules/cheque/mod_chequereceipt_mint.php index 8ee74065583..f4995962f90 100644 --- a/htdocs/core/modules/cheque/mod_chequereceipt_mint.php +++ b/htdocs/core/modules/cheque/mod_chequereceipt_mint.php @@ -69,8 +69,8 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/cheque/modules_chequereceipts.php b/htdocs/core/modules/cheque/modules_chequereceipts.php index 80dc8447329..74de02bcd0f 100644 --- a/htdocs/core/modules/cheque/modules_chequereceipts.php +++ b/htdocs/core/modules/cheque/modules_chequereceipts.php @@ -76,8 +76,8 @@ abstract class ModeleNumRefChequeReceipts } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/commande/mod_commande_marbre.php b/htdocs/core/modules/commande/mod_commande_marbre.php index 6e9111afa69..9dc07576797 100644 --- a/htdocs/core/modules/commande/mod_commande_marbre.php +++ b/htdocs/core/modules/commande/mod_commande_marbre.php @@ -72,8 +72,8 @@ class mod_commande_marbre extends ModeleNumRefCommandes /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/commande/modules_commande.php b/htdocs/core/modules/commande/modules_commande.php index 143ae173986..53b9a636d4b 100644 --- a/htdocs/core/modules/commande/modules_commande.php +++ b/htdocs/core/modules/commande/modules_commande.php @@ -110,8 +110,8 @@ abstract class ModeleNumRefCommandes } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/dons/modules_don.php b/htdocs/core/modules/dons/modules_don.php index 932d0a97f74..11538d8fff4 100644 --- a/htdocs/core/modules/dons/modules_don.php +++ b/htdocs/core/modules/dons/modules_don.php @@ -108,8 +108,8 @@ abstract class ModeleNumRefDons } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/expensereport/mod_expensereport_jade.php b/htdocs/core/modules/expensereport/mod_expensereport_jade.php index f703561ea03..93d2ca15a48 100644 --- a/htdocs/core/modules/expensereport/mod_expensereport_jade.php +++ b/htdocs/core/modules/expensereport/mod_expensereport_jade.php @@ -78,8 +78,8 @@ class mod_expensereport_jade extends ModeleNumRefExpenseReport /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/expensereport/modules_expensereport.php b/htdocs/core/modules/expensereport/modules_expensereport.php index dafbe51c760..fde1ea2df6b 100644 --- a/htdocs/core/modules/expensereport/modules_expensereport.php +++ b/htdocs/core/modules/expensereport/modules_expensereport.php @@ -117,7 +117,7 @@ abstract class ModeleNumRefExpenseReport } /** - * Test whether the numbers already in force in the base do not cause conflicts that would prevent this numbering from working. + * Test whether the numbers already in force in the base do not cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/facture/mod_facture_mars.php b/htdocs/core/modules/facture/mod_facture_mars.php index 3ef5fd0c7ac..6ad8c2528bd 100644 --- a/htdocs/core/modules/facture/mod_facture_mars.php +++ b/htdocs/core/modules/facture/mod_facture_mars.php @@ -84,8 +84,8 @@ class mod_facture_mars extends ModeleNumRefFactures } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/facture/mod_facture_terre.php b/htdocs/core/modules/facture/mod_facture_terre.php index d5196867b67..f43253bded0 100644 --- a/htdocs/core/modules/facture/mod_facture_terre.php +++ b/htdocs/core/modules/facture/mod_facture_terre.php @@ -94,8 +94,8 @@ class mod_facture_terre extends ModeleNumRefFactures } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/facture/modules_facture.php b/htdocs/core/modules/facture/modules_facture.php index 56379a0c492..871d29fca0d 100644 --- a/htdocs/core/modules/facture/modules_facture.php +++ b/htdocs/core/modules/facture/modules_facture.php @@ -114,8 +114,8 @@ abstract class ModeleNumRefFactures } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/fichinter/mod_pacific.php b/htdocs/core/modules/fichinter/mod_pacific.php index 3ecd3d6833d..d6437a7e84c 100644 --- a/htdocs/core/modules/fichinter/mod_pacific.php +++ b/htdocs/core/modules/fichinter/mod_pacific.php @@ -78,8 +78,8 @@ class mod_pacific extends ModeleNumRefFicheinter } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/fichinter/modules_fichinter.php b/htdocs/core/modules/fichinter/modules_fichinter.php index d5311ed792e..8db526da0a2 100644 --- a/htdocs/core/modules/fichinter/modules_fichinter.php +++ b/htdocs/core/modules/fichinter/modules_fichinter.php @@ -109,8 +109,8 @@ abstract class ModeleNumRefFicheinter } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/livraison/mod_livraison_jade.php b/htdocs/core/modules/livraison/mod_livraison_jade.php index 9bc56842fdd..f27c1a8583f 100644 --- a/htdocs/core/modules/livraison/mod_livraison_jade.php +++ b/htdocs/core/modules/livraison/mod_livraison_jade.php @@ -82,8 +82,8 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/livraison/modules_livraison.php b/htdocs/core/modules/livraison/modules_livraison.php index c88f3c53ae4..9672f1f31cf 100644 --- a/htdocs/core/modules/livraison/modules_livraison.php +++ b/htdocs/core/modules/livraison/modules_livraison.php @@ -112,8 +112,8 @@ abstract class ModeleNumRefDeliveryOrder } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/mrp/mod_mo_standard.php b/htdocs/core/modules/mrp/mod_mo_standard.php index 05b13525023..04391d25fd7 100644 --- a/htdocs/core/modules/mrp/mod_mo_standard.php +++ b/htdocs/core/modules/mrp/mod_mo_standard.php @@ -72,8 +72,8 @@ class mod_mo_standard extends ModeleNumRefMos /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/mrp/modules_mo.php b/htdocs/core/modules/mrp/modules_mo.php index 76d204a9826..cd9b3ec51db 100644 --- a/htdocs/core/modules/mrp/modules_mo.php +++ b/htdocs/core/modules/mrp/modules_mo.php @@ -109,8 +109,8 @@ abstract class ModeleNumRefMos } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/payment/mod_payment_cicada.php b/htdocs/core/modules/payment/mod_payment_cicada.php index 9c40a575f47..6addb1a5e31 100644 --- a/htdocs/core/modules/payment/mod_payment_cicada.php +++ b/htdocs/core/modules/payment/mod_payment_cicada.php @@ -79,8 +79,8 @@ class mod_payment_cicada extends ModeleNumRefPayments /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/payment/modules_payment.php b/htdocs/core/modules/payment/modules_payment.php index 192fd0207c3..10d7a56164d 100644 --- a/htdocs/core/modules/payment/modules_payment.php +++ b/htdocs/core/modules/payment/modules_payment.php @@ -63,8 +63,8 @@ abstract class ModeleNumRefPayments } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/product/modules_product.class.php b/htdocs/core/modules/product/modules_product.class.php index 81a4457954b..82a099a09fa 100644 --- a/htdocs/core/modules/product/modules_product.class.php +++ b/htdocs/core/modules/product/modules_product.class.php @@ -102,8 +102,8 @@ abstract class ModeleProductCode } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/project/mod_project_simple.php b/htdocs/core/modules/project/mod_project_simple.php index 92f86a433c8..3d091658619 100644 --- a/htdocs/core/modules/project/mod_project_simple.php +++ b/htdocs/core/modules/project/mod_project_simple.php @@ -81,8 +81,8 @@ class mod_project_simple extends ModeleNumRefProjects /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/project/modules_project.php b/htdocs/core/modules/project/modules_project.php index 4f831b72f4b..41905501791 100644 --- a/htdocs/core/modules/project/modules_project.php +++ b/htdocs/core/modules/project/modules_project.php @@ -107,8 +107,8 @@ abstract class ModeleNumRefProjects } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/project/task/mod_task_simple.php b/htdocs/core/modules/project/task/mod_task_simple.php index 3f9debf9941..fbb5f2d4c5d 100644 --- a/htdocs/core/modules/project/task/mod_task_simple.php +++ b/htdocs/core/modules/project/task/mod_task_simple.php @@ -81,8 +81,8 @@ class mod_task_simple extends ModeleNumRefTask /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/project/task/modules_task.php b/htdocs/core/modules/project/task/modules_task.php index 73757dc9bde..912bc18f18d 100644 --- a/htdocs/core/modules/project/task/modules_task.php +++ b/htdocs/core/modules/project/task/modules_task.php @@ -108,8 +108,8 @@ abstract class ModeleNumRefTask } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/propale/mod_propale_marbre.php b/htdocs/core/modules/propale/mod_propale_marbre.php index 8953ee6f6af..e8fa9970ef9 100644 --- a/htdocs/core/modules/propale/mod_propale_marbre.php +++ b/htdocs/core/modules/propale/mod_propale_marbre.php @@ -81,8 +81,8 @@ class mod_propale_marbre extends ModeleNumRefPropales /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/propale/modules_propale.php b/htdocs/core/modules/propale/modules_propale.php index 0dd26cbe6fb..c457cf8a446 100644 --- a/htdocs/core/modules/propale/modules_propale.php +++ b/htdocs/core/modules/propale/modules_propale.php @@ -111,8 +111,8 @@ abstract class ModeleNumRefPropales } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/societe/modules_societe.class.php b/htdocs/core/modules/societe/modules_societe.class.php index 37fe3d517f6..f76aa6e20d3 100644 --- a/htdocs/core/modules/societe/modules_societe.class.php +++ b/htdocs/core/modules/societe/modules_societe.class.php @@ -106,8 +106,8 @@ abstract class ModeleThirdPartyCode } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ @@ -299,8 +299,8 @@ abstract class ModeleAccountancyCode } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php index 25fdd77991b..f6bf6480c0f 100644 --- a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php +++ b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php @@ -91,8 +91,8 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php b/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php index 8a16475b383..c3499bdbf8d 100644 --- a/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php +++ b/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php @@ -79,8 +79,8 @@ class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/supplier_payment/modules_supplier_payment.php b/htdocs/core/modules/supplier_payment/modules_supplier_payment.php index ca1eac2c17f..f020e501c1e 100644 --- a/htdocs/core/modules/supplier_payment/modules_supplier_payment.php +++ b/htdocs/core/modules/supplier_payment/modules_supplier_payment.php @@ -98,8 +98,8 @@ abstract class ModeleNumRefSupplierPayments } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php index 7bd15599e24..a340f3eddd1 100644 --- a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php +++ b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php @@ -81,8 +81,8 @@ class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/supplier_proposal/modules_supplier_proposal.php b/htdocs/core/modules/supplier_proposal/modules_supplier_proposal.php index f795b1ea7ed..d93723d3c6f 100644 --- a/htdocs/core/modules/supplier_proposal/modules_supplier_proposal.php +++ b/htdocs/core/modules/supplier_proposal/modules_supplier_proposal.php @@ -111,8 +111,8 @@ abstract class ModeleNumRefSupplierProposal } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/takepos/modules_takepos.php b/htdocs/core/modules/takepos/modules_takepos.php index cb33fd2d9b3..e077cda7b6b 100644 --- a/htdocs/core/modules/takepos/modules_takepos.php +++ b/htdocs/core/modules/takepos/modules_takepos.php @@ -76,8 +76,8 @@ abstract class ModeleNumRefTakepos } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/ticket/mod_ticket_simple.php b/htdocs/core/modules/ticket/mod_ticket_simple.php index 3245f7b8e84..a6fbb6fde72 100644 --- a/htdocs/core/modules/ticket/mod_ticket_simple.php +++ b/htdocs/core/modules/ticket/mod_ticket_simple.php @@ -77,8 +77,8 @@ class mod_ticket_simple extends ModeleNumRefTicket } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/ticket/modules_ticket.php b/htdocs/core/modules/ticket/modules_ticket.php index 1bb1f8ad04b..ee50071b591 100644 --- a/htdocs/core/modules/ticket/modules_ticket.php +++ b/htdocs/core/modules/ticket/modules_ticket.php @@ -69,8 +69,8 @@ abstract class ModeleNumRefTicket } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php index 71926700aa4..d57d817985a 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php @@ -73,12 +73,13 @@ class mod_myobject_standard extends ModeleNumRefMyObject /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * - * @return boolean false if conflict, true if ok + * @param Object $object Object we need next value for + * @return boolean false if conflict, true if ok */ - public function canBeActivated() + public function canBeActivated($object) { global $conf, $langs, $db; diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php b/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php index 5aa9642a898..b052d4538bd 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php @@ -108,12 +108,13 @@ abstract class ModeleNumRefMyObject } /** - * Checks if the numbers already in force in the data base do not - * cause conflicts that would prevent this numbering from working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * - * @return boolean false if conflict, true if ok + * @param Object $object Object we need next value for + * @return boolean false if conflict, true if ok */ - public function canBeActivated() + public function canBeActivated($object) { return true; } From 221f20e13fad76791c908b1fa23091de3b461cf1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 3 Apr 2020 19:24:16 +0200 Subject: [PATCH 089/336] Fix merge --- htdocs/modulebuilder/index.php | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index a3e79aedc71..8cf2e17d804 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -1794,37 +1794,6 @@ elseif (!empty($module)) { $dirread = $listofmodules[strtolower($module)]['moduledescriptorrootpath']; - $modulelowercase = strtolower($module); - $const_name = 'MAIN_MODULE_'.strtoupper($module); - - $param = ''; - if ($tab) $param .= '&tab='.urlencode($tab); - if ($module) $param .= '&module='.urlencode($module); - if ($tabobj) $param .= '&tabobj='.urlencode($tabobj); - - $urltomodulesetup = ''.$langs->trans('Home').'-'.$langs->trans("Setup").'-'.$langs->trans("Modules").''; - $linktoenabledisable = ''; - if (!empty($conf->global->$const_name)) // If module is already activated - { - $linktoenabledisable .= ''; - $linktoenabledisable .= img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', '', 1); - $linktoenabledisable .= ''; - } - else - { - $linktoenabledisable .= ''; - $linktoenabledisable .= img_picto($langs->trans("Disabled"), 'switch_off', '', false, 0, 0, '', '', 1); - $linktoenabledisable .= "\n"; - } - if (empty($conf->$modulelowercase->enabled)) - { - $modulestatusinfo = $form->textwithpicto($langs->trans("ModuleIsNotActive", $urltomodulesetup), '', -1, 'help'); - } - else - { - $modulestatusinfo = $form->textwithpicto($langs->trans("ModuleIsLive"), $langs->trans("Warning"), -1, 'warning'); - } - $head2 = array(); $h = 0; From c7cdb64087de7ad740814c9f250cc45a9587998a Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Sat, 4 Apr 2020 11:07:48 +0200 Subject: [PATCH 090/336] FIX child categories only with good entity rights fix v9 to develop display only categories with good entity rights ( intradolibarr or via REST API) --- htdocs/categories/class/categorie.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index ad7128c31ef..2c2bea3ce0f 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -917,7 +917,8 @@ class Categorie extends CommonObject { // phpcs:enable $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."categorie"; - $sql.= " WHERE fk_parent = ".$this->id; + $sql .= " WHERE fk_parent = ".$this->id; + $sql .= " AND entity IN (".getEntity('category').")"; $res = $this->db->query($sql); if ($res) From 101fd8e07b7c056bf174c47b8ead95fd72fb2166 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Sat, 4 Apr 2020 12:46:02 +0200 Subject: [PATCH 091/336] NEW display weight in shipment list usefull to prepare truck before delivery --- htdocs/expedition/list.php | 39 +++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 05dd4a6a3ab..fd98cc30d2a 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -33,6 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; // Load translation files required by the page $langs->loadLangs(array("sendings", "deliveries", 'companies', 'bills')); @@ -89,6 +90,7 @@ $viewstatut = GETPOST('viewstatut'); $diroutputmassaction = $conf->expedition->dir_output.'/sending/temp/massgeneration/'.$user->id; $object = new Expedition($db); +$form = new Form($db); // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('shipmentlist')); @@ -118,6 +120,7 @@ $arrayfields = array( 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0), 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>$checkedtypetiers), 'e.date_delivery'=>array('label'=>$langs->trans("DateDeliveryPlanned"), 'checked'=>1), + 'e.weight'=>array('label'=>$langs->trans("Weight"), 'checked'=>0), 'e.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), 'e.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), 'e.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), @@ -211,7 +214,7 @@ llxHeader('', $langs->trans('ListOfSendings'), $helpurl); $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; -$sql .= " e.rowid, e.ref, e.ref_customer, e.date_expedition as date_expedition, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut, e.billed,"; +$sql .= " e.rowid, e.ref, e.ref_customer, e.date_expedition as date_expedition, e.weight, e.weight_units, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut, e.billed,"; $sql .= " s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, "; $sql .= " typent.code as typent_code,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; @@ -483,6 +486,13 @@ if ($resql) print $form->selectarray("search_type_thirdparty", $formcompany->typent_array(0), $search_type_thirdparty, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT) ? 'ASC' : $conf->global->SOCIETE_SORT_ON_TYPEENT)); print ''; } + // Weight + if (!empty($arrayfields['e.weight']['checked'])) + { + print ''; + + print ''; + } // Date delivery planned if (!empty($arrayfields['e.date_delivery']['checked'])) { @@ -567,7 +577,8 @@ if ($resql) if (!empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder); if (!empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'], $_SERVER["PHP_SELF"], "country.code_iso", "", $param, '', $sortfield, $sortorder, 'center '); if (!empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'], $_SERVER["PHP_SELF"], "typent.code", "", $param, '', $sortfield, $sortorder, 'center '); - if (!empty($arrayfields['e.date_delivery']['checked'])) print_liste_field_titre($arrayfields['e.date_delivery']['label'], $_SERVER["PHP_SELF"], "e.date_delivery", "", $param, '', $sortfield, $sortorder, 'center '); + if (!empty($arrayfields['e.weight']['checked'])) print_liste_field_titre($arrayfields['e.weight']['label'], $_SERVER["PHP_SELF"], "e.weight", "", $param, '', $sortfield, $sortorder, 'center '); + if (!empty($arrayfields['e.date_delivery']['checked'])) print_liste_field_titre($arrayfields['e.date_delivery']['label'], $_SERVER["PHP_SELF"], "e.date_delivery", "", $param, '', $sortfield, $sortorder, 'center '); if (!empty($arrayfields['l.ref']['checked'])) print_liste_field_titre($arrayfields['l.ref']['label'], $_SERVER["PHP_SELF"], "l.ref", "", $param, '', $sortfield, $sortorder); if (!empty($arrayfields['l.date_delivery']['checked'])) print_liste_field_titre($arrayfields['l.date_delivery']['label'], $_SERVER["PHP_SELF"], "l.date_delivery", "", $param, '', $sortfield, $sortorder, 'center '); // Extra fields @@ -597,7 +608,8 @@ if ($resql) $companystatic->ref = $obj->name; $companystatic->name = $obj->name; - + $object = new Expedition($db); + $object->fetch($obj->rowid); print ''; // Ref @@ -605,7 +617,7 @@ if ($resql) { print ""; print $shipment->getNomUrl(1); - print "\n"; + print "\n"; if (!$i) $totalarray['nbfield']++; } @@ -665,7 +677,24 @@ if ($resql) print ''; if (!$i) $totalarray['nbfield']++; } - + // Weight + if (!empty($arrayfields['e.weight']['checked'])) + { + print ''; + if (empty($object->trueWeight)) + { + $tmparray = $object->getTotalWeightVolume(); + print showDimensionInBestUnit($tmparray['weight'], 0, "weight", $langs, isset($conf->global->MAIN_WEIGHT_DEFAULT_ROUND)?$conf->global->MAIN_WEIGHT_DEFAULT_ROUND:-1, isset($conf->global->MAIN_WEIGHT_DEFAULT_UNIT)?$conf->global->MAIN_WEIGHT_DEFAULT_UNIT:'no'); + print $form->textwithpicto('', $langs->trans('EstimatedWeight'), 1); + } + else + { + print $object->trueWeight; + print ($object->trueWeight && $object->weight_units!='')?' '.measuringUnitString(0, "weight", $object->weight_units):''; + } + print ''; + if (!$i) $totalarray['nbfield']++; + } // Date delivery planed if (!empty($arrayfields['e.date_delivery']['checked'])) { From a87755390df6a87bf1d043d0a93e95802dc509c0 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Sat, 4 Apr 2020 10:48:12 +0000 Subject: [PATCH 092/336] Fixing style errors. --- htdocs/expedition/list.php | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index fd98cc30d2a..2de4570f912 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -577,8 +577,8 @@ if ($resql) if (!empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder); if (!empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'], $_SERVER["PHP_SELF"], "country.code_iso", "", $param, '', $sortfield, $sortorder, 'center '); if (!empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'], $_SERVER["PHP_SELF"], "typent.code", "", $param, '', $sortfield, $sortorder, 'center '); - if (!empty($arrayfields['e.weight']['checked'])) print_liste_field_titre($arrayfields['e.weight']['label'], $_SERVER["PHP_SELF"], "e.weight", "", $param, '', $sortfield, $sortorder, 'center '); - if (!empty($arrayfields['e.date_delivery']['checked'])) print_liste_field_titre($arrayfields['e.date_delivery']['label'], $_SERVER["PHP_SELF"], "e.date_delivery", "", $param, '', $sortfield, $sortorder, 'center '); + if (!empty($arrayfields['e.weight']['checked'])) print_liste_field_titre($arrayfields['e.weight']['label'], $_SERVER["PHP_SELF"], "e.weight", "", $param, '', $sortfield, $sortorder, 'center '); + if (!empty($arrayfields['e.date_delivery']['checked'])) print_liste_field_titre($arrayfields['e.date_delivery']['label'], $_SERVER["PHP_SELF"], "e.date_delivery", "", $param, '', $sortfield, $sortorder, 'center '); if (!empty($arrayfields['l.ref']['checked'])) print_liste_field_titre($arrayfields['l.ref']['label'], $_SERVER["PHP_SELF"], "l.ref", "", $param, '', $sortfield, $sortorder); if (!empty($arrayfields['l.date_delivery']['checked'])) print_liste_field_titre($arrayfields['l.date_delivery']['label'], $_SERVER["PHP_SELF"], "l.date_delivery", "", $param, '', $sortfield, $sortorder, 'center '); // Extra fields @@ -608,8 +608,8 @@ if ($resql) $companystatic->ref = $obj->name; $companystatic->name = $obj->name; - $object = new Expedition($db); - $object->fetch($obj->rowid); + $object = new Expedition($db); + $object->fetch($obj->rowid); print ''; // Ref @@ -617,7 +617,7 @@ if ($resql) { print ""; print $shipment->getNomUrl(1); - print "\n"; + print "\n"; if (!$i) $totalarray['nbfield']++; } @@ -679,22 +679,22 @@ if ($resql) } // Weight if (!empty($arrayfields['e.weight']['checked'])) - { + { print ''; - if (empty($object->trueWeight)) - { - $tmparray = $object->getTotalWeightVolume(); - print showDimensionInBestUnit($tmparray['weight'], 0, "weight", $langs, isset($conf->global->MAIN_WEIGHT_DEFAULT_ROUND)?$conf->global->MAIN_WEIGHT_DEFAULT_ROUND:-1, isset($conf->global->MAIN_WEIGHT_DEFAULT_UNIT)?$conf->global->MAIN_WEIGHT_DEFAULT_UNIT:'no'); - print $form->textwithpicto('', $langs->trans('EstimatedWeight'), 1); - } - else - { - print $object->trueWeight; - print ($object->trueWeight && $object->weight_units!='')?' '.measuringUnitString(0, "weight", $object->weight_units):''; - } + if (empty($object->trueWeight)) + { + $tmparray = $object->getTotalWeightVolume(); + print showDimensionInBestUnit($tmparray['weight'], 0, "weight", $langs, isset($conf->global->MAIN_WEIGHT_DEFAULT_ROUND)?$conf->global->MAIN_WEIGHT_DEFAULT_ROUND:-1, isset($conf->global->MAIN_WEIGHT_DEFAULT_UNIT)?$conf->global->MAIN_WEIGHT_DEFAULT_UNIT:'no'); + print $form->textwithpicto('', $langs->trans('EstimatedWeight'), 1); + } + else + { + print $object->trueWeight; + print ($object->trueWeight && $object->weight_units!='')?' '.measuringUnitString(0, "weight", $object->weight_units):''; + } print ''; if (!$i) $totalarray['nbfield']++; - } + } // Date delivery planed if (!empty($arrayfields['e.date_delivery']['checked'])) { From 67f9b218c5871dcff879f3faf4634f5b4eea834b Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Apr 2020 15:38:01 +0200 Subject: [PATCH 093/336] New supplier turnover report --- htdocs/compta/stats/supplier_turnover.php | 424 ++++++++++++++++++++++ htdocs/langs/en_US/compta.lang | 9 +- 2 files changed, 431 insertions(+), 2 deletions(-) create mode 100644 htdocs/compta/stats/supplier_turnover.php diff --git a/htdocs/compta/stats/supplier_turnover.php b/htdocs/compta/stats/supplier_turnover.php new file mode 100644 index 00000000000..33cec605eed --- /dev/null +++ b/htdocs/compta/stats/supplier_turnover.php @@ -0,0 +1,424 @@ + + * + * 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 . + */ + +/** + * \file htdocs/compta/stats/supplier_ca.php + * \brief Page reporting purchase turnover + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; + +// Load translation files required by the page +$langs->loadLangs(array('compta', 'bills')); + +$date_startday = GETPOST('date_startday', 'int'); +$date_startmonth = GETPOST('date_startmonth', 'int'); +$date_startyear = GETPOST('date_startyear', 'int'); +$date_endday = GETPOST('date_endday', 'int'); +$date_endmonth = GETPOST('date_endmonth', 'int'); +$date_endyear = GETPOST('date_endyear', 'int'); + +$nbofyear = 4; + +// Date range +$year = GETPOST('year', 'int'); +if (empty($year)) +{ + $year_current = strftime("%Y", dol_now()); + $month_current = strftime("%m", dol_now()); + $year_start = $year_current - ($nbofyear - 1); +} else { + $year_current = $year; + $month_current = strftime("%m", dol_now()); + $year_start = $year - ($nbofyear - 1); +} +$date_start = dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear); +$date_end = dol_mktime(23, 59, 59, $date_endmonth, $date_endday, $date_endyear); + +// We define date_start and date_end +if (empty($date_start) || empty($date_end)) // We define date_start and date_end +{ + $q = GETPOST("q") ?GETPOST("q") : 0; + if ($q == 0) + { + // We define date_start and date_end + $year_end = $year_start + ($nbofyear - 1); + $month_start = GETPOST("month") ?GETPOST("month") : ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1); + if (!GETPOST('month')) + { + if (!GETPOST("year") && $month_start > $month_current) + { + $year_start--; + $year_end--; + } + $month_end = $month_start - 1; + if ($month_end < 1) $month_end = 12; + } + else $month_end = $month_start; + $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); + } + if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } + if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } + if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } + if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } +} + +$userid = GETPOST('userid', 'int'); +$socid = GETPOST('socid', 'int'); + +$tmps = dol_getdate($date_start); +$year_start = $tmps['year']; +$tmpe = dol_getdate($date_end); +$year_end = $tmpe['year']; +$nbofyear = ($year_end - $year_start) + 1; + +// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES' or 'BOOKKEEPING') +$modecompta = $conf->global->ACCOUNTING_MODE; +if (!empty($conf->accounting->enabled)) $modecompta = 'BOOKKEEPING'; +if (GETPOST("modecompta")) $modecompta = GETPOST("modecompta", 'alpha'); + +// Security check +if ($user->socid > 0) $socid = $user->socid; +if (!empty($conf->comptabilite->enabled)) $result = restrictedArea($user, 'compta', '', '', 'resultat'); +if (!empty($conf->accounting->enabled)) $result = restrictedArea($user, 'accounting', '', '', 'comptarapport'); + + + + +/* + * View + */ + +llxHeader(); + +$form = new Form($db); + +// Affiche en-tete du rapport +if ($modecompta == "CREANCES-DETTES") +{ + $name = $langs->trans("PurchaseTurnover"); + $calcmode = $langs->trans("CalcModeDebt"); + //$calcmode.='
    ('.$langs->trans("SeeReportInInputOutputMode",'','').')'; + $calcmode .= '
    ('.$langs->trans("SeeReportInBookkeepingMode", '', '').')'; + $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); + $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); + $description = $langs->trans("RulesPurchaseTurnoverDue"); + $builddate = dol_now(); + //$exportlink=$langs->trans("NotYetAvailable"); +} +elseif ($modecompta == "RECETTES-DEPENSES") +{ + $name = $langs->trans("PurchaseTurnoverCollected"); + $calcmode = $langs->trans("CalcModeEngagement"); + //$calcmode.='
    ('.$langs->trans("SeeReportInDueDebtMode",'','').')'; + //$calcmode.='
    ('.$langs->trans("SeeReportInBookkeepingMode",'','').')'; + $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); + $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); + $description = $langs->trans("RulesPurchaseTurnoverIn"); + $builddate = dol_now(); + //$exportlink=$langs->trans("NotYetAvailable"); +} +elseif ($modecompta == "BOOKKEEPING") +{ + $name = $langs->trans("PurchaseTurnover"); + $calcmode = $langs->trans("CalcModeBookkeeping"); + $calcmode .= '
    ('.$langs->trans("SeeReportInDueDebtMode", '', '').')'; + //$calcmode.='
    ('.$langs->trans("SeeReportInInputOutputMode",'','').')'; + $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); + $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); + $description = $langs->trans("RulesPurchaseTurnoverTotalPurchaseJournal"); + $builddate = dol_now(); + //$exportlink=$langs->trans("NotYetAvailable"); +} + +$moreparam = array(); +if (!empty($modecompta)) $moreparam['modecompta'] = $modecompta; +report_header($name, $namelink, $period, $periodlink, $description, $builddate, $exportlink, $moreparam, $calcmode); + +if (!empty($conf->accounting->enabled) && $modecompta != 'BOOKKEEPING') +{ + print info_admin($langs->trans("WarningReportNotReliable"), 0, 0, 1); +} + + +if ($modecompta == 'CREANCES-DETTES') +{ + $sql = "SELECT date_format(f.datef,'%Y-%m') as dm, sum(f.total_ht) as amount, sum(f.total_ttc) as amount_ttc"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; + $sql .= " WHERE f.fk_statut in (1,2)"; + $sql .= " AND f.type IN (0,2)"; + $sql .= " AND f.entity IN (".getEntity('invoice').")"; + if ($socid) $sql .= " AND f.fk_soc = ".$socid; +} +elseif ($modecompta == "RECETTES-DEPENSES") +{ + $sql = "SELECT date_format(p.datep,'%Y-%m') as dm, sum(pf.amount) as amount_ttc"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; + $sql .= ", ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf"; + $sql .= ", ".MAIN_DB_PREFIX."paiementfourn as p"; + $sql .= " WHERE p.rowid = pf.fk_paiementfourn"; + $sql .= " AND pf.fk_facturefourn = f.rowid"; + $sql .= " AND f.entity IN (".getEntity('invoice').")"; + if ($socid) $sql .= " AND f.fk_soc = ".$socid; +} +elseif ($modecompta == "BOOKKEEPING") +{ + $sql = "SELECT date_format(b.doc_date,'%Y-%m') as dm, sum(b.debit) as amount_ttc"; + $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b, ".MAIN_DB_PREFIX."accounting_journal as aj"; + $sql .= " WHERE b.entity = ".$conf->entity; // In module double party accounting, we never share entities + $sql .= " AND aj.entity = ".$conf->entity; + $sql .= " AND b.code_journal = aj.code AND aj.nature = 3"; // @todo currently count amount in sale journal, but we need to define a category group for turnover +} + +$sql .= " GROUP BY dm"; +$sql .= " ORDER BY dm"; +// TODO Add a filter on $date_start and $date_end to reduce quantity on data +//print $sql; + +$minyearmonth = $maxyearmonth = 0; + +$result = $db->query($sql); +if ($result) +{ + $num = $db->num_rows($result); + $i = 0; + while ($i < $num) + { + $obj = $db->fetch_object($result); + $cum_ht[$obj->dm] = !empty($obj->amount) ? $obj->amount : 0; + $cum[$obj->dm] = $obj->amount_ttc; + if ($obj->amount_ttc) + { + $minyearmonth = ($minyearmonth ? min($minyearmonth, $obj->dm) : $obj->dm); + $maxyearmonth = max($maxyearmonth, $obj->dm); + } + $i++; + } + $db->free($result); +} +else { + dol_print_error($db); +} + +$moreforfilter = ''; + +print '
    '; +print ''."\n"; + +print ''; + +for ($annee = $year_start; $annee <= $year_end; $annee++) +{ + if ($modecompta == 'CREANCES-DETTES') print ''; + if ($annee != $year_end) print ''; +} +print ''; + +print ''; +for ($annee = $year_start; $annee <= $year_end; $annee++) +{ + if ($modecompta == 'CREANCES-DETTES') print ''; + print ''; + print ''; + if ($annee != $year_end) print ''; +} +print ''; + +$now_show_delta = 0; +$minyear = substr($minyearmonth, 0, 4); +$maxyear = substr($maxyearmonth, 0, 4); +$nowyear = strftime("%Y", dol_now()); +$nowyearmonth = strftime("%Y-%m", dol_now()); +$maxyearmonth = max($maxyearmonth, $nowyearmonth); +$now = dol_now(); +$casenow = dol_print_date($now, "%Y-%m"); + +// Loop on each month +$nb_mois_decalage = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START - 1) : 0; +for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) +{ + $mois_modulo = $mois; // ajout + if ($mois > 12) {$mois_modulo = $mois - 12; } // ajout + + if ($year_start == $year_end) { + if ($mois > $date_endmonth && $year_end >= $date_endyear) { + break; + } + } + + print ''; + + // Month + print ""; + + for ($annee = $year_start - 1; $annee <= $year_end; $annee++) // We start one year before to have data to be able to make delta + { + $annee_decalage = $annee; + if ($mois > 12) {$annee_decalage = $annee + 1; } + $case = dol_print_date(dol_mktime(1, 1, 1, $mois_modulo, 1, $annee_decalage), "%Y-%m"); + $caseprev = dol_print_date(dol_mktime(1, 1, 1, $mois_modulo, 1, $annee_decalage - 1), "%Y-%m"); + + if ($annee >= $year_start) // We ignore $annee < $year_start, we loop on it to be able to make delta, nothing is output. + { + if ($modecompta == 'CREANCES-DETTES') { + // Valeur CA du mois w/o VAT + print '"; + } + + // Valeur CA du mois + print '"; + + // Pourcentage du mois + if ($annee_decalage > $minyear && $case <= $casenow) + { + if ($cum[$caseprev] && $cum[$case]) + { + $percent = (round(($cum[$case] - $cum[$caseprev]) / $cum[$caseprev], 4) * 100); + //print "X $cum[$case] - $cum[$caseprev] - $cum[$caseprev] - $percent X"; + print ''; + } + if ($cum[$caseprev] && !$cum[$case]) + { + print ''; + } + if (!$cum[$caseprev] && $cum[$case]) + { + //print ''; + print ''; + } + if (isset($cum[$caseprev]) && !$cum[$caseprev] && !$cum[$case]) + { + print ''; + } + if (!isset($cum[$caseprev]) && !$cum[$case]) + { + print ''; + } + } + else + { + print ''; + } + + if ($annee_decalage < $year_end || ($annee_decalage == $year_end && $mois > 12 && $annee < $year_end)) print ''; + } + + $total_ht[$annee] += ((!empty($cum_ht[$case])) ? $cum_ht[$case] : 0); + $total[$annee] += $cum[$case]; + } + + print ''; +} + +// Affiche total +print ''; +for ($annee = $year_start; $annee <= $year_end; $annee++) +{ + if ($modecompta == 'CREANCES-DETTES') { + // Montant total HT + if ($total_ht[$annee] || ($annee >= $minyear && $annee <= max($nowyear, $maxyear))) + { + print '"; + } + else + { + print ''; + } + } + + // Montant total + if ($total[$annee] || ($annee >= $minyear && $annee <= max($nowyear, $maxyear))) + { + print '"; + } + else + { + print ''; + } + + // Pourcentage total + if ($annee > $minyear && $annee <= max($nowyear, $maxyear)) + { + if ($total[$annee - 1] && $total[$annee]) { + $percent = (round(($total[$annee] - $total[$annee - 1]) / $total[$annee - 1], 4) * 100); + print ''; + } + if ($total[$annee - 1] && !$total[$annee]) + { + print ''; + } + if (!$total[$annee - 1] && $total[$annee]) + { + print ''; + } + if (!$total[$annee - 1] && !$total[$annee]) + { + print ''; + } + } + else + { + print ''; + } + + if ($annee != $year_end) print ''; +} +print "\n"; +print "
     '; + else print ''; + if ($modecompta != 'BOOKKEEPING') print ''; + print $annee; + if ($conf->global->SOCIETE_FISCAL_MONTH_START > 1) print '-'.($annee + 1); + if ($modecompta != 'BOOKKEEPING') print ''; + print ' 
    '.$langs->trans("Month").''.$langs->trans("AmountHT").''.$langs->trans("AmountTTC").''.$langs->trans("Delta").' 
    ".dol_print_date(dol_mktime(12, 0, 0, $mois_modulo, 1, 2000), "%B")."'; + if ($cum_ht[$case]) + { + $now_show_delta = 1; // On a trouve le premier mois de la premiere annee generant du chiffre. + print ''.price($cum_ht[$case], 1).''; + } + else + { + if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } + else { print ' '; } + } + print "'; + if ($cum[$case]) + { + $now_show_delta = 1; // On a trouve le premier mois de la premiere annee generant du chiffre. + if ($modecompta != 'BOOKKEEPING') print ''; + print price($cum[$case], 1); + if ($modecompta != 'BOOKKEEPING') print ''; + } + else + { + if ($minyearmonth < $case && $case <= max($maxyearmonth, $nowyearmonth)) { print '0'; } + else { print ' '; } + } + print "'.($percent >= 0 ? "+$percent" : "$percent").'%-100%+Inf%-+0%-'; + if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; } + else { print ' '; } + print ' 
    '.$langs->trans("Total").''.($total_ht[$annee] ?price($total_ht[$annee]) : "0")." '.($total[$annee] ?price($total[$annee]) : "0")." '.($percent >= 0 ? "+$percent" : "$percent").'%-100%+'.$langs->trans('Inf').'%+0%'; + if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear, $maxyear))) { print '-'; } + else { print ' '; } + print ' 
    "; +print '
    '; + +// End of page +llxFooter(); +$db->close(); diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index 5865826dc73..eac579f595b 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -159,7 +159,7 @@ SeeReportInBookkeepingMode=See %sBookeeping report%s for a calculation on RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.
    - It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used. RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries.
    - It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation. -RulesCADue=- It includes the customer's due invoices whether they are paid or not.
    - It is based on the validation date of these invoices.
    +RulesCADue=- It includes the customer's due invoices whether they are paid or not.
    - It is based on the invoice date of these invoices.
    RulesCAIn=- It includes all the effective payments of invoices received from customers.
    - It is based on the payment date of these invoices
    RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" @@ -254,4 +254,9 @@ ByVatRate=By sale tax rate TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate PurchasebyVatrate=Purchase by sale tax rate -LabelToShow=Short label \ No newline at end of file +LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not.
    - It is based on the invoice date of these invoices.
    +RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.
    - It is based on the payment date of these invoices
    +RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. From 863f8dd1d6c0b5b9c25d3bfcfffbef858c3ce6a8 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Apr 2020 15:38:22 +0200 Subject: [PATCH 094/336] New supplier turnover by thirdparty report --- .../stats/supplier_turnover_by_thirdparty.php | 595 ++++++++++++++++++ 1 file changed, 595 insertions(+) create mode 100644 htdocs/compta/stats/supplier_turnover_by_thirdparty.php diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php new file mode 100644 index 00000000000..341c86fbd20 --- /dev/null +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -0,0 +1,595 @@ + + * + * 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 . + */ + +/** + * \file htdocs/compta/stats/supplier_ca_by_thirdparty.php + * \brief Page reporting purchase turnover by thirdparty + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/tax.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + +// Load translation files required by the page +$langs->loadLangs(array('companies', 'categories', 'bills', 'compta')); + +// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES') +$modecompta = $conf->global->ACCOUNTING_MODE; +if (GETPOST("modecompta")) $modecompta = GETPOST("modecompta"); + +$sortorder = isset($_GET["sortorder"]) ? $_GET["sortorder"] : $_POST["sortorder"]; +$sortfield = isset($_GET["sortfield"]) ? $_GET["sortfield"] : $_POST["sortfield"]; +if (!$sortorder) $sortorder = "asc"; +if (!$sortfield) $sortfield = "nom"; + +$socid = GETPOST('socid', 'int'); + +// Category +$selected_cat = (int) GETPOST('search_categ', 'int'); +$subcat = false; +if (GETPOST('subcat', 'alpha') === 'yes') { + $subcat = true; +} + +// Security check +if ($user->socid > 0) $socid = $user->socid; +if (!empty($conf->comptabilite->enabled)) $result = restrictedArea($user, 'compta', '', '', 'resultat'); +if (!empty($conf->accounting->enabled)) $result = restrictedArea($user, 'accounting', '', '', 'comptarapport'); + +// Date range +$year = GETPOST("year", 'int'); +$month = GETPOST("month", 'int'); +$search_societe = GETPOST("search_societe", 'alpha'); +$search_zip = GETPOST("search_zip", 'alpha'); +$search_town = GETPOST("search_town", 'alpha'); +$search_country = GETPOST("search_country", 'alpha'); +$date_startyear = GETPOST("date_startyear", 'alpha'); +$date_startmonth = GETPOST("date_startmonth", 'alpha'); +$date_startday = GETPOST("date_startday", 'alpha'); +$date_endyear = GETPOST("date_endyear", 'alpha'); +$date_endmonth = GETPOST("date_endmonth", 'alpha'); +$date_endday = GETPOST("date_endday", 'alpha'); +if (empty($year)) +{ + $year_current = strftime("%Y", dol_now()); + $month_current = strftime("%m", dol_now()); + $year_start = $year_current; +} else { + $year_current = $year; + $month_current = strftime("%m", dol_now()); + $year_start = $year; +} +$date_start = dol_mktime(0, 0, 0, GETPOST("date_startmonth"), GETPOST("date_startday"), GETPOST("date_startyear")); +$date_end = dol_mktime(23, 59, 59, GETPOST("date_endmonth"), GETPOST("date_endday"), GETPOST("date_endyear")); +// Quarter +if (empty($date_start) || empty($date_end)) // We define date_start and date_end +{ + $q = GETPOST("q", "int") ?GETPOST("q", "int") : 0; + if (empty($q)) + { + // We define date_start and date_end + $month_start = GETPOST("month") ?GETPOST("month") : ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1); + $year_end = $year_start; + $month_end = $month_start; + if (!GETPOST("month")) // If month not forced + { + if (!GETPOST('year') && $month_start > $month_current) + { + $year_start--; + $year_end--; + } + $month_end = $month_start - 1; + if ($month_end < 1) $month_end = 12; + else $year_end++; + } + $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); + } + if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } + if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } + if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } + if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } +} +else +{ + // TODO We define q +} + +// $date_start and $date_end are defined. We force $year_start and $nbofyear +$tmps = dol_getdate($date_start); +$year_start = $tmps['year']; +$tmpe = dol_getdate($date_end); +$year_end = $tmpe['year']; +$nbofyear = ($year_end - $year_start) + 1; + +$commonparams = array(); +$commonparams['modecompta'] = $modecompta; +$commonparams['sortorder'] = $sortorder; +$commonparams['sortfield'] = $sortfield; + +$headerparams = array(); +$headerparams['date_startyear'] = $date_startyear; +$headerparams['date_startmonth'] = $date_startmonth; +$headerparams['date_startday'] = $date_startday; +$headerparams['date_endyear'] = $date_endyear; +$headerparams['date_endmonth'] = $date_endmonth; +$headerparams['date_endday'] = $date_endday; +$headerparams['q'] = $q; + +$tableparams = array(); +$tableparams['search_categ'] = $selected_cat; +$tableparams['search_societe'] = $search_societe; +$tableparams['search_zip'] = $search_zip; +$tableparams['search_town'] = $search_town; +$tableparams['search_country'] = $search_country; +$tableparams['subcat'] = ($subcat === true) ? 'yes' : ''; + +// Adding common parameters +$allparams = array_merge($commonparams, $headerparams, $tableparams); +$headerparams = array_merge($commonparams, $headerparams); +$tableparams = array_merge($commonparams, $tableparams); + +foreach ($allparams as $key => $value) { + $paramslink .= '&'.$key.'='.$value; +} + + +/* + * View + */ + +llxHeader(); + +$form = new Form($db); +$thirdparty_static = new Societe($db); +$formother = new FormOther($db); + +// TODO Report from bookkeeping not yet available, so we switch on report on business events +if ($modecompta == "BOOKKEEPING") $modecompta = "CREANCES-DETTES"; +if ($modecompta == "BOOKKEEPINGCOLLECTED") $modecompta = "RECETTES-DEPENSES"; + +// Show report header +if ($modecompta == "CREANCES-DETTES") +{ + $name = $langs->trans("PurchaseTurnover").', '.$langs->trans("ByThirdParties"); + $calcmode = $langs->trans("CalcModeDebt"); + //$calcmode.='
    ('.$langs->trans("SeeReportInInputOutputMode",'','').')'; + $description = $langs->trans("RulesPurchaseTurnoverDue"); + $builddate = dol_now(); + //$exportlink=$langs->trans("NotYetAvailable"); +} +elseif ($modecompta == "RECETTES-DEPENSES") +{ + $name = $langs->trans("PurchaseTurnoverCollected").', '.$langs->trans("ByThirdParties"); + $calcmode = $langs->trans("CalcModeEngagement"); + //$calcmode.='
    ('.$langs->trans("SeeReportInDueDebtMode",'','').')'; + $description = $langs->trans("RulesPurchaseTurnoverIn"); + $description .= $langs->trans("DepositsAreIncluded"); + $builddate = dol_now(); + //$exportlink=$langs->trans("NotYetAvailable"); +} +elseif ($modecompta == "BOOKKEEPING") +{ +} +elseif ($modecompta == "BOOKKEEPINGCOLLECTED") +{ +} +$period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); +if ($date_end == dol_time_plus_duree($date_start, 1, 'y') - 1) $periodlink = ''.img_previous().' '.img_next().''; +else $periodlink = ''; + +report_header($name, $namelink, $period, $periodlink, $description, $builddate, $exportlink, $tableparams, $calcmode); + +if (!empty($conf->accounting->enabled) && $modecompta != 'BOOKKEEPING') +{ + print info_admin($langs->trans("WarningReportNotReliable"), 0, 0, 1); +} + + +$name = array(); + +// Show Array +$catotal = 0; +if ($modecompta == 'CREANCES-DETTES') { + $sql = "SELECT DISTINCT s.rowid as socid, s.nom as name, s.zip, s.town, s.fk_pays,"; + $sql .= " sum(f.total_ht) as amount, sum(f.total_ttc) as amount_ttc"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s"; + if ($selected_cat === -2) // Without any category + { + $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc"; + } + elseif ($selected_cat) // Into a specific category + { + $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_societe as cs"; + } + $sql .= " WHERE f.fk_statut in (1,2)"; + $sql .= " AND f.type IN (0,2)"; + $sql .= " AND f.fk_soc = s.rowid"; + if ($date_start && $date_end) { + $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + } + if ($selected_cat === -2) // Without any category + { + $sql .= " AND cs.fk_soc is null"; + } + elseif ($selected_cat) { // Into a specific category + $sql .= " AND (c.rowid = ".$db->escape($selected_cat); + if ($subcat) $sql .= " OR c.fk_parent = ".$db->escape($selected_cat); + $sql .= ")"; + $sql .= " AND cs.fk_categorie = c.rowid AND cs.fk_soc = s.rowid"; + } +} else { + $sql = "SELECT s.rowid as socid, s.nom as name, s.zip, s.town, s.fk_pays, sum(pf.amount) as amount_ttc"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; + $sql .= ", ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf"; + $sql .= ", ".MAIN_DB_PREFIX."paiementfourn as p"; + $sql .= ", ".MAIN_DB_PREFIX."societe as s"; + if ($selected_cat === -2) // Without any category + { + $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_soc"; + } + elseif ($selected_cat) // Into a specific category + { + $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_societe as cs"; + } + $sql .= " WHERE p.rowid = pf.fk_paiementfourn"; + $sql .= " AND pf.fk_facturefourn = f.rowid"; + $sql .= " AND f.fk_soc = s.rowid"; + if ($date_start && $date_end) { + $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; + } + if ($selected_cat === -2) // Without any category + { + $sql .= " AND cs.fk_soc is null"; + } + elseif ($selected_cat) { // Into a specific category + $sql .= " AND (c.rowid = ".$selected_cat; + if ($subcat) $sql .= " OR c.fk_parent = ".$selected_cat; + $sql .= ")"; + $sql .= " AND cs.fk_categorie = c.rowid AND cs.fk_soc = s.rowid"; + } +} +if (!empty($search_societe)) $sql .= natural_search('s.nom', $search_societe); +if (!empty($search_zip)) $sql .= natural_search('s.zip', $search_zip); +if (!empty($search_town)) $sql .= natural_search('s.town', $search_town); +if ($search_country > 0) $sql .= ' AND s.fk_pays = '.$search_country.''; +$sql .= " AND f.entity IN (".getEntity('invoice').")"; +if ($socid) $sql .= " AND f.fk_soc = ".$socid; +$sql .= " GROUP BY s.rowid, s.nom, s.zip, s.town, s.fk_pays"; +$sql .= " ORDER BY s.rowid"; +//echo $sql; + +dol_syslog("supplier_turnover_by_thirdparty", LOG_DEBUG); +$result = $db->query($sql); +if ($result) { + $num = $db->num_rows($result); + $i = 0; + while ($i < $num) { + $obj = $db->fetch_object($result); + $amount_ht[$obj->socid] = $obj->amount; + $amount[$obj->socid] = $obj->amount_ttc; + $name[$obj->socid] = $obj->name.' '.$obj->firstname; + $address_zip[$obj->socid] = $obj->zip; + $address_town[$obj->socid] = $obj->town; + $address_pays[$obj->socid] = getCountry($obj->fk_pays); + $catotal_ht += $obj->amount; + $catotal += $obj->amount_ttc; + $i++; + } +} else { + dol_print_error($db); +} + +// Show array +$i = 0; +print ''; +// Extra parameters management +foreach ($headerparams as $key => $value) +{ + print ''; +} + +$moreforfilter = ''; + +print '
    '; +print ''."\n"; + +// Category filter +print ''; +print ''; +print ''; +print ''; + +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; + +// Array titles +print ""; +print_liste_field_titre( + $langs->trans("Company"), + $_SERVER["PHP_SELF"], + "nom", + "", + $paramslink, + "", + $sortfield, $sortorder + ); +print_liste_field_titre( + $langs->trans("Zip"), + $_SERVER["PHP_SELF"], + "zip", + "", + $paramslink, + "", + $sortfield, $sortorder + ); +print_liste_field_titre( + $langs->trans("Town"), + $_SERVER["PHP_SELF"], + "town", + "", + $paramslink, + "", + $sortfield, $sortorder + ); +print_liste_field_titre( + $langs->trans("Country"), + $_SERVER["PHP_SELF"], + "country", + "", + $paramslink, + "", + $sortfield, $sortorder + ); +if ($modecompta == 'CREANCES-DETTES') { + print_liste_field_titre( + $langs->trans('AmountHT'), + $_SERVER["PHP_SELF"], + "amount_ht", + "", + $paramslink, + 'class="right"', + $sortfield, + $sortorder + ); +} else { + print_liste_field_titre(''); +} +print_liste_field_titre( + $langs->trans("AmountTTC"), + $_SERVER["PHP_SELF"], + "amount_ttc", + "", + $paramslink, + 'class="right"', + $sortfield, + $sortorder +); +print_liste_field_titre( + $langs->trans("Percentage"), + $_SERVER["PHP_SELF"], + "amount_ttc", + "", + $paramslink, + 'class="right"', + $sortfield, + $sortorder +); +print_liste_field_titre( + $langs->trans("OtherStatistics"), + $_SERVER["PHP_SELF"], + "", + "", + "", + 'align="center" width="20%"' +); +print "\n"; + + +if (count($amount)) { + $arrayforsort = $name; + // Defining array arrayforsort + if ($sortfield == 'nom' && $sortorder == 'asc') { + asort($name); + $arrayforsort = $name; + } + if ($sortfield == 'nom' && $sortorder == 'desc') { + arsort($name); + $arrayforsort = $name; + } + if ($sortfield == 'amount_ht' && $sortorder == 'asc') { + asort($amount_ht); + $arrayforsort = $amount_ht; + } + if ($sortfield == 'amount_ht' && $sortorder == 'desc') { + arsort($amount_ht); + $arrayforsort = $amount_ht; + } + if ($sortfield == 'amount_ttc' && $sortorder == 'asc') { + asort($amount); + $arrayforsort = $amount; + } + if ($sortfield == 'amount_ttc' && $sortorder == 'desc') { + arsort($amount); + $arrayforsort = $amount; + } + if ($sortfield == 'zip' && $sortorder == 'asc') { + asort($address_zip); + $arrayforsort = $address_zip; + } + if ($sortfield == 'zip' && $sortorder == 'desc') { + arsort($address_zip); + $arrayforsort = $address_zip; + } + if ($sortfield == 'town' && $sortorder == 'asc') { + asort($address_town); + $arrayforsort = $address_town; + } + if ($sortfield == 'town' && $sortorder == 'desc') { + arsort($address_town); + $arrayforsort = $address_town; + } + if ($sortfield == 'country' && $sortorder == 'asc') { + asort($address_pays); + $arrayforsort = $address_town; + } + if ($sortfield == 'country' && $sortorder == 'desc') { + arsort($address_pays); + $arrayforsort = $address_town; + } + + foreach ($arrayforsort as $key=>$value) { + print ''; + + // Third party + $fullname = $name[$key]; + if ($key > 0) { + $thirdparty_static->id = $key; + $thirdparty_static->name = $fullname; + $thirdparty_static->client = 1; + $linkname = $thirdparty_static->getNomUrl(1, 'supplier'); + } else { + $linkname = $langs->trans("PaymentsNotLinkedToInvoice"); + } + print "\n"; + + print ''; + + print ''; + + print ''; + + // Amount w/o VAT + print ''; + + // Amount with VAT + print ''; + + // Percent; + print ''; + + // Other stats + print ''; + print "\n"; + $i++; + } + + // Total + print ''; + print ''; + print ''; + print ''; + print ''; + if ($modecompta != 'CREANCES-DETTES') { + print ''; + } else { + print ''; + } + print ''; + print ''; + print ''; + print ''; + + $db->free($result); +} + +print "
    '; +print $langs->trans("Category").': '.$formother->select_categories(Categorie::TYPE_SUPPLIER, $selected_cat, 'search_categ', true); +print ' '; +print $langs->trans("SubCats").'? '; +print ''; +print ''; +print '
    '; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print $form->select_country($search_country, 'search_country'); +//print ''; +print '    
    ".$linkname."'; + print $address_zip[$key]; + print ''; + print $address_town[$key]; + print ''; + print $address_pays[$key]; + print ''; + if ($modecompta != 'CREANCES-DETTES') { + if ($key > 0) { + print ''; + } else { + print ''; + } + } else { + if ($key > 0) { + print ''; + } else { + print ''; + } + print price($amount_ht[$key]); + } + print ''; + if ($modecompta != 'CREANCES-DETTES') { + if ($key > 0) { + print ''; + } else { + print ''; + } + } else { + if ($key > 0) { + print ''; + } else { + print ''; + } + } + print price($amount[$key]); + print ''; + print ''.($catotal > 0 ? round(100 * $amount[$key] / $catotal, 2).'%' : ' ').''; + if (!empty($conf->supplier_proposal->enabled) && $key > 0) { + print ' '.img_picto($langs->trans("ProposalStats"), "stats").' '; + } + if (!empty($conf->fournisseur->enabled) && $key > 0) { + print ' '.img_picto($langs->trans("OrderStats"), "stats").' '; + } + if (!empty($conf->fournisseur->enabled) && $key > 0) { + print ' '.img_picto($langs->trans("InvoiceStats"), "stats").' '; + } + print '
    '.$langs->trans("Total").'   '.price($catotal_ht).''.price($catotal).'  
    "; +print "
    "; + +print ''; + +// End of page +llxFooter(); +$db->close(); From 1adfe5c21f71517b4b97d69bb64e549827865673 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Apr 2020 15:45:32 +0200 Subject: [PATCH 095/336] New supplier turnover by product service report --- htdocs/compta/stats/supplier_turnover_by_thirdparty.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index 341c86fbd20..6894ac1b8f6 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -182,7 +182,6 @@ elseif ($modecompta == "RECETTES-DEPENSES") $calcmode = $langs->trans("CalcModeEngagement"); //$calcmode.='
    ('.$langs->trans("SeeReportInDueDebtMode",'','').')'; $description = $langs->trans("RulesPurchaseTurnoverIn"); - $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); //$exportlink=$langs->trans("NotYetAvailable"); } From 493a6d9709fe72aa77df9c1639cb400c8df04216 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 17:46:41 +0200 Subject: [PATCH 096/336] Fix trans --- htdocs/langs/en_US/website.lang | 3 ++- htdocs/theme/eldy/global.inc.php | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index eac0d7aaf30..222eeb6df0d 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -125,4 +125,5 @@ UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 ch MainLanguage=Main language OtherLanguages=Other languages UseManifest=Provide a manifest.json file -PublicAuthorAlias=Public author alias \ No newline at end of file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties \ No newline at end of file diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index b0644ad3ff1..15f60cffd70 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -4195,6 +4195,8 @@ span[phptag] { padding: 2px 5px 3px 5px !important; margin: 2px 4px 2px 4px !important; line-height: normal; + background: #f5f5f5 !important; + border: 1px solid #ccc !important; } .websiteselection { /* display: inline-block; */ From c22a6ad98c6518adc0ae692a2c0f844718e34d32 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 18:18:58 +0200 Subject: [PATCH 097/336] Add sections intro and content --- scripts/website/migrate-news-joomla2dolibarr.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/website/migrate-news-joomla2dolibarr.php b/scripts/website/migrate-news-joomla2dolibarr.php index e9f6c3c2295..2d4e8befbcc 100755 --- a/scripts/website/migrate-news-joomla2dolibarr.php +++ b/scripts/website/migrate-news-joomla2dolibarr.php @@ -123,12 +123,15 @@ while ($obj = $dbjoomla->fetch_object($resql)) { $htmltext = ""; if ($blogpostheader) $htmltext .= $blogpostheader."\n"; - $htmltext .= '
    '."\n"; + $htmltext .= '
    '."\n"; $htmltext .= $obj->introtext; + $htmltext .= '
    '."\n"; if ($obj->fulltext) { - $htmltext .= '
    '."\n".'
    '."\n".'
    '."\n".$obj->fulltext; + $htmltext .= '
    '."\n"; + $htmltext .= '
    '."\n".'
    '."\n".'
    '."\n"; + $htmltext .= $obj->fulltext; + $htmltext .= "
    "; } - $htmltext .= "\n
    "; if ($blogpostfooter) $htmltext .= "\n".$blogpostfooter; $language = ($obj->language && $obj->language != '*' ? $obj->language : 'en'); From 9307e3821f76ea63f1317ab2c16c5765a080c869 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 18:35:40 +0200 Subject: [PATCH 098/336] Fix import_key was erased after update --- htdocs/website/class/websitepage.class.php | 9 +++++++-- scripts/website/migrate-news-joomla2dolibarr.php | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index 7d1f345d8c2..03d52c5ce77 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -206,7 +206,8 @@ class WebsitePage extends CommonObject $sql .= " t.tms as date_modification,"; $sql .= " t.fk_user_creat,"; $sql .= " t.author_alias,"; - $sql .= " t.fk_user_modif"; + $sql .= " t.fk_user_modif,"; + $sql .= " t.import_key"; $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; //$sql .= ' WHERE entity IN ('.getEntity('website').')'; // entity is on website level $sql .= ' WHERE 1 = 1'; @@ -265,6 +266,7 @@ class WebsitePage extends CommonObject $this->fk_user_creat = $obj->fk_user_creat; $this->author_alias = $obj->author_alias; $this->fk_user_modif = $obj->fk_user_modif; + $this->import_key = $obj->import_key; } $this->db->free($resql); @@ -319,7 +321,8 @@ class WebsitePage extends CommonObject $sql .= " t.tms as date_modification,"; $sql .= " t.fk_user_creat,"; $sql .= " t.author_alias,"; - $sql .= " t.fk_user_modif"; + $sql .= " t.fk_user_modif,"; + $sql .= " t.import_key"; $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; $sql .= ' WHERE t.fk_website = '.$websiteid; // Manage filter @@ -374,6 +377,7 @@ class WebsitePage extends CommonObject $record->fk_user_creat = $obj->fk_user_creat; $record->author_alias = $obj->author_alias; $record->fk_user_modif = $obj->fk_user_modif; + $record->import_key = $obj->import_key; //var_dump($record->id); $records[$record->id] = $record; } @@ -560,6 +564,7 @@ class WebsitePage extends CommonObject if ($istranslation) $object->fk_page = $fromid; else $object->fk_page = 0; if (!empty($newwebsite)) $object->fk_website = $newwebsite; + $object->import_key = ''; // Create clone $object->context['createfromclone'] = 'createfromclone'; diff --git a/scripts/website/migrate-news-joomla2dolibarr.php b/scripts/website/migrate-news-joomla2dolibarr.php index 2d4e8befbcc..0c03acf53ef 100755 --- a/scripts/website/migrate-news-joomla2dolibarr.php +++ b/scripts/website/migrate-news-joomla2dolibarr.php @@ -184,7 +184,7 @@ if ($mode == 'confirm' && ! $error) { print $nbimported." page(s) imported with importid=".$importid."\n"; $db->commit(); } else { - print "Rollback\n"; + print "Rollback (mode=test)\n"; $db->rollback(); } From 79e5099c6dbd6b9efcf471e40af6ad91fe874dd3 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Apr 2020 18:45:33 +0200 Subject: [PATCH 099/336] Add menu entries --- htdocs/core/menus/standard/eldy.lib.php | 21 +++++++++++++++++++++ htdocs/langs/en_US/compta.lang | 2 ++ 2 files changed, 23 insertions(+) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 42b15114379..ab95d5765ac 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1376,6 +1376,27 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM //$newmenu->add("/compta/stats/byratecountry.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByVatRate"),3,$user->rights->accounting->comptarapport->lire); } } + + $modecompta = 'CREANCES-DETTES'; + if (!empty($conf->accounting->enabled) && !empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') $modecompta = 'BOOKKEEPING'; // Not yet implemented. Should be BOOKKEEPINGCOLLECTED + if ($modecompta && $conf->fournisseur->enabled) + { + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/', $leftmenu)) { + $newmenu->add("/compta/stats/supplier_turnover.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ReportPurchaseTurnover"), 2, $user->rights->accounting->comptarapport->lire); + $newmenu->add("/compta/stats/supplier_turnover_by_thirdparty.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByCompanies"), 3, $user->rights->accounting->comptarapport->lire); + $newmenu->add("/compta/stats/supplier_turnover_by_prodserv.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByProductsAndServices"), 3, $user->rights->accounting->comptarapport->lire); + } + } + + $modecompta = 'RECETTES-DEPENSES'; + //if (! empty($conf->accounting->enabled) && ! empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') $modecompta=''; // Not yet implemented. Should be BOOKKEEPINGCOLLECTED + if ($modecompta && $conf->fournisseur->enabled) + { + if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/', $leftmenu)) { + $newmenu->add("/compta/stats/supplier_turnover.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ReportPurchaseTurnoverCollected"), 2, $user->rights->accounting->comptarapport->lire); + $newmenu->add("/compta/stats/supplier_turnover_by_thirdparty.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByCompanies"), 3, $user->rights->accounting->comptarapport->lire); + } + } } // Accountancy (simple) diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index eac579f595b..7cce228ca48 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -260,3 +260,5 @@ PurchaseTurnoverCollected=Purchase turnover collected RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not.
    - It is based on the invoice date of these invoices.
    RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.
    - It is based on the payment date of these invoices
    RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected From fe876b96fe784b9d6e7e5a8798fb89906e79226a Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Apr 2020 18:49:30 +0200 Subject: [PATCH 100/336] Fix links + getEntity --- htdocs/compta/stats/supplier_turnover.php | 6 +++--- htdocs/compta/stats/supplier_turnover_by_thirdparty.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/stats/supplier_turnover.php b/htdocs/compta/stats/supplier_turnover.php index 33cec605eed..72b3aa2e77c 100644 --- a/htdocs/compta/stats/supplier_turnover.php +++ b/htdocs/compta/stats/supplier_turnover.php @@ -163,7 +163,7 @@ if ($modecompta == 'CREANCES-DETTES') $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; $sql .= " WHERE f.fk_statut in (1,2)"; $sql .= " AND f.type IN (0,2)"; - $sql .= " AND f.entity IN (".getEntity('invoice').")"; + $sql .= " AND f.entity IN (".getEntity('supplier_invoice').")"; if ($socid) $sql .= " AND f.fk_soc = ".$socid; } elseif ($modecompta == "RECETTES-DEPENSES") @@ -174,7 +174,7 @@ elseif ($modecompta == "RECETTES-DEPENSES") $sql .= ", ".MAIN_DB_PREFIX."paiementfourn as p"; $sql .= " WHERE p.rowid = pf.fk_paiementfourn"; $sql .= " AND pf.fk_facturefourn = f.rowid"; - $sql .= " AND f.entity IN (".getEntity('invoice').")"; + $sql .= " AND f.entity IN (".getEntity('supplier_invoice').")"; if ($socid) $sql .= " AND f.fk_soc = ".$socid; } elseif ($modecompta == "BOOKKEEPING") @@ -227,7 +227,7 @@ for ($annee = $year_start; $annee <= $year_end; $annee++) { if ($modecompta == 'CREANCES-DETTES') print ''; else print ''; - if ($modecompta != 'BOOKKEEPING') print ''; + if ($modecompta != 'BOOKKEEPING') print ''; print $annee; if ($conf->global->SOCIETE_FISCAL_MONTH_START > 1) print '-'.($annee + 1); if ($modecompta != 'BOOKKEEPING') print ''; diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index 6894ac1b8f6..e4cfc53c59a 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -270,7 +270,7 @@ if (!empty($search_societe)) $sql .= natural_search('s.nom', $search_societe); if (!empty($search_zip)) $sql .= natural_search('s.zip', $search_zip); if (!empty($search_town)) $sql .= natural_search('s.town', $search_town); if ($search_country > 0) $sql .= ' AND s.fk_pays = '.$search_country.''; -$sql .= " AND f.entity IN (".getEntity('invoice').")"; +$sql .= " AND f.entity IN (".getEntity('supplier_invoice').")"; if ($socid) $sql .= " AND f.fk_soc = ".$socid; $sql .= " GROUP BY s.rowid, s.nom, s.zip, s.town, s.fk_pays"; $sql .= " ORDER BY s.rowid"; From 9849afd3ddb8b1808d6c7a98113d8bdcacad3e47 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 18:53:38 +0200 Subject: [PATCH 101/336] WIP Add tables to manage categories of website pages. --- .../tables/llx_categorie_websitepage.key.sql | 24 +++++++++++++++++++ .../tables/llx_categorie_websitepage.sql | 24 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 htdocs/install/mysql/tables/llx_categorie_websitepage.key.sql create mode 100644 htdocs/install/mysql/tables/llx_categorie_websitepage.sql diff --git a/htdocs/install/mysql/tables/llx_categorie_websitepage.key.sql b/htdocs/install/mysql/tables/llx_categorie_websitepage.key.sql new file mode 100644 index 00000000000..10bcba73a62 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_categorie_websitepage.key.sql @@ -0,0 +1,24 @@ +-- ============================================================================ +-- Copyright (C) 2020 Laurent Destailleur +-- +-- 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 . +-- +-- ============================================================================ + +ALTER TABLE llx_categorie_websitepage ADD PRIMARY KEY pk_categorie_websitepage (fk_categorie, fk_websitepage); +ALTER TABLE llx_categorie_websitepage ADD INDEX idx_categorie_websitepage_fk_categorie (fk_categorie); +ALTER TABLE llx_categorie_websitepage ADD INDEX idx_categorie_websitepage_fk_websitepage (fk_websitepage); + +ALTER TABLE llx_categorie_websitepage ADD CONSTRAINT fk_categorie_websitepage_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); +ALTER TABLE llx_categorie_websitepage ADD CONSTRAINT fk_categorie_websitepage_fk_websitepage FOREIGN KEY (fk_websitepage) REFERENCES llx_website_page (rowid); diff --git a/htdocs/install/mysql/tables/llx_categorie_websitepage.sql b/htdocs/install/mysql/tables/llx_categorie_websitepage.sql new file mode 100644 index 00000000000..9ac582f3738 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_categorie_websitepage.sql @@ -0,0 +1,24 @@ +-- ============================================================================ +-- Copyright (C) 2020 Laurent Destailleur +-- +-- 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 . +-- +-- ============================================================================ + +create table llx_categorie_websitepage +( + fk_categorie integer NOT NULL, + fk_websitepage integer NOT NULL, + import_key varchar(14) +)ENGINE=innodb; From 60bd0e49ecf29f502098b8bc1795280824b5f237 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Apr 2020 18:57:51 +0200 Subject: [PATCH 102/336] Fix missing token --- htdocs/compta/stats/cabyprodserv.php | 1 + htdocs/compta/stats/cabyuser.php | 1 + htdocs/compta/stats/casoc.php | 1 + htdocs/compta/stats/supplier_turnover_by_thirdparty.php | 1 + 4 files changed, 4 insertions(+) diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index a1bdfb6678d..762ebe0fbcf 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -290,6 +290,7 @@ if ($modecompta == 'CREANCES-DETTES') // Show Array $i = 0; print '
    '; + print ''."\n"; // Extra parameters management foreach ($headerparams as $key => $value) { diff --git a/htdocs/compta/stats/cabyuser.php b/htdocs/compta/stats/cabyuser.php index fb9b06025aa..9a4ce5b0427 100644 --- a/htdocs/compta/stats/cabyuser.php +++ b/htdocs/compta/stats/cabyuser.php @@ -195,6 +195,7 @@ $name = array(); // Show array print ''; +print ''."\n"; // Extra parameters management foreach ($headerparams as $key => $value) { diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index 5e7340f20c8..c563d8c5ae6 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -352,6 +352,7 @@ if ($modecompta != 'CREANCES-DETTES') { // Show array $i = 0; print ''; +print ''."\n"; // Extra parameters management foreach ($headerparams as $key => $value) { diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index e4cfc53c59a..ea55adcc8c2 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -300,6 +300,7 @@ if ($result) { // Show array $i = 0; print ''; +print ''."\n"; // Extra parameters management foreach ($headerparams as $key => $value) { From 8454598722ef1821f6e4a3354d5878f33d86612a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 18:59:26 +0200 Subject: [PATCH 103/336] WIP Add tables to manage categories of website pages. --- .../install/mysql/migration/11.0.0-12.0.0.sql | 15 ++++++++++++ ...sql => llx_categorie_website_page.key.sql} | 11 +++++---- ...key.sql => llx_categorie_website_page.sql} | 10 ++++---- .../tables/llx_categorie_websitepage.sql | 24 ------------------- 4 files changed, 27 insertions(+), 33 deletions(-) rename htdocs/install/mysql/tables/{llx_categorie_websitepage.key.sql => llx_categorie_website_page.key.sql} (57%) rename htdocs/install/mysql/tables/{llx_categorie.key.sql => llx_categorie_website_page.sql} (81%) delete mode 100644 htdocs/install/mysql/tables/llx_categorie_websitepage.sql diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 27efb88f8b2..27f246ad1ee 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -211,3 +211,18 @@ ALTER TABLE llx_product_batch MODIFY COLUMN batch varchar(128); ALTER TABLE llx_commande_fournisseur_dispatch MODIFY COLUMN batch varchar(128); ALTER TABLE llx_stock_mouvement MODIFY COLUMN batch varchar(128); ALTER TABLE llx_mrp_production MODIFY COLUMN batch varchar(128); + +create table llx_categorie_website_page +( + fk_categorie integer NOT NULL, + fk_website_page integer NOT NULL, + import_key varchar(14) +)ENGINE=innodb; + +ALTER TABLE llx_categorie_website_page ADD PRIMARY KEY pk_categorie_website_page (fk_categorie, fk_website_page); +ALTER TABLE llx_categorie_website_page ADD INDEX idx_categorie_website_page_fk_categorie (fk_categorie); +ALTER TABLE llx_categorie_website_page ADD INDEX idx_categorie_website_page_fk_website_page (fk_website_page); + +ALTER TABLE llx_categorie_website_page ADD CONSTRAINT fk_categorie_website_page_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); +ALTER TABLE llx_categorie_website_page ADD CONSTRAINT fk_categorie_website_page_website_page_rowid FOREIGN KEY (fk_website_page) REFERENCES llx_website_page (rowid); + diff --git a/htdocs/install/mysql/tables/llx_categorie_websitepage.key.sql b/htdocs/install/mysql/tables/llx_categorie_website_page.key.sql similarity index 57% rename from htdocs/install/mysql/tables/llx_categorie_websitepage.key.sql rename to htdocs/install/mysql/tables/llx_categorie_website_page.key.sql index 10bcba73a62..b2af52d8fe9 100644 --- a/htdocs/install/mysql/tables/llx_categorie_websitepage.key.sql +++ b/htdocs/install/mysql/tables/llx_categorie_website_page.key.sql @@ -16,9 +16,10 @@ -- -- ============================================================================ -ALTER TABLE llx_categorie_websitepage ADD PRIMARY KEY pk_categorie_websitepage (fk_categorie, fk_websitepage); -ALTER TABLE llx_categorie_websitepage ADD INDEX idx_categorie_websitepage_fk_categorie (fk_categorie); -ALTER TABLE llx_categorie_websitepage ADD INDEX idx_categorie_websitepage_fk_websitepage (fk_websitepage); +ALTER TABLE llx_categorie_website_page ADD PRIMARY KEY pk_categorie_website_page (fk_categorie, fk_websitepage); +ALTER TABLE llx_categorie_website_page ADD INDEX idx_categorie_website_page_fk_categorie (fk_categorie); +ALTER TABLE llx_categorie_website_page ADD INDEX idx_categorie_website_page_fk_website_page (fk_websitepage); + +ALTER TABLE llx_categorie_website_page ADD CONSTRAINT fk_categorie_websitepage_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); +ALTER TABLE llx_categorie_website_page ADD CONSTRAINT fk_categorie_websitepage_website_page_rowid FOREIGN KEY (fk_website_page) REFERENCES llx_website_page (rowid); -ALTER TABLE llx_categorie_websitepage ADD CONSTRAINT fk_categorie_websitepage_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); -ALTER TABLE llx_categorie_websitepage ADD CONSTRAINT fk_categorie_websitepage_fk_websitepage FOREIGN KEY (fk_websitepage) REFERENCES llx_website_page (rowid); diff --git a/htdocs/install/mysql/tables/llx_categorie.key.sql b/htdocs/install/mysql/tables/llx_categorie_website_page.sql similarity index 81% rename from htdocs/install/mysql/tables/llx_categorie.key.sql rename to htdocs/install/mysql/tables/llx_categorie_website_page.sql index f1bc9746a46..fe5bd055601 100644 --- a/htdocs/install/mysql/tables/llx_categorie.key.sql +++ b/htdocs/install/mysql/tables/llx_categorie_website_page.sql @@ -17,7 +17,9 @@ -- -- ============================================================================ -ALTER TABLE llx_categorie ADD UNIQUE INDEX uk_categorie_ref (entity, fk_parent, label, type); - -ALTER TABLE llx_categorie ADD INDEX idx_categorie_type (type); -ALTER TABLE llx_categorie ADD INDEX idx_categorie_label (label); +create table llx_categorie_website_page +( + fk_categorie integer NOT NULL, + fk_website_page integer NOT NULL, + import_key varchar(14) +)ENGINE=innodb; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_categorie_websitepage.sql b/htdocs/install/mysql/tables/llx_categorie_websitepage.sql deleted file mode 100644 index 9ac582f3738..00000000000 --- a/htdocs/install/mysql/tables/llx_categorie_websitepage.sql +++ /dev/null @@ -1,24 +0,0 @@ --- ============================================================================ --- Copyright (C) 2020 Laurent Destailleur --- --- 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 . --- --- ============================================================================ - -create table llx_categorie_websitepage -( - fk_categorie integer NOT NULL, - fk_websitepage integer NOT NULL, - import_key varchar(14) -)ENGINE=innodb; From 647d09050b4330f7a573618186e78d445c3e7d8d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 19:25:36 +0200 Subject: [PATCH 104/336] Clean not required vars --- htdocs/categories/class/categorie.class.php | 71 ++++++++------------- htdocs/core/class/commonobject.class.php | 4 +- 2 files changed, 30 insertions(+), 45 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 2e8afdb0089..224a3a65cc9 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -55,6 +55,7 @@ class Categorie extends CommonObject const TYPE_BANK_LINE = 'bank_line'; const TYPE_WAREHOUSE = 'warehouse'; const TYPE_ACTIONCOMM = 'actioncomm'; + const TYPE_WEBSITE_PAGE = 'website_page'; /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png @@ -65,7 +66,7 @@ class Categorie extends CommonObject /** * @var array ID mapping from type string * - * @note This array should be remove in future, once previous constants are moved to the string value. Deprecated + * @note This array should be removed in future, once previous constants are moved to the string value. Deprecated */ protected $MAP_ID = array( 'product' => 0, @@ -78,11 +79,13 @@ class Categorie extends CommonObject 'user' => 7, 'bank_line' => 8, 'warehouse' => 9, - 'actioncomm' => 10, + 'actioncomm' => 10 ); /** * @var array Code mapping from ID + * + * @note This array should be removed in future, once previous constants are moved to the string value. Deprecated */ public static $MAP_ID_TO_CODE = array( 0 => 'product', @@ -99,41 +102,26 @@ class Categorie extends CommonObject ); /** - * @var array Foreign keys mapping from type string + * @var array Foreign keys mapping from type string when value does not match * * @todo Move to const array when PHP 5.6 will be our minimum target */ protected $MAP_CAT_FK = array( - 'product' => 'product', 'customer' => 'soc', 'supplier' => 'soc', - 'member' => 'member', 'contact' => 'socpeople', - 'user' => 'user', - 'account' => 'account', // old key for bank_account 'bank_account' => 'account', - 'project' => 'project', - 'warehouse'=> 'warehouse', - 'actioncomm' => 'actioncomm', ); /** - * @var array Category tables mapping from type string (llx_categorie_...) + * @var array Category tables mapping from type string (llx_categorie_...) when value does not match * * @note Move to const array when PHP 5.6 will be our minimum target */ protected $MAP_CAT_TABLE = array( - 'product' => 'product', 'customer' => 'societe', 'supplier' => 'fournisseur', - 'member' => 'member', - 'contact' => 'contact', - 'user' => 'user', - 'account' => 'account', // old key for bank_account 'bank_account'=> 'account', - 'project' => 'project', - 'warehouse'=> 'warehouse', - 'actioncomm' => 'actioncomm', ); /** @@ -153,25 +141,22 @@ class Categorie extends CommonObject 'project' => 'Project', 'warehouse'=> 'Entrepot', 'actioncomm' => 'ActionComm', + 'website_page' => 'WebsitePage' ); /** - * @var array Object table mapping from type string (table llx_...) + * @var array Object table mapping from type string (table llx_...) when value of key does not match table name. * * @note Move to const array when PHP 5.6 will be our minimum target */ protected $MAP_OBJ_TABLE = array( - 'product' => 'product', 'customer' => 'societe', 'supplier' => 'societe', 'member' => 'adherent', 'contact' => 'socpeople', - 'user' => 'user', 'account' => 'bank_account', // old for bank account - 'bank_account' => 'bank_account', 'project' => 'projet', - 'warehouse'=> 'entrepot', - 'actioncomm' => 'actioncomm', + 'warehouse'=> 'entrepot' ); /** @@ -278,10 +263,10 @@ class Categorie extends CommonObject $mapList[] = array( 'id' => $mapId, 'code' => $mapCode, - 'cat_fk' => $this->MAP_CAT_FK[$mapCode], - 'cat_table' => $this->MAP_CAT_TABLE[$mapCode], - 'obj_class' => $this->MAP_OBJ_CLASS[$mapCode], - 'obj_table' => $this->MAP_OBJ_TABLE[$mapCode] + 'cat_fk' => (empty($this->MAP_CAT_FK[$mapCode]) ? $mapCode : $this->MAP_CAT_FK[$mapCode]), + 'cat_table' => (empty($this->MAP_CAT_TABLE[$mapCode]) ? $mapCode : $this->MAP_CAT_TABLE[$mapCode]), + 'obj_class' => (empty($this->MAP_OBJ_CLASS[$mapCode]) ? $mapCode : $this->MAP_OBJ_CLASS[$mapCode]), + 'obj_table' => (empty($this->MAP_OBJ_TABLE[$mapCode]) ? $mapCode : $this->MAP_OBJ_TABLE[$mapCode]) ); } @@ -672,8 +657,8 @@ class Categorie extends CommonObject $this->db->begin(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".$this->MAP_CAT_TABLE[$type]; - $sql .= " (fk_categorie, fk_".$this->MAP_CAT_FK[$type].")"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".(empty($this->MAP_CAT_TABLE[$type]) ? $type : $this->MAP_CAT_TABLE[$type]); + $sql .= " (fk_categorie, fk_".(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type]).")"; $sql .= " VALUES (".$this->id.", ".$obj->id.")"; dol_syslog(get_class($this).'::add_type', LOG_DEBUG); @@ -782,9 +767,9 @@ class Categorie extends CommonObject $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_".$this->MAP_CAT_TABLE[$type]; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_".(empty($this->MAP_CAT_TABLE[$type]) ? $type : $this->MAP_CAT_TABLE[$type]); $sql .= " WHERE fk_categorie = ".$this->id; - $sql .= " AND fk_".$this->MAP_CAT_FK[$type]." = ".$obj->id; + $sql .= " AND fk_".(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])." = ".$obj->id; dol_syslog(get_class($this).'::del_type', LOG_DEBUG); if ($this->db->query($sql)) @@ -835,12 +820,12 @@ class Categorie extends CommonObject $tmpclass = $this->MAP_OBJ_CLASS[$type]; $obj = new $tmpclass($this->db); - $sql = "SELECT c.fk_".$this->MAP_CAT_FK[$type]; - $sql .= " FROM ".MAIN_DB_PREFIX."categorie_".$this->MAP_CAT_TABLE[$type]." as c"; - $sql .= ", ".MAIN_DB_PREFIX.$this->MAP_OBJ_TABLE[$type]." as o"; + $sql = "SELECT c.fk_".(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type]); + $sql .= " FROM ".MAIN_DB_PREFIX."categorie_".(empty($this->MAP_CAT_TABLE[$type]) ? $type : $this->MAP_CAT_TABLE[$type])." as c"; + $sql .= ", ".MAIN_DB_PREFIX.(empty($this->MAP_OBJ_TABLE[$type]) ? $type : $this->MAP_OBJ_TABLE[$type])." as o"; $sql .= " WHERE o.entity IN (".getEntity($obj->element).")"; $sql .= " AND c.fk_categorie = ".$this->id; - $sql .= " AND c.fk_".$this->MAP_CAT_FK[$type]." = o.rowid"; + $sql .= " AND c.fk_".(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])." = o.rowid"; // Protection for external users if (($type == 'customer' || $type == 'supplier') && $user->socid > 0) { @@ -857,12 +842,12 @@ class Categorie extends CommonObject { if ($onlyids) { - $objs[] = $rec['fk_'.$this->MAP_CAT_FK[$type]]; + $objs[] = $rec['fk_'.(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])]; } else { $obj = new $this->MAP_OBJ_CLASS[$type]($this->db); - $obj->fetch($rec['fk_'.$this->MAP_CAT_FK[$type]]); + $obj->fetch($rec['fk_'.(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])]); $objs[] = $obj; } } @@ -885,8 +870,8 @@ class Categorie extends CommonObject */ public function containsObject($type, $object_id) { - $sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."categorie_".$this->MAP_CAT_TABLE[$type]; - $sql .= " WHERE fk_categorie = ".$this->id." AND fk_".$this->MAP_CAT_FK[$type]." = ".$object_id; + $sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."categorie_".(empty($this->MAP_CAT_TABLE[$type]) ? $type : $this->MAP_CAT_TABLE[$type]); + $sql .= " WHERE fk_categorie = ".$this->id." AND fk_".(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])." = ".$object_id; dol_syslog(get_class($this)."::containsObject", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { @@ -1546,8 +1531,8 @@ class Categorie extends CommonObject else { $sql = "SELECT ct.fk_categorie, c.label, c.rowid"; - $sql .= " FROM ".MAIN_DB_PREFIX."categorie_".$this->MAP_CAT_TABLE[$type]." as ct, ".MAIN_DB_PREFIX."categorie as c"; - $sql .= " WHERE ct.fk_categorie = c.rowid AND ct.fk_".$this->MAP_CAT_FK[$type]." = ".(int) $id." AND c.type = ".$this->MAP_ID[$type]; + $sql .= " FROM ".MAIN_DB_PREFIX."categorie_".(empty($this->MAP_CAT_TABLE[$type]) ? $type : $this->MAP_CAT_TABLE[$type])." as ct, ".MAIN_DB_PREFIX."categorie as c"; + $sql .= " WHERE ct.fk_categorie = c.rowid AND ct.fk_".(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type])." = ".(int) $id." AND c.type = ".$this->MAP_ID[$type]; $sql .= " AND c.entity IN (".getEntity('category').")"; $res = $this->db->query($sql); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index b6f1a22eea6..5bd45655f69 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -8489,8 +8489,8 @@ abstract class CommonObject require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $categorystatic = new Categorie($this->db); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".$categorystatic->MAP_CAT_TABLE[$type]." (fk_categorie, fk_product)"; - $sql .= " SELECT fk_categorie, $toId FROM ".MAIN_DB_PREFIX."categorie_".$categorystatic->MAP_CAT_TABLE[$type]; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".(empty($categorystatic->MAP_CAT_TABLE[$type]) ? $type : $categorystatic->MAP_CAT_TABLE[$type])." (fk_categorie, fk_product)"; + $sql .= " SELECT fk_categorie, $toId FROM ".MAIN_DB_PREFIX."categorie_".(empty($categorystatic->MAP_CAT_TABLE[$type]) ? $type : $categorystatic->MAP_CAT_TABLE[$type]); $sql .= " WHERE fk_product = '".$fromId."'"; if (!$this->db->query($sql)) From a89b873bd15c7e913faa4d692c0586eb6e427c3d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 19:30:16 +0200 Subject: [PATCH 105/336] Look and feel v12 --- htdocs/societe/card.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 0186d3d9807..c930be36035 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1998,16 +1998,16 @@ else } // Phone / Fax - print ''.img_picto('', 'object_phoning').' '.$form->editfieldkey('Phone', 'phone', GETPOST('phone', 'alpha'), $object, 0).''; - print ''; - print ''.img_picto('', 'object_phoning_fax').' '.$form->editfieldkey('Fax', 'fax', GETPOST('fax', 'alpha'), $object, 0).''; - print ''; + print ''.$form->editfieldkey('Phone', 'phone', GETPOST('phone', 'alpha'), $object, 0).''; + print ''.img_picto('', 'object_phoning').' '; + print ''.$form->editfieldkey('Fax', 'fax', GETPOST('fax', 'alpha'), $object, 0).''; + print ''.img_picto('', 'object_phoning_fax').' '; // EMail / Web - print ''.img_picto('', 'object_email').' '.$form->editfieldkey('EMail', 'email', GETPOST('email', 'alpha'), $object, 0, 'string', '', (!empty($conf->global->SOCIETE_EMAIL_MANDATORY))).''; - print ''; - print ''.img_picto('', 'globe').' '.$form->editfieldkey('Web', 'url', GETPOST('url', 'alpha'), $object, 0).''; - print ''; + print ''.$form->editfieldkey('EMail', 'email', GETPOST('email', 'alpha'), $object, 0, 'string', '', (!empty($conf->global->SOCIETE_EMAIL_MANDATORY))).''; + print ''.img_picto('', 'object_email').' '; + print ''.$form->editfieldkey('Web', 'url', GETPOST('url', 'alpha'), $object, 0).''; + print ''.img_picto('', 'globe').' '; if (!empty($conf->socialnetworks->enabled)) { foreach ($socialnetworks as $key => $value) { From fd5b2ba3910edafeac1ab8a592d2ec3e39522fcd Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 4 Apr 2020 23:29:45 +0200 Subject: [PATCH 106/336] New supplier turnover by product service report --- .../stats/supplier_turnover_by_prodserv.php | 450 ++++++++++++++++++ 1 file changed, 450 insertions(+) create mode 100644 htdocs/compta/stats/supplier_turnover_by_prodserv.php diff --git a/htdocs/compta/stats/supplier_turnover_by_prodserv.php b/htdocs/compta/stats/supplier_turnover_by_prodserv.php new file mode 100644 index 00000000000..fafb967ace1 --- /dev/null +++ b/htdocs/compta/stats/supplier_turnover_by_prodserv.php @@ -0,0 +1,450 @@ + + * + * 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 . + */ + +/** + * \file htdocs/compta/stats/supplier_turnover_by_prodserv.php + * \brief Page reporting purchase turnover by Products & Services + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/tax.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + +// Load translation files required by the page +$langs->loadLangs(array("products", "categories", "errors", 'accountancy')); + +// Security pack (data & check) +$socid = GETPOST('socid', 'int'); + +if ($user->socid > 0) $socid = $user->socid; +if (!empty($conf->comptabilite->enabled)) $result = restrictedArea($user, 'compta', '', '', 'resultat'); +if (!empty($conf->accounting->enabled)) $result = restrictedArea($user, 'accounting', '', '', 'comptarapport'); + +// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES') +$modecompta = $conf->global->ACCOUNTING_MODE; +if (GETPOST("modecompta")) $modecompta = GETPOST("modecompta"); + +$sortorder = isset($_GET["sortorder"]) ? $_GET["sortorder"] : $_POST["sortorder"]; +$sortfield = isset($_GET["sortfield"]) ? $_GET["sortfield"] : $_POST["sortfield"]; +if (!$sortorder) $sortorder = "asc"; +if (!$sortfield) $sortfield = "ref"; + +// Category +$selected_cat = (int) GETPOST('search_categ', 'int'); +$selected_soc = (int) GETPOST('search_soc', 'int'); +$subcat = false; +if (GETPOST('subcat', 'alpha') === 'yes') { + $subcat = true; +} +// product/service +$selected_type = GETPOST('search_type', 'int'); +if ($selected_type == '') $selected_type = -1; + +// Date range +$year = GETPOST("year"); +$month = GETPOST("month"); +$date_startyear = GETPOST("date_startyear"); +$date_startmonth = GETPOST("date_startmonth"); +$date_startday = GETPOST("date_startday"); +$date_endyear = GETPOST("date_endyear"); +$date_endmonth = GETPOST("date_endmonth"); +$date_endday = GETPOST("date_endday"); +if (empty($year)) +{ + $year_current = strftime("%Y", dol_now()); + $month_current = strftime("%m", dol_now()); + $year_start = $year_current; +} else { + $year_current = $year; + $month_current = strftime("%m", dol_now()); + $year_start = $year; +} +$date_start = dol_mktime(0, 0, 0, GETPOST("date_startmonth"), GETPOST("date_startday"), GETPOST("date_startyear")); +$date_end = dol_mktime(23, 59, 59, GETPOST("date_endmonth"), GETPOST("date_endday"), GETPOST("date_endyear")); +// Quarter +if (empty($date_start) || empty($date_end)) // We define date_start and date_end +{ + $q = GETPOST("q", "int"); + if (empty($q)) + { + // We define date_start and date_end + $month_start = GETPOST("month") ?GETPOST("month") : ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1); + $year_end = $year_start; + $month_end = $month_start; + if (!GETPOST("month")) // If month not forced + { + if (!GETPOST('year') && $month_start > $month_current) + { + $year_start--; + $year_end--; + } + $month_end = $month_start - 1; + if ($month_end < 1) $month_end = 12; + else $year_end++; + } + $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false); + } + else + { + if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); } + if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); } + if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); } + if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); } + } +} else { + // TODO We define q +} + +// $date_start and $date_end are defined. We force $year_start and $nbofyear +$tmps = dol_getdate($date_start); +$year_start = $tmps['year']; +$tmpe = dol_getdate($date_end); +$year_end = $tmpe['year']; +$nbofyear = ($year_end - $year_start) + 1; + +$commonparams = array(); +if (!empty($modecompta)) $commonparams['modecompta'] = $modecompta; +if (!empty($sortorder)) $commonparams['sortorder'] = $sortorder; +if (!empty($sortfield)) $commonparams['sortfield'] = $sortfield; + +$headerparams = array(); +if (!empty($date_startyear)) $headerparams['date_startyear'] = $date_startyear; +if (!empty($date_startmonth)) $headerparams['date_startmonth'] = $date_startmonth; +if (!empty($date_startday)) $headerparams['date_startday'] = $date_startday; +if (!empty($date_endyear)) $headerparams['date_endyear'] = $date_endyear; +if (!empty($date_endmonth)) $headerparams['date_endmonth'] = $date_endmonth; +if (!empty($date_endday)) $headerparams['date_endday'] = $date_endday; +if (!empty($year)) $headerparams['year'] = $year; +if (!empty($month)) $headerparams['month'] = $month; +$headerparams['q'] = $q; + +$tableparams = array(); +if (!empty($selected_cat)) $tableparams['search_categ'] = $selected_cat; +if (!empty($selected_soc)) $tableparams['search_soc'] = $selected_soc; +if (!empty($selected_type)) $tableparams['search_type'] = $selected_type; +$tableparams['subcat'] = ($subcat === true) ? 'yes' : ''; + +// Adding common parameters +$allparams = array_merge($commonparams, $headerparams, $tableparams); +$headerparams = array_merge($commonparams, $headerparams); +$tableparams = array_merge($commonparams, $tableparams); + +foreach ($allparams as $key => $value) { + $paramslink .= '&'.$key.'='.$value; +} + + +/* + * View + */ + +llxHeader(); + +$form = new Form($db); +$formother = new FormOther($db); + +// TODO Report from bookkeeping not yet available, so we switch on report on business events +if ($modecompta == "BOOKKEEPING") $modecompta = "CREANCES-DETTES"; +if ($modecompta == "BOOKKEEPINGCOLLECTED") $modecompta = "RECETTES-DEPENSES"; + +// Show report header +if ($modecompta == "CREANCES-DETTES") { + $name = $langs->trans("PurchaseTurnover").', '.$langs->trans("ByProductsAndServices"); + $calcmode = $langs->trans("CalcModeDebt"); + //$calcmode.='
    ('.$langs->trans("SeeReportInInputOutputMode",'','').')'; + + $description = $langs->trans("RulesPurchaseTurnoverDue"); + $builddate = dol_now(); +} +elseif ($modecompta == "RECETTES-DEPENSES") +{ + $name = $langs->trans("PurchaseTurnoverCollected").', '.$langs->trans("ByProductsAndServices"); + $calcmode = $langs->trans("CalcModeEngagement"); + //$calcmode.='
    ('.$langs->trans("SeeReportInDueDebtMode",'','').')'; + $description = $langs->trans("RulesPurchaseTurnoverIn"); + + $builddate = dol_now(); +} +elseif ($modecompta == "BOOKKEEPING") +{ +} +elseif ($modecompta == "BOOKKEEPINGCOLLECTED") +{ +} + +$period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); +if ($date_end == dol_time_plus_duree($date_start, 1, 'y') - 1) $periodlink = ''.img_previous().' '.img_next().''; +else $periodlink = ''; + +report_header($name, $namelink, $period, $periodlink, $description, $builddate, $exportlink, $tableparams, $calcmode); + +if (!empty($conf->accounting->enabled) && $modecompta != 'BOOKKEEPING') +{ + print info_admin($langs->trans("WarningReportNotReliable"), 0, 0, 1); +} + + + +$name = array(); + +// SQL request +$catotal = 0; +$catotal_ht = 0; +$qtytotal = 0; + +if ($modecompta == 'CREANCES-DETTES') +{ + $sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label, p.fk_product_type as product_type,"; + $sql .= " SUM(l.total_ht) as amount, SUM(l.total_ttc) as amount_ttc,"; + $sql .= " SUM(CASE WHEN f.type = 2 THEN -l.qty ELSE l.qty END) as qty"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; + if ($selected_soc > 0) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as soc ON (soc.rowid = f.fk_soc)"; + $sql .= ",".MAIN_DB_PREFIX."facture_fourn_det as l"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON l.fk_product = p.rowid"; + if ($selected_cat === -2) // Without any category + { + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product"; + } + elseif ($selected_cat) // Into a specific category + { + $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_product as cp"; + } + $sql .= " WHERE l.fk_facture_fourn = f.rowid"; + $sql .= " AND f.fk_statut in (1,2)"; + $sql .= " AND f.type IN (0,2)"; + + if ($date_start && $date_end) { + $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + } + if ($selected_type >= 0) + { + $sql .= " AND l.product_type = ".$selected_type; + } + if ($selected_cat === -2) // Without any category + { + $sql .= " AND cp.fk_product is null"; + } + elseif ($selected_cat) { // Into a specific category + $sql .= " AND (c.rowid = ".$selected_cat; + if ($subcat) $sql .= " OR c.fk_parent = ".$selected_cat; + $sql .= ")"; + $sql .= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid"; + } + if ($selected_soc > 0) $sql .= " AND soc.rowid=".$selected_soc; + $sql .= " AND f.entity IN (".getEntity('supplier_invoice').")"; + $sql .= " GROUP BY p.rowid, p.ref, p.label, p.fk_product_type"; + $sql .= $db->order($sortfield, $sortorder); + + dol_syslog("supplier_turnover_by_prodserv", LOG_DEBUG); + $result = $db->query($sql); + if ($result) { + $num = $db->num_rows($result); + $i = 0; + while ($i < $num) { + $obj = $db->fetch_object($result); + $amount_ht[$obj->rowid] = $obj->amount; + $amount[$obj->rowid] = $obj->amount_ttc; + $qty[$obj->rowid] = $obj->qty; + $name[$obj->rowid] = $obj->ref.' - '.$obj->label; + $type[$obj->rowid] = $obj->product_type; + $catotal_ht += $obj->amount; + $catotal += $obj->amount_ttc; + $qtytotal += $obj->qty; + $i++; + } + } else { + dol_print_error($db); + } + + // Show Array + $i = 0; + print ''; + print ''."\n"; + // Extra parameters management + foreach ($headerparams as $key => $value) + { + print ''; + } + + $moreforfilter = ''; + + print '
    '; + print ''."\n"; + + // Category filter + print ''; + print ''; + + print ''; + + // Array header + print ""; + print_liste_field_titre( + $langs->trans("Product"), + $_SERVER["PHP_SELF"], + "ref", + "", + $paramslink, + "", + $sortfield, + $sortorder + ); + print_liste_field_titre( + $langs->trans('Quantity'), + $_SERVER["PHP_SELF"], + "qty", + "", + $paramslink, + 'class="right"', + $sortfield, + $sortorder + ); + print_liste_field_titre( + $langs->trans("Percentage"), + $_SERVER["PHP_SELF"], + "qty", + "", + $paramslink, + 'class="right"', + $sortfield, + $sortorder + ); + print_liste_field_titre( + $langs->trans('AmountHT'), + $_SERVER["PHP_SELF"], + "amount", + "", + $classslink, + 'class="right"', + $sortfield, + $sortorder + ); + print_liste_field_titre( + $langs->trans("AmountTTC"), + $_SERVER["PHP_SELF"], + "amount_ttc", + "", + $paramslink, + 'class="right"', + $sortfield, + $sortorder + ); + print_liste_field_titre( + $langs->trans("Percentage"), + $_SERVER["PHP_SELF"], + "amount_ttc", + "", + $paramslink, + 'class="right"', + $sortfield, + $sortorder + ); + print "\n"; + + if (count($name)) { + foreach ($name as $key=>$value) { + print ''; + + // Product + print "\n"; + + // Quantity + print ''; + + // Percent; + print ''; + + // Amount w/o VAT + print ''; + + // Amount with VAT + print ''; + + // Percent; + print ''; + + // TODO: statistics? + + print "\n"; + $i++; + } + + // Total + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + $db->free($result); + } + print "
    '; + print $langs->trans("Category").': '.$formother->select_categories(Categorie::TYPE_PRODUCT, $selected_cat, 'search_categ', true); + print ' '; + print $langs->trans("SubCats").'? '; + print ''; + // type filter (produit/service) + print ' '; + print $langs->trans("Type").': '; + $form->select_type_of_lines(isset($selected_type) ? $selected_type : -1, 'search_type', 1, 1, 1); + + //select thirdparty + print '
    '; + print $langs->trans("ThirdParty").': '.$form->select_thirdparty_list($selected_soc, 'search_soc', '', 1); + print '
    '; + print ''; + print '
    "; + $fullname = $name[$key]; + if ($key > 0) { + $linkname = ''.img_object($langs->trans("ShowProduct"), $type[$key] == 0 ? 'product' : 'service').' '.$fullname.''; + } else { + $linkname = $langs->trans("PaymentsNotLinkedToProduct"); + } + print $linkname; + print "'; + print $qty[$key]; + print ''.($qtytotal > 0 ? round(100 * $qty[$key] / $qtytotal, 2).'%' : ' ').''; + print price($amount_ht[$key]); + //print ''; + print ''; + print price($amount[$key]); + //print ''; + print ''.($catotal > 0 ? round(100 * $amount[$key] / $catotal, 2).'%' : ' ').'
    '.$langs->trans("Total").''.$qtytotal.'100%'.price($catotal_ht).''.price($catotal).'100%
    "; + print '
    '; + + print ''; +} else { + // $modecompta != 'CREANCES-DETTES' + // "Calculation of part of each product for accountancy in this mode is not possible. When a partial payment (for example 5 euros) is done on an + // invoice with 2 product (product A for 10 euros and product B for 20 euros), what is part of paiment for product A and part of paiment for product B ? + // Because there is no way to know this, this report is not relevant. + print '
    '.$langs->trans("TurnoverPerProductInCommitmentAccountingNotRelevant").'
    '; +} + +// End of page +llxFooter(); +$db->close(); From 716e037761fad9f8228b769d538109124007fa90 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 23:31:17 +0200 Subject: [PATCH 107/336] Fix previous login if first login --- htdocs/main.inc.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index f28a701e566..ecfa3dab07e 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1864,9 +1864,11 @@ function top_menu_user($hideloginname = 0, $urllogout = '')
    '.$userDropDownImage.'

    - '.$profilName.'
    - '.dol_print_date($user->datepreviouslogin, "dayhour", 'tzuser').'
    - '.$langs->trans("Version").' '.$appli.' + '.$profilName.'
    '; + if ($user->datepreviouslogin) { + print ' '.dol_print_date($user->datepreviouslogin, "dayhour", 'tzuser').'
    '; + } + print ' '.$langs->trans("Version").' '.$appli.'

    From 64aa231e33ecf8325fc1d8e52067713d92a7cac6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 23:32:02 +0200 Subject: [PATCH 108/336] Avoid password in files --- build/exe/doliwamp/install_services.bat.install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/exe/doliwamp/install_services.bat.install b/build/exe/doliwamp/install_services.bat.install index 5d0fe69350f..981c8b18b70 100644 --- a/build/exe/doliwamp/install_services.bat.install +++ b/build/exe/doliwamp/install_services.bat.install @@ -21,7 +21,7 @@ REM Mysql 5.1+ REM .\bin\mysql\mysqlWAMPMYSQLVERSION\bin\mysqld.exe --install doliwampmysqld REM Mariadb REM The mysql_install_db allows to not provide files into mysql dir but does not return to prompt so install hangs -REM .\bin\mariadb\mariadbWAMPMYSQLVERSION\bin\mysql_install_db.exe --datadir=WAMPROOT/bin/mariadb/data --port=WAMPMYSQLPORT --password=WAMPMYSQLNEWPASSWORD >> doliwamp.log 2>>&1 +REM .\bin\mariadb\mariadbWAMPMYSQLVERSION\bin\mysql_install_db.exe --datadir=WAMPROOT/bin/mariadb/data --port=WAMPMYSQLPORT --password=WAMPMYSQLXXX >> doliwamp.log 2>>&1 .\bin\mariadb\mariadbWAMPMYSQLVERSION\bin\mysql_install_db.exe --datadir=WAMPROOT/bin/mariadb/data --port=WAMPMYSQLPORT >> doliwamp.log 2>>&1 .\bin\mariadb\mariadbWAMPMYSQLVERSION\bin\mysqld.exe --install doliwampmysqld >> doliwamp.log 2>>&1 From 5583ad9c384e4dcdbc0f302efbc0608ac461db8b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 4 Apr 2020 23:39:44 +0200 Subject: [PATCH 109/336] Fix --- htdocs/main.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index ecfa3dab07e..0d0f14ba332 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1866,9 +1866,9 @@ function top_menu_user($hideloginname = 0, $urllogout = '')

    '.$profilName.'
    '; if ($user->datepreviouslogin) { - print ' '.dol_print_date($user->datepreviouslogin, "dayhour", 'tzuser').'
    '; + $btnUser .= ' '.dol_print_date($user->datepreviouslogin, "dayhour", 'tzuser').'
    '; } - print ' '.$langs->trans("Version").' '.$appli.' + $btnUser .= ' '.$langs->trans("Version").' '.$appli.'

    From ed0f6b56b98bc150b6d5a01f7b795447b57eff7e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 00:29:34 +0200 Subject: [PATCH 110/336] FIX: The "test smtp connectivity" failed on page to setup mass emailing --- htdocs/admin/mails.php | 3 ++- htdocs/admin/mails_emailing.php | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index 5275b77fa14..00d954883f9 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -99,6 +99,7 @@ $triggersendname = ''; // Disable triggers $paramname = 'id'; $mode = 'emailfortest'; $trackid = (($action == 'testhtml') ? "testhtml" : "test"); +$sendcontext=''; include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; if ($action == 'presend' && GETPOST('trackid', 'alphanohtml') == 'test') $action = 'test'; @@ -791,7 +792,7 @@ else print load_fiche_titre($langs->trans("DoTestServerAvailability")); include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - $mail = new CMailFile('', '', '', ''); + $mail = new CMailFile('', '', '', '', array(), array(), array(), '', '', 0, '', '', '', '', $trackid, $sendcontext); $result = $mail->check_server_port($server, $port); if ($result) print '
    '.$langs->trans("ServerAvailableOnIPOrPort", $server, $port).'
    '; else diff --git a/htdocs/admin/mails_emailing.php b/htdocs/admin/mails_emailing.php index 60de9f34443..94b9bb4b83f 100644 --- a/htdocs/admin/mails_emailing.php +++ b/htdocs/admin/mails_emailing.php @@ -535,8 +535,9 @@ else print load_fiche_titre($langs->trans("DoTestServerAvailability")); include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - $mail = new CMailFile('', '', '', ''); - $result=$mail->check_server_port($server, $port); + $mail = new CMailFile('', '', '', '', array(), array(), array(), '', '', 0, '', '', '', '', $trackid, $sendcontext); + + $result = $mail->check_server_port($server, $port); if ($result) print '
    '.$langs->trans("ServerAvailableOnIPOrPort", $server, $port).'
    '; else { From a41f54c82fd95beedc7683b5f0dfc40ab4675b5f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 02:39:40 +0200 Subject: [PATCH 111/336] Fix css --- htdocs/core/class/html.formfile.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 347b22400bd..ec9dff5f1a3 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -1508,10 +1508,10 @@ class FormFile if (!empty($addfilterfields)) { print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; // Action column print ''; $searchpicto = $form->showFilterButtons(); From 2f1b25c67afac0e68167e4572f0a89f4cdfc6b92 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 02:43:30 +0200 Subject: [PATCH 112/336] Fix property not defined --- .../template/core/modules/mymodule/mod_myobject_advanced.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php index 33edc24e983..8ae1284c918 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php @@ -98,9 +98,9 @@ class mod_myobject_advanced extends ModeleNumRefMyObject */ public function getExample() { - global $conf,$langs,$mysoc; + global $conf, $db, $langs, $mysoc; - $object = new MyObject($this->db); + $object = new MyObject($db); $object->initAsSpecimen(); /*$old_code_client=$mysoc->code_client; From 612bac65985f1e33deb4c30b6cd8db2321740a3d Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer Date: Sun, 5 Apr 2020 00:44:59 +0000 Subject: [PATCH 113/336] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/admin/modules.php | 1282 ++++++++--------- htdocs/core/lib/modulebuilder.lib.php | 488 +++---- htdocs/core/modules/bom/mod_bom_standard.php | 34 +- htdocs/core/modules/bom/modules_bom.php | 18 +- .../modules/cheque/mod_chequereceipt_mint.php | 38 +- .../modules/cheque/modules_chequereceipts.php | 20 +- .../modules/commande/mod_commande_marbre.php | 38 +- .../modules/commande/modules_commande.php | 18 +- htdocs/core/modules/dons/modules_don.php | 172 +-- .../expensereport/mod_expensereport_jade.php | 66 +- .../core/modules/facture/modules_facture.php | 16 +- .../modules/fichinter/modules_fichinter.php | 54 +- .../modules/livraison/mod_livraison_jade.php | 166 +-- .../modules/livraison/modules_livraison.php | 188 +-- htdocs/core/modules/mrp/mod_mo_standard.php | 34 +- htdocs/core/modules/mrp/modules_mo.php | 18 +- .../modules/payment/mod_payment_cicada.php | 38 +- .../core/modules/payment/modules_payment.php | 10 +- .../modules/product/modules_product.class.php | 398 ++--- .../modules/project/mod_project_simple.php | 146 +- .../modules/project/task/mod_task_simple.php | 140 +- .../modules/propale/mod_propale_marbre.php | 30 +- .../modules/societe/modules_societe.class.php | 580 ++++---- .../mod_commande_fournisseur_muguet.php | 180 +-- .../mod_supplier_payment_bronan.php | 38 +- .../modules_supplier_payment.php | 22 +- .../mod_supplier_proposal_marbre.php | 30 +- .../core/modules/takepos/modules_takepos.php | 70 +- .../core/modules/ticket/mod_ticket_simple.php | 206 +-- htdocs/core/modules/ticket/modules_ticket.php | 160 +- htdocs/core/tpl/card_presend.tpl.php | 100 +- htdocs/expedition/list.php | 92 +- htdocs/modulebuilder/index.php | 1170 +++++++-------- .../mymodule/mod_myobject_advanced.php | 56 +- .../mymodule/mod_myobject_standard.php | 34 +- .../modules/mymodule/modules_myobject.php | 18 +- 36 files changed, 3084 insertions(+), 3084 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 280f17adfe2..91003d7cc12 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -67,7 +67,7 @@ $familyinfo = array( 'hr'=>array('position'=>'001', 'label'=>$langs->trans("ModuleFamilyHr")), 'crm'=>array('position'=>'006', 'label'=>$langs->trans("ModuleFamilyCrm")), 'srm'=>array('position'=>'007', 'label'=>$langs->trans("ModuleFamilySrm")), - 'financial'=>array('position'=>'009', 'label'=>$langs->trans("ModuleFamilyFinancial")), + 'financial'=>array('position'=>'009', 'label'=>$langs->trans("ModuleFamilyFinancial")), 'products'=>array('position'=>'012', 'label'=>$langs->trans("ModuleFamilyProducts")), 'projects'=>array('position'=>'015', 'label'=>$langs->trans("ModuleFamilyProjects")), 'ecm'=>array('position'=>'018', 'label'=>$langs->trans("ModuleFamilyECM")), @@ -106,35 +106,35 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e if (GETPOST('buttonreset', 'alpha')) { - $search_keyword = ''; - $search_status = ''; - $search_nature = ''; - $search_version = ''; + $search_keyword = ''; + $search_status = ''; + $search_nature = ''; + $search_version = ''; } if ($action == 'install') { - $error = 0; + $error = 0; - // $original_file should match format module_modulename-x.y[.z].zip - $original_file = basename($_FILES["fileinstall"]["name"]); - $newfile = $conf->admin->dir_temp.'/'.$original_file.'/'.$original_file; + // $original_file should match format module_modulename-x.y[.z].zip + $original_file = basename($_FILES["fileinstall"]["name"]); + $newfile = $conf->admin->dir_temp.'/'.$original_file.'/'.$original_file; - if (!$original_file) - { - $langs->load("Error"); - setEventMessages($langs->trans("ErrorModuleFileRequired"), null, 'warnings'); - $error++; - } - else - { - if (!$error && !preg_match('/\.zip$/i', $original_file)) - { - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFileMustBeADolibarrPackage", $original_file), null, 'errors'); - $error++; - } - if (!$error && !preg_match('/^(module[a-zA-Z0-9]*|theme)_.*\-([0-9][0-9\.]*)\.zip$/i', $original_file)) + if (!$original_file) + { + $langs->load("Error"); + setEventMessages($langs->trans("ErrorModuleFileRequired"), null, 'warnings'); + $error++; + } + else + { + if (!$error && !preg_match('/\.zip$/i', $original_file)) + { + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFileMustBeADolibarrPackage", $original_file), null, 'errors'); + $error++; + } + if (!$error && !preg_match('/^(module[a-zA-Z0-9]*|theme)_.*\-([0-9][0-9\.]*)\.zip$/i', $original_file)) { $langs->load("errors"); setEventMessages($langs->trans("ErrorFilenameDosNotMatchDolibarrPackageRules", $original_file, 'module_*-x.y*.zip'), null, 'errors'); @@ -142,140 +142,140 @@ if ($action == 'install') } if (empty($_FILES['fileinstall']['tmp_name'])) { - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFileNotUploaded"), null, 'errors'); - $error++; + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFileNotUploaded"), null, 'errors'); + $error++; } - } + } - if (!$error) - { - if ($original_file) - { - @dol_delete_dir_recursive($conf->admin->dir_temp.'/'.$original_file); - dol_mkdir($conf->admin->dir_temp.'/'.$original_file); - } + if (!$error) + { + if ($original_file) + { + @dol_delete_dir_recursive($conf->admin->dir_temp.'/'.$original_file); + dol_mkdir($conf->admin->dir_temp.'/'.$original_file); + } - $tmpdir = preg_replace('/\.zip$/i', '', $original_file).'.dir'; - if ($tmpdir) - { - @dol_delete_dir_recursive($conf->admin->dir_temp.'/'.$tmpdir); - dol_mkdir($conf->admin->dir_temp.'/'.$tmpdir); - } + $tmpdir = preg_replace('/\.zip$/i', '', $original_file).'.dir'; + if ($tmpdir) + { + @dol_delete_dir_recursive($conf->admin->dir_temp.'/'.$tmpdir); + dol_mkdir($conf->admin->dir_temp.'/'.$tmpdir); + } - $result = dol_move_uploaded_file($_FILES['fileinstall']['tmp_name'], $newfile, 1, 0, $_FILES['fileinstall']['error']); - if ($result > 0) - { - $result = dol_uncompress($newfile, $conf->admin->dir_temp.'/'.$tmpdir); + $result = dol_move_uploaded_file($_FILES['fileinstall']['tmp_name'], $newfile, 1, 0, $_FILES['fileinstall']['error']); + if ($result > 0) + { + $result = dol_uncompress($newfile, $conf->admin->dir_temp.'/'.$tmpdir); - if (!empty($result['error'])) - { - $langs->load("errors"); - setEventMessages($langs->trans($result['error'], $original_file), null, 'errors'); - $error++; - } - else - { - // Now we move the dir of the module - $modulename = preg_replace('/module_/', '', $original_file); - $modulename = preg_replace('/\-([0-9][0-9\.]*)\.zip$/i', '', $modulename); - // Search dir $modulename - $modulenamedir = $conf->admin->dir_temp.'/'.$tmpdir.'/'.$modulename; // Example ./mymodule + if (!empty($result['error'])) + { + $langs->load("errors"); + setEventMessages($langs->trans($result['error'], $original_file), null, 'errors'); + $error++; + } + else + { + // Now we move the dir of the module + $modulename = preg_replace('/module_/', '', $original_file); + $modulename = preg_replace('/\-([0-9][0-9\.]*)\.zip$/i', '', $modulename); + // Search dir $modulename + $modulenamedir = $conf->admin->dir_temp.'/'.$tmpdir.'/'.$modulename; // Example ./mymodule - if (!dol_is_dir($modulenamedir)) - { - $modulenamedir = $conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulename; // Example ./htdocs/mymodule - //var_dump($modulenamedir); - if (!dol_is_dir($modulenamedir)) - { - setEventMessages($langs->trans("ErrorModuleFileSeemsToHaveAWrongFormat").'
    '.$langs->trans("ErrorModuleFileSeemsToHaveAWrongFormat2", $modulename, 'htdocs/'.$modulename), null, 'errors'); - $error++; - } - } + if (!dol_is_dir($modulenamedir)) + { + $modulenamedir = $conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulename; // Example ./htdocs/mymodule + //var_dump($modulenamedir); + if (!dol_is_dir($modulenamedir)) + { + setEventMessages($langs->trans("ErrorModuleFileSeemsToHaveAWrongFormat").'
    '.$langs->trans("ErrorModuleFileSeemsToHaveAWrongFormat2", $modulename, 'htdocs/'.$modulename), null, 'errors'); + $error++; + } + } - if (!$error) - { - // TODO Make more test - } + if (!$error) + { + // TODO Make more test + } - dol_syslog("Uncompress of module file is a success."); + dol_syslog("Uncompress of module file is a success."); - $modulenamearrays = array(); - if (dol_is_file($modulenamedir.'/metapackage.conf')) { - // This is a meta package - $metafile = file_get_contents($modulenamedir.'/metapackage.conf'); - $modulenamearrays = explode("\n", $metafile); - } - $modulenamearrays[$modulename] = $modulename; - //var_dump($modulenamearrays);exit; + $modulenamearrays = array(); + if (dol_is_file($modulenamedir.'/metapackage.conf')) { + // This is a meta package + $metafile = file_get_contents($modulenamedir.'/metapackage.conf'); + $modulenamearrays = explode("\n", $metafile); + } + $modulenamearrays[$modulename] = $modulename; + //var_dump($modulenamearrays);exit; - foreach ($modulenamearrays as $modulenameval) { - if (strpos($modulenameval, '#') === 0) continue; // Discard comments - if (strpos($modulenameval, '//') === 0) continue; // Discard comments + foreach ($modulenamearrays as $modulenameval) { + if (strpos($modulenameval, '#') === 0) continue; // Discard comments + if (strpos($modulenameval, '//') === 0) continue; // Discard comments if (!trim($modulenameval)) continue; - // Now we install the module - if (!$error) - { - @dol_delete_dir_recursive($dirins.'/'.$modulenameval); // delete the zip file - dol_syslog("We copy now directory ".$conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval." into target dir ".$dirins.'/'.$modulenameval); - $result = dolCopyDir($modulenamedir, $dirins.'/'.$modulenameval, '0444', 1); - if ($result <= 0) - { - dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$modulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING); - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToCopyDir", $modulenamedir, $dirins.'/'.$modulenameval), null, 'errors'); - $error++; - } - } - } - } - } - else - { - setEventMessages($langs->trans("ErrorFailToRenameFile", $_FILES['fileinstall']['tmp_name'], $newfile), null, 'errors'); - $error++; - } - } + // Now we install the module + if (!$error) + { + @dol_delete_dir_recursive($dirins.'/'.$modulenameval); // delete the zip file + dol_syslog("We copy now directory ".$conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval." into target dir ".$dirins.'/'.$modulenameval); + $result = dolCopyDir($modulenamedir, $dirins.'/'.$modulenameval, '0444', 1); + if ($result <= 0) + { + dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$modulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING); + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFailToCopyDir", $modulenamedir, $dirins.'/'.$modulenameval), null, 'errors'); + $error++; + } + } + } + } + } + else + { + setEventMessages($langs->trans("ErrorFailToRenameFile", $_FILES['fileinstall']['tmp_name'], $newfile), null, 'errors'); + $error++; + } + } - if (!$error) - { - setEventMessages($langs->trans("SetupIsReadyForUse", DOL_URL_ROOT.'/admin/modules.php?mainmenu=home', $langs->transnoentitiesnoconv("Home").' - '.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("Modules")), null, 'warnings'); - } + if (!$error) + { + setEventMessages($langs->trans("SetupIsReadyForUse", DOL_URL_ROOT.'/admin/modules.php?mainmenu=home', $langs->transnoentitiesnoconv("Home").' - '.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("Modules")), null, 'warnings'); + } } if ($action == 'set' && $user->admin) { - $resarray = activateModule($value); - if (!empty($resarray['errors'])) setEventMessages('', $resarray['errors'], 'errors'); + $resarray = activateModule($value); + if (!empty($resarray['errors'])) setEventMessages('', $resarray['errors'], 'errors'); else { - //var_dump($resarray);exit; - if ($resarray['nbperms'] > 0) - { - $tmpsql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX."user WHERE admin <> 1"; - $resqltmp = $db->query($tmpsql); - if ($resqltmp) - { - $obj = $db->fetch_object($resqltmp); - //var_dump($obj->nb);exit; - if ($obj && $obj->nb > 1) - { - $msg = $langs->trans('ModuleEnabledAdminMustCheckRights'); - setEventMessages($msg, null, 'warnings'); - } - } - else dol_print_error($db); - } + //var_dump($resarray);exit; + if ($resarray['nbperms'] > 0) + { + $tmpsql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX."user WHERE admin <> 1"; + $resqltmp = $db->query($tmpsql); + if ($resqltmp) + { + $obj = $db->fetch_object($resqltmp); + //var_dump($obj->nb);exit; + if ($obj && $obj->nb > 1) + { + $msg = $langs->trans('ModuleEnabledAdminMustCheckRights'); + setEventMessages($msg, null, 'warnings'); + } + } + else dol_print_error($db); + } } - header("Location: ".$_SERVER["PHP_SELF"]."?mode=".$mode.$param.($page_y ? '&page_y='.$page_y : '')); + header("Location: ".$_SERVER["PHP_SELF"]."?mode=".$mode.$param.($page_y ? '&page_y='.$page_y : '')); exit; } elseif ($action == 'reset' && $user->admin && GETPOST('confirm') == 'yes') { - $result = unActivateModule($value); - if ($result) setEventMessages($result, null, 'errors'); - header("Location: ".$_SERVER["PHP_SELF"]."?mode=".$mode.$param.($page_y ? '&page_y='.$page_y : '')); + $result = unActivateModule($value); + if ($result) setEventMessages($result, null, 'errors'); + header("Location: ".$_SERVER["PHP_SELF"]."?mode=".$mode.$param.($page_y ? '&page_y='.$page_y : '')); exit; } @@ -293,7 +293,7 @@ $morecss = array("/admin/dolistore/css/dolistore.css"); // Set dir where external modules are installed if (!dol_is_dir($dirins)) { - dol_mkdir($dirins); + dol_mkdir($dirins); } $dirins_ok = (dol_is_dir($dirins)); @@ -327,127 +327,127 @@ foreach ($modulesdir as $dir) while (($file = readdir($handle)) !== false) { //print "$i ".$file."\n
    "; - if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod' && substr($file, dol_strlen($file) - 10) == '.class.php') - { - $modName = substr($file, 0, dol_strlen($file) - 10); + if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod' && substr($file, dol_strlen($file) - 10) == '.class.php') + { + $modName = substr($file, 0, dol_strlen($file) - 10); - if ($modName) - { - if (!empty($modNameLoaded[$modName])) // In cache of already loaded modules ? - { - $mesg = "Error: Module ".$modName." was found twice: Into ".$modNameLoaded[$modName]." and ".$dir.". You probably have an old file on your disk.
    "; - setEventMessages($mesg, null, 'warnings'); - dol_syslog($mesg, LOG_ERR); + if ($modName) + { + if (!empty($modNameLoaded[$modName])) // In cache of already loaded modules ? + { + $mesg = "Error: Module ".$modName." was found twice: Into ".$modNameLoaded[$modName]." and ".$dir.". You probably have an old file on your disk.
    "; + setEventMessages($mesg, null, 'warnings'); + dol_syslog($mesg, LOG_ERR); continue; - } + } - try - { - $res = include_once $dir.$file; // A class already exists in a different file will send a non catchable fatal error. - if (class_exists($modName)) + try + { + $res = include_once $dir.$file; // A class already exists in a different file will send a non catchable fatal error. + if (class_exists($modName)) { try { - $objMod = new $modName($db); + $objMod = new $modName($db); $modNameLoaded[$modName] = $dir; - if (!$objMod->numero > 0 && $modName != 'modUser') - { - dol_syslog('The module descriptor '.$modName.' must have a numero property', LOG_ERR); - } + if (!$objMod->numero > 0 && $modName != 'modUser') + { + dol_syslog('The module descriptor '.$modName.' must have a numero property', LOG_ERR); + } $j = $objMod->numero; - $modulequalified = 1; + $modulequalified = 1; - // We discard modules according to features level (PS: if module is activated we always show it) - $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod))); - if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified = 0; - if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified = 0; + // We discard modules according to features level (PS: if module is activated we always show it) + $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod))); + if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified = 0; + if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified = 0; if (preg_match('/deprecated/', $objMod->version) && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL >= 0))) $modulequalified = 0; - // We discard modules according to property ->hidden - if (!empty($objMod->hidden)) $modulequalified = 0; + // We discard modules according to property ->hidden + if (!empty($objMod->hidden)) $modulequalified = 0; - if ($modulequalified > 0) - { - $publisher = dol_escape_htmltag($objMod->getPublisher()); - $external = ($objMod->isCoreOrExternalModule() == 'external'); - if ($external) - { - if ($publisher) - { - $arrayofnatures['external_'.$publisher] = $langs->trans("External").' - '.$publisher; - } - else - { - $arrayofnatures['external_'] = $langs->trans("External").' - '.$langs->trans("UnknownPublishers"); - } - } - ksort($arrayofnatures); + if ($modulequalified > 0) + { + $publisher = dol_escape_htmltag($objMod->getPublisher()); + $external = ($objMod->isCoreOrExternalModule() == 'external'); + if ($external) + { + if ($publisher) + { + $arrayofnatures['external_'.$publisher] = $langs->trans("External").' - '.$publisher; + } + else + { + $arrayofnatures['external_'] = $langs->trans("External").' - '.$langs->trans("UnknownPublishers"); + } + } + ksort($arrayofnatures); - // Define array $categ with categ with at least one qualified module - $filename[$i] = $modName; - $modules[$modName] = $objMod; + // Define array $categ with categ with at least one qualified module + $filename[$i] = $modName; + $modules[$modName] = $objMod; - // Gives the possibility to the module, to provide his own family info and position of this family - if (is_array($objMod->familyinfo) && !empty($objMod->familyinfo)) { - $familyinfo = array_merge($familyinfo, $objMod->familyinfo); - $familykey = key($objMod->familyinfo); - } else { - $familykey = $objMod->family; - } + // Gives the possibility to the module, to provide his own family info and position of this family + if (is_array($objMod->familyinfo) && !empty($objMod->familyinfo)) { + $familyinfo = array_merge($familyinfo, $objMod->familyinfo); + $familykey = key($objMod->familyinfo); + } else { + $familykey = $objMod->family; + } - $moduleposition = ($objMod->module_position ? $objMod->module_position : '50'); - if ($moduleposition == '50' && ($objMod->isCoreOrExternalModule() == 'external')) - { - $moduleposition = '80'; // External modules at end by default - } + $moduleposition = ($objMod->module_position ? $objMod->module_position : '50'); + if ($moduleposition == '50' && ($objMod->isCoreOrExternalModule() == 'external')) + { + $moduleposition = '80'; // External modules at end by default + } - // Add list of warnings to show into arrayofwarnings and arrayofwarningsext - if (!empty($objMod->warnings_activation)) - { - $arrayofwarnings[$modName] = $objMod->warnings_activation; - } - if (!empty($objMod->warnings_activation_ext)) - { - $arrayofwarningsext[$modName] = $objMod->warnings_activation_ext; - } + // Add list of warnings to show into arrayofwarnings and arrayofwarningsext + if (!empty($objMod->warnings_activation)) + { + $arrayofwarnings[$modName] = $objMod->warnings_activation; + } + if (!empty($objMod->warnings_activation_ext)) + { + $arrayofwarningsext[$modName] = $objMod->warnings_activation_ext; + } - $familyposition = $familyinfo[$familykey]['position']; - if ($external) - { - // TODO Find a solution so modules with their own family are always at end - //var_dump($familyposition); - //$familyposition += 100; - } + $familyposition = $familyinfo[$familykey]['position']; + if ($external) + { + // TODO Find a solution so modules with their own family are always at end + //var_dump($familyposition); + //$familyposition += 100; + } - $orders[$i] = $familyposition."_".$familykey."_".$moduleposition."_".$j; // Sort by family, then by module position then number - $dirmod[$i] = $dir; - //print $i.'-'.$dirmod[$i].'
    '; - // Set categ[$i] - $specialstring = 'unknown'; - if ($objMod->version == 'development' || $objMod->version == 'experimental') $specialstring = 'expdev'; - if (isset($categ[$specialstring])) $categ[$specialstring]++; // Array of all different modules categories - else $categ[$specialstring] = 1; - $j++; - $i++; - } - else dol_syslog("Module ".get_class($objMod)." not qualified"); + $orders[$i] = $familyposition."_".$familykey."_".$moduleposition."_".$j; // Sort by family, then by module position then number + $dirmod[$i] = $dir; + //print $i.'-'.$dirmod[$i].'
    '; + // Set categ[$i] + $specialstring = 'unknown'; + if ($objMod->version == 'development' || $objMod->version == 'experimental') $specialstring = 'expdev'; + if (isset($categ[$specialstring])) $categ[$specialstring]++; // Array of all different modules categories + else $categ[$specialstring] = 1; + $j++; + $i++; + } + else dol_syslog("Module ".get_class($objMod)." not qualified"); + } + catch (Exception $e) + { + dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR); } - catch (Exception $e) - { - dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR); - } } - else + else { print "Warning bad descriptor file : ".$dir.$file." (Class ".$modName." not found into file)
    "; } } - catch (Exception $e) - { - dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR); - } - } - } + catch (Exception $e) + { + dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR); + } + } + } } closedir($handle); } @@ -496,450 +496,450 @@ print "
    \n"; if ($mode == 'common') { - dol_set_focus('#search_keyword'); + dol_set_focus('#search_keyword'); - print '
    '; - if ($optioncss != '') print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + if ($optioncss != '') print ''; + print ''; + print ''; + print ''; + print ''; - dol_fiche_head($head, $mode, '', -1); + dol_fiche_head($head, $mode, '', -1); - $moreforfilter = ''; - $moreforfilter .= '
    '; - $moreforfilter .= $langs->trans('Keyword').': '; - $moreforfilter .= '
    '; - $moreforfilter .= '
    '; - $moreforfilter .= $langs->trans('Origin').': '.$form->selectarray('search_nature', $arrayofnatures, dol_escape_htmltag($search_nature), 1); - $moreforfilter .= '
    '; - if (!empty($conf->global->MAIN_FEATURES_LEVEL)) - { - $array_version = array('stable'=>$langs->transnoentitiesnoconv("Stable")); - if ($conf->global->MAIN_FEATURES_LEVEL < 0) $array_version['deprecated'] = $langs->trans("Deprecated"); - if ($conf->global->MAIN_FEATURES_LEVEL > 0) $array_version['experimental'] = $langs->trans("Experimental"); - if ($conf->global->MAIN_FEATURES_LEVEL > 1) $array_version['development'] = $langs->trans("Development"); - $moreforfilter .= '
    '; - $moreforfilter .= $langs->trans('Version').': '.$form->selectarray('search_version', $array_version, $search_version, 1); - $moreforfilter .= '
    '; - } - $moreforfilter .= '
    '; - $moreforfilter .= $langs->trans('Status').': '.$form->selectarray('search_status', array('active'=>$langs->transnoentitiesnoconv("Enabled"), 'disabled'=>$langs->transnoentitiesnoconv("Disabled")), $search_status, 1); - $moreforfilter .= '
    '; - $moreforfilter .= ' '; - $moreforfilter .= '
    '; - $moreforfilter .= ''; - $moreforfilter .= ' '; - $moreforfilter .= ''; - $moreforfilter .= '
    '; + $moreforfilter = ''; + $moreforfilter .= '
    '; + $moreforfilter .= $langs->trans('Keyword').': '; + $moreforfilter .= '
    '; + $moreforfilter .= '
    '; + $moreforfilter .= $langs->trans('Origin').': '.$form->selectarray('search_nature', $arrayofnatures, dol_escape_htmltag($search_nature), 1); + $moreforfilter .= '
    '; + if (!empty($conf->global->MAIN_FEATURES_LEVEL)) + { + $array_version = array('stable'=>$langs->transnoentitiesnoconv("Stable")); + if ($conf->global->MAIN_FEATURES_LEVEL < 0) $array_version['deprecated'] = $langs->trans("Deprecated"); + if ($conf->global->MAIN_FEATURES_LEVEL > 0) $array_version['experimental'] = $langs->trans("Experimental"); + if ($conf->global->MAIN_FEATURES_LEVEL > 1) $array_version['development'] = $langs->trans("Development"); + $moreforfilter .= '
    '; + $moreforfilter .= $langs->trans('Version').': '.$form->selectarray('search_version', $array_version, $search_version, 1); + $moreforfilter .= '
    '; + } + $moreforfilter .= '
    '; + $moreforfilter .= $langs->trans('Status').': '.$form->selectarray('search_status', array('active'=>$langs->transnoentitiesnoconv("Enabled"), 'disabled'=>$langs->transnoentitiesnoconv("Disabled")), $search_status, 1); + $moreforfilter .= '
    '; + $moreforfilter .= ' '; + $moreforfilter .= '
    '; + $moreforfilter .= ''; + $moreforfilter .= ' '; + $moreforfilter .= ''; + $moreforfilter .= '
    '; - if (!empty($moreforfilter)) - { - print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - } + if (!empty($moreforfilter)) + { + print $moreforfilter; + $parameters = array(); + $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + } - $moreforfilter = ''; + $moreforfilter = ''; - print '

    '; + print '

    '; - $object = new stdClass(); - $parameters = array(); - $reshook = $hookmanager->executeHooks('insertExtraHeader', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks - if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + $object = new stdClass(); + $parameters = array(); + $reshook = $hookmanager->executeHooks('insertExtraHeader', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - // Show list of modules - //$conf->global->MAIN_USE_KANBAN_FOR_MODULES=1; - $oldfamily = ''; + // Show list of modules + //$conf->global->MAIN_USE_KANBAN_FOR_MODULES=1; + $oldfamily = ''; - foreach ($orders as $key => $value) - { - $tab = explode('_', $value); - $familykey = $tab[1]; - $module_position = $tab[2]; + foreach ($orders as $key => $value) + { + $tab = explode('_', $value); + $familykey = $tab[1]; + $module_position = $tab[2]; - $modName = $filename[$key]; - $objMod = $modules[$modName]; + $modName = $filename[$key]; + $objMod = $modules[$modName]; - //print $objMod->name." - ".$key." - ".$objMod->version."
    "; - if ($mode == 'expdev' && $objMod->version != 'development' && $objMod->version != 'experimental') continue; // Discard if not for current tab + //print $objMod->name." - ".$key." - ".$objMod->version."
    "; + if ($mode == 'expdev' && $objMod->version != 'development' && $objMod->version != 'experimental') continue; // Discard if not for current tab - if (!$objMod->getName()) - { - dol_syslog("Error for module ".$key." - Property name of module looks empty", LOG_WARNING); - continue; - } + if (!$objMod->getName()) + { + dol_syslog("Error for module ".$key." - Property name of module looks empty", LOG_WARNING); + continue; + } - $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod))); + $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod))); - // Check filters - $modulename = $objMod->getName(); - $moduletechnicalname = $objMod->name; - $moduledesc = $objMod->getDesc(); - $moduledesclong = $objMod->getDescLong(); - $moduleauthor = $objMod->getPublisher(); + // Check filters + $modulename = $objMod->getName(); + $moduletechnicalname = $objMod->name; + $moduledesc = $objMod->getDesc(); + $moduledesclong = $objMod->getDescLong(); + $moduleauthor = $objMod->getPublisher(); - // We discard showing according to filters - if ($search_keyword) - { - $qualified = 0; - if (preg_match('/'.preg_quote($search_keyword).'/i', $modulename) - || preg_match('/'.preg_quote($search_keyword).'/i', $moduletechnicalname) - || preg_match('/'.preg_quote($search_keyword).'/i', $moduledesc) - || preg_match('/'.preg_quote($search_keyword).'/i', $moduledesclong) - || preg_match('/'.preg_quote($search_keyword).'/i', $moduleauthor) - ) $qualified = 1; - if (!$qualified) continue; - } - if ($search_status) - { - if ($search_status == 'active' && empty($conf->global->$const_name)) continue; - if ($search_status == 'disabled' && !empty($conf->global->$const_name)) continue; - } - if ($search_nature) - { - if (preg_match('/^external/', $search_nature) && $objMod->isCoreOrExternalModule() != 'external') continue; - if (preg_match('/^external_(.*)$/', $search_nature, $reg)) - { - //print $reg[1].'-'.dol_escape_htmltag($objMod->getPublisher()); - $publisher = dol_escape_htmltag($objMod->getPublisher()); - if ($reg[1] && dol_escape_htmltag($reg[1]) != $publisher) continue; - if (!$reg[1] && !empty($publisher)) continue; - } - if ($search_nature == 'core' && $objMod->isCoreOrExternalModule() == 'external') continue; - } - if ($search_version) - { - if (($objMod->version == 'development' || $objMod->version == 'experimental' || preg_match('/deprecated/', $objMod->version)) && $search_version == 'stable') continue; - if ($objMod->version != 'development' && ($search_version == 'development')) continue; - if ($objMod->version != 'experimental' && ($search_version == 'experimental')) continue; - if (!preg_match('/deprecated/', $objMod->version) && ($search_version == 'deprecated')) continue; - } + // We discard showing according to filters + if ($search_keyword) + { + $qualified = 0; + if (preg_match('/'.preg_quote($search_keyword).'/i', $modulename) + || preg_match('/'.preg_quote($search_keyword).'/i', $moduletechnicalname) + || preg_match('/'.preg_quote($search_keyword).'/i', $moduledesc) + || preg_match('/'.preg_quote($search_keyword).'/i', $moduledesclong) + || preg_match('/'.preg_quote($search_keyword).'/i', $moduleauthor) + ) $qualified = 1; + if (!$qualified) continue; + } + if ($search_status) + { + if ($search_status == 'active' && empty($conf->global->$const_name)) continue; + if ($search_status == 'disabled' && !empty($conf->global->$const_name)) continue; + } + if ($search_nature) + { + if (preg_match('/^external/', $search_nature) && $objMod->isCoreOrExternalModule() != 'external') continue; + if (preg_match('/^external_(.*)$/', $search_nature, $reg)) + { + //print $reg[1].'-'.dol_escape_htmltag($objMod->getPublisher()); + $publisher = dol_escape_htmltag($objMod->getPublisher()); + if ($reg[1] && dol_escape_htmltag($reg[1]) != $publisher) continue; + if (!$reg[1] && !empty($publisher)) continue; + } + if ($search_nature == 'core' && $objMod->isCoreOrExternalModule() == 'external') continue; + } + if ($search_version) + { + if (($objMod->version == 'development' || $objMod->version == 'experimental' || preg_match('/deprecated/', $objMod->version)) && $search_version == 'stable') continue; + if ($objMod->version != 'development' && ($search_version == 'development')) continue; + if ($objMod->version != 'experimental' && ($search_version == 'experimental')) continue; + if (!preg_match('/deprecated/', $objMod->version) && ($search_version == 'deprecated')) continue; + } - // Load all lang files of module - if (isset($objMod->langfiles) && is_array($objMod->langfiles)) - { - foreach ($objMod->langfiles as $domain) - { - $langs->load($domain); - } - } + // Load all lang files of module + if (isset($objMod->langfiles) && is_array($objMod->langfiles)) + { + foreach ($objMod->langfiles as $domain) + { + $langs->load($domain); + } + } - // Print a separator if we change family - if ($familykey != $oldfamily) { - if ($oldfamily) { - print '

    '; - } - - $familytext = empty($familyinfo[$familykey]['label']) ? $familykey : $familyinfo[$familykey]['label']; - print load_fiche_titre($familytext, '', ''); - - if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { - print '
    '; - } else { - print '
    '; - print ''."\n"; + // Print a separator if we change family + if ($familykey != $oldfamily) { + if ($oldfamily) { + print '

    '; } - $atleastoneforfamily = 0; - } + $familytext = empty($familyinfo[$familykey]['label']) ? $familykey : $familyinfo[$familykey]['label']; + print load_fiche_titre($familytext, '', ''); - $atleastoneforfamily++; + if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { + print '
    '; + } else { + print '
    '; + print ''."\n"; + } - if ($familykey != $oldfamily) - { - $familytext = empty($familyinfo[$familykey]['label']) ? $familykey : $familyinfo[$familykey]['label']; - $oldfamily = $familykey; - } + $atleastoneforfamily = 0; + } - // Version (with picto warning or not) - $version = $objMod->getVersion(0); - $versiontrans = ''; - if (preg_match('/development/i', $version)) $versiontrans .= img_warning($langs->trans("Development"), 'style="float: left"'); - if (preg_match('/experimental/i', $version)) $versiontrans .= img_warning($langs->trans("Experimental"), 'style="float: left"'); - if (preg_match('/deprecated/i', $version)) $versiontrans .= img_warning($langs->trans("Deprecated"), 'style="float: left"'); - $versiontrans .= $objMod->getVersion(1); + $atleastoneforfamily++; - // Define imginfo - $imginfo = "info"; - if ($objMod->isCoreOrExternalModule() == 'external') - { - $imginfo = "info_black"; - } + if ($familykey != $oldfamily) + { + $familytext = empty($familyinfo[$familykey]['label']) ? $familykey : $familyinfo[$familykey]['label']; + $oldfamily = $familykey; + } - if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { - // Output Kanban - print $objMod->getKanbanView(); - } else { - print ''."\n"; - if (!empty($conf->global->MAIN_MODULES_SHOW_LINENUMBERS)) print ''; + // Version (with picto warning or not) + $version = $objMod->getVersion(0); + $versiontrans = ''; + if (preg_match('/development/i', $version)) $versiontrans .= img_warning($langs->trans("Development"), 'style="float: left"'); + if (preg_match('/experimental/i', $version)) $versiontrans .= img_warning($langs->trans("Experimental"), 'style="float: left"'); + if (preg_match('/deprecated/i', $version)) $versiontrans .= img_warning($langs->trans("Deprecated"), 'style="float: left"'); + $versiontrans .= $objMod->getVersion(1); - // Picto + Name of module - print ' \n"; + // Define imginfo + $imginfo = "info"; + if ($objMod->isCoreOrExternalModule() == 'external') + { + $imginfo = "info_black"; + } - // Desc - print '\n"; + if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { + // Output Kanban + print $objMod->getKanbanView(); + } else { + print ''."\n"; + if (!empty($conf->global->MAIN_MODULES_SHOW_LINENUMBERS)) print ''; - // Help - print ''; - - // Version - print '\n"; - - // Activate/Disable and Setup (2 columns) - if (!empty($conf->global->$const_name)) // If module is already activated - { - $disableSetup = 0; - - // Link enable/disabme - print ''."\n"; - - // Link config - print ''; - } - else // Module not yet activated + // Picto + Name of module + print ' \n"; + if (preg_match('/^\//i', $objMod->picto)) print img_picto($alttext, $objMod->picto, 'class="valignmiddle pictomodule"', 1); + else print img_object($alttext, $objMod->picto, 'class="valignmiddle pictomodule"'); + } + else + { + print img_object($alttext, 'generic', 'class="valignmiddle"'); + } + print ' '.$objMod->getName().''; + print "\n"; - // Link config - print ''; - } + // Desc + print '\n"; - print "\n"; - } - } + // Help + print ''; - if ($oldfamily) - { - if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { - print ''; - } else { - print "
    '.++$linenum.''; - $alttext = ''; - //if (is_array($objMod->need_dolibarr_version)) $alttext.=($alttext?' - ':'').'Dolibarr >= '.join('.',$objMod->need_dolibarr_version); - //if (is_array($objMod->phpmin)) $alttext.=($alttext?' - ':'').'PHP >= '.join('.',$objMod->phpmin); - if (!empty($objMod->picto)) - { - if (preg_match('/^\//i', $objMod->picto)) print img_picto($alttext, $objMod->picto, 'class="valignmiddle pictomodule"', 1); - else print img_object($alttext, $objMod->picto, 'class="valignmiddle pictomodule"'); - } - else - { - print img_object($alttext, 'generic', 'class="valignmiddle"'); - } - print ' '.$objMod->getName().''; - print "'; - print nl2br($objMod->getDesc()); - print "
    '.++$linenum.''; - //print $form->textwithpicto('', $text, 1, $imginfo, 'minheight20', 0, 2, 1); - print ''.img_picto($langs->trans("ClickToShowDescription"), $imginfo).''; - print ''; - print $versiontrans; - if (!empty($conf->global->CHECKLASTVERSION_EXTERNALMODULE)) { - require_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php'; - if (!empty($objMod->url_last_version)) { - $newversion = getURLContent($objMod->url_last_version); - if (isset($newversion['content'])) { - if (version_compare($newversion['content'], $versiontrans) > 0) { - print " ".$newversion['content'].""; - } - } - } - } - print "'; - if (!empty($arrayofwarnings[$modName])) - { - print ''."\n"; - } - if (!empty($objMod->disabled)) - { - print $langs->trans("Disabled"); - } - elseif (!empty($objMod->always_enabled) || ((!empty($conf->multicompany->enabled) && $objMod->core_enabled) && ($user->entity || $conf->entity != 1))) - { - if (method_exists($objMod, 'alreadyUsed') && $objMod->alreadyUsed()) print $langs->trans("Used"); - else { - print img_picto($langs->trans("Required"), 'switch_on', '', false, 0, 0, '', 'opacitymedium'); - //print $langs->trans("Required"); - } - if (!empty($conf->multicompany->enabled) && $user->entity) $disableSetup++; - } - else - { - if (!empty($objMod->warnings_unactivation[$mysoc->country_code]) && method_exists($objMod, 'alreadyUsed') && $objMod->alreadyUsed()) { - print 'warnings_unactivation[$mysoc->country_code].'&value='.$modName.'&mode='.$mode.$param.'">'; - print img_picto($langs->trans("Activated"), 'switch_on'); - print ''; - } - else { - print ''; - print img_picto($langs->trans("Activated"), 'switch_on'); - print ''; - } - } - print ''; - if (!empty($objMod->config_page_url) && !$disableSetup) - { - $backtourlparam = ''; - if ($search_keyword != '') $backtourlparam .= ($backtourlparam ? '&' : '?').'search_keyword='.$search_keyword; // No urlencode here, done later - if ($search_nature > -1) $backtourlparam .= ($backtourlparam ? '&' : '?').'search_nature='.$search_nature; - if ($search_version > -1) $backtourlparam .= ($backtourlparam ? '&' : '?').'search_version='.$search_version; - if ($search_status > -1) $backtourlparam .= ($backtourlparam ? '&' : '?').'search_status='.$search_status; - $backtourl = $_SERVER["PHP_SELF"].$backtourlparam; - - $regs = array(); - if (is_array($objMod->config_page_url)) - { - $i = 0; - foreach ($objMod->config_page_url as $page) - { - $urlpage = $page; - if ($i++) - { - print ''.img_picto(ucfirst($page), "setup").''; - // print ''.ucfirst($page).' '; - } - else - { - if (preg_match('/^([^@]+)@([^@]+)$/i', $urlpage, $regs)) - { - $urltouse = dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1); - print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; - } - else - { - $urltouse = $urlpage; - print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; - } - } - } - } - elseif (preg_match('/^([^@]+)@([^@]+)$/i', $objMod->config_page_url, $regs)) - { - print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; - } - else - { - print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; - } - } - else - { - print img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"'); - } - print ''; + $alttext = ''; + //if (is_array($objMod->need_dolibarr_version)) $alttext.=($alttext?' - ':'').'Dolibarr >= '.join('.',$objMod->need_dolibarr_version); + //if (is_array($objMod->phpmin)) $alttext.=($alttext?' - ':'').'PHP >= '.join('.',$objMod->phpmin); + if (!empty($objMod->picto)) { - // Link enable/disable - print ''; - if (!empty($objMod->always_enabled)) - { - // Should never happened - } - elseif (!empty($objMod->disabled)) - { - print $langs->trans("Disabled"); - } - else - { - // Module qualified for activation - $warningmessage = ''; - if (!empty($arrayofwarnings[$modName])) - { - print ''."\n"; - foreach ($arrayofwarnings[$modName] as $keycountry => $cursorwarningmessage) - { - if (preg_match('/^always/', $keycountry) || ($mysoc->country_code && preg_match('/^'.$mysoc->country_code.'/', $keycountry))) - { - $warningmessage .= ($warningmessage ? "\n" : "").$langs->trans($cursorwarningmessage, $objMod->getName(), $mysoc->country_code); - } - } - } - if ($objMod->isCoreOrExternalModule() == 'external' && !empty($arrayofwarningsext)) - { - print ''."\n"; - foreach ($arrayofwarningsext as $keymodule => $arrayofwarningsextbycountry) - { - $keymodulelowercase = strtolower(preg_replace('/^mod/', '', $keymodule)); - if (in_array($keymodulelowercase, $conf->modules)) // If module that request warning is on - { - foreach ($arrayofwarningsextbycountry as $keycountry => $cursorwarningmessage) - { - if (preg_match('/^always/', $keycountry) || ($mysoc->country_code && preg_match('/^'.$mysoc->country_code.'/', $keycountry))) - { - $warningmessage .= ($warningmessage ? "\n" : "").$langs->trans($cursorwarningmessage, $objMod->getName(), $mysoc->country_code, $modules[$keymodule]->getName()); - $warningmessage .= ($warningmessage ? "\n" : "").($warningmessage ? "\n" : "").$langs->trans("Module").' : '.$objMod->getName(); - if (!empty($objMod->editor_name)) $warningmessage .= ($warningmessage ? "\n" : "").$langs->trans("Publisher").' : '.$objMod->editor_name; - if (!empty($objMod->editor_name)) $warningmessage .= ($warningmessage ? "\n" : "").$langs->trans("ModuleTriggeringThisWarning").' : '.$modules[$keymodule]->getName(); - } - } - } - } - } - print ''."\n"; - print ''; - print img_picto($langs->trans("Disabled"), 'switch_off'); - print "\n"; - } - print "'.img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"').''; + print nl2br($objMod->getDesc()); + print "
    '; + //print $form->textwithpicto('', $text, 1, $imginfo, 'minheight20', 0, 2, 1); + print ''.img_picto($langs->trans("ClickToShowDescription"), $imginfo).''; + print '
    \n"; - print '
    '; - } - } + // Version + print ''; + print $versiontrans; + if (!empty($conf->global->CHECKLASTVERSION_EXTERNALMODULE)) { + require_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php'; + if (!empty($objMod->url_last_version)) { + $newversion = getURLContent($objMod->url_last_version); + if (isset($newversion['content'])) { + if (version_compare($newversion['content'], $versiontrans) > 0) { + print " ".$newversion['content'].""; + } + } + } + } + print "\n"; - dol_fiche_end(); + // Activate/Disable and Setup (2 columns) + if (!empty($conf->global->$const_name)) // If module is already activated + { + $disableSetup = 0; - print '
    '; + // Link enable/disabme + print ''; + if (!empty($arrayofwarnings[$modName])) + { + print ''."\n"; + } + if (!empty($objMod->disabled)) + { + print $langs->trans("Disabled"); + } + elseif (!empty($objMod->always_enabled) || ((!empty($conf->multicompany->enabled) && $objMod->core_enabled) && ($user->entity || $conf->entity != 1))) + { + if (method_exists($objMod, 'alreadyUsed') && $objMod->alreadyUsed()) print $langs->trans("Used"); + else { + print img_picto($langs->trans("Required"), 'switch_on', '', false, 0, 0, '', 'opacitymedium'); + //print $langs->trans("Required"); + } + if (!empty($conf->multicompany->enabled) && $user->entity) $disableSetup++; + } + else + { + if (!empty($objMod->warnings_unactivation[$mysoc->country_code]) && method_exists($objMod, 'alreadyUsed') && $objMod->alreadyUsed()) { + print 'warnings_unactivation[$mysoc->country_code].'&value='.$modName.'&mode='.$mode.$param.'">'; + print img_picto($langs->trans("Activated"), 'switch_on'); + print ''; + } + else { + print ''; + print img_picto($langs->trans("Activated"), 'switch_on'); + print ''; + } + } + print ''."\n"; - // Show warning about external users - print info_admin(showModulesExludedForExternal($modules))."\n"; + // Link config + print ''; + if (!empty($objMod->config_page_url) && !$disableSetup) + { + $backtourlparam = ''; + if ($search_keyword != '') $backtourlparam .= ($backtourlparam ? '&' : '?').'search_keyword='.$search_keyword; // No urlencode here, done later + if ($search_nature > -1) $backtourlparam .= ($backtourlparam ? '&' : '?').'search_nature='.$search_nature; + if ($search_version > -1) $backtourlparam .= ($backtourlparam ? '&' : '?').'search_version='.$search_version; + if ($search_status > -1) $backtourlparam .= ($backtourlparam ? '&' : '?').'search_status='.$search_status; + $backtourl = $_SERVER["PHP_SELF"].$backtourlparam; - print ''; + $regs = array(); + if (is_array($objMod->config_page_url)) + { + $i = 0; + foreach ($objMod->config_page_url as $page) + { + $urlpage = $page; + if ($i++) + { + print ''.img_picto(ucfirst($page), "setup").''; + // print ''.ucfirst($page).' '; + } + else + { + if (preg_match('/^([^@]+)@([^@]+)$/i', $urlpage, $regs)) + { + $urltouse = dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1); + print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + else + { + $urltouse = $urlpage; + print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + } + } + } + elseif (preg_match('/^([^@]+)@([^@]+)$/i', $objMod->config_page_url, $regs)) + { + print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + else + { + print ''.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 6px"').''; + } + } + else + { + print img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"'); + } + print ''; + } + else // Module not yet activated + { + // Link enable/disable + print ''; + if (!empty($objMod->always_enabled)) + { + // Should never happened + } + elseif (!empty($objMod->disabled)) + { + print $langs->trans("Disabled"); + } + else + { + // Module qualified for activation + $warningmessage = ''; + if (!empty($arrayofwarnings[$modName])) + { + print ''."\n"; + foreach ($arrayofwarnings[$modName] as $keycountry => $cursorwarningmessage) + { + if (preg_match('/^always/', $keycountry) || ($mysoc->country_code && preg_match('/^'.$mysoc->country_code.'/', $keycountry))) + { + $warningmessage .= ($warningmessage ? "\n" : "").$langs->trans($cursorwarningmessage, $objMod->getName(), $mysoc->country_code); + } + } + } + if ($objMod->isCoreOrExternalModule() == 'external' && !empty($arrayofwarningsext)) + { + print ''."\n"; + foreach ($arrayofwarningsext as $keymodule => $arrayofwarningsextbycountry) + { + $keymodulelowercase = strtolower(preg_replace('/^mod/', '', $keymodule)); + if (in_array($keymodulelowercase, $conf->modules)) // If module that request warning is on + { + foreach ($arrayofwarningsextbycountry as $keycountry => $cursorwarningmessage) + { + if (preg_match('/^always/', $keycountry) || ($mysoc->country_code && preg_match('/^'.$mysoc->country_code.'/', $keycountry))) + { + $warningmessage .= ($warningmessage ? "\n" : "").$langs->trans($cursorwarningmessage, $objMod->getName(), $mysoc->country_code, $modules[$keymodule]->getName()); + $warningmessage .= ($warningmessage ? "\n" : "").($warningmessage ? "\n" : "").$langs->trans("Module").' : '.$objMod->getName(); + if (!empty($objMod->editor_name)) $warningmessage .= ($warningmessage ? "\n" : "").$langs->trans("Publisher").' : '.$objMod->editor_name; + if (!empty($objMod->editor_name)) $warningmessage .= ($warningmessage ? "\n" : "").$langs->trans("ModuleTriggeringThisWarning").' : '.$modules[$keymodule]->getName(); + } + } + } + } + } + print ''."\n"; + print ''; + print img_picto($langs->trans("Disabled"), 'switch_off'); + print "\n"; + } + print "\n"; + + // Link config + print ''.img_picto($langs->trans("NothingToSetup"), "setup", 'class="opacitytransp" style="padding-right: 6px"').''; + } + + print "\n"; + } + } + + if ($oldfamily) + { + if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { + print '
    '; + } else { + print "\n"; + print '
    '; + } + } + + dol_fiche_end(); + + print '
    '; + + // Show warning about external users + print info_admin(showModulesExludedForExternal($modules))."\n"; + + print ''; } if ($mode == 'marketplace') { - dol_fiche_head($head, $mode, '', -1); + dol_fiche_head($head, $mode, '', -1); - // Marketplace - print '
    '; - print ''."\n"; - print ''."\n"; - print ''; - print ''; - print ''; - print ''; + // Marketplace + print '
    '; + print '
    '.$form->textwithpicto($langs->trans("Provider"), $langs->trans("WebSiteDesc")).''.$langs->trans("URL").'
    '."\n"; + print ''."\n"; + print ''; + print ''; + print ''; + print ''; - print ''."\n"; - $url = 'https://www.dolistore.com'; - print ''; - print ''; - print ''; - print ''; + print ''."\n"; + $url = 'https://www.dolistore.com'; + print ''; + print ''; + print ''; + print ''; - print "
    '.$form->textwithpicto($langs->trans("Provider"), $langs->trans("WebSiteDesc")).''.$langs->trans("URL").'
    '.$langs->trans("DoliStoreDesc").''.$url.'
    '.$langs->trans("DoliStoreDesc").''.$url.'
    \n"; + print "\n"; print '
    '; - dol_fiche_end(); + dol_fiche_end(); - print '
    '; + print '
    '; - if (empty($conf->global->MAIN_DISABLE_DOLISTORE_SEARCH) && $conf->global->MAIN_FEATURES_LEVEL >= 1) - { - // $options is array with filter criterias - //var_dump($options); - $dolistore->getRemoteCategories(); - $dolistore->getRemoteProducts($options); + if (empty($conf->global->MAIN_DISABLE_DOLISTORE_SEARCH) && $conf->global->MAIN_FEATURES_LEVEL >= 1) + { + // $options is array with filter criterias + //var_dump($options); + $dolistore->getRemoteCategories(); + $dolistore->getRemoteProducts($options); - print ''.$langs->trans('DOLISTOREdescriptionLong').'

    '; + print ''.$langs->trans('DOLISTOREdescriptionLong').'

    '; - $previouslink = $dolistore->get_previous_link(); - $nextlink = $dolistore->get_next_link(); + $previouslink = $dolistore->get_previous_link(); + $nextlink = $dolistore->get_next_link(); - print '
    ' + print '
    ' - ?> + ?>
    @@ -954,16 +954,16 @@ if ($mode == 'marketplace')
    '; - print ''; + print $previouslink; + print $nextlink; + print '
    '; + print ''; - print '
    '; - print '
    '; + print '
    '; + print '
    '; - ?> + ?>
      @@ -979,7 +979,7 @@ if ($mode == 'marketplace')
    global->MAIN_UPLOAD_DOC)) { - if ($user->admin) - { - $langs->load('other'); - print ' '; - print info_admin($langs->trans("ThisLimitIsDefinedInSetup", $max, $maxphptoshow, $maxphptoshowparam), 1); - } + if ($user->admin) + { + $langs->load('other'); + print ' '; + print info_admin($langs->trans("ThisLimitIsDefinedInSetup", $max, $maxphptoshow, $maxphptoshowparam), 1); + } } else { - print ' ('.$langs->trans("UploadDisabled").')'; + print ' ('.$langs->trans("UploadDisabled").')'; } print ''; diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php index 6ea1d949833..b9a958160d4 100644 --- a/htdocs/core/lib/modulebuilder.lib.php +++ b/htdocs/core/lib/modulebuilder.lib.php @@ -39,165 +39,165 @@ */ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir = '', $addfieldentry = array(), $delfieldentry = '') { - global $db, $langs; + global $db, $langs; - if (empty($objectname)) return -1; - if (empty($readdir)) $readdir = $destdir; + if (empty($objectname)) return -1; + if (empty($readdir)) $readdir = $destdir; - if (!empty($addfieldentry['arrayofkeyval']) && !is_array($addfieldentry['arrayofkeyval'])) - { - dol_print_error('', 'Bad parameter addfieldentry with a property arrayofkeyval defined but that is not an array.'); - return -1; - } + if (!empty($addfieldentry['arrayofkeyval']) && !is_array($addfieldentry['arrayofkeyval'])) + { + dol_print_error('', 'Bad parameter addfieldentry with a property arrayofkeyval defined but that is not an array.'); + return -1; + } - // Check parameters - if (count($addfieldentry) > 0) - { - if (empty($addfieldentry['name'])) - { - setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Name")), null, 'errors'); - return -2; - } - if (empty($addfieldentry['label'])) - { - setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Label")), null, 'errors'); - return -2; - } - if (!preg_match('/^(integer|price|sellist|varchar|double|text|html|duration)/', $addfieldentry['type']) - && !preg_match('/^(boolean|real|date|datetime|timestamp)$/', $addfieldentry['type'])) - { - setEventMessages($langs->trans('BadValueForType', $objectname), null, 'errors'); - return -2; - } - } + // Check parameters + if (count($addfieldentry) > 0) + { + if (empty($addfieldentry['name'])) + { + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Name")), null, 'errors'); + return -2; + } + if (empty($addfieldentry['label'])) + { + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Label")), null, 'errors'); + return -2; + } + if (!preg_match('/^(integer|price|sellist|varchar|double|text|html|duration)/', $addfieldentry['type']) + && !preg_match('/^(boolean|real|date|datetime|timestamp)$/', $addfieldentry['type'])) + { + setEventMessages($langs->trans('BadValueForType', $objectname), null, 'errors'); + return -2; + } + } - $pathoffiletoeditsrc = $readdir.'/class/'.strtolower($objectname).'.class.php'; - $pathoffiletoedittarget = $destdir.'/class/'.strtolower($objectname).'.class.php'.($readdir != $destdir ? '.new' : ''); - if (!dol_is_file($pathoffiletoeditsrc)) - { - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFileNotFound", $pathoffiletoeditsrc), null, 'errors'); - return -3; - } + $pathoffiletoeditsrc = $readdir.'/class/'.strtolower($objectname).'.class.php'; + $pathoffiletoedittarget = $destdir.'/class/'.strtolower($objectname).'.class.php'.($readdir != $destdir ? '.new' : ''); + if (!dol_is_file($pathoffiletoeditsrc)) + { + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFileNotFound", $pathoffiletoeditsrc), null, 'errors'); + return -3; + } - //$pathoffiletoedittmp=$destdir.'/class/'.strtolower($objectname).'.class.php.tmp'; - //dol_delete_file($pathoffiletoedittmp, 0, 1, 1); + //$pathoffiletoedittmp=$destdir.'/class/'.strtolower($objectname).'.class.php.tmp'; + //dol_delete_file($pathoffiletoedittmp, 0, 1, 1); - try - { - include_once $pathoffiletoeditsrc; - if (class_exists($objectname)) $object = new $objectname($db); - else return -4; + try + { + include_once $pathoffiletoeditsrc; + if (class_exists($objectname)) $object = new $objectname($db); + else return -4; - // Backup old file - dol_copy($pathoffiletoedittarget, $pathoffiletoedittarget.'.back', $newmask, 1); + // Backup old file + dol_copy($pathoffiletoedittarget, $pathoffiletoedittarget.'.back', $newmask, 1); - // Edit class files - $contentclass = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r'); + // Edit class files + $contentclass = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r'); - // Update ->fields (add or remove entries) - if (count($object->fields)) - { - if (is_array($addfieldentry) && count($addfieldentry)) - { + // Update ->fields (add or remove entries) + if (count($object->fields)) + { + if (is_array($addfieldentry) && count($addfieldentry)) + { $name = $addfieldentry['name']; - unset($addfieldentry['name']); + unset($addfieldentry['name']); - $object->fields[$name] = $addfieldentry; - } - if (!empty($delfieldentry)) - { - $name = $delfieldentry; - unset($object->fields[$name]); - } - } + $object->fields[$name] = $addfieldentry; + } + if (!empty($delfieldentry)) + { + $name = $delfieldentry; + unset($object->fields[$name]); + } + } - dol_sort_array($object->fields, 'position'); + dol_sort_array($object->fields, 'position'); - $i = 0; - $texttoinsert = '// BEGIN MODULEBUILDER PROPERTIES'."\n"; - $texttoinsert .= "\t".'/**'."\n"; - $texttoinsert .= "\t".' * @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor.'."\n"; - $texttoinsert .= "\t".' */'."\n"; - $texttoinsert .= "\t".'public $fields=array('."\n"; + $i = 0; + $texttoinsert = '// BEGIN MODULEBUILDER PROPERTIES'."\n"; + $texttoinsert .= "\t".'/**'."\n"; + $texttoinsert .= "\t".' * @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor.'."\n"; + $texttoinsert .= "\t".' */'."\n"; + $texttoinsert .= "\t".'public $fields=array('."\n"; - if (count($object->fields)) - { - foreach ($object->fields as $key => $val) - { - $i++; - $texttoinsert .= "\t\t'".$key."' => array('type'=>'".$val['type']."', 'label'=>'".$val['label']."',"; - $texttoinsert .= " 'enabled'=>".($val['enabled'] !== '' ? $val['enabled'] : 1).","; - $texttoinsert .= " 'position'=>".($val['position'] !== '' ? $val['position'] : 50).","; - $texttoinsert .= " 'notnull'=>".(empty($val['notnull']) ? 0 : $val['notnull']).","; - $texttoinsert .= " 'visible'=>".($val['visible'] !== '' ? $val['visible'] : -1).","; - if ($val['noteditable']) $texttoinsert .= " 'noteditable'=>'".$val['noteditable']."',"; - if ($val['default']) $texttoinsert .= " 'default'=>'".$val['default']."',"; - if ($val['index']) $texttoinsert .= " 'index'=>".$val['index'].","; - if ($val['foreignkey']) $texttoinsert .= " 'foreignkey'=>'".$val['foreignkey']."',"; - if ($val['searchall']) $texttoinsert .= " 'searchall'=>".$val['searchall'].","; - if ($val['isameasure']) $texttoinsert .= " 'isameasure'=>'".$val['isameasure']."',"; - if ($val['css']) $texttoinsert .= " 'css'=>'".$val['css']."',"; - if ($val['help']) $texttoinsert .= " 'help'=>\"".preg_replace('/"/', '', $val['help'])."\","; - if ($val['showoncombobox']) $texttoinsert .= " 'showoncombobox'=>'".$val['showoncombobox']."',"; - if ($val['disabled']) $texttoinsert .= " 'disabled'=>'".$val['disabled']."',"; - if ($val['arrayofkeyval']) - { - $texttoinsert .= " 'arrayofkeyval'=>array("; - $i = 0; - foreach ($val['arrayofkeyval'] as $key2 => $val2) - { - if ($i) $texttoinsert .= ", "; - $texttoinsert .= "'".$key2."'=>'".$val2."'"; - $i++; - } - $texttoinsert .= "),"; - } - if ($val['comment']) $texttoinsert .= " 'comment'=>\"".preg_replace('/"/', '', $val['comment'])."\""; + if (count($object->fields)) + { + foreach ($object->fields as $key => $val) + { + $i++; + $texttoinsert .= "\t\t'".$key."' => array('type'=>'".$val['type']."', 'label'=>'".$val['label']."',"; + $texttoinsert .= " 'enabled'=>".($val['enabled'] !== '' ? $val['enabled'] : 1).","; + $texttoinsert .= " 'position'=>".($val['position'] !== '' ? $val['position'] : 50).","; + $texttoinsert .= " 'notnull'=>".(empty($val['notnull']) ? 0 : $val['notnull']).","; + $texttoinsert .= " 'visible'=>".($val['visible'] !== '' ? $val['visible'] : -1).","; + if ($val['noteditable']) $texttoinsert .= " 'noteditable'=>'".$val['noteditable']."',"; + if ($val['default']) $texttoinsert .= " 'default'=>'".$val['default']."',"; + if ($val['index']) $texttoinsert .= " 'index'=>".$val['index'].","; + if ($val['foreignkey']) $texttoinsert .= " 'foreignkey'=>'".$val['foreignkey']."',"; + if ($val['searchall']) $texttoinsert .= " 'searchall'=>".$val['searchall'].","; + if ($val['isameasure']) $texttoinsert .= " 'isameasure'=>'".$val['isameasure']."',"; + if ($val['css']) $texttoinsert .= " 'css'=>'".$val['css']."',"; + if ($val['help']) $texttoinsert .= " 'help'=>\"".preg_replace('/"/', '', $val['help'])."\","; + if ($val['showoncombobox']) $texttoinsert .= " 'showoncombobox'=>'".$val['showoncombobox']."',"; + if ($val['disabled']) $texttoinsert .= " 'disabled'=>'".$val['disabled']."',"; + if ($val['arrayofkeyval']) + { + $texttoinsert .= " 'arrayofkeyval'=>array("; + $i = 0; + foreach ($val['arrayofkeyval'] as $key2 => $val2) + { + if ($i) $texttoinsert .= ", "; + $texttoinsert .= "'".$key2."'=>'".$val2."'"; + $i++; + } + $texttoinsert .= "),"; + } + if ($val['comment']) $texttoinsert .= " 'comment'=>\"".preg_replace('/"/', '', $val['comment'])."\""; - $texttoinsert .= "),\n"; - } - } + $texttoinsert .= "),\n"; + } + } - $texttoinsert .= "\t".');'."\n"; + $texttoinsert .= "\t".');'."\n"; //print ($texttoinsert);exit; - if (count($object->fields)) - { - //$typetotypephp=array('integer'=>'integer', 'duration'=>'integer', 'varchar'=>'string'); + if (count($object->fields)) + { + //$typetotypephp=array('integer'=>'integer', 'duration'=>'integer', 'varchar'=>'string'); - foreach ($object->fields as $key => $val) - { - $i++; - //$typephp=$typetotypephp[$val['type']]; - $texttoinsert .= "\t".'public $'.$key.";"; - //if ($key == 'rowid') $texttoinsert.= ' AUTO_INCREMENT PRIMARY KEY'; - //if ($key == 'entity') $texttoinsert.= ' DEFAULT 1'; - //$texttoinsert.= ($val['notnull']?' NOT NULL':''); - //if ($i < count($object->fields)) $texttoinsert.=";"; - $texttoinsert .= "\n"; - } - } + foreach ($object->fields as $key => $val) + { + $i++; + //$typephp=$typetotypephp[$val['type']]; + $texttoinsert .= "\t".'public $'.$key.";"; + //if ($key == 'rowid') $texttoinsert.= ' AUTO_INCREMENT PRIMARY KEY'; + //if ($key == 'entity') $texttoinsert.= ' DEFAULT 1'; + //$texttoinsert.= ($val['notnull']?' NOT NULL':''); + //if ($i < count($object->fields)) $texttoinsert.=";"; + $texttoinsert .= "\n"; + } + } - $texttoinsert .= "\t".'// END MODULEBUILDER PROPERTIES'; + $texttoinsert .= "\t".'// END MODULEBUILDER PROPERTIES'; - //print($texttoinsert);exit; + //print($texttoinsert);exit; - $contentclass = preg_replace('/\/\/ BEGIN MODULEBUILDER PROPERTIES.*END MODULEBUILDER PROPERTIES/ims', $texttoinsert, $contentclass); + $contentclass = preg_replace('/\/\/ BEGIN MODULEBUILDER PROPERTIES.*END MODULEBUILDER PROPERTIES/ims', $texttoinsert, $contentclass); - dol_mkdir(dirname($pathoffiletoedittarget)); + dol_mkdir(dirname($pathoffiletoedittarget)); - //file_put_contents($pathoffiletoedittmp, $contentclass); - file_put_contents(dol_osencode($pathoffiletoedittarget), $contentclass); - @chmod($pathoffiletoedittarget, octdec($newmask)); + //file_put_contents($pathoffiletoedittmp, $contentclass); + file_put_contents(dol_osencode($pathoffiletoedittarget), $contentclass); + @chmod($pathoffiletoedittarget, octdec($newmask)); - return $object; - } - catch (Exception $e) - { - print $e->getMessage(); - return -5; - } + return $object; + } + catch (Exception $e) + { + print $e->getMessage(); + return -5; + } } /** @@ -214,134 +214,134 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir = */ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = '', $object = null) { - global $db, $langs; + global $db, $langs; - $error = 0; + $error = 0; - if (empty($objectname)) return -1; - if (empty($readdir)) $readdir = $destdir; + if (empty($objectname)) return -1; + if (empty($readdir)) $readdir = $destdir; - $pathoffiletoclasssrc = $readdir.'/class/'.strtolower($objectname).'.class.php'; + $pathoffiletoclasssrc = $readdir.'/class/'.strtolower($objectname).'.class.php'; - // Edit .sql file - $pathoffiletoeditsrc = $readdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql'; - $pathoffiletoedittarget = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql'.($readdir != $destdir ? '.new' : ''); + // Edit .sql file + $pathoffiletoeditsrc = $readdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql'; + $pathoffiletoedittarget = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql'.($readdir != $destdir ? '.new' : ''); if (!dol_is_file($pathoffiletoeditsrc)) - { - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFileNotFound", $pathoffiletoeditsrc), null, 'errors'); - return -1; - } + { + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFileNotFound", $pathoffiletoeditsrc), null, 'errors'); + return -1; + } - // Load object from myobject.class.php - try - { - if (!is_object($object)) - { - include_once $pathoffiletoclasssrc; - if (class_exists($objectname)) $object = new $objectname($db); - else return -1; - } - } - catch (Exception $e) - { - print $e->getMessage(); - } + // Load object from myobject.class.php + try + { + if (!is_object($object)) + { + include_once $pathoffiletoclasssrc; + if (class_exists($objectname)) $object = new $objectname($db); + else return -1; + } + } + catch (Exception $e) + { + print $e->getMessage(); + } - // Backup old file - dol_copy($pathoffiletoedittarget, $pathoffiletoedittarget.'.back', $newmask, 1); + // Backup old file + dol_copy($pathoffiletoedittarget, $pathoffiletoedittarget.'.back', $newmask, 1); - $contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r'); + $contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r'); - $i = 0; - $texttoinsert = '-- BEGIN MODULEBUILDER FIELDS'."\n"; - if (count($object->fields)) - { - foreach ($object->fields as $key => $val) - { - $i++; + $i = 0; + $texttoinsert = '-- BEGIN MODULEBUILDER FIELDS'."\n"; + if (count($object->fields)) + { + foreach ($object->fields as $key => $val) + { + $i++; - $type = $val['type']; - $type = preg_replace('/:.*$/', '', $type); // For case type = 'integer:Societe:societe/class/societe.class.php' + $type = $val['type']; + $type = preg_replace('/:.*$/', '', $type); // For case type = 'integer:Societe:societe/class/societe.class.php' - if ($type == 'html') $type = 'text'; // html modulebuilder type is a text type in database - elseif ($type == 'price') $type = 'double'; // html modulebuilder type is a text type in database - elseif (in_array($type, array('link', 'sellist', 'duration'))) $type = 'integer'; - $texttoinsert .= "\t".$key." ".$type; - if ($key == 'rowid') $texttoinsert .= ' AUTO_INCREMENT PRIMARY KEY'; - if ($key == 'entity') $texttoinsert .= ' DEFAULT 1'; - else - { - if ($val['default'] != '') - { - if (preg_match('/^null$/i', $val['default'])) $texttoinsert .= " DEFAULT NULL"; - elseif (preg_match('/varchar/', $type)) $texttoinsert .= " DEFAULT '".$db->escape($val['default'])."'"; - else $texttoinsert .= (($val['default'] > 0) ? ' DEFAULT '.$val['default'] : ''); - } - } - $texttoinsert .= (($val['notnull'] > 0) ? ' NOT NULL' : ''); - if ($i < count($object->fields)) $texttoinsert .= ", "; - $texttoinsert .= "\n"; - } - } - $texttoinsert .= "\t".'-- END MODULEBUILDER FIELDS'; + if ($type == 'html') $type = 'text'; // html modulebuilder type is a text type in database + elseif ($type == 'price') $type = 'double'; // html modulebuilder type is a text type in database + elseif (in_array($type, array('link', 'sellist', 'duration'))) $type = 'integer'; + $texttoinsert .= "\t".$key." ".$type; + if ($key == 'rowid') $texttoinsert .= ' AUTO_INCREMENT PRIMARY KEY'; + if ($key == 'entity') $texttoinsert .= ' DEFAULT 1'; + else + { + if ($val['default'] != '') + { + if (preg_match('/^null$/i', $val['default'])) $texttoinsert .= " DEFAULT NULL"; + elseif (preg_match('/varchar/', $type)) $texttoinsert .= " DEFAULT '".$db->escape($val['default'])."'"; + else $texttoinsert .= (($val['default'] > 0) ? ' DEFAULT '.$val['default'] : ''); + } + } + $texttoinsert .= (($val['notnull'] > 0) ? ' NOT NULL' : ''); + if ($i < count($object->fields)) $texttoinsert .= ", "; + $texttoinsert .= "\n"; + } + } + $texttoinsert .= "\t".'-- END MODULEBUILDER FIELDS'; - $contentsql = preg_replace('/-- BEGIN MODULEBUILDER FIELDS.*END MODULEBUILDER FIELDS/ims', $texttoinsert, $contentsql); + $contentsql = preg_replace('/-- BEGIN MODULEBUILDER FIELDS.*END MODULEBUILDER FIELDS/ims', $texttoinsert, $contentsql); - $result = file_put_contents($pathoffiletoedittarget, $contentsql); - if ($result) - { - @chmod($pathoffiletoedittarget, octdec($newmask)); - } - else - { - $error++; - } + $result = file_put_contents($pathoffiletoedittarget, $contentsql); + if ($result) + { + @chmod($pathoffiletoedittarget, octdec($newmask)); + } + else + { + $error++; + } - // Edit .key.sql file - $pathoffiletoeditsrc = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql'; - $pathoffiletoedittarget = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql'.($readdir != $destdir ? '.new' : ''); + // Edit .key.sql file + $pathoffiletoeditsrc = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql'; + $pathoffiletoedittarget = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql'.($readdir != $destdir ? '.new' : ''); - $contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r'); + $contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r'); - $i = 0; - $texttoinsert = '-- BEGIN MODULEBUILDER INDEXES'."\n"; - if (count($object->fields)) - { - foreach ($object->fields as $key => $val) - { - $i++; - if (!empty($val['index'])) - { - $texttoinsert .= "ALTER TABLE llx_".strtolower($module).'_'.strtolower($objectname)." ADD INDEX idx_".strtolower($module).'_'.strtolower($objectname)."_".$key." (".$key.");"; - $texttoinsert .= "\n"; - } - if (!empty($val['foreignkey'])) - { - $tmp = explode('.', $val['foreignkey']); - if (!empty($tmp[0]) && !empty($tmp[1])) - { - $texttoinsert .= "ALTER TABLE llx_".strtolower($module).'_'.strtolower($objectname)." ADD CONSTRAINT llx_".strtolower($module).'_'.strtolower($objectname)."_".$key." FOREIGN KEY (".$key.") REFERENCES llx_".preg_replace('/^llx_/', '', $tmp[0])."(".$tmp[1].");"; - $texttoinsert .= "\n"; - } - } - } - } - $texttoinsert .= '-- END MODULEBUILDER INDEXES'; + $i = 0; + $texttoinsert = '-- BEGIN MODULEBUILDER INDEXES'."\n"; + if (count($object->fields)) + { + foreach ($object->fields as $key => $val) + { + $i++; + if (!empty($val['index'])) + { + $texttoinsert .= "ALTER TABLE llx_".strtolower($module).'_'.strtolower($objectname)." ADD INDEX idx_".strtolower($module).'_'.strtolower($objectname)."_".$key." (".$key.");"; + $texttoinsert .= "\n"; + } + if (!empty($val['foreignkey'])) + { + $tmp = explode('.', $val['foreignkey']); + if (!empty($tmp[0]) && !empty($tmp[1])) + { + $texttoinsert .= "ALTER TABLE llx_".strtolower($module).'_'.strtolower($objectname)." ADD CONSTRAINT llx_".strtolower($module).'_'.strtolower($objectname)."_".$key." FOREIGN KEY (".$key.") REFERENCES llx_".preg_replace('/^llx_/', '', $tmp[0])."(".$tmp[1].");"; + $texttoinsert .= "\n"; + } + } + } + } + $texttoinsert .= '-- END MODULEBUILDER INDEXES'; - $contentsql = preg_replace('/-- BEGIN MODULEBUILDER INDEXES.*END MODULEBUILDER INDEXES/ims', $texttoinsert, $contentsql); + $contentsql = preg_replace('/-- BEGIN MODULEBUILDER INDEXES.*END MODULEBUILDER INDEXES/ims', $texttoinsert, $contentsql); - dol_mkdir(dirname($pathoffiletoedittarget)); + dol_mkdir(dirname($pathoffiletoedittarget)); - $result2 = file_put_contents($pathoffiletoedittarget, $contentsql); - if ($result) - { - @chmod($pathoffiletoedittarget, octdec($newmask)); - } - else - { - $error++; - } + $result2 = file_put_contents($pathoffiletoedittarget, $contentsql); + if ($result) + { + @chmod($pathoffiletoedittarget, octdec($newmask)); + } + else + { + $error++; + } - return $error ? -1 : 1; + return $error ? -1 : 1; } diff --git a/htdocs/core/modules/bom/mod_bom_standard.php b/htdocs/core/modules/bom/mod_bom_standard.php index 16df1dd0d92..40d082ace0f 100644 --- a/htdocs/core/modules/bom/mod_bom_standard.php +++ b/htdocs/core/modules/bom/mod_bom_standard.php @@ -30,9 +30,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/bom/modules_bom.php'; class mod_bom_standard extends ModeleNumRefboms { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='BOM'; @@ -48,16 +48,16 @@ class mod_bom_standard extends ModeleNumRefboms public $name='standard'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -72,8 +72,8 @@ class mod_bom_standard extends ModeleNumRefboms /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ @@ -140,8 +140,8 @@ class mod_bom_standard extends ModeleNumRefboms $date=$object->date_creation; $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max+1); + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max+1); dol_syslog("mod_bom_standard::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/bom/modules_bom.php b/htdocs/core/modules/bom/modules_bom.php index 2b150402fb0..86e072633ec 100644 --- a/htdocs/core/modules/bom/modules_bom.php +++ b/htdocs/core/modules/bom/modules_bom.php @@ -39,17 +39,17 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // requir abstract class ModelePDFBom extends CommonDocGenerator { - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates */ public static function liste_modeles($db, $maxfilenamelength = 0) { - // phpcs:enable + // phpcs:enable global $conf; $type = 'bom'; @@ -110,7 +110,7 @@ abstract class ModeleNumRefBoms /** * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/cheque/mod_chequereceipt_mint.php b/htdocs/core/modules/cheque/mod_chequereceipt_mint.php index f4995962f90..15e95df561b 100644 --- a/htdocs/core/modules/cheque/mod_chequereceipt_mint.php +++ b/htdocs/core/modules/cheque/mod_chequereceipt_mint.php @@ -30,9 +30,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/cheque/modules_chequereceipts.php class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='CHK'; @@ -45,16 +45,16 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts public $name='Mint'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -69,8 +69,8 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ @@ -137,15 +137,15 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts $date=$object->date_bordereau; $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max+1); + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max+1); dol_syslog(__METHOD__." return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return next free value * @@ -155,7 +155,7 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts */ public function chequereceipt_get_num($objsoc, $objforref) { - // phpcs:enable + // phpcs:enable return $this->getNextValue($objsoc, $objforref); } } diff --git a/htdocs/core/modules/cheque/modules_chequereceipts.php b/htdocs/core/modules/cheque/modules_chequereceipts.php index 74de02bcd0f..92a0b139ea6 100644 --- a/htdocs/core/modules/cheque/modules_chequereceipts.php +++ b/htdocs/core/modules/cheque/modules_chequereceipts.php @@ -76,11 +76,11 @@ abstract class ModeleNumRefChequeReceipts } /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ public function canBeActivated() { return true; @@ -128,17 +128,17 @@ abstract class ModeleChequeReceipts extends CommonDocGenerator */ public $error=''; - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return list of active generation modules * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates */ public static function liste_modeles($db, $maxfilenamelength = 0) { - // phpcs:enable + // phpcs:enable global $conf; $type='chequereceipt'; diff --git a/htdocs/core/modules/commande/mod_commande_marbre.php b/htdocs/core/modules/commande/mod_commande_marbre.php index 9dc07576797..380f54bbecf 100644 --- a/htdocs/core/modules/commande/mod_commande_marbre.php +++ b/htdocs/core/modules/commande/mod_commande_marbre.php @@ -30,9 +30,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/commande/modules_commande.php'; class mod_commande_marbre extends ModeleNumRefCommandes { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='CO'; @@ -48,16 +48,16 @@ class mod_commande_marbre extends ModeleNumRefCommandes public $name='Marbre'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -72,8 +72,8 @@ class mod_commande_marbre extends ModeleNumRefCommandes /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ @@ -140,15 +140,15 @@ class mod_commande_marbre extends ModeleNumRefCommandes $date=$object->date; $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max+1); + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max+1); dol_syslog("mod_commande_marbre::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return next free value * @@ -158,7 +158,7 @@ class mod_commande_marbre extends ModeleNumRefCommandes */ public function commande_get_num($objsoc, $objforref) { - // phpcs:enable + // phpcs:enable return $this->getNextValue($objsoc, $objforref); } } diff --git a/htdocs/core/modules/commande/modules_commande.php b/htdocs/core/modules/commande/modules_commande.php index 53b9a636d4b..b64275faeb6 100644 --- a/htdocs/core/modules/commande/modules_commande.php +++ b/htdocs/core/modules/commande/modules_commande.php @@ -40,17 +40,17 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; abstract class ModelePDFCommandes extends CommonDocGenerator { - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates */ public static function liste_modeles($db, $maxfilenamelength = 0) { - // phpcs:enable + // phpcs:enable global $conf; $type = 'order'; @@ -111,7 +111,7 @@ abstract class ModeleNumRefCommandes /** * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/dons/modules_don.php b/htdocs/core/modules/dons/modules_don.php index 11538d8fff4..aea8493944f 100644 --- a/htdocs/core/modules/dons/modules_don.php +++ b/htdocs/core/modules/dons/modules_don.php @@ -34,32 +34,32 @@ require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; */ abstract class ModeleDon extends CommonDocGenerator { - /** + /** * @var string Error code (or message) */ public $error=''; - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates - */ - public static function liste_modeles($db, $maxfilenamelength = 0) - { - // phpcs:enable - global $conf; + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates + */ + public static function liste_modeles($db, $maxfilenamelength = 0) + { + // phpcs:enable + global $conf; - $type='donation'; - $liste=array(); + $type='donation'; + $liste=array(); - include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - $liste=getListOfModels($db, $type, $maxfilenamelength); + include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + $liste=getListOfModels($db, $type, $maxfilenamelength); - return $liste; - } + return $liste; + } } @@ -68,81 +68,81 @@ abstract class ModeleDon extends CommonDocGenerator */ abstract class ModeleNumRefDons { - /** + /** * @var string Error code (or message) */ public $error=''; - /** - * Return if a module can be used or not - * - * @return boolean true if module can be used - */ - public function isEnabled() - { - return true; - } + /** + * Return if a module can be used or not + * + * @return boolean true if module can be used + */ + public function isEnabled() + { + return true; + } - /** - * Renvoi la description par defaut du modele de numerotation - * - * @return string Texte descripif - */ - public function info() - { - global $langs; - $langs->load("bills"); - return $langs->trans("NoDescription"); - } + /** + * Renvoi la description par defaut du modele de numerotation + * + * @return string Texte descripif + */ + public function info() + { + global $langs; + $langs->load("bills"); + return $langs->trans("NoDescription"); + } - /** - * Return an example of numbering - * - * @return string Example - */ - public function getExample() - { - global $langs; - $langs->load("bills"); - return $langs->trans("NoExample"); - } + /** + * Return an example of numbering + * + * @return string Example + */ + public function getExample() + { + global $langs; + $langs->load("bills"); + return $langs->trans("NoExample"); + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - return true; - } + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + return true; + } - /** - * Renvoi prochaine valeur attribuee - * - * @return string Valeur - */ - public function getNextValue() - { - global $langs; - return $langs->trans("NotAvailable"); - } + /** + * Renvoi prochaine valeur attribuee + * + * @return string Valeur + */ + public function getNextValue() + { + global $langs; + return $langs->trans("NotAvailable"); + } - /** - * Renvoi version du module numerotation - * - * @return string Valeur - */ - public function getVersion() - { - global $langs; - $langs->load("admin"); + /** + * Renvoi version du module numerotation + * + * @return string Valeur + */ + public function getVersion() + { + global $langs; + $langs->load("admin"); - if ($this->version == 'development') return $langs->trans("VersionDevelopment"); - if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); - if ($this->version == 'dolibarr') return DOL_VERSION; - if ($this->version) return $this->version; - return $langs->trans("NotAvailable"); - } + if ($this->version == 'development') return $langs->trans("VersionDevelopment"); + if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); + if ($this->version == 'dolibarr') return DOL_VERSION; + if ($this->version) return $this->version; + return $langs->trans("NotAvailable"); + } } diff --git a/htdocs/core/modules/expensereport/mod_expensereport_jade.php b/htdocs/core/modules/expensereport/mod_expensereport_jade.php index 93d2ca15a48..d2b3ce0793a 100644 --- a/htdocs/core/modules/expensereport/mod_expensereport_jade.php +++ b/htdocs/core/modules/expensereport/mod_expensereport_jade.php @@ -29,9 +29,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/expensereport/modules_expenserepo class mod_expensereport_jade extends ModeleNumRefExpenseReport { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='ER'; @@ -54,16 +54,16 @@ class mod_expensereport_jade extends ModeleNumRefExpenseReport public $name='Jade'; - /** - * Return description of numbering model - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering model + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -71,19 +71,19 @@ class mod_expensereport_jade extends ModeleNumRefExpenseReport * * @return string Example */ - public function getExample() + public function getExample() { return $this->prefix."0501-0001"; } /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ - public function canBeActivated() + public function canBeActivated() { global $conf,$langs,$db; @@ -117,7 +117,7 @@ class mod_expensereport_jade extends ModeleNumRefExpenseReport * @param Object $object Object we need next value for * @return string Value if KO, <0 if KO */ - public function getNextValue($object) + public function getNextValue($object) { global $db,$conf; @@ -139,19 +139,19 @@ class mod_expensereport_jade extends ModeleNumRefExpenseReport $result = $db->query($sql); - if ($db->num_rows($result) > 0) { - $objp = $db->fetch_object($result); - $newref = $objp->max; - $newref++; - while (strlen($newref) < $num_car) { - $newref = "0".$newref; - } - } else { - $newref = 1; - while (strlen($newref) < $num_car) { - $newref = "0".$newref; - } - } + if ($db->num_rows($result) > 0) { + $objp = $db->fetch_object($result); + $newref = $objp->max; + $newref++; + while (strlen($newref) < $num_car) { + $newref = "0".$newref; + } + } else { + $newref = 1; + while (strlen($newref) < $num_car) { + $newref = "0".$newref; + } + } $ref_number_int = ($newref+1)-1; @@ -202,8 +202,8 @@ class mod_expensereport_jade extends ModeleNumRefExpenseReport $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max+1); + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max+1); dol_syslog("mod_expensereport_jade::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/facture/modules_facture.php b/htdocs/core/modules/facture/modules_facture.php index 871d29fca0d..775864eec52 100644 --- a/htdocs/core/modules/facture/modules_facture.php +++ b/htdocs/core/modules/facture/modules_facture.php @@ -46,17 +46,17 @@ abstract class ModelePDFFactures extends CommonDocGenerator public $atleastoneratenotnull = 0; - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return list of active generation modules * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates */ - public static function liste_modeles($db, $maxfilenamelength = 0) + public static function liste_modeles($db, $maxfilenamelength = 0) { - // phpcs:enable + // phpcs:enable global $conf; $type = 'invoice'; @@ -114,8 +114,8 @@ abstract class ModeleNumRefFactures } /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/fichinter/modules_fichinter.php b/htdocs/core/modules/fichinter/modules_fichinter.php index 8db526da0a2..356ecf05081 100644 --- a/htdocs/core/modules/fichinter/modules_fichinter.php +++ b/htdocs/core/modules/fichinter/modules_fichinter.php @@ -40,17 +40,17 @@ abstract class ModelePDFFicheinter extends CommonDocGenerator public $error=''; - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return list of active generation modules * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates */ public static function liste_modeles($db, $maxfilenamelength = 0) { - // phpcs:enable + // phpcs:enable global $conf; $type='ficheinter'; @@ -109,8 +109,8 @@ abstract class ModeleNumRefFicheinter } /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ @@ -164,7 +164,7 @@ abstract class ModeleNumRefFicheinter */ function fichinter_create($db, $object, $modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0) { - // phpcs:enable + // phpcs:enable global $conf,$langs,$user; $langs->load("ficheinter"); @@ -187,11 +187,11 @@ function fichinter_create($db, $object, $modele, $outputlangs, $hidedetails = 0, // If selected modele is a filename template (then $modele="modelname:filename") $tmp=explode(':', $modele, 2); - if (! empty($tmp[1])) - { - $modele=$tmp[0]; - $srctemplatepath=$tmp[1]; - } + if (! empty($tmp[1])) + { + $modele=$tmp[0]; + $srctemplatepath=$tmp[1]; + } // Search template files $file=''; $classname=''; $filefound=0; @@ -199,21 +199,21 @@ function fichinter_create($db, $object, $modele, $outputlangs, $hidedetails = 0, if (is_array($conf->modules_parts['models'])) $dirmodels=array_merge($dirmodels, $conf->modules_parts['models']); foreach($dirmodels as $reldir) { - foreach(array('doc','pdf') as $prefix) - { - $file = $prefix."_".$modele.".modules.php"; + foreach(array('doc','pdf') as $prefix) + { + $file = $prefix."_".$modele.".modules.php"; - // On verifie l'emplacement du modele - $file=dol_buildpath($reldir."core/modules/fichinter/doc/".$file, 0); - if (file_exists($file)) - { - $filefound=1; - $classname=$prefix.'_'.$modele; - break; - } - } - if ($filefound) break; - } + // On verifie l'emplacement du modele + $file=dol_buildpath($reldir."core/modules/fichinter/doc/".$file, 0); + if (file_exists($file)) + { + $filefound=1; + $classname=$prefix.'_'.$modele; + break; + } + } + if ($filefound) break; + } // Charge le modele if ($filefound) diff --git a/htdocs/core/modules/livraison/mod_livraison_jade.php b/htdocs/core/modules/livraison/mod_livraison_jade.php index f27c1a8583f..840b6a6f0a6 100644 --- a/htdocs/core/modules/livraison/mod_livraison_jade.php +++ b/htdocs/core/modules/livraison/mod_livraison_jade.php @@ -35,9 +35,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/livraison/modules_livraison.php'; class mod_livraison_jade extends ModeleNumRefDeliveryOrder { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' /** @@ -57,7 +57,7 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder */ public $name = 'Jade'; - public $prefix = 'BL'; + public $prefix = 'BL'; /** @@ -74,103 +74,103 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder /** * Return an example of numbering * - * @return string Example - */ - public function getExample() - { - return $this->prefix."0501-0001"; - } + * @return string Example + */ + public function getExample() + { + return $this->prefix."0501-0001"; + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - global $langs, $conf, $db; + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + global $langs, $conf, $db; - $langs->load("bills"); + $langs->load("bills"); - // Check invoice num - $fayymm = ''; $max = ''; + // Check invoice num + $fayymm = ''; $max = ''; - $posindice = 8; - $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL - $sql .= " FROM ".MAIN_DB_PREFIX."livraison"; - $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - $sql .= " AND entity = ".$conf->entity; + $posindice = 8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL + $sql .= " FROM ".MAIN_DB_PREFIX."livraison"; + $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; + $sql .= " AND entity = ".$conf->entity; - $resql = $db->query($sql); - if ($resql) - { - $row = $db->fetch_row($resql); - if ($row) { $fayymm = substr($row[0], 0, 6); $max = $row[0]; } - } - if ($fayymm && !preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $fayymm)) - { - $langs->load("errors"); - $this->error = $langs->trans('ErrorNumRefModel', $max); - return false; - } + $resql = $db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $fayymm = substr($row[0], 0, 6); $max = $row[0]; } + } + if ($fayymm && !preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $fayymm)) + { + $langs->load("errors"); + $this->error = $langs->trans('ErrorNumRefModel', $max); + return false; + } - return true; - } + return true; + } - /** + /** * Return next free value * * @param Societe $objsoc Object thirdparty * @param Object $object Object we need next value for * @return string Value if KO, <0 if KO */ - public function getNextValue($objsoc, $object) - { - global $db, $conf; + public function getNextValue($objsoc, $object) + { + global $db, $conf; - // D'abord on recupere la valeur max - $posindice = 8; - $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL - $sql .= " FROM ".MAIN_DB_PREFIX."livraison"; - $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - $sql .= " AND entity = ".$conf->entity; + // D'abord on recupere la valeur max + $posindice = 8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL + $sql .= " FROM ".MAIN_DB_PREFIX."livraison"; + $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; + $sql .= " AND entity = ".$conf->entity; - $resql = $db->query($sql); - dol_syslog("mod_livraison_jade::getNextValue", LOG_DEBUG); - if ($resql) { - $obj = $db->fetch_object($resql); - if ($obj) $max = intval($obj->max); - else $max = 0; - } - else - { - return -1; - } + $resql = $db->query($sql); + dol_syslog("mod_livraison_jade::getNextValue", LOG_DEBUG); + if ($resql) { + $obj = $db->fetch_object($resql); + if ($obj) $max = intval($obj->max); + else $max = 0; + } + else + { + return -1; + } - $date = $object->date_delivery; - if (empty($date)) $date = dol_now(); - $yymm = strftime("%y%m", $date); + $date = $object->date_delivery; + if (empty($date)) $date = dol_now(); + $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max + 1); + if ($max >= (pow(10, 4) - 1)) $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max + 1); - dol_syslog("mod_livraison_jade::getNextValue return ".$this->prefix.$yymm."-".$num); - return $this->prefix.$yymm."-".$num; - } + dol_syslog("mod_livraison_jade::getNextValue return ".$this->prefix.$yymm."-".$num); + return $this->prefix.$yymm."-".$num; + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return next free ref - * - * @param Societe $objsoc Object thirdparty - * @param Object $object Object livraison - * @return string Texte descriptif - */ - public function livraison_get_num($objsoc = 0, $object = '') - { - // phpcs:enable - return $this->getNextValue($objsoc, $object); - } + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return next free ref + * + * @param Societe $objsoc Object thirdparty + * @param Object $object Object livraison + * @return string Texte descriptif + */ + public function livraison_get_num($objsoc = 0, $object = '') + { + // phpcs:enable + return $this->getNextValue($objsoc, $object); + } } diff --git a/htdocs/core/modules/livraison/modules_livraison.php b/htdocs/core/modules/livraison/modules_livraison.php index 9672f1f31cf..c108f65ac33 100644 --- a/htdocs/core/modules/livraison/modules_livraison.php +++ b/htdocs/core/modules/livraison/modules_livraison.php @@ -36,32 +36,32 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; */ abstract class ModelePDFDeliveryOrder extends CommonDocGenerator { - /** - * @var string Error code (or message) - */ - public $error=''; + /** + * @var string Error code (or message) + */ + public $error=''; - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates - */ - public static function liste_modeles($db, $maxfilenamelength = 0) - { - // phpcs:enable - global $conf; + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates + */ + public static function liste_modeles($db, $maxfilenamelength = 0) + { + // phpcs:enable + global $conf; - $type='delivery'; - $liste=array(); + $type='delivery'; + $liste=array(); - include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - $liste=getListOfModels($db, $type, $maxfilenamelength); + include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + $liste=getListOfModels($db, $type, $maxfilenamelength); - return $liste; - } + return $liste; + } } @@ -72,83 +72,83 @@ abstract class ModelePDFDeliveryOrder extends CommonDocGenerator */ abstract class ModeleNumRefDeliveryOrder { - /** - * @var string Error code (or message) - */ - public $error=''; + /** + * @var string Error code (or message) + */ + public $error=''; - /** - * Return if a module can be used or not - * - * @return boolean true if module can be used - */ - public function isEnabled() - { - return true; - } + /** + * Return if a module can be used or not + * + * @return boolean true if module can be used + */ + public function isEnabled() + { + return true; + } - /** - * Renvoi la description par defaut du modele de numerotation - * - * @return string Texte descripif - */ - public function info() - { - global $langs; - $langs->load("deliveries"); - return $langs->trans("NoDescription"); - } + /** + * Renvoi la description par defaut du modele de numerotation + * + * @return string Texte descripif + */ + public function info() + { + global $langs; + $langs->load("deliveries"); + return $langs->trans("NoDescription"); + } - /** - * Return an example of numbering - * - * @return string Example - */ - public function getExample() - { - global $langs; - $langs->load("deliveries"); - return $langs->trans("NoExample"); - } + /** + * Return an example of numbering + * + * @return string Example + */ + public function getExample() + { + global $langs; + $langs->load("deliveries"); + return $langs->trans("NoExample"); + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - return true; - } + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + return true; + } - /** - * Renvoi prochaine valeur attribuee - * - * @param Societe $objsoc Object third party - * @param Object $object Object delivery - * @return string Valeur - */ - public function getNextValue($objsoc, $object) - { - global $langs; - return $langs->trans("NotAvailable"); - } + /** + * Renvoi prochaine valeur attribuee + * + * @param Societe $objsoc Object third party + * @param Object $object Object delivery + * @return string Valeur + */ + public function getNextValue($objsoc, $object) + { + global $langs; + return $langs->trans("NotAvailable"); + } - /** - * Renvoi version du module numerotation - * - * @return string Valeur - */ - public function getVersion() - { - global $langs; - $langs->load("admin"); + /** + * Renvoi version du module numerotation + * + * @return string Valeur + */ + public function getVersion() + { + global $langs; + $langs->load("admin"); - if ($this->version == 'development') return $langs->trans("VersionDevelopment"); - elseif ($this->version == 'experimental') return $langs->trans("VersionExperimental"); - elseif ($this->version == 'dolibarr') return DOL_VERSION; - elseif ($this->version) return $this->version; - else return $langs->trans("NotAvailable"); - } + if ($this->version == 'development') return $langs->trans("VersionDevelopment"); + elseif ($this->version == 'experimental') return $langs->trans("VersionExperimental"); + elseif ($this->version == 'dolibarr') return DOL_VERSION; + elseif ($this->version) return $this->version; + else return $langs->trans("NotAvailable"); + } } diff --git a/htdocs/core/modules/mrp/mod_mo_standard.php b/htdocs/core/modules/mrp/mod_mo_standard.php index 04391d25fd7..3fd3b1ad87e 100644 --- a/htdocs/core/modules/mrp/mod_mo_standard.php +++ b/htdocs/core/modules/mrp/mod_mo_standard.php @@ -30,9 +30,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/mrp/modules_mo.php'; class mod_mo_standard extends ModeleNumRefMos { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix = 'MO'; @@ -48,16 +48,16 @@ class mod_mo_standard extends ModeleNumRefMos public $name = 'standard'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -72,8 +72,8 @@ class mod_mo_standard extends ModeleNumRefMos /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ @@ -140,8 +140,8 @@ class mod_mo_standard extends ModeleNumRefMos $date = $object->date_creation; $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max + 1); + if ($max >= (pow(10, 4) - 1)) $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max + 1); dol_syslog("mod_mo_standard::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/mrp/modules_mo.php b/htdocs/core/modules/mrp/modules_mo.php index cd9b3ec51db..4a251e21788 100644 --- a/htdocs/core/modules/mrp/modules_mo.php +++ b/htdocs/core/modules/mrp/modules_mo.php @@ -39,17 +39,17 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // requir abstract class ModelePDFMo extends CommonDocGenerator { - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates */ public static function liste_modeles($db, $maxfilenamelength = 0) { - // phpcs:enable + // phpcs:enable global $conf; $type = 'mo'; @@ -110,7 +110,7 @@ abstract class ModeleNumRefMos /** * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/payment/mod_payment_cicada.php b/htdocs/core/modules/payment/mod_payment_cicada.php index 6addb1a5e31..c9d2dfc98a3 100644 --- a/htdocs/core/modules/payment/mod_payment_cicada.php +++ b/htdocs/core/modules/payment/mod_payment_cicada.php @@ -30,9 +30,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/payment/modules_payment.php'; class mod_payment_cicada extends ModeleNumRefPayments { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='PAY'; @@ -55,16 +55,16 @@ class mod_payment_cicada extends ModeleNumRefPayments public $name='Cicada'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -79,8 +79,8 @@ class mod_payment_cicada extends ModeleNumRefPayments /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ @@ -147,15 +147,15 @@ class mod_payment_cicada extends ModeleNumRefPayments $date=$object->datepaye; $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max+1); + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max+1); dol_syslog(__METHOD__." return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return next free value * @@ -165,7 +165,7 @@ class mod_payment_cicada extends ModeleNumRefPayments */ public function payment_get_num($objsoc, $objforref) { - // phpcs:enable + // phpcs:enable return $this->getNextValue($objsoc, $objforref); } } diff --git a/htdocs/core/modules/payment/modules_payment.php b/htdocs/core/modules/payment/modules_payment.php index 10d7a56164d..4effd51cc2d 100644 --- a/htdocs/core/modules/payment/modules_payment.php +++ b/htdocs/core/modules/payment/modules_payment.php @@ -63,11 +63,11 @@ abstract class ModeleNumRefPayments } /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ public function canBeActivated() { return true; diff --git a/htdocs/core/modules/product/modules_product.class.php b/htdocs/core/modules/product/modules_product.class.php index 82a099a09fa..78974eaa4bc 100644 --- a/htdocs/core/modules/product/modules_product.class.php +++ b/htdocs/core/modules/product/modules_product.class.php @@ -33,226 +33,226 @@ */ abstract class ModelePDFProduct extends CommonDocGenerator { - /** - * @var string Error code (or message) - */ - public $error=''; + /** + * @var string Error code (or message) + */ + public $error=''; - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates - */ - public static function liste_modeles($db, $maxfilenamelength = 0) - { - // phpcs:enable - global $conf; + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates + */ + public static function liste_modeles($db, $maxfilenamelength = 0) + { + // phpcs:enable + global $conf; - $type='product'; - $liste=array(); + $type='product'; + $liste=array(); - include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - $liste=getListOfModels($db, $type, $maxfilenamelength); - return $liste; - } + include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + $liste=getListOfModels($db, $type, $maxfilenamelength); + return $liste; + } } abstract class ModeleProductCode { - /** - * @var string Error code (or message) - */ - public $error=''; + /** + * @var string Error code (or message) + */ + public $error=''; - /** Renvoi la description par defaut du modele de numerotation - * - * @param Translate $langs Object langs - * @return string Texte descripif - */ - public function info($langs) - { - $langs->load("bills"); - return $langs->trans("NoDescription"); - } + /** Renvoi la description par defaut du modele de numerotation + * + * @param Translate $langs Object langs + * @return string Texte descripif + */ + public function info($langs) + { + $langs->load("bills"); + return $langs->trans("NoDescription"); + } - /** Renvoi nom module - * - * @param Translate $langs Object langs - * @return string Nom du module - */ - public function getNom($langs) - { - return empty($this->name)?$this->nom:$this->name; - } + /** Renvoi nom module + * + * @param Translate $langs Object langs + * @return string Nom du module + */ + public function getNom($langs) + { + return empty($this->name)?$this->nom:$this->name; + } - /** Return an example of numbering - * - * @param Translate $langs Object langs - * @return string Example - */ - public function getExample($langs) - { - $langs->load("bills"); - return $langs->trans("NoExample"); - } + /** Return an example of numbering + * + * @param Translate $langs Object langs + * @return string Example + */ + public function getExample($langs) + { + $langs->load("bills"); + return $langs->trans("NoExample"); + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - return true; - } + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + return true; + } - /** - * Return next value available - * - * @param Product $objproduct Object product - * @param int $type Type - * @return string Value - */ - public function getNextValue($objproduct = 0, $type = -1) - { - global $langs; - return $langs->trans("Function_getNextValue_InModuleNotWorking"); - } + /** + * Return next value available + * + * @param Product $objproduct Object product + * @param int $type Type + * @return string Value + */ + public function getNextValue($objproduct = 0, $type = -1) + { + global $langs; + return $langs->trans("Function_getNextValue_InModuleNotWorking"); + } - /** Return version of module - * - * @return string Version - */ - public function getVersion() - { - global $langs; - $langs->load("admin"); + /** Return version of module + * + * @return string Version + */ + public function getVersion() + { + global $langs; + $langs->load("admin"); - if ($this->version == 'development') return $langs->trans("VersionDevelopment"); - if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); - if ($this->version == 'dolibarr') return DOL_VERSION; - if ($this->version) return $this->version; - return $langs->trans("NotAvailable"); - } + if ($this->version == 'development') return $langs->trans("VersionDevelopment"); + if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); + if ($this->version == 'dolibarr') return DOL_VERSION; + if ($this->version) return $this->version; + return $langs->trans("NotAvailable"); + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Renvoi la liste des modeles de numérotation - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of numbers - */ - public static function liste_modeles($db, $maxfilenamelength = 0) - { - // phpcs:enable - $liste=array(); - $sql =""; + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Renvoi la liste des modeles de numérotation + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of numbers + */ + public static function liste_modeles($db, $maxfilenamelength = 0) + { + // phpcs:enable + $liste=array(); + $sql =""; - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - while ($i < $num) - { - $row = $db->fetch_row($resql); - $liste[$row[0]]=$row[1]; - $i++; - } - } - else - { - return -1; - } - return $liste; - } + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; + while ($i < $num) + { + $row = $db->fetch_row($resql); + $liste[$row[0]]=$row[1]; + $i++; + } + } + else + { + return -1; + } + return $liste; + } - /** - * Return description of module parameters - * - * @param Translate $langs Output language - * @param Product $product Product object - * @param int $type -1=Nothing, 0=Customer, 1=Supplier - * @return string HTML translated description - */ - public function getToolTip($langs, $product, $type) - { - global $conf; + /** + * Return description of module parameters + * + * @param Translate $langs Output language + * @param Product $product Product object + * @param int $type -1=Nothing, 0=Customer, 1=Supplier + * @return string HTML translated description + */ + public function getToolTip($langs, $product, $type) + { + global $conf; - $langs->load("admin"); + $langs->load("admin"); - $s=''; - if ($type == -1) { - $s.=$langs->trans("Name").': '.$this->getNom($langs).'
    '; - $s.=$langs->trans("Version").': '.$this->getVersion().'
    '; - } - if ($type == 0) $s.=$langs->trans("ProductCodeDesc").'
    '; - if ($type == 1) $s.=$langs->trans("ServiceCodeDesc").'
    '; - if ($type != -1) $s.=$langs->trans("ValidityControledByModule").': '.$this->getNom($langs).'
    '; - $s.='
    '; - $s.=''.$langs->trans("ThisIsModuleRules").':
    '; - if ($type == 0) - { - $s.=$langs->trans("RequiredIfProduct").': '; - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; - $s.=yn(!$this->code_null, 1, 2); - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; - $s.='
    '; - } - elseif ($type == 1) - { - $s.=$langs->trans("RequiredIfService").': '; - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; - $s.=yn(!$this->code_null, 1, 2); - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; - $s.='
    '; - } - elseif ($type == -1) - { - $s.=$langs->trans("Required").': '; - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; - $s.=yn(!$this->code_null, 1, 2); - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; - $s.='
    '; - } - $s.=$langs->trans("CanBeModifiedIfOk").': '; - $s.=yn($this->code_modifiable, 1, 2); - $s.='
    '; - $s.=$langs->trans("CanBeModifiedIfKo").': '.yn($this->code_modifiable_invalide, 1, 2).'
    '; - $s.=$langs->trans("AutomaticCode").': '.yn($this->code_auto, 1, 2).'
    '; - $s.='
    '; - if ($type == 0 || $type == -1) - { - $nextval=$this->getNextValue($product, 0); - if (empty($nextval)) $nextval=$langs->trans("Undefined"); - $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Product").')':'').': '.$nextval.'
    '; - } - if ($type == 1 || $type == -1) - { - $nextval=$this->getNextValue($product, 1); - if (empty($nextval)) $nextval=$langs->trans("Undefined"); - $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Service").')':'').': '.$nextval.''; - } - return $s; - } + $s=''; + if ($type == -1) { + $s.=$langs->trans("Name").': '.$this->getNom($langs).'
    '; + $s.=$langs->trans("Version").': '.$this->getVersion().'
    '; + } + if ($type == 0) $s.=$langs->trans("ProductCodeDesc").'
    '; + if ($type == 1) $s.=$langs->trans("ServiceCodeDesc").'
    '; + if ($type != -1) $s.=$langs->trans("ValidityControledByModule").': '.$this->getNom($langs).'
    '; + $s.='
    '; + $s.=''.$langs->trans("ThisIsModuleRules").':
    '; + if ($type == 0) + { + $s.=$langs->trans("RequiredIfProduct").': '; + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; + $s.=yn(!$this->code_null, 1, 2); + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; + $s.='
    '; + } + elseif ($type == 1) + { + $s.=$langs->trans("RequiredIfService").': '; + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; + $s.=yn(!$this->code_null, 1, 2); + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; + $s.='
    '; + } + elseif ($type == -1) + { + $s.=$langs->trans("Required").': '; + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; + $s.=yn(!$this->code_null, 1, 2); + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; + $s.='
    '; + } + $s.=$langs->trans("CanBeModifiedIfOk").': '; + $s.=yn($this->code_modifiable, 1, 2); + $s.='
    '; + $s.=$langs->trans("CanBeModifiedIfKo").': '.yn($this->code_modifiable_invalide, 1, 2).'
    '; + $s.=$langs->trans("AutomaticCode").': '.yn($this->code_auto, 1, 2).'
    '; + $s.='
    '; + if ($type == 0 || $type == -1) + { + $nextval=$this->getNextValue($product, 0); + if (empty($nextval)) $nextval=$langs->trans("Undefined"); + $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Product").')':'').': '.$nextval.'
    '; + } + if ($type == 1 || $type == -1) + { + $nextval=$this->getNextValue($product, 1); + if (empty($nextval)) $nextval=$langs->trans("Undefined"); + $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Service").')':'').': '.$nextval.''; + } + return $s; + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Check if mask/numbering use prefix - * - * @return int 0=no, 1=yes - */ - public function verif_prefixIsUsed() - { - // phpcs:enable - return 0; - } + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Check if mask/numbering use prefix + * + * @return int 0=no, 1=yes + */ + public function verif_prefixIsUsed() + { + // phpcs:enable + return 0; + } } diff --git a/htdocs/core/modules/project/mod_project_simple.php b/htdocs/core/modules/project/mod_project_simple.php index 3d091658619..c5cc9c7bba3 100644 --- a/htdocs/core/modules/project/mod_project_simple.php +++ b/htdocs/core/modules/project/mod_project_simple.php @@ -32,14 +32,14 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/project/modules_project.php'; class mod_project_simple extends ModeleNumRefProjects { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='PJ'; - /** + /** * @var string Error code (or message) */ public $error=''; @@ -57,74 +57,74 @@ class mod_project_simple extends ModeleNumRefProjects public $name='Simple'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } - /** - * Return an example of numbering module values - * - * @return string Example - */ - public function getExample() - { - return $this->prefix."0501-0001"; - } + /** + * Return an example of numbering module values + * + * @return string Example + */ + public function getExample() + { + return $this->prefix."0501-0001"; + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - global $conf,$langs,$db; + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + global $conf,$langs,$db; - $coyymm=''; $max=''; + $coyymm=''; $max=''; $posindice=8; $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; - $sql.= " FROM ".MAIN_DB_PREFIX."projet"; + $sql.= " FROM ".MAIN_DB_PREFIX."projet"; $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - $sql.= " AND entity = ".$conf->entity; - $resql=$db->query($sql); - if ($resql) - { - $row = $db->fetch_row($resql); - if ($row) { $coyymm = substr($row[0], 0, 6); $max=$row[0]; } - } - if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) - { - return true; - } - else - { + $sql.= " AND entity = ".$conf->entity; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $coyymm = substr($row[0], 0, 6); $max=$row[0]; } + } + if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) + { + return true; + } + else + { $langs->load("errors"); $this->error=$langs->trans('ErrorNumRefModel', $max); - return false; - } - } + return false; + } + } - /** - * Return next value - * - * @param Societe $objsoc Object third party - * @param Project $project Object project - * @return string Value if OK, 0 if KO - */ - public function getNextValue($objsoc, $project) - { + /** + * Return next value + * + * @param Societe $objsoc Object third party + * @param Project $project Object project + * @return string Value if OK, 0 if KO + */ + public function getNextValue($objsoc, $project) + { global $db,$conf; // D'abord on recupere la valeur max @@ -157,20 +157,20 @@ class mod_project_simple extends ModeleNumRefProjects dol_syslog("mod_project_simple::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; - } + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return next reference not yet used as a reference - * - * @param Societe $objsoc Object third party - * @param Project $project Object project - * @return string Next not used reference - */ - public function project_get_num($objsoc = 0, $project = '') - { - // phpcs:enable - return $this->getNextValue($objsoc, $project); - } + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return next reference not yet used as a reference + * + * @param Societe $objsoc Object third party + * @param Project $project Object project + * @return string Next not used reference + */ + public function project_get_num($objsoc = 0, $project = '') + { + // phpcs:enable + return $this->getNextValue($objsoc, $project); + } } diff --git a/htdocs/core/modules/project/task/mod_task_simple.php b/htdocs/core/modules/project/task/mod_task_simple.php index fbb5f2d4c5d..961b9a732f6 100644 --- a/htdocs/core/modules/project/task/mod_task_simple.php +++ b/htdocs/core/modules/project/task/mod_task_simple.php @@ -32,14 +32,14 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/project/task/modules_task.php'; class mod_task_simple extends ModeleNumRefTask { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='TK'; - /** + /** * @var string Error code (or message) */ public $error=''; @@ -57,40 +57,40 @@ class mod_task_simple extends ModeleNumRefTask public $name='Simple'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } - /** - * Return an example of numbering module values - * - * @return string Example - */ - public function getExample() - { - return $this->prefix."0501-0001"; - } + /** + * Return an example of numbering module values + * + * @return string Example + */ + public function getExample() + { + return $this->prefix."0501-0001"; + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - global $conf,$langs,$db; + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + global $conf,$langs,$db; - $coyymm=''; $max=''; + $coyymm=''; $max=''; $posindice=8; $sql = "SELECT MAX(CAST(SUBSTRING(task.ref FROM " . $posindice . ") AS SIGNED)) as max"; @@ -98,34 +98,34 @@ class mod_task_simple extends ModeleNumRefTask $sql .= MAIN_DB_PREFIX . "projet AS project WHERE task.fk_projet=project.rowid"; $sql .= " AND task.ref LIKE '" . $db->escape($this->prefix) . "____-%'"; $sql .= " AND project.entity = " . $conf->entity; - $resql=$db->query($sql); - if ($resql) - { - $row = $db->fetch_row($resql); - if ($row) { $coyymm = substr($row[0], 0, 6); $max=$row[0]; } - } - if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) - { - return true; - } - else - { + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $coyymm = substr($row[0], 0, 6); $max=$row[0]; } + } + if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) + { + return true; + } + else + { $langs->load("errors"); $this->error=$langs->trans('ErrorNumRefModel', $max); - return false; - } - } + return false; + } + } - /** - * Return next value - * - * @param Societe $objsoc Object third party - * @param Task $object Object Task - * @return string Value if OK, 0 if KO - */ - public function getNextValue($objsoc, $object) - { + /** + * Return next value + * + * @param Societe $objsoc Object third party + * @param Task $object Object Task + * @return string Value if OK, 0 if KO + */ + public function getNextValue($objsoc, $object) + { global $db,$conf; // D'abord on recupere la valeur max @@ -157,19 +157,19 @@ class mod_task_simple extends ModeleNumRefTask dol_syslog("mod_task_simple::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; - } + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return next reference not yet used as a reference - * - * @param Societe $objsoc Object third party - * @param Task $object Object task - * @return string Next not used reference - */ - public function task_get_num($objsoc = 0, $object = '') - { - return $this->getNextValue($objsoc, $object); - } + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return next reference not yet used as a reference + * + * @param Societe $objsoc Object third party + * @param Task $object Object task + * @return string Next not used reference + */ + public function task_get_num($objsoc = 0, $object = '') + { + return $this->getNextValue($objsoc, $object); + } } diff --git a/htdocs/core/modules/propale/mod_propale_marbre.php b/htdocs/core/modules/propale/mod_propale_marbre.php index e8fa9970ef9..9a45ff647f0 100644 --- a/htdocs/core/modules/propale/mod_propale_marbre.php +++ b/htdocs/core/modules/propale/mod_propale_marbre.php @@ -32,9 +32,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/propale/modules_propale.php'; class mod_propale_marbre extends ModeleNumRefPropales { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='PR'; @@ -57,16 +57,16 @@ class mod_propale_marbre extends ModeleNumRefPropales public $name='Marbre'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -81,8 +81,8 @@ class mod_propale_marbre extends ModeleNumRefPropales /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/societe/modules_societe.class.php b/htdocs/core/modules/societe/modules_societe.class.php index f76aa6e20d3..d29b2f321fd 100644 --- a/htdocs/core/modules/societe/modules_societe.class.php +++ b/htdocs/core/modules/societe/modules_societe.class.php @@ -33,32 +33,32 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; */ abstract class ModeleThirdPartyDoc extends CommonDocGenerator { - /** + /** * @var string Error code (or message) */ public $error=''; - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates - */ - public static function liste_modeles($db, $maxfilenamelength = 0) - { - // phpcs:enable - global $conf; + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates + */ + public static function liste_modeles($db, $maxfilenamelength = 0) + { + // phpcs:enable + global $conf; - $type='company'; - $liste=array(); + $type='company'; + $liste=array(); - include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - $liste = getListOfModels($db, $type, $maxfilenamelength); + include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + $liste = getListOfModels($db, $type, $maxfilenamelength); - return $liste; - } + return $liste; + } } /** @@ -67,197 +67,197 @@ abstract class ModeleThirdPartyDoc extends CommonDocGenerator */ abstract class ModeleThirdPartyCode { - /** - * @var string Error code (or message) + /** + * @var string Error code (or message) */ public $error=''; - /** Renvoi la description par defaut du modele de numerotation - * - * @param Translate $langs Object langs - * @return string Texte descripif - */ - public function info($langs) - { - $langs->load("bills"); - return $langs->trans("NoDescription"); - } + /** Renvoi la description par defaut du modele de numerotation + * + * @param Translate $langs Object langs + * @return string Texte descripif + */ + public function info($langs) + { + $langs->load("bills"); + return $langs->trans("NoDescription"); + } - /** Return name of module - * - * @param Translate $langs Object langs - * @return string Nom du module - */ - public function getNom($langs) - { - return $this->name; - } + /** Return name of module + * + * @param Translate $langs Object langs + * @return string Nom du module + */ + public function getNom($langs) + { + return $this->name; + } - /** Return an example of numbering - * - * @param Translate $langs Object langs - * @return string Example - */ - public function getExample($langs) - { - $langs->load("bills"); - return $langs->trans("NoExample"); - } + /** Return an example of numbering + * + * @param Translate $langs Object langs + * @return string Example + */ + public function getExample($langs) + { + $langs->load("bills"); + return $langs->trans("NoExample"); + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - return true; - } + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + return true; + } - /** - * Return next value available - * - * @param Societe $objsoc Object thirdparty - * @param int $type Type - * @return string Value - */ - public function getNextValue($objsoc = 0, $type = -1) - { - global $langs; - return $langs->trans("Function_getNextValue_InModuleNotWorking"); - } + /** + * Return next value available + * + * @param Societe $objsoc Object thirdparty + * @param int $type Type + * @return string Value + */ + public function getNextValue($objsoc = 0, $type = -1) + { + global $langs; + return $langs->trans("Function_getNextValue_InModuleNotWorking"); + } - /** - * Return version of module - * - * @return string Version - */ - public function getVersion() - { - global $langs; - $langs->load("admin"); + /** + * Return version of module + * + * @return string Version + */ + public function getVersion() + { + global $langs; + $langs->load("admin"); - if ($this->version == 'development') return $langs->trans("VersionDevelopment"); - if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); - if ($this->version == 'dolibarr') return DOL_VERSION; - if ($this->version) return $this->version; - return $langs->trans("NotAvailable"); - } + if ($this->version == 'development') return $langs->trans("VersionDevelopment"); + if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); + if ($this->version == 'dolibarr') return DOL_VERSION; + if ($this->version) return $this->version; + return $langs->trans("NotAvailable"); + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Renvoie la liste des modeles de numérotation - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of numbers - */ - public static function liste_modeles($db, $maxfilenamelength = 0) - { - // phpcs:enable - $liste=array(); - $sql =""; + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Renvoie la liste des modeles de numérotation + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of numbers + */ + public static function liste_modeles($db, $maxfilenamelength = 0) + { + // phpcs:enable + $liste=array(); + $sql =""; - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - while ($i < $num) - { - $row = $db->fetch_row($resql); - $liste[$row[0]]=$row[1]; - $i++; - } - } - else - { - return -1; - } - return $liste; - } + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; + while ($i < $num) + { + $row = $db->fetch_row($resql); + $liste[$row[0]]=$row[1]; + $i++; + } + } + else + { + return -1; + } + return $liste; + } - /** - * Return description of module parameters - * - * @param Translate $langs Output language - * @param Societe $soc Third party object - * @param int $type -1=Nothing, 0=Customer, 1=Supplier - * @return string HTML translated description - */ - public function getToolTip($langs, $soc, $type) - { - global $conf; + /** + * Return description of module parameters + * + * @param Translate $langs Output language + * @param Societe $soc Third party object + * @param int $type -1=Nothing, 0=Customer, 1=Supplier + * @return string HTML translated description + */ + public function getToolTip($langs, $soc, $type) + { + global $conf; - $langs->load("admin"); + $langs->load("admin"); - $s=''; - if ($type == -1) $s.=$langs->trans("Name").': '.$this->getNom($langs).'
    '; - if ($type == -1) $s.=$langs->trans("Version").': '.$this->getVersion().'
    '; - if ($type == 0) $s.=$langs->trans("CustomerCodeDesc").'
    '; - if ($type == 1) $s.=$langs->trans("SupplierCodeDesc").'
    '; - if ($type != -1) $s.=$langs->trans("ValidityControledByModule").': '.$this->getNom($langs).'
    '; - $s.='
    '; - $s.=''.$langs->trans("ThisIsModuleRules").':
    '; - if ($type == 0) - { - $s.=$langs->trans("RequiredIfCustomer").': '; - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; - $s.=yn(!$this->code_null, 1, 2); - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; - $s.='
    '; - } - if ($type == 1) - { - $s.=$langs->trans("RequiredIfSupplier").': '; - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; - $s.=yn(!$this->code_null, 1, 2); - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; - $s.='
    '; - } - if ($type == -1) - { - $s.=$langs->trans("Required").': '; - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; - $s.=yn(!$this->code_null, 1, 2); - if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; - $s.='
    '; - } - $s.=$langs->trans("CanBeModifiedIfOk").': '; - $s.=yn($this->code_modifiable, 1, 2); - $s.='
    '; - $s.=$langs->trans("CanBeModifiedIfKo").': '.yn($this->code_modifiable_invalide, 1, 2).'
    '; - $s.=$langs->trans("AutomaticCode").': '.yn($this->code_auto, 1, 2).'
    '; - $s.='
    '; - if ($type == 0 || $type == -1) - { - $nextval=$this->getNextValue($soc, 0); - if (empty($nextval)) $nextval=$langs->trans("Undefined"); - $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Customer").')':'').': '.$nextval.'
    '; - } - if ($type == 1 || $type == -1) - { - $nextval=$this->getNextValue($soc, 1); - if (empty($nextval)) $nextval=$langs->trans("Undefined"); - $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Supplier").')':'').': '.$nextval.''; - } - return $s; - } + $s=''; + if ($type == -1) $s.=$langs->trans("Name").': '.$this->getNom($langs).'
    '; + if ($type == -1) $s.=$langs->trans("Version").': '.$this->getVersion().'
    '; + if ($type == 0) $s.=$langs->trans("CustomerCodeDesc").'
    '; + if ($type == 1) $s.=$langs->trans("SupplierCodeDesc").'
    '; + if ($type != -1) $s.=$langs->trans("ValidityControledByModule").': '.$this->getNom($langs).'
    '; + $s.='
    '; + $s.=''.$langs->trans("ThisIsModuleRules").':
    '; + if ($type == 0) + { + $s.=$langs->trans("RequiredIfCustomer").': '; + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; + $s.=yn(!$this->code_null, 1, 2); + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; + $s.='
    '; + } + if ($type == 1) + { + $s.=$langs->trans("RequiredIfSupplier").': '; + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; + $s.=yn(!$this->code_null, 1, 2); + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; + $s.='
    '; + } + if ($type == -1) + { + $s.=$langs->trans("Required").': '; + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=''; + $s.=yn(!$this->code_null, 1, 2); + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED) && ! empty($this->code_null)) $s.=' '.yn(1, 1, 2).' ('.$langs->trans("ForcedToByAModule", $langs->transnoentities("yes")).')'; + $s.='
    '; + } + $s.=$langs->trans("CanBeModifiedIfOk").': '; + $s.=yn($this->code_modifiable, 1, 2); + $s.='
    '; + $s.=$langs->trans("CanBeModifiedIfKo").': '.yn($this->code_modifiable_invalide, 1, 2).'
    '; + $s.=$langs->trans("AutomaticCode").': '.yn($this->code_auto, 1, 2).'
    '; + $s.='
    '; + if ($type == 0 || $type == -1) + { + $nextval=$this->getNextValue($soc, 0); + if (empty($nextval)) $nextval=$langs->trans("Undefined"); + $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Customer").')':'').': '.$nextval.'
    '; + } + if ($type == 1 || $type == -1) + { + $nextval=$this->getNextValue($soc, 1); + if (empty($nextval)) $nextval=$langs->trans("Undefined"); + $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Supplier").')':'').': '.$nextval.''; + } + return $s; + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Check if mask/numbering use prefix * * @return int 0=no, 1=yes - */ - public function verif_prefixIsUsed() - { - // phpcs:enable - return 0; - } + */ + public function verif_prefixIsUsed() + { + // phpcs:enable + return 0; + } } @@ -266,119 +266,119 @@ abstract class ModeleThirdPartyCode */ abstract class ModeleAccountancyCode { - /** + /** * @var string Error code (or message) */ public $error=''; - /** - * Return description of module - * - * @param Translate $langs Object langs - * @return string Description of module - */ - public function info($langs) - { - $langs->load("bills"); - return $langs->trans("NoDescription"); - } + /** + * Return description of module + * + * @param Translate $langs Object langs + * @return string Description of module + */ + public function info($langs) + { + $langs->load("bills"); + return $langs->trans("NoDescription"); + } - /** - * Return an example of result returned by getNextValue - * - * @param Translate $langs Object langs - * @param societe $objsoc Object thirdparty - * @param int $type Type of third party (1:customer, 2:supplier, -1:autodetect) - * @return string Example - */ - public function getExample($langs, $objsoc = 0, $type = -1) - { - $langs->load("bills"); - return $langs->trans("NoExample"); - } + /** + * Return an example of result returned by getNextValue + * + * @param Translate $langs Object langs + * @param societe $objsoc Object thirdparty + * @param int $type Type of third party (1:customer, 2:supplier, -1:autodetect) + * @return string Example + */ + public function getExample($langs, $objsoc = 0, $type = -1) + { + $langs->load("bills"); + return $langs->trans("NoExample"); + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - return true; - } + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + return true; + } - /** - * Return version of module - * - * @return string Version - */ - public function getVersion() - { - global $langs; - $langs->load("admin"); + /** + * Return version of module + * + * @return string Version + */ + public function getVersion() + { + global $langs; + $langs->load("admin"); - if ($this->version == 'development') return $langs->trans("VersionDevelopment"); - if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); - if ($this->version == 'dolibarr') return DOL_VERSION; - if ($this->version) return $this->version; - return $langs->trans("NotAvailable"); - } + if ($this->version == 'development') return $langs->trans("VersionDevelopment"); + if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); + if ($this->version == 'dolibarr') return DOL_VERSION; + if ($this->version) return $this->version; + return $langs->trans("NotAvailable"); + } - /** - * Return description of module parameters - * - * @param Translate $langs Output language - * @param Societe $soc Third party object - * @param int $type -1=Nothing, 0=Customer, 1=Supplier - * @return string HTML translated description - */ - public function getToolTip($langs, $soc, $type) - { - global $conf,$db; + /** + * Return description of module parameters + * + * @param Translate $langs Output language + * @param Societe $soc Third party object + * @param int $type -1=Nothing, 0=Customer, 1=Supplier + * @return string HTML translated description + */ + public function getToolTip($langs, $soc, $type) + { + global $conf,$db; - $langs->load("admin"); + $langs->load("admin"); - $s=''; - if ($type == -1) $s.=$langs->trans("Name").': '.$this->name.'
    '; - if ($type == -1) $s.=$langs->trans("Version").': '.$this->getVersion().'
    '; - //$s.='
    '; - //$s.=''.$langs->trans("ThisIsModuleRules").':
    '; - $s.='
    '; - if ($type == 0 || $type == -1) - { - $result=$this->get_code($db, $soc, 'customer'); - $nextval=$this->code; - if (empty($nextval)) $nextval=$langs->trans("Undefined"); - $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Customer").')':'').': '.$nextval.'
    '; - } - if ($type == 1 || $type == -1) - { - $result=$this->get_code($db, $soc, 'supplier'); - $nextval=$this->code; - if (empty($nextval)) $nextval=$langs->trans("Undefined"); - $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Supplier").')':'').': '.$nextval.''; - } - return $s; - } + $s=''; + if ($type == -1) $s.=$langs->trans("Name").': '.$this->name.'
    '; + if ($type == -1) $s.=$langs->trans("Version").': '.$this->getVersion().'
    '; + //$s.='
    '; + //$s.=''.$langs->trans("ThisIsModuleRules").':
    '; + $s.='
    '; + if ($type == 0 || $type == -1) + { + $result=$this->get_code($db, $soc, 'customer'); + $nextval=$this->code; + if (empty($nextval)) $nextval=$langs->trans("Undefined"); + $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Customer").')':'').': '.$nextval.'
    '; + } + if ($type == 1 || $type == -1) + { + $result=$this->get_code($db, $soc, 'supplier'); + $nextval=$this->code; + if (empty($nextval)) $nextval=$langs->trans("Undefined"); + $s.=$langs->trans("NextValue").($type == -1?' ('.$langs->trans("Supplier").')':'').': '.$nextval.''; + } + return $s; + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Set accountancy account code for a third party into this->code - * - * @param DoliDB $db Database handler - * @param Societe $societe Third party object - * @param int $type 'customer' or 'supplier' - * @return int >=0 if OK, <0 if KO - */ - public function get_code($db, $societe, $type = '') - { - // phpcs:enable - global $langs; + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Set accountancy account code for a third party into this->code + * + * @param DoliDB $db Database handler + * @param Societe $societe Third party object + * @param int $type 'customer' or 'supplier' + * @return int >=0 if OK, <0 if KO + */ + public function get_code($db, $societe, $type = '') + { + // phpcs:enable + global $langs; - return $langs->trans("NotAvailable"); - } + return $langs->trans("NotAvailable"); + } } @@ -399,7 +399,7 @@ abstract class ModeleAccountancyCode */ function thirdparty_doc_create(DoliDB $db, Societe $object, $message, $modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0) { - dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); - return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php index f6bf6480c0f..a4d75326395 100644 --- a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php +++ b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php @@ -32,15 +32,15 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_order/modules_commandefo class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' /** - * @var string Error code (or message) - */ - public $error = ''; + * @var string Error code (or message) + */ + public $error = ''; /** * @var string Nom du modele @@ -62,118 +62,118 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders */ public function __construct() { - global $conf; + global $conf; - if ((float) $conf->global->MAIN_VERSION_LAST_INSTALL >= 5.0) $this->prefix = 'PO'; // We use correct standard code "PO = Purchase Order" + if ((float) $conf->global->MAIN_VERSION_LAST_INSTALL >= 5.0) $this->prefix = 'PO'; // We use correct standard code "PO = Purchase Order" } - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } - /** - * Return an example of numbering - * - * @return string Example - */ - public function getExample() - { - return $this->prefix."0501-0001"; - } + /** + * Return an example of numbering + * + * @return string Example + */ + public function getExample() + { + return $this->prefix."0501-0001"; + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - global $conf,$langs,$db; + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + global $conf,$langs,$db; - $coyymm=''; $max=''; + $coyymm=''; $max=''; $posindice=8; $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - $sql.= " AND entity = ".$conf->entity; - $resql=$db->query($sql); - if ($resql) - { - $row = $db->fetch_row($resql); - if ($row) { $coyymm = substr($row[0], 0, 6); $max=$row[0]; } - } - if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) - { - return true; - } - else - { + $sql.= " AND entity = ".$conf->entity; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $coyymm = substr($row[0], 0, 6); $max=$row[0]; } + } + if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) + { + return true; + } + else + { $langs->load("errors"); $this->error=$langs->trans('ErrorNumRefModel', $max); - return false; - } - } + return false; + } + } - /** - * Return next value + /** + * Return next value * * @param Societe $objsoc Object third party * @param Object $object Object * @return string Value if OK, 0 if KO - */ - public function getNextValue($objsoc = 0, $object = '') - { - global $db,$conf; + */ + public function getNextValue($objsoc = 0, $object = '') + { + global $db,$conf; - // D'abord on recupere la valeur max - $posindice=8; - $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; + // D'abord on recupere la valeur max + $posindice=8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - $sql.= " AND entity = ".$conf->entity; + $sql.= " AND entity = ".$conf->entity; - $resql=$db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - if ($obj) $max = intval($obj->max); - else $max=0; - } + $resql=$db->query($sql); + if ($resql) + { + $obj = $db->fetch_object($resql); + if ($obj) $max = intval($obj->max); + else $max=0; + } //$date=time(); - $date=$object->date_commande; // Not always defined - if (empty($date)) $date=$object->date; // Creation date is order date for suppliers orders - $yymm = strftime("%y%m", $date); + $date=$object->date_commande; // Not always defined + if (empty($date)) $date=$object->date; // Creation date is order date for suppliers orders + $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max+1); + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max+1); - return $this->prefix.$yymm."-".$num; - } + return $this->prefix.$yymm."-".$num; + } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Renvoie la reference de commande suivante non utilisee - * + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Renvoie la reference de commande suivante non utilisee + * * @param Societe $objsoc Object third party * @param Object $object Object - * @return string Texte descripif - */ - public function commande_get_num($objsoc = 0, $object = '') - { - // phpcs:enable - return $this->getNextValue($objsoc, $object); - } + * @return string Texte descripif + */ + public function commande_get_num($objsoc = 0, $object = '') + { + // phpcs:enable + return $this->getNextValue($objsoc, $object); + } } diff --git a/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php b/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php index c3499bdbf8d..b10a45dfa8b 100644 --- a/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php +++ b/htdocs/core/modules/supplier_payment/mod_supplier_payment_bronan.php @@ -30,9 +30,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_payment/modules_supplier class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='SPAY'; @@ -55,16 +55,16 @@ class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments public $name='Bronan'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -79,8 +79,8 @@ class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ @@ -147,15 +147,15 @@ class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments $date=$object->datepaye; $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max+1); + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max+1); dol_syslog(__METHOD__." return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return next free value * @@ -165,7 +165,7 @@ class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments */ public function payment_get_num($objsoc, $objforref) { - // phpcs:enable + // phpcs:enable return $this->getNextValue($objsoc, $objforref); } } diff --git a/htdocs/core/modules/supplier_payment/modules_supplier_payment.php b/htdocs/core/modules/supplier_payment/modules_supplier_payment.php index f020e501c1e..88476330d13 100644 --- a/htdocs/core/modules/supplier_payment/modules_supplier_payment.php +++ b/htdocs/core/modules/supplier_payment/modules_supplier_payment.php @@ -28,17 +28,17 @@ abstract class ModelePDFSuppliersPayments extends CommonDocGenerator public $error=''; - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return list of active generation models * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of numbers - */ + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of numbers + */ public static function liste_modeles($db, $maxfilenamelength = 0) { - // phpcs:enable + // phpcs:enable global $conf; $type='supplier_payment'; @@ -98,11 +98,11 @@ abstract class ModeleNumRefSupplierPayments } /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ public function canBeActivated() { return true; diff --git a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php index a340f3eddd1..2af31145b94 100644 --- a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php +++ b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_marbre.php @@ -32,9 +32,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_proposal/modules_supplie class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix='RQ'; // RQ = Request for quotation @@ -57,16 +57,16 @@ class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal public $name='Marbre'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -81,8 +81,8 @@ class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @return boolean false if conflict, true if ok */ diff --git a/htdocs/core/modules/takepos/modules_takepos.php b/htdocs/core/modules/takepos/modules_takepos.php index e077cda7b6b..28ac39c3f0f 100644 --- a/htdocs/core/modules/takepos/modules_takepos.php +++ b/htdocs/core/modules/takepos/modules_takepos.php @@ -47,21 +47,21 @@ abstract class ModeleNumRefTakepos * @return boolean true if module can be used */ public function isEnabled() - { - return true; - } + { + return true; + } /** * Renvoi la description par defaut du modele de numerotation * * @return string Texte descripif */ - public function info() - { - global $langs; - $langs->load("cashdesk@cashdesk"); - return $langs->trans("NoDescription"); - } + public function info() + { + global $langs; + $langs->load("cashdesk@cashdesk"); + return $langs->trans("NoDescription"); + } /** * Return an example of numbering @@ -69,11 +69,11 @@ abstract class ModeleNumRefTakepos * @return string Example */ public function getExample() - { - global $langs; - $langs->load('cashdesk@cashdesk'); - return $langs->trans('NoExample'); - } + { + global $langs; + $langs->load('cashdesk@cashdesk'); + return $langs->trans('NoExample'); + } /** * Checks if the numbers already in the database do not @@ -82,20 +82,20 @@ abstract class ModeleNumRefTakepos * @return boolean false if conflict, true if ok */ public function canBeActivated() - { - return true; - } + { + return true; + } - /** - * Renvoi prochaine valeur attribuee - * - * @return string Valeur - */ + /** + * Renvoi prochaine valeur attribuee + * + * @return string Valeur + */ public function getNextValue() - { - global $langs; - return $langs->trans('NotAvailable'); - } + { + global $langs; + return $langs->trans('NotAvailable'); + } /** * Renvoi version du modele de numerotation @@ -103,14 +103,14 @@ abstract class ModeleNumRefTakepos * @return string Valeur */ public function getVersion() - { - global $langs; - $langs->load("admin"); + { + global $langs; + $langs->load("admin"); - if ($this->version == 'development') return $langs->trans('VersionDevelopment'); - if ($this->version == 'experimental') return $langs->trans('VersionExperimental'); - if ($this->version == 'dolibarr') return DOL_VERSION; - if ($this->version) return $this->version; - return $langs->trans('NotAvailable'); - } + if ($this->version == 'development') return $langs->trans('VersionDevelopment'); + if ($this->version == 'experimental') return $langs->trans('VersionExperimental'); + if ($this->version == 'dolibarr') return DOL_VERSION; + if ($this->version) return $this->version; + return $langs->trans('NotAvailable'); + } } diff --git a/htdocs/core/modules/ticket/mod_ticket_simple.php b/htdocs/core/modules/ticket/mod_ticket_simple.php index a6fbb6fde72..f5e5f025175 100644 --- a/htdocs/core/modules/ticket/mod_ticket_simple.php +++ b/htdocs/core/modules/ticket/mod_ticket_simple.php @@ -30,20 +30,20 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/ticket/modules_ticket.php'; */ class mod_ticket_simple extends ModeleNumRefTicket { - /** - * Dolibarr version of the loaded document - * @var string - */ + /** + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' - public $prefix = 'TS'; + public $prefix = 'TS'; - /** - * @var string Error code (or message) - */ - public $error = ''; + /** + * @var string Error code (or message) + */ + public $error = ''; - /** + /** * @var string Nom du modele * @deprecated * @see $name @@ -55,108 +55,108 @@ class mod_ticket_simple extends ModeleNumRefTicket */ public $name='Simple'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } - /** - * Return an example of numbering module values - * - * @return string Example - */ - public function getExample() - { - return $this->prefix . "0501-0001"; - } + /** + * Return an example of numbering module values + * + * @return string Example + */ + public function getExample() + { + return $this->prefix . "0501-0001"; + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - global $conf, $langs, $db; + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + global $conf, $langs, $db; - $coyymm = ''; - $max = ''; + $coyymm = ''; + $max = ''; - $posindice = 8; - $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM " . $posindice . ") AS SIGNED)) as max"; - $sql .= " FROM " . MAIN_DB_PREFIX . "ticket"; - $search = $this->prefix . "____-%"; - $sql .= " WHERE ref LIKE '" . $search ."'"; - $sql .= " AND entity = " . $conf->entity; - $resql = $db->query($sql); - if ($resql) { - $row = $db->fetch_row($resql); - if ($row) { - $coyymm = substr($row[0], 0, 6); - $max = $row[0]; - } - } - if (!$coyymm || preg_match('/' . $this->prefix . '[0-9][0-9][0-9][0-9]/i', $coyymm)) { - return true; - } else { - $langs->load("errors"); - $this->error = $langs->trans('ErrorNumRefModel', $max); - return false; - } - } + $posindice = 8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM " . $posindice . ") AS SIGNED)) as max"; + $sql .= " FROM " . MAIN_DB_PREFIX . "ticket"; + $search = $this->prefix . "____-%"; + $sql .= " WHERE ref LIKE '" . $search ."'"; + $sql .= " AND entity = " . $conf->entity; + $resql = $db->query($sql); + if ($resql) { + $row = $db->fetch_row($resql); + if ($row) { + $coyymm = substr($row[0], 0, 6); + $max = $row[0]; + } + } + if (!$coyymm || preg_match('/' . $this->prefix . '[0-9][0-9][0-9][0-9]/i', $coyymm)) { + return true; + } else { + $langs->load("errors"); + $this->error = $langs->trans('ErrorNumRefModel', $max); + return false; + } + } - /** - * Return next value - * - * @param Societe $objsoc Object third party - * @param Project $ticket Object ticket - * @return string Value if OK, 0 if KO - */ - public function getNextValue($objsoc, $ticket) - { - global $db, $conf; + /** + * Return next value + * + * @param Societe $objsoc Object third party + * @param Project $ticket Object ticket + * @return string Value if OK, 0 if KO + */ + public function getNextValue($objsoc, $ticket) + { + global $db, $conf; - // D'abord on recupere la valeur max - $posindice = 8; - $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM " . $posindice . ") AS SIGNED)) as max"; - $sql .= " FROM " . MAIN_DB_PREFIX . "ticket"; - $search = $this->prefix . "____-%"; - $sql .= " WHERE ref LIKE '" . $search ."'"; - $sql .= " AND entity = " . $conf->entity; + // D'abord on recupere la valeur max + $posindice = 8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM " . $posindice . ") AS SIGNED)) as max"; + $sql .= " FROM " . MAIN_DB_PREFIX . "ticket"; + $search = $this->prefix . "____-%"; + $sql .= " WHERE ref LIKE '" . $search ."'"; + $sql .= " AND entity = " . $conf->entity; - $resql = $db->query($sql); - if ($resql) { - $obj = $db->fetch_object($resql); - if ($obj) { - $max = intval($obj->max); - } else { - $max = 0; - } - } else { - dol_syslog("mod_ticket_simple::getNextValue", LOG_DEBUG); - return -1; - } + $resql = $db->query($sql); + if ($resql) { + $obj = $db->fetch_object($resql); + if ($obj) { + $max = intval($obj->max); + } else { + $max = 0; + } + } else { + dol_syslog("mod_ticket_simple::getNextValue", LOG_DEBUG); + return -1; + } - $date = empty($ticket->datec) ? dol_now() : $ticket->datec; + $date = empty($ticket->datec) ? dol_now() : $ticket->datec; - //$yymm = strftime("%y%m",time()); - $yymm = strftime("%y%m", $date); + //$yymm = strftime("%y%m",time()); + $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) { - $num = $max + 1; - } // If counter > 9999, we do not format on 4 chars, we take number as it is - else { - $num = sprintf("%04s", $max + 1); - } + if ($max >= (pow(10, 4) - 1)) { + $num = $max + 1; + } // If counter > 9999, we do not format on 4 chars, we take number as it is + else { + $num = sprintf("%04s", $max + 1); + } - dol_syslog("mod_ticket_simple::getNextValue return " . $this->prefix . $yymm . "-" . $num); - return $this->prefix . $yymm . "-" . $num; - } + dol_syslog("mod_ticket_simple::getNextValue return " . $this->prefix . $yymm . "-" . $num); + return $this->prefix . $yymm . "-" . $num; + } } diff --git a/htdocs/core/modules/ticket/modules_ticket.php b/htdocs/core/modules/ticket/modules_ticket.php index ee50071b591..ad8394fa91e 100644 --- a/htdocs/core/modules/ticket/modules_ticket.php +++ b/htdocs/core/modules/ticket/modules_ticket.php @@ -29,95 +29,95 @@ */ abstract class ModeleNumRefTicket { - /** - * @var string Error code (or message) - */ - public $error = ''; + /** + * @var string Error code (or message) + */ + public $error = ''; - /** - * Return if a module can be used or not - * - * @return boolean true if module can be used - */ - public function isEnabled() - { - return true; - } + /** + * Return if a module can be used or not + * + * @return boolean true if module can be used + */ + public function isEnabled() + { + return true; + } - /** - * Renvoi la description par defaut du modele de numerotation - * - * @return string Texte descripif - */ - public function info() - { - global $langs; - $langs->load("ticket"); - return $langs->trans("NoDescription"); - } + /** + * Renvoi la description par defaut du modele de numerotation + * + * @return string Texte descripif + */ + public function info() + { + global $langs; + $langs->load("ticket"); + return $langs->trans("NoDescription"); + } - /** - * Return an example of numbering - * - * @return string Example - */ - public function getExample() - { - global $langs; - $langs->load("ticket"); - return $langs->trans("NoExample"); - } + /** + * Return an example of numbering + * + * @return string Example + */ + public function getExample() + { + global $langs; + $langs->load("ticket"); + return $langs->trans("NoExample"); + } - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @return boolean false if conflict, true if ok - */ - public function canBeActivated() - { - return true; - } + /** + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. + * + * @return boolean false if conflict, true if ok + */ + public function canBeActivated() + { + return true; + } - /** - * Renvoi prochaine valeur attribuee - * - * @param Societe $objsoc Object third party - * @param Project $project Object project - * @return string Valeur - */ - public function getNextValue($objsoc, $project) - { - global $langs; - return $langs->trans("NotAvailable"); - } + /** + * Renvoi prochaine valeur attribuee + * + * @param Societe $objsoc Object third party + * @param Project $project Object project + * @return string Valeur + */ + public function getNextValue($objsoc, $project) + { + global $langs; + return $langs->trans("NotAvailable"); + } - /** - * Renvoi version du module numerotation - * - * @return string Valeur - */ - public function getVersion() - { - global $langs; - $langs->load("admin"); + /** + * Renvoi version du module numerotation + * + * @return string Valeur + */ + public function getVersion() + { + global $langs; + $langs->load("admin"); - if ($this->version == 'development') { - return $langs->trans("VersionDevelopment"); - } + if ($this->version == 'development') { + return $langs->trans("VersionDevelopment"); + } - if ($this->version == 'experimental') { - return $langs->trans("VersionExperimental"); - } + if ($this->version == 'experimental') { + return $langs->trans("VersionExperimental"); + } - if ($this->version == 'dolibarr') { - return DOL_VERSION; - } + if ($this->version == 'dolibarr') { + return DOL_VERSION; + } - if ($this->version) { - return $this->version; - } + if ($this->version) { + return $this->version; + } - return $langs->trans("NotAvailable"); - } + return $langs->trans("NotAvailable"); + } } diff --git a/htdocs/core/tpl/card_presend.tpl.php b/htdocs/core/tpl/card_presend.tpl.php index 37920ed1ebc..f349251d654 100644 --- a/htdocs/core/tpl/card_presend.tpl.php +++ b/htdocs/core/tpl/card_presend.tpl.php @@ -28,8 +28,8 @@ // Protection to avoid direct call of template if (empty($conf) || ! is_object($conf)) { - print "Error, template page can't be called as URL"; - exit; + print "Error, template page can't be called as URL"; + exit; } @@ -54,7 +54,7 @@ if ($action == 'presend') } else { - $fileparams = dol_most_recent_file($diroutput . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $fileparams = dol_most_recent_file($diroutput . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); } $file = $fileparams['fullname']; @@ -102,11 +102,11 @@ if ($action == 'presend') } if ($object->element == 'invoice_supplier') { - $fileparams = dol_most_recent_file($diroutput . '/' . get_exdir($object->id, 2, 0, 0, $object, $object->element).$ref, preg_quote($ref, '/').'([^\-])+'); + $fileparams = dol_most_recent_file($diroutput . '/' . get_exdir($object->id, 2, 0, 0, $object, $object->element).$ref, preg_quote($ref, '/').'([^\-])+'); } else { - $fileparams = dol_most_recent_file($diroutput . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $fileparams = dol_most_recent_file($diroutput . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); } $file = $fileparams['fullname']; @@ -212,51 +212,51 @@ if ($action == 'presend') complete_substitutions_array($substitutionarray, $outputlangs, $object, $parameters); // Find the good contact address - $tmpobject = $object; - if (($object->element == 'shipping'|| $object->element == 'reception')) { - $origin = $object->origin; - $origin_id = $object->origin_id; + $tmpobject = $object; + if (($object->element == 'shipping'|| $object->element == 'reception')) { + $origin = $object->origin; + $origin_id = $object->origin_id; - if (!empty($origin) && !empty($origin_id)) { - $element = $subelement = $origin; - $regs = array(); - if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) { - $element = $regs[1]; - $subelement = $regs[2]; - } - // For compatibility - if ($element == 'order') { - $element = $subelement = 'commande'; - } - if ($element == 'propal') { - $element = 'comm/propal'; - $subelement = 'propal'; - } - if ($element == 'contract') { - $element = $subelement = 'contrat'; - } - if ($element == 'inter') { - $element = $subelement = 'ficheinter'; - } - if ($element == 'shipping') { - $element = $subelement = 'expedition'; - } - if ($element == 'order_supplier') { - $element = 'fourn'; - $subelement = 'fournisseur.commande'; - } - if ($element == 'project') { - $element = 'projet'; - } + if (!empty($origin) && !empty($origin_id)) { + $element = $subelement = $origin; + $regs = array(); + if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) { + $element = $regs[1]; + $subelement = $regs[2]; + } + // For compatibility + if ($element == 'order') { + $element = $subelement = 'commande'; + } + if ($element == 'propal') { + $element = 'comm/propal'; + $subelement = 'propal'; + } + if ($element == 'contract') { + $element = $subelement = 'contrat'; + } + if ($element == 'inter') { + $element = $subelement = 'ficheinter'; + } + if ($element == 'shipping') { + $element = $subelement = 'expedition'; + } + if ($element == 'order_supplier') { + $element = 'fourn'; + $subelement = 'fournisseur.commande'; + } + if ($element == 'project') { + $element = 'projet'; + } - dol_include_once('/' . $element . '/class/' . $subelement . '.class.php'); - $classname = ucfirst($origin); - $objectsrc = new $classname($db); - $objectsrc->fetch($origin_id); + dol_include_once('/' . $element . '/class/' . $subelement . '.class.php'); + $classname = ucfirst($origin); + $objectsrc = new $classname($db); + $objectsrc->fetch($origin_id); - $tmpobject = $objectsrc; - } - } + $tmpobject = $objectsrc; + } + } $custcontact = ''; $contactarr = array(); @@ -264,11 +264,11 @@ if ($action == 'presend') if (is_array($contactarr) && count($contactarr) > 0) { require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php'; - $contactstatic = new Contact($db); + $contactstatic = new Contact($db); foreach ($contactarr as $contact) { - $contactstatic->fetch($contact['id']); - $substitutionarray['__CONTACT_NAME_'.$contact['code'].'__'] = $contactstatic->getFullName($outputlangs, 1); + $contactstatic->fetch($contact['id']); + $substitutionarray['__CONTACT_NAME_'.$contact['code'].'__'] = $contactstatic->getFullName($outputlangs, 1); } } diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 05dd4a6a3ab..6400f032252 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -183,13 +183,13 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' if (empty($reshook)) { - $objectclass = 'Expedition'; - $objectlabel = 'Sendings'; - $permissiontoread = $user->rights->expedition->lire; - $permissiontoadd = $user->rights->expedition->creer; - $permissiontodelete = $user->rights->expedition->supprimer; - $uploaddir = $conf->expedition->dir_output.'/sending'; - include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; + $objectclass = 'Expedition'; + $objectlabel = 'Sendings'; + $permissiontoread = $user->rights->expedition->lire; + $permissiontoadd = $user->rights->expedition->creer; + $permissiontodelete = $user->rights->expedition->supprimer; + $uploaddir = $conf->expedition->dir_output.'/sending'; + include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } @@ -313,7 +313,7 @@ if ($resql) { $num = $db->num_rows($resql); - $arrayofselected = is_array($toselect) ? $toselect : array(); + $arrayofselected = is_array($toselect) ? $toselect : array(); $expedition = new Expedition($db); @@ -341,18 +341,18 @@ if ($resql) // Add $param from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; - $arrayofmassactions = array( - 'builddoc' => $langs->trans("PDFMerge"), - //'classifyclose'=>$langs->trans("Close"), TODO massive close shipment ie: when truck is charged - 'presend' => $langs->trans("SendByMail"), - ); - if (in_array($massaction, array('presend'))) $arrayofmassactions = array(); - $massactionbutton = $form->selectMassAction('', $arrayofmassactions); + $arrayofmassactions = array( + 'builddoc' => $langs->trans("PDFMerge"), + //'classifyclose'=>$langs->trans("Close"), TODO massive close shipment ie: when truck is charged + 'presend' => $langs->trans("SendByMail"), + ); + if (in_array($massaction, array('presend'))) $arrayofmassactions = array(); + $massactionbutton = $form->selectMassAction('', $arrayofmassactions); $newcardbutton = ''; if ($user->rights->expedition->creer) { - $newcardbutton .= dolGetButtonTitle($langs->trans('NewSending'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/expedition/card.php?action=create2'); + $newcardbutton .= dolGetButtonTitle($langs->trans('NewSending'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/expedition/card.php?action=create2'); } $i = 0; @@ -367,11 +367,11 @@ if ($resql) print_barre_liste($langs->trans('ListOfSendings'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); - $topicmail = "SendShippingRef"; - $modelmail = "shipping_send"; - $objecttmp = new Expedition($db); - $trackid = 'shi'.$object->id; - include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; + $topicmail = "SendShippingRef"; + $modelmail = "shipping_send"; + $objecttmp = new Expedition($db); + $trackid = 'shi'.$object->id; + include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; if ($sall) { @@ -583,7 +583,7 @@ if ($resql) print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); print "\n"; - $typenArray = $formcompany->typent_array(1); + $typenArray = $formcompany->typent_array(1); $i = 0; $totalarray = array(); while ($i < min($num, $limit)) @@ -736,48 +736,48 @@ if ($resql) if (!$i) $totalarray['nbfield']++; } - // Action column - print ''; - if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - { - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) $selected = 1; - print ''; - } - print ''; + // Action column + print ''; + if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + { + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) $selected = 1; + print ''; + } + print ''; if (!$i) $totalarray['nbfield']++; print "\n"; $i++; } - $db->free($resql); + $db->free($resql); - $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); - $reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; + $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); + $reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; print ""; print ""; print ''; - $hidegeneratedfilelistifempty = 1; - if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) $hidegeneratedfilelistifempty = 0; + $hidegeneratedfilelistifempty = 1; + if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) $hidegeneratedfilelistifempty = 0; - // Show list of available documents - $urlsource = $_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; - $urlsource .= str_replace('&', '&', $param); + // Show list of available documents + $urlsource = $_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; + $urlsource .= str_replace('&', '&', $param); - $filedir = $diroutputmassaction; - $genallowed = $user->rights->expedition->lire; - $delallowed = $user->rights->expedition->creer; - $title = ''; + $filedir = $diroutputmassaction; + $genallowed = $user->rights->expedition->lire; + $delallowed = $user->rights->expedition->creer; + $title = ''; - print $formfile->showdocuments('massfilesarea_sendings', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); + print $formfile->showdocuments('massfilesarea_sendings', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); } else { - dol_print_error($db); + dol_print_error($db); } // End of page diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 8cf2e17d804..f6ad3379caa 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -101,7 +101,7 @@ $error = 0; if ($dirins && $action == 'initmodule' && $modulename) { - $modulename = ucfirst($modulename); // Force first letter in uppercase + $modulename = ucfirst($modulename); // Force first letter in uppercase if (preg_match('/[^a-z0-9_]/i', $modulename)) { @@ -115,8 +115,8 @@ if ($dirins && $action == 'initmodule' && $modulename) $destdir = $dirins.'/'.strtolower($modulename); $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename ); $result = dolCopyDir($srcdir, $destdir, 0, 0, $arrayreplacement); @@ -193,24 +193,24 @@ if ($dirins && $action == 'initmodule' && $modulename) { //var_dump($phpfileval['fullname']); $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') ); - if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME)) $arrayreplacement['Editor name'] = $conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME; - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL)) $arrayreplacement['https://www.example.com'] = $conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL; - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_AUTHOR)) $arrayreplacement['---Put here your own copyright and developer email---'] = dol_print_date($now, '%Y').' '.$conf->global->MODULEBUILDER_SPECIFIC_AUTHOR; - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_VERSION)) $arrayreplacement['1.0'] = $conf->global->MODULEBUILDER_SPECIFIC_VERSION; - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_FAMILY)) $arrayreplacement['other'] = $conf->global->MODULEBUILDER_SPECIFIC_FAMILY; - } + if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { + if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME)) $arrayreplacement['Editor name'] = $conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME; + if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL)) $arrayreplacement['https://www.example.com'] = $conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL; + if (!empty($conf->global->MODULEBUILDER_SPECIFIC_AUTHOR)) $arrayreplacement['---Put here your own copyright and developer email---'] = dol_print_date($now, '%Y').' '.$conf->global->MODULEBUILDER_SPECIFIC_AUTHOR; + if (!empty($conf->global->MODULEBUILDER_SPECIFIC_VERSION)) $arrayreplacement['1.0'] = $conf->global->MODULEBUILDER_SPECIFIC_VERSION; + if (!empty($conf->global->MODULEBUILDER_SPECIFIC_FAMILY)) $arrayreplacement['other'] = $conf->global->MODULEBUILDER_SPECIFIC_FAMILY; + } $result = dolReplaceInFile($phpfileval['fullname'], $arrayreplacement); @@ -239,78 +239,78 @@ if ($dirins && $action == 'initmodule' && $modulename) if ($dirins && $action == 'initapi' && !empty($module)) { - $modulename = ucfirst($module); // Force first letter in uppercase - $objectname = $tabobj; + $modulename = ucfirst($module); // Force first letter in uppercase + $objectname = $tabobj; - dol_mkdir($dirins.'/'.strtolower($module).'/class'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/class/api_mymodule.class.php'; - $destfile = $dirins.'/'.strtolower($module).'/class/api_'.strtolower($module).'.class.php'; - //var_dump($srcfile);var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); + dol_mkdir($dirins.'/'.strtolower($module).'/class'); + $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; + $srcfile = $srcdir.'/class/api_mymodule.class.php'; + $destfile = $dirins.'/'.strtolower($module).'/class/api_'.strtolower($module).'.class.php'; + //var_dump($srcfile);var_dump($destfile); + $result = dol_copy($srcfile, $destfile, 0, 0); - if ($result > 0) - { - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - 'myobject'=>strtolower($objectname), - 'MyObject'=>$objectname, - 'MYOBJECT'=>strtoupper($objectname), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); + if ($result > 0) + { + //var_dump($phpfileval['fullname']); + $arrayreplacement = array( + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + 'myobject'=>strtolower($objectname), + 'MyObject'=>$objectname, + 'MYOBJECT'=>strtoupper($objectname), + '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + ); - dolReplaceInFile($destfile, $arrayreplacement); - } - else - { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } + dolReplaceInFile($destfile, $arrayreplacement); + } + else + { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); + } } if ($dirins && $action == 'initphpunit' && !empty($module)) { - $modulename = ucfirst($module); // Force first letter in uppercase - $objectname = $tabobj; + $modulename = ucfirst($module); // Force first letter in uppercase + $objectname = $tabobj; - dol_mkdir($dirins.'/'.strtolower($module).'/class'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/test/phpunit/MyObjectTest.php'; - $destfile = $dirins.'/'.strtolower($module).'/test/phpunit/'.strtolower($objectname).'Test.php'; - $result = dol_copy($srcfile, $destfile, 0, 0); + dol_mkdir($dirins.'/'.strtolower($module).'/class'); + $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; + $srcfile = $srcdir.'/test/phpunit/MyObjectTest.php'; + $destfile = $dirins.'/'.strtolower($module).'/test/phpunit/'.strtolower($objectname).'Test.php'; + $result = dol_copy($srcfile, $destfile, 0, 0); - if ($result > 0) - { - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - 'myobject'=>strtolower($objectname), - 'MyObject'=>$objectname, - 'MYOBJECT'=>strtoupper($objectname), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); + if ($result > 0) + { + //var_dump($phpfileval['fullname']); + $arrayreplacement = array( + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + 'myobject'=>strtolower($objectname), + 'MyObject'=>$objectname, + 'MYOBJECT'=>strtoupper($objectname), + '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + ); - dolReplaceInFile($destfile, $arrayreplacement); - } - else - { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } + dolReplaceInFile($destfile, $arrayreplacement); + } + else + { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); + } } if ($dirins && $action == 'initsqlextrafields' && !empty($module)) { @@ -361,105 +361,105 @@ if ($dirins && $action == 'initsqlextrafields' && !empty($module)) } if ($dirins && $action == 'inithook' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/class'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/class/actions_mymodule.class.php'; - $destfile = $dirins.'/'.strtolower($module).'/class/actions_'.strtolower($module).'.class.php'; - //var_dump($srcfile);var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); + dol_mkdir($dirins.'/'.strtolower($module).'/class'); + $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; + $srcfile = $srcdir.'/class/actions_mymodule.class.php'; + $destfile = $dirins.'/'.strtolower($module).'/class/actions_'.strtolower($module).'.class.php'; + //var_dump($srcfile);var_dump($destfile); + $result = dol_copy($srcfile, $destfile, 0, 0); - if ($result > 0) - { - $modulename = ucfirst($module); // Force first letter in uppercase + if ($result > 0) + { + $modulename = ucfirst($module); // Force first letter in uppercase - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); + //var_dump($phpfileval['fullname']); + $arrayreplacement = array( + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + ); - dolReplaceInFile($destfile, $arrayreplacement); - } - else - { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } + dolReplaceInFile($destfile, $arrayreplacement); + } + else + { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); + } } if ($dirins && $action == 'inittrigger' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/core/triggers'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php'; - $destfile = $dirins.'/'.strtolower($module).'/core/triggers/interface_99_mod'.$module.'_'.$module.'Triggers.class.php'; - //var_dump($srcfile);var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); + dol_mkdir($dirins.'/'.strtolower($module).'/core/triggers'); + $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; + $srcfile = $srcdir.'/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php'; + $destfile = $dirins.'/'.strtolower($module).'/core/triggers/interface_99_mod'.$module.'_'.$module.'Triggers.class.php'; + //var_dump($srcfile);var_dump($destfile); + $result = dol_copy($srcfile, $destfile, 0, 0); - if ($result > 0) - { - $modulename = ucfirst($module); // Force first letter in uppercase + if ($result > 0) + { + $modulename = ucfirst($module); // Force first letter in uppercase - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); + //var_dump($phpfileval['fullname']); + $arrayreplacement = array( + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + ); - dolReplaceInFile($destfile, $arrayreplacement); - } - else - { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } + dolReplaceInFile($destfile, $arrayreplacement); + } + else + { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); + } } if ($dirins && $action == 'initwidget' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/core/boxes'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/core/boxes/mymodulewidget1.php'; - $destfile = $dirins.'/'.strtolower($module).'/core/boxes/'.strtolower($module).'widget1.php'; - //var_dump($srcfile);var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); + dol_mkdir($dirins.'/'.strtolower($module).'/core/boxes'); + $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; + $srcfile = $srcdir.'/core/boxes/mymodulewidget1.php'; + $destfile = $dirins.'/'.strtolower($module).'/core/boxes/'.strtolower($module).'widget1.php'; + //var_dump($srcfile);var_dump($destfile); + $result = dol_copy($srcfile, $destfile, 0, 0); - if ($result > 0) - { - $modulename = ucfirst($module); // Force first letter in uppercase + if ($result > 0) + { + $modulename = ucfirst($module); // Force first letter in uppercase - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); + //var_dump($phpfileval['fullname']); + $arrayreplacement = array( + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + ); - dolReplaceInFile($destfile, $arrayreplacement); - } - else - { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } + dolReplaceInFile($destfile, $arrayreplacement); + } + else + { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); + } } if ($dirins && $action == 'initcss' && !empty($module)) { @@ -490,9 +490,9 @@ if ($dirins && $action == 'initcss' && !empty($module)) dolReplaceInFile($destfile, $arrayreplacement); // Update descriptor file to uncomment file - $srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php'; - $arrayreplacement = array('/\/\/\s*\''.preg_quote('/'.strtolower($module).'/css/'.strtolower($module).'.css.php', '/').'\'/' => '\'/'.strtolower($module).'/css/'.strtolower($module).'.css.php\''); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); + $srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php'; + $arrayreplacement = array('/\/\/\s*\''.preg_quote('/'.strtolower($module).'/css/'.strtolower($module).'.css.php', '/').'\'/' => '\'/'.strtolower($module).'/css/'.strtolower($module).'.css.php\''); + dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); } else { @@ -541,93 +541,93 @@ if ($dirins && $action == 'initjs' && !empty($module)) } if ($dirins && $action == 'initcli' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/scripts'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/scripts/mymodule.php'; - $destfile = $dirins.'/'.strtolower($module).'/scripts/'.strtolower($module).'.php'; - //var_dump($srcfile);var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); + dol_mkdir($dirins.'/'.strtolower($module).'/scripts'); + $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; + $srcfile = $srcdir.'/scripts/mymodule.php'; + $destfile = $dirins.'/'.strtolower($module).'/scripts/'.strtolower($module).'.php'; + //var_dump($srcfile);var_dump($destfile); + $result = dol_copy($srcfile, $destfile, 0, 0); - if ($result > 0) - { - $modulename = ucfirst($module); // Force first letter in uppercase + if ($result > 0) + { + $modulename = ucfirst($module); // Force first letter in uppercase - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '__MYCOMPANY_NAME__'=>$mysoc->name, - '__KEYWORDS__'=>$modulename, - '__USER_FULLNAME__'=>$user->getFullName($langs), - '__USER_EMAIL__'=>$user->email, - '__YYYY-MM-DD__'=>dol_print_date($now, 'dayrfc'), - '---Put here your own copyright and developer email---'=>dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); + //var_dump($phpfileval['fullname']); + $arrayreplacement = array( + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + '__MYCOMPANY_NAME__'=>$mysoc->name, + '__KEYWORDS__'=>$modulename, + '__USER_FULLNAME__'=>$user->getFullName($langs), + '__USER_EMAIL__'=>$user->email, + '__YYYY-MM-DD__'=>dol_print_date($now, 'dayrfc'), + '---Put here your own copyright and developer email---'=>dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + ); - dolReplaceInFile($destfile, $arrayreplacement); - } - else - { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } + dolReplaceInFile($destfile, $arrayreplacement); + } + else + { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); + } } if ($dirins && $action == 'initdoc' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/doc'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/doc/Documentation.asciidoc'; - $destfile = $dirins.'/'.strtolower($module).'/doc/Documentation.asciidoc'; - //var_dump($srcfile);var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); + dol_mkdir($dirins.'/'.strtolower($module).'/doc'); + $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; + $srcfile = $srcdir.'/doc/Documentation.asciidoc'; + $destfile = $dirins.'/'.strtolower($module).'/doc/Documentation.asciidoc'; + //var_dump($srcfile);var_dump($destfile); + $result = dol_copy($srcfile, $destfile, 0, 0); - if ($result > 0) - { - $modulename = ucfirst($module); // Force first letter in uppercase - $modulelowercase = strtolower($module); + if ($result > 0) + { + $modulename = ucfirst($module); // Force first letter in uppercase + $modulelowercase = strtolower($module); - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '__MYCOMPANY_NAME__'=>$mysoc->name, - '__KEYWORDS__'=>$modulename, - '__USER_FULLNAME__'=>$user->getFullName($langs), - '__USER_EMAIL__'=>$user->email, - '__YYYY-MM-DD__'=>dol_print_date($now, 'dayrfc'), - '---Put here your own copyright and developer email---'=>dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); + //var_dump($phpfileval['fullname']); + $arrayreplacement = array( + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + '__MYCOMPANY_NAME__'=>$mysoc->name, + '__KEYWORDS__'=>$modulename, + '__USER_FULLNAME__'=>$user->getFullName($langs), + '__USER_EMAIL__'=>$user->email, + '__YYYY-MM-DD__'=>dol_print_date($now, 'dayrfc'), + '---Put here your own copyright and developer email---'=>dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + ); - dolReplaceInFile($destfile, $arrayreplacement); + dolReplaceInFile($destfile, $arrayreplacement); - // Delete old documentation files - $FILENAMEDOC = $modulelowercase.'.html'; - $FILENAMEDOCPDF = $modulelowercase.'.pdf'; - $outputfiledoc = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOC; - $outputfiledocurl = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOC; - $outputfiledocpdf = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOCPDF; - $outputfiledocurlpdf = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOCPDF; + // Delete old documentation files + $FILENAMEDOC = $modulelowercase.'.html'; + $FILENAMEDOCPDF = $modulelowercase.'.pdf'; + $outputfiledoc = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOC; + $outputfiledocurl = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOC; + $outputfiledocpdf = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOCPDF; + $outputfiledocurlpdf = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOCPDF; - dol_delete_file($outputfiledoc, 0, 0, 0, null, false, 0); - dol_delete_file($outputfiledocpdf, 0, 0, 0, null, false, 0); - } - else - { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } + dol_delete_file($outputfiledoc, 0, 0, 0, null, false, 0); + dol_delete_file($outputfiledocpdf, 0, 0, 0, null, false, 0); + } + else + { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); + } } if ($dirins && $action == 'addlanguage' && !empty($module)) @@ -640,24 +640,24 @@ if ($dirins && $action == 'addlanguage' && !empty($module)) if ($dirins && $action == 'confirm_removefile' && !empty($module)) { - $relativefilename = dol_sanitizePathName(GETPOST('file', 'none')); - if ($relativefilename) - { - $dirnametodelete = dirname($relativefilename); - $filetodelete = $dirins.'/'.$relativefilename; - $dirtodelete = $dirins.'/'.$dirnametodelete; + $relativefilename = dol_sanitizePathName(GETPOST('file', 'none')); + if ($relativefilename) + { + $dirnametodelete = dirname($relativefilename); + $filetodelete = $dirins.'/'.$relativefilename; + $dirtodelete = $dirins.'/'.$dirnametodelete; - $result = dol_delete_file($filetodelete); - if (dol_is_dir_empty($dirtodelete)) dol_delete_dir($dirtodelete); + $result = dol_delete_file($filetodelete); + if (dol_is_dir_empty($dirtodelete)) dol_delete_dir($dirtodelete); - // Update descriptor file to comment file - if (in_array($tab, array('css', 'js'))) - { - $srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php'; - $arrayreplacement = array('/^\s*\''.preg_quote('/'.$relativefilename, '/').'\',*/m'=>' // \'/'.$relativefilename.'\','); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); - } - } + // Update descriptor file to comment file + if (in_array($tab, array('css', 'js'))) + { + $srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php'; + $arrayreplacement = array('/^\s*\''.preg_quote('/'.$relativefilename, '/').'\',*/m'=>' // \'/'.$relativefilename.'\','); + dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); + } + } } // Build the $fields array from SQL table (initfromtablename) @@ -1001,17 +1001,17 @@ if ($dirins && $action == 'initobject' && $module && $objectname) //var_dump($phpfileval['fullname']); $arrayreplacement = array( - 'mymodule'=>strtolower($module), - 'MyModule'=>$module, - 'MYMODULE'=>strtoupper($module), - 'My module'=>$module, - 'my module'=>$module, - 'mon module'=>$module, - 'Mon module'=>$module, - 'htdocs/modulebuilder/template/'=>strtolower($modulename), - 'myobject'=>strtolower($objectname), - 'MyObject'=>$objectname, - 'MYOBJECT'=>strtoupper($objectname) + 'mymodule'=>strtolower($module), + 'MyModule'=>$module, + 'MYMODULE'=>strtoupper($module), + 'My module'=>$module, + 'my module'=>$module, + 'mon module'=>$module, + 'Mon module'=>$module, + 'htdocs/modulebuilder/template/'=>strtolower($modulename), + 'myobject'=>strtolower($objectname), + 'MyObject'=>$objectname, + 'MYOBJECT'=>strtoupper($objectname) ); $result = dolReplaceInFile($phpfileval['fullname'], $arrayreplacement); @@ -1378,7 +1378,7 @@ if ($dirins && $action == 'generatedoc') if ($result > 0) { - setEventMessages($langs->trans("DocFileGeneratedInto", $dirofmodule), null); + setEventMessages($langs->trans("DocFileGeneratedInto", $dirofmodule), null); } else { @@ -1415,13 +1415,13 @@ if ($action == 'savefile' && empty($cancel)) $result = file_put_contents($pathoffile, $content); if ($result) { - @chmod($pathoffile, octdec($newmask)); + @chmod($pathoffile, octdec($newmask)); - setEventMessages($langs->trans("FileSaved"), null); + setEventMessages($langs->trans("FileSaved"), null); } else { - setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); + setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); } } else @@ -1524,65 +1524,65 @@ $listofmodules = array(); $i = 0; foreach ($dirsrootforscan as $dirread) { - $dirsincustom = dol_dir_list($dirread, 'directories'); - if (is_array($dirsincustom) && count($dirsincustom) > 0) { - foreach ($dirsincustom as $dircustomcursor) { - $fullname = $dircustomcursor['fullname']; - if (dol_is_file($fullname.'/'.$FILEFLAG)) - { - // Get real name of module (MyModule instead of mymodule) - $dirtoscanrel = basename($fullname).'/core/modules/'; + $dirsincustom = dol_dir_list($dirread, 'directories'); + if (is_array($dirsincustom) && count($dirsincustom) > 0) { + foreach ($dirsincustom as $dircustomcursor) { + $fullname = $dircustomcursor['fullname']; + if (dol_is_file($fullname.'/'.$FILEFLAG)) + { + // Get real name of module (MyModule instead of mymodule) + $dirtoscanrel = basename($fullname).'/core/modules/'; - $descriptorfiles = dol_dir_list(dirname($fullname).'/'.$dirtoscanrel, 'files', 0, 'mod.*\.class\.php$'); - if (empty($descriptorfiles)) // If descriptor not found into module dir, we look into main module dir. - { - $dirtoscanrel = 'core/modules/'; - $descriptorfiles = dol_dir_list($fullname.'/../'.$dirtoscanrel, 'files', 0, 'mod'.strtoupper(basename($fullname)).'\.class\.php$'); - } - $modulenamewithcase = ''; - $moduledescriptorrelpath = ''; - $moduledescriptorfullpath = ''; + $descriptorfiles = dol_dir_list(dirname($fullname).'/'.$dirtoscanrel, 'files', 0, 'mod.*\.class\.php$'); + if (empty($descriptorfiles)) // If descriptor not found into module dir, we look into main module dir. + { + $dirtoscanrel = 'core/modules/'; + $descriptorfiles = dol_dir_list($fullname.'/../'.$dirtoscanrel, 'files', 0, 'mod'.strtoupper(basename($fullname)).'\.class\.php$'); + } + $modulenamewithcase = ''; + $moduledescriptorrelpath = ''; + $moduledescriptorfullpath = ''; - foreach ($descriptorfiles as $descriptorcursor) { - $modulenamewithcase = preg_replace('/^mod/', '', $descriptorcursor['name']); - $modulenamewithcase = preg_replace('/\.class\.php$/', '', $modulenamewithcase); - $moduledescriptorrelpath = $dirtoscanrel.$descriptorcursor['name']; - $moduledescriptorfullpath = $descriptorcursor['fullname']; - //var_dump($descriptorcursor); - } - if ($modulenamewithcase) - { - $listofmodules[$dircustomcursor['name']] = array( - 'modulenamewithcase'=>$modulenamewithcase, - 'moduledescriptorrelpath'=> $moduledescriptorrelpath, - 'moduledescriptorfullpath'=>$moduledescriptorfullpath, - 'moduledescriptorrootpath'=>$dirread - ); - } - //var_dump($listofmodules); - } - } - } + foreach ($descriptorfiles as $descriptorcursor) { + $modulenamewithcase = preg_replace('/^mod/', '', $descriptorcursor['name']); + $modulenamewithcase = preg_replace('/\.class\.php$/', '', $modulenamewithcase); + $moduledescriptorrelpath = $dirtoscanrel.$descriptorcursor['name']; + $moduledescriptorfullpath = $descriptorcursor['fullname']; + //var_dump($descriptorcursor); + } + if ($modulenamewithcase) + { + $listofmodules[$dircustomcursor['name']] = array( + 'modulenamewithcase'=>$modulenamewithcase, + 'moduledescriptorrelpath'=> $moduledescriptorrelpath, + 'moduledescriptorfullpath'=>$moduledescriptorfullpath, + 'moduledescriptorrootpath'=>$dirread + ); + } + //var_dump($listofmodules); + } + } + } - if ($forceddirread && empty($listofmodules)) // $forceddirread is 1 if we forced dir to read with dirins=... or with module=...@mydir - { - $listofmodules[strtolower($module)] = array( - 'modulenamewithcase'=>$module, - 'moduledescriptorrelpath'=> 'notyetimplemented', - 'moduledescriptorfullpath'=> 'notyetimplemented', - 'moduledescriptorrootpath'=> 'notyetimplemented', - ); - } + if ($forceddirread && empty($listofmodules)) // $forceddirread is 1 if we forced dir to read with dirins=... or with module=...@mydir + { + $listofmodules[strtolower($module)] = array( + 'modulenamewithcase'=>$module, + 'moduledescriptorrelpath'=> 'notyetimplemented', + 'moduledescriptorfullpath'=> 'notyetimplemented', + 'moduledescriptorrootpath'=> 'notyetimplemented', + ); + } - // Show description of content - $newdircustom = $dirins; - if (empty($newdircustom)) $newdircustom = img_warning(); - // If dirread was forced to somewhere else, by using URL - // htdocs/modulebuilder/index.php?module=Inventory@/home/ldestailleur/git/dolibarr/htdocs/product - if (empty($i)) print $langs->trans("DirScanned").' : '; - else print ', '; - print ''.$dirread.''; - $i++; + // Show description of content + $newdircustom = $dirins; + if (empty($newdircustom)) $newdircustom = img_warning(); + // If dirread was forced to somewhere else, by using URL + // htdocs/modulebuilder/index.php?module=Inventory@/home/ldestailleur/git/dolibarr/htdocs/product + if (empty($i)) print $langs->trans("DirScanned").' : '; + else print ', '; + print ''.$dirread.''; + $i++; } print '
    '; //var_dump($listofmodules); @@ -1792,7 +1792,7 @@ elseif (!empty($module)) // Tabs for module if (!$error) { - $dirread = $listofmodules[strtolower($module)]['moduledescriptorrootpath']; + $dirread = $listofmodules[strtolower($module)]['moduledescriptorrootpath']; $head2 = array(); $h = 0; @@ -2341,7 +2341,7 @@ elseif (!empty($module)) { // tabobj = module if ($action == 'deleteproperty') { - $formconfirm = $form->formconfirm( + $formconfirm = $form->formconfirm( $_SERVER["PHP_SELF"].'?propertykey='.urlencode(GETPOST('propertykey', 'alpha')).'&objectname='.urlencode($objectname).'&tab='.urlencode($tab).'&module='.urlencode($module).'&tabobj='.urlencode($tabobj), $langs->trans('Delete'), $langs->trans('ConfirmDeleteProperty', GETPOST('propertykey', 'alpha')), 'confirm_deleteproperty', '', 0, 1 ); @@ -2403,23 +2403,23 @@ elseif (!empty($module)) print ' '.$langs->trans("ApiClassFile").' : '.($realpathtoapi ? '' : '').$pathtoapi.($realpathtoapi ? '' : '').''; if ($realpathtoapi) { - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - print '   '; - if (empty($conf->global->$const_name)) // If module is not activated - { - print ''.$langs->trans("GoToApiExplorer").''; - } - else - { - print ''.$langs->trans("GoToApiExplorer").''; - } + print ' '.img_picto($langs->trans("Edit"), 'edit').''; + print ' '; + print ''.img_picto($langs->trans("Delete"), 'delete').''; + print '   '; + if (empty($conf->global->$const_name)) // If module is not activated + { + print ''.$langs->trans("GoToApiExplorer").''; + } + else + { + print ''.$langs->trans("GoToApiExplorer").''; + } } else { - //print ''.$langs->trans("FileNotYetGenerated").' '; - print ''; + //print ''.$langs->trans("FileNotYetGenerated").' '; + print ''; } // PHPUnit print '
    '; @@ -2427,14 +2427,14 @@ elseif (!empty($module)) if ($realpathtophpunit) { - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; + print ' '.img_picto($langs->trans("Edit"), 'edit').''; + print ' '; + print ''.img_picto($langs->trans("Delete"), 'delete').''; } else { - //print ''.$langs->trans("FileNotYetGenerated").' '; - print ''; + //print ''.$langs->trans("FileNotYetGenerated").' '; + print ''; } print '
    '; @@ -2748,56 +2748,56 @@ elseif (!empty($module)) } else { - if ($tab == 'specifications') - { - if ($action != 'editfile' || empty($file)) - { - print ''.$langs->trans("SpecDefDesc").'
    '; - print '
    '; + if ($tab == 'specifications') + { + if ($action != 'editfile' || empty($file)) + { + print ''.$langs->trans("SpecDefDesc").'
    '; + print '
    '; - $specs = dol_dir_list(dol_buildpath($modulelowercase.'/doc', 0), 'files', 1, '(\.md|\.asciidoc)$', array('\/temp\/')); + $specs = dol_dir_list(dol_buildpath($modulelowercase.'/doc', 0), 'files', 1, '(\.md|\.asciidoc)$', array('\/temp\/')); - foreach ($specs as $spec) - { - $pathtofile = $modulelowercase.'/doc/'.$spec['relativename']; - $format = 'asciidoc'; - if (preg_match('/\.md$/i', $spec['name'])) $format = 'markdown'; - print ' '.$langs->trans("SpecificationFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - } - } - else - { - // Use MD or asciidoc + foreach ($specs as $spec) + { + $pathtofile = $modulelowercase.'/doc/'.$spec['relativename']; + $format = 'asciidoc'; + if (preg_match('/\.md$/i', $spec['name'])) $format = 'markdown'; + print ' '.$langs->trans("SpecificationFile").' : '.$pathtofile.''; + print ' '.img_picto($langs->trans("Edit"), 'edit').''; + print '
    '; + } + } + else + { + // Use MD or asciidoc - //print $langs->trans("UseAsciiDocFormat").'
    '; + //print $langs->trans("UseAsciiDocFormat").'
    '; - $fullpathoffile = dol_buildpath($file, 0); + $fullpathoffile = dol_buildpath($file, 0); - $content = file_get_contents($fullpathoffile); + $content = file_get_contents($fullpathoffile); - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; + // New module + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; + $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); + print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); + print '
    '; + print '
    '; + print ''; + print '   '; + print ''; + print '
    '; - print '
    '; - } - } - print ''.$langs->trans('Property $field not found into the class. The class was probably not generated by modulebuilder.').''; + print ''; + } + } + print ''.$langs->trans('Property $field not found into the class. The class was probably not generated by modulebuilder.').''; } print ''; print ''; @@ -2860,10 +2860,10 @@ elseif (!empty($module)) if ($action != 'editfile' || empty($file)) { - print ''; - $htmlhelp = $langs->trans("MenusDefDescTooltip", ''.$langs->trans('Setup').' - '.$langs->trans('Menus').''); - print $form->textwithpicto($langs->trans("MenusDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').'
    '; - print '
    '; + print ''; + $htmlhelp = $langs->trans("MenusDefDescTooltip", ''.$langs->trans('Setup').' - '.$langs->trans('Menus').''); + print $form->textwithpicto($langs->trans("MenusDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').'
    '; + print '
    '; print '
    '; print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; @@ -3000,10 +3000,10 @@ elseif (!empty($module)) if ($action != 'editfile' || empty($file)) { - print ''; - $htmlhelp = $langs->trans("PermissionsDefDescTooltip", ''.$langs->trans('DefaultPermissions').''); - print $form->textwithpicto($langs->trans("PermissionsDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').'
    '; - print '
    '; + print ''; + $htmlhelp = $langs->trans("PermissionsDefDescTooltip", ''.$langs->trans('DefaultPermissions').''); + print $form->textwithpicto($langs->trans("PermissionsDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').'
    '; + print '
    '; print '
    '; print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; @@ -3096,7 +3096,7 @@ elseif (!empty($module)) { if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("HooksDefDesc").'
    '; + print ''.$langs->trans("HooksDefDesc").'
    '; print '
    '; print ''; - print ''; + print ''.$pathtohook.''; + print ''; + print ''; } else { - print ''.$langs->trans("FileNotYetGenerated").''; - print ''; + print ''.$langs->trans("FileNotYetGenerated").''; + print ''; } print ''; } @@ -3159,7 +3159,7 @@ elseif (!empty($module)) if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("TriggerDefDesc").'
    '; + print ''.$langs->trans("TriggerDefDesc").'
    '; print '
    '; print '
    '; @@ -3112,14 +3112,14 @@ elseif (!empty($module)) print ' '.$langs->trans("HooksFile").' : '; if (dol_is_file($dirins.'/'.$pathtohook)) { - print ''.$pathtohook.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
    '; @@ -3173,14 +3173,14 @@ elseif (!empty($module)) print ' '.$langs->trans("TriggersFile").' : '.$pathtofile.''; print ''; print ''; - print ''; + print ''; } } else { - print ''; + print ''; print ''; } print '
    '.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
    '; - print ' '.$langs->trans("NoTrigger"); - print '
    '; + print ' '.$langs->trans("NoTrigger"); + print '
    '; @@ -3324,11 +3324,11 @@ elseif (!empty($module)) if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("WidgetDesc").'
    '; - print '
    '; + print ''.$langs->trans("WidgetDesc").'
    '; + print '
    '; - print ''; - if (!empty($widgets)) + print '
    '; + if (!empty($widgets)) { foreach ($widgets as $widget) { @@ -3342,9 +3342,9 @@ elseif (!empty($module)) } else { - print ''; + print ''; } print '
    '.$langs->trans("NoWidget"); - print ''; - print '
    '.$langs->trans("NoWidget"); + print ''; + print '
    '; } @@ -3377,88 +3377,88 @@ elseif (!empty($module)) if ($tab == 'cli') { - $clifiles = array(); - $i = 0; + $clifiles = array(); + $i = 0; - $dircli = array('/'.strtolower($module).'/scripts'); + $dircli = array('/'.strtolower($module).'/scripts'); - foreach ($dircli as $reldir) - { - $dir = dol_buildpath($reldir, 0); - $newdir = dol_osencode($dir); + foreach ($dircli as $reldir) + { + $dir = dol_buildpath($reldir, 0); + $newdir = dol_osencode($dir); - // Check if directory exists (we do not use dol_is_dir to avoid loading files.lib.php at each call) - if (!is_dir($newdir)) continue; + // Check if directory exists (we do not use dol_is_dir to avoid loading files.lib.php at each call) + if (!is_dir($newdir)) continue; - $handle = opendir($newdir); - if (is_resource($handle)) - { - while (($tmpfile = readdir($handle)) !== false) - { - if (is_readable($newdir.'/'.$file) && preg_match('/^(.+)\.php/', $tmpfile, $reg)) - { - if (preg_match('/\.back$/', $tmpfile)) continue; + $handle = opendir($newdir); + if (is_resource($handle)) + { + while (($tmpfile = readdir($handle)) !== false) + { + if (is_readable($newdir.'/'.$file) && preg_match('/^(.+)\.php/', $tmpfile, $reg)) + { + if (preg_match('/\.back$/', $tmpfile)) continue; - $clifiles[$i]['relpath'] = preg_replace('/^\//', '', $reldir).'/'.$tmpfile; + $clifiles[$i]['relpath'] = preg_replace('/^\//', '', $reldir).'/'.$tmpfile; - $i++; - } - } - closedir($handle); - } - } + $i++; + } + } + closedir($handle); + } + } - if ($action != 'editfile' || empty($file)) - { - print ''.$langs->trans("CLIDesc").'
    '; - print '
    '; + if ($action != 'editfile' || empty($file)) + { + print ''.$langs->trans("CLIDesc").'
    '; + print '
    '; - print ''; - if (!empty($clifiles)) - { - foreach ($clifiles as $clifile) - { - $pathtofile = $clifile['relpath']; + print '
    '; + if (!empty($clifiles)) + { + foreach ($clifiles as $clifile) + { + $pathtofile = $clifile['relpath']; - print ''; - print ''; - print ''; - } - } - else - { - print ''; - } - print '
    '.$langs->trans("CLIFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
    '.$langs->trans("NoCLIFile"); - print ''; - print '
    '; - } - else - { - $fullpathoffile = dol_buildpath($file, 0); + print ' '.$langs->trans("CLIFile").' : '.$pathtofile.''; + print ''.img_picto($langs->trans("Edit"), 'edit').''; + print ''.img_picto($langs->trans("Delete"), 'delete').''; + print ''; + } + } + else + { + print ' '.$langs->trans("NoCLIFile"); + print ''; + print ''; + } + print ''; + } + else + { + $fullpathoffile = dol_buildpath($file, 0); - $content = file_get_contents($fullpathoffile); + $content = file_get_contents($fullpathoffile); - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; + // New module + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; + $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); + print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); + print '
    '; + print '
    '; + print ''; + print '   '; + print ''; + print '
    '; - print '
    '; - } + print ''; + } } if ($tab == 'cron') @@ -3469,7 +3469,7 @@ elseif (!empty($module)) if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("CronJobDefDesc", ''.$langs->transnoentities('CronList').'').'
    '; + print ''.$langs->trans("CronJobDefDesc", ''.$langs->transnoentities('CronList').'').'
    '; print '
    '; print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; @@ -3585,119 +3585,119 @@ elseif (!empty($module)) if ($tab == 'specifications') { - $specs = dol_dir_list(dol_buildpath($modulelowercase.'/doc', 0), 'files', 1, '(\.md|\.asciidoc)$', array('\/temp\/')); + $specs = dol_dir_list(dol_buildpath($modulelowercase.'/doc', 0), 'files', 1, '(\.md|\.asciidoc)$', array('\/temp\/')); - if ($action != 'editfile' || empty($file)) - { - print ''.$langs->trans("SpecDefDesc").'
    '; - print '
    '; + if ($action != 'editfile' || empty($file)) + { + print ''.$langs->trans("SpecDefDesc").'
    '; + print '
    '; - print ''; - if (is_array($specs) && !empty($specs)) - { - foreach ($specs as $spec) - { - $pathtofile = $modulelowercase.'/doc/'.$spec['relativename']; - $format = 'asciidoc'; - if (preg_match('/\.md$/i', $spec['name'])) $format = 'markdown'; - print ''; - print ''; - print ''; - } - } - else - { - print ''; - print ''; - } - print '
    '; - print ' '.$langs->trans("SpecificationFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
    '; - print ' '.$langs->trans("FileNotYetGenerated"); - print '
    '; - } - else - { - // Use MD or asciidoc + print ''; + if (is_array($specs) && !empty($specs)) + { + foreach ($specs as $spec) + { + $pathtofile = $modulelowercase.'/doc/'.$spec['relativename']; + $format = 'asciidoc'; + if (preg_match('/\.md$/i', $spec['name'])) $format = 'markdown'; + print ''; + print ''; + print ''; + } + } + else + { + print ''; + print ''; + } + print '
    '; + print ' '.$langs->trans("SpecificationFile").' : '.$pathtofile.''; + print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
    '; + print ' '.$langs->trans("FileNotYetGenerated"); + print '
    '; + } + else + { + // Use MD or asciidoc - //print $langs->trans("UseAsciiDocFormat").'
    '; + //print $langs->trans("UseAsciiDocFormat").'
    '; - $fullpathoffile = dol_buildpath($file, 0); + $fullpathoffile = dol_buildpath($file, 0); - $content = file_get_contents($fullpathoffile); + $content = file_get_contents($fullpathoffile); - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; + // New module + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; + $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); + print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); + print '
    '; + print '
    '; + print ''; + print '   '; + print ''; + print '
    '; - print '
    '; - } + print ''; + } - print '


    '; + print '


    '; - $FILENAMEDOC = $modulelowercase.'.html'; - $FILENAMEDOCPDF = $modulelowercase.'.pdf'; - $outputfiledoc = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOC; - $outputfiledocurl = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOC; - $outputfiledocpdf = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOCPDF; - $outputfiledocurlpdf = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOCPDF; + $FILENAMEDOC = $modulelowercase.'.html'; + $FILENAMEDOCPDF = $modulelowercase.'.pdf'; + $outputfiledoc = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOC; + $outputfiledocurl = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOC; + $outputfiledocpdf = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOCPDF; + $outputfiledocurlpdf = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOCPDF; - // HTML - print ' '.$langs->trans("PathToModuleDocumentation", "HTML").' : '; - if (!dol_is_file($outputfiledoc)) print ''.$langs->trans("FileNotYetGenerated").''; - else { - print ''; - print ''; - print $outputfiledoc; - print ''; - print ''; - print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfiledoc), 'dayhour').')'; - } - print '
    '; + // HTML + print ' '.$langs->trans("PathToModuleDocumentation", "HTML").' : '; + if (!dol_is_file($outputfiledoc)) print ''.$langs->trans("FileNotYetGenerated").''; + else { + print ''; + print ''; + print $outputfiledoc; + print ''; + print ''; + print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfiledoc), 'dayhour').')'; + } + print '
    '; - // PDF - print ' '.$langs->trans("PathToModuleDocumentation", "PDF").' : '; - if (!dol_is_file($outputfiledocpdf)) print ''.$langs->trans("FileNotYetGenerated").''; - else { - print ''; - print ''; - print $outputfiledocpdf; - print ''; - print ''; - print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfiledocpdf), 'dayhour').')'; - } - print '
    '; + // PDF + print ' '.$langs->trans("PathToModuleDocumentation", "PDF").' : '; + if (!dol_is_file($outputfiledocpdf)) print ''.$langs->trans("FileNotYetGenerated").''; + else { + print ''; + print ''; + print $outputfiledocpdf; + print ''; + print ''; + print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfiledocpdf), 'dayhour').')'; + } + print '
    '; - print '
    '; + print '
    '; - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print '
    '; + print '
    '; + print ''; + print ''; + print ''; + print ''; + print ''; + print '
    '; } if ($tab == 'buildpackage') { - print ''.$langs->trans("BuildPackageDesc").''; - print '
    '; + print ''.$langs->trans("BuildPackageDesc").''; + print '
    '; if (!class_exists('ZipArchive') && !defined('ODTPHP_PATHTOPCLZIP')) { diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php index 42ede9ba800..f621d332003 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php @@ -35,9 +35,9 @@ dol_include_once('/mymodule/core/modules/mymodule/modules_myobject.php'); class mod_myobject_advanced extends ModeleNumRefMyObject { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' /** @@ -51,14 +51,14 @@ class mod_myobject_advanced extends ModeleNumRefMyObject public $name = 'advanced'; - /** - * Returns the description of the numbering model - * - * @return string Texte descripif - */ - public function info() - { - global $conf, $langs, $db; + /** + * Returns the description of the numbering model + * + * @return string Texte descripif + */ + public function info() + { + global $conf, $langs, $db; $langs->load("bills"); @@ -89,28 +89,28 @@ class mod_myobject_advanced extends ModeleNumRefMyObject $texte .= ''; return $texte; - } + } - /** - * Return an example of numbering - * - * @return string Example - */ - public function getExample() - { - global $conf, $langs, $mysoc; + /** + * Return an example of numbering + * + * @return string Example + */ + public function getExample() + { + global $conf, $langs, $mysoc; - $object = new MyObject($this->db); - $object->initAsSpecimen(); + $object = new MyObject($this->db); + $object->initAsSpecimen(); - /*$old_code_client = $mysoc->code_client; + /*$old_code_client = $mysoc->code_client; $old_code_type = $mysoc->typent_code; $mysoc->code_client = 'CCCCCCCCCC'; $mysoc->typent_code = 'TTTTTTTTTT';*/ - $numExample = $this->getNextValue($object); + $numExample = $this->getNextValue($object); - /*$mysoc->code_client = $old_code_client; + /*$mysoc->code_client = $old_code_client; $mysoc->typent_code = $old_code_type;*/ if (!$numExample) @@ -118,7 +118,7 @@ class mod_myobject_advanced extends ModeleNumRefMyObject $numExample = $langs->trans('NotConfigured'); } return $numExample; - } + } /** * Return next free value @@ -126,8 +126,8 @@ class mod_myobject_advanced extends ModeleNumRefMyObject * @param Object $object Object we need next value for * @return string Value if KO, <0 if KO */ - public function getNextValue($object) - { + public function getNextValue($object) + { global $db, $conf; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php index 13beaadab95..d3990b562ec 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php @@ -31,9 +31,9 @@ dol_include_once('/mymodule/core/modules/mymodule/modules_myobject.php'); class mod_myobject_standard extends ModeleNumRefMyObject { /** - * Dolibarr version of the loaded document - * @var string - */ + * Dolibarr version of the loaded document + * @var string + */ public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' public $prefix = 'MYOBJECT'; @@ -49,16 +49,16 @@ class mod_myobject_standard extends ModeleNumRefMyObject public $name = 'standard'; - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } + /** + * Return description of numbering module + * + * @return string Text with description + */ + public function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc", $this->prefix); + } /** @@ -73,8 +73,8 @@ class mod_myobject_standard extends ModeleNumRefMyObject /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * Checks if the numbers already in the database do not + * cause conflicts that would prevent this numbering working. * * @param Object $object Object we need next value for * @return boolean false if conflict, true if ok @@ -151,8 +151,8 @@ class mod_myobject_standard extends ModeleNumRefMyObject $date = $object->date_creation; $yymm = strftime("%y%m", $date); - if ($max >= (pow(10, 4) - 1)) $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is - else $num = sprintf("%04s", $max + 1); + if ($max >= (pow(10, 4) - 1)) $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s", $max + 1); dol_syslog("mod_myobject_standard::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php b/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php index b052d4538bd..7e22d5d6ca4 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php @@ -38,17 +38,17 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // requir abstract class ModelePDFMyObject extends CommonDocGenerator { - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param integer $maxfilenamelength Max length of value to show + * @return array List of templates */ public static function liste_modeles($db, $maxfilenamelength = 0) { - // phpcs:enable + // phpcs:enable global $conf; $type = 'mymodule_myobject'; @@ -109,7 +109,7 @@ abstract class ModeleNumRefMyObject /** * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. + * cause conflicts that would prevent this numbering working. * * @param Object $object Object we need next value for * @return boolean false if conflict, true if ok From 165df931f1ae4f6b1a7126944cf8aebe4e1db2c8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 03:14:12 +0200 Subject: [PATCH 114/336] Complete fix #13491 --- htdocs/core/class/commonobject.class.php | 3 +- htdocs/core/tpl/extrafields_add.tpl.php | 2 +- htdocs/user/card.php | 81 ++---------------------- 3 files changed, 6 insertions(+), 80 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 3781d66b0db..57d9db22861 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -6592,7 +6592,7 @@ abstract class CommonObject * This function is responsible to output the and according to correct number of columns received into $params['colspan'] * * @param Extrafields $extrafields Extrafield Object - * @param string $mode Show output (view) or input (edit) for extrafield + * @param string $mode Show output ('view') or input ('create' or 'edit') for extrafield * @param array $params Optional parameters. Example: array('style'=>'class="oddeven"', 'colspan'=>$colspan) * @param string $keysuffix Suffix string to add after name and id of field (can be used to avoid duplicate names) * @param string $keyprefix Prefix string to add before name and id of field (can be used to avoid duplicate names) @@ -6666,7 +6666,6 @@ abstract class CommonObject break; case "create": case "edit": - $getposttemp = GETPOST($keyprefix.'options_'.$key.$keysuffix, 'none'); // GETPOST can get value from GET, POST or setup of default values. // GETPOST("options_" . $key) can be 'abc' or array(0=>'abc') if (is_array($getposttemp) || $getposttemp != '' || GETPOSTISSET($keyprefix.'options_'.$key.$keysuffix)) diff --git a/htdocs/core/tpl/extrafields_add.tpl.php b/htdocs/core/tpl/extrafields_add.tpl.php index 2ef606afa0b..38f1cb2b8de 100644 --- a/htdocs/core/tpl/extrafields_add.tpl.php +++ b/htdocs/core/tpl/extrafields_add.tpl.php @@ -45,7 +45,7 @@ if (empty($reshook)) { $params = array(); if (isset($tpl_context)) $params['tpl_context'] = $tpl_context; $params['cols']=$parameters['colspanvalue']; - print $object->showOptionals($extrafields, 'edit', $params); // BUG #11554 : Add context in params + print $object->showOptionals($extrafields, 'create', $params); } ?> diff --git a/htdocs/user/card.php b/htdocs/user/card.php index d12f6064131..152103cc5db 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1243,13 +1243,8 @@ if ($action == 'create' || $action == 'adduserldap') } // Other attributes - $parameters = array('objectsrc' => $objectsrc, 'colspan' => ' colspan="3"'); - $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - if (empty($reshook)) - { - print $object->showOptionals($extrafields, 'edit'); - } + $parameters = array('colspan' => ' colspan="3"'); + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; // Note print ''; @@ -2515,74 +2510,6 @@ else } } - // // Skype - // if (! empty($conf->socialnetworks->enabled)) - // { - // print ''.$langs->trans("Skype").''; - // print ''; - // if ($caneditfield && empty($object->ldap_sid)) - // { - // print ''; - // } - // else - // { - // print ''; - // print $object->skype; - // } - // print ''; - // } - - // // Twitter - // if (! empty($conf->socialnetworks->enabled)) - // { - // print ''.$langs->trans("Twitter").''; - // print ''; - // if ($caneditfield && empty($object->ldap_sid)) - // { - // print ''; - // } - // else - // { - // print ''; - // print $object->twitter; - // } - // print ''; - // } - - // // Facebook - // if (! empty($conf->socialnetworks->enabled)) - // { - // print ''.$langs->trans("Facebook").''; - // print ''; - // if ($caneditfield && empty($object->ldap_sid)) - // { - // print ''; - // } - // else - // { - // print ''; - // print $object->facebook; - // } - // print ''; - // } - - // // LinkedIn - // if (! empty($conf->socialnetworks->enabled)) - // { - // print ''.$langs->trans("LinkedIn").''; - // print ''; - // if ($caneditfield && empty($object->ldap_sid)) - // { - // print ''; - // } - // else - // { - // print ''; - // print $object->linkedin; - // } - // print ''; - // } - // OpenID url if (isset($conf->file->main_authentication) && preg_match('/openid/', $conf->file->main_authentication) && !empty($conf->global->MAIN_OPENIDURL_PERUSER)) { @@ -2738,12 +2665,12 @@ else // Other attributes $parameters = array('colspan' => ' colspan="2"'); + //include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php'; // We do not use common tpl here because we need a special test on $caneditfield $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; if (empty($reshook)) { - if ($caneditfield) - { + if ($caneditfield) { print $object->showOptionals($extrafields, 'edit'); } else { print $object->showOptionals($extrafields, 'view'); From 87ff94fc64a7eacac61fbca7342c213bac3b6205 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 03:59:23 +0200 Subject: [PATCH 115/336] Add generic fields --- htdocs/install/mysql/migration/11.0.0-12.0.0.sql | 4 ++++ htdocs/install/mysql/tables/llx_categorie.sql | 4 ++++ htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql | 4 +++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql index 27f246ad1ee..4fb4fb5c82b 100644 --- a/htdocs/install/mysql/migration/11.0.0-12.0.0.sql +++ b/htdocs/install/mysql/migration/11.0.0-12.0.0.sql @@ -226,3 +226,7 @@ ALTER TABLE llx_categorie_website_page ADD INDEX idx_categorie_website_page_fk_w ALTER TABLE llx_categorie_website_page ADD CONSTRAINT fk_categorie_website_page_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); ALTER TABLE llx_categorie_website_page ADD CONSTRAINT fk_categorie_website_page_website_page_rowid FOREIGN KEY (fk_website_page) REFERENCES llx_website_page (rowid); +ALTER TABLE llx_categorie ADD COLUMN date_creation datetime; +ALTER TABLE llx_categorie ADD COLUMN tms timestamp; +ALTER TABLE llx_categorie ADD COLUMN fk_user_creat integer; +ALTER TABLE llx_categorie ADD COLUMN fk_user_modif integer; diff --git a/htdocs/install/mysql/tables/llx_categorie.sql b/htdocs/install/mysql/tables/llx_categorie.sql index c57c2adaa10..cf1df953ba5 100644 --- a/htdocs/install/mysql/tables/llx_categorie.sql +++ b/htdocs/install/mysql/tables/llx_categorie.sql @@ -31,6 +31,10 @@ create table llx_categorie color varchar(8), -- color fk_soc integer DEFAULT NULL, -- not used by default. Used when option CATEGORY_ASSIGNED_TO_A_CUSTOMER is set. visible tinyint DEFAULT 1 NOT NULL, -- determine if the products are visible or not + date_creation datetime, -- date creation + tms timestamp, -- date modification + fk_user_creat integer, -- user making creation + fk_user_modif integer, -- user making last change import_key varchar(14) -- Import key )ENGINE=innodb; diff --git a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql b/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql index 882a2b81565..cc9cca0c34a 100644 --- a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql +++ b/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql @@ -20,9 +20,11 @@ CREATE TABLE llx_mymodule_myobject( entity INTEGER DEFAULT 1 NOT NULL, label VARCHAR(255), qty INTEGER, - status INTEGER, date_creation DATETIME NOT NULL, tms TIMESTAMP, + fk_user_create INTEGER, + fk_user_modif INTEGER, + status INTEGER, import_key VARCHAR(14) -- END MODULEBUILDER FIELDS ) ENGINE=innodb; From 7818b1515142a38bd9aeaa03531241dce28bd06a Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Sun, 5 Apr 2020 10:50:38 +0200 Subject: [PATCH 116/336] Update api_setup.class.php --- htdocs/api/class/api_setup.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 5dbccb69fb4..7b47c59dbb7 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -1426,7 +1426,7 @@ class Setup extends DolibarrApi throw new RestException(403, 'Error API open to admin users only or to the login user defined with constant API_LOGIN_ALLOWED_FOR_ADMIN_CHECK'); } - if (! preg_match('/[a-zA-Z0-9_]/', $confname) || ! isset($conf->global->$confname)) { + if (! preg_match('/^[a-zA-Z0-9_]+$/', $confname) || ! isset($conf->global->$confname)) { throw new RestException(500, 'Error Bad or unknown value for constname'); } if (preg_match('/(_pass|password|secret|_key|key$)/i', $confname)) { From 6be12efd61601a523271a80f9457fadbb3a962fd Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Sun, 5 Apr 2020 11:20:24 +0200 Subject: [PATCH 117/336] NEW get documents for categories with RESP API --- htdocs/api/class/api_documents.class.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/htdocs/api/class/api_documents.class.php b/htdocs/api/class/api_documents.class.php index e58ebf7d280..a6f48df1026 100644 --- a/htdocs/api/class/api_documents.class.php +++ b/htdocs/api/class/api_documents.class.php @@ -457,6 +457,22 @@ class Documents extends DolibarrApi $upload_dir = $conf->expensereport->dir_output.'/'.dol_sanitizeFileName($object->ref); } + elseif ($modulepart == 'categorie' || $modulepart == 'category') + { + require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + + if (!DolibarrApiAccess::$user->rights->categorie->lire) { + throw new RestException(401); + } + + $object = new Categorie($this->db); + $result = $object->fetch($id, $ref); + if (!$result) { + throw new RestException(404, 'Category not found'); + } + + $upload_dir = $conf->categorie->multidir_output[$object->entity].'/'.get_exdir($object->id, 2, 0, 0, $object, 'category').$object->id."/photos/".dol_sanitizeFileName($object->ref); + } else { throw new RestException(500, 'Modulepart '.$modulepart.' not implemented yet.'); From 13b47774e2ee79655fc881b1ae4cb4956fb45681 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 11:55:43 +0200 Subject: [PATCH 118/336] FIX #13424 --- htdocs/compta/bank/account_statement_document.php | 8 ++------ htdocs/core/lib/bank.lib.php | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/htdocs/compta/bank/account_statement_document.php b/htdocs/compta/bank/account_statement_document.php index bdb3ac4620e..4b1515cd2bb 100644 --- a/htdocs/compta/bank/account_statement_document.php +++ b/htdocs/compta/bank/account_statement_document.php @@ -92,12 +92,12 @@ include_once DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; * View */ +$form = new Form($db); + $title = $langs->trans("FinancialAccount").' - '.$langs->trans("Documents"); $helpurl = ""; llxHeader('', $title, $helpurl); -$form = new Form($db); - if ($id > 0 || !empty($ref)) { if ($object->fetch($id, $ref)) { $upload_dir = $conf->bank->dir_output."/".$id."/statement/".dol_sanitizeFileName($num); @@ -114,13 +114,9 @@ if ($id > 0 || !empty($ref)) { $totalsize += $file['size']; } - $morehtmlref = ''; - - $title = $langs->trans("AccountStatement").' '.$num.' - '.$langs->trans("BankAccount").' '.$object->getNomUrl(1, 'receipts'); print load_fiche_titre($title, '', ''); - print '
    '; print '
    '; diff --git a/htdocs/core/lib/bank.lib.php b/htdocs/core/lib/bank.lib.php index 6c23e324f71..da51589b8ac 100644 --- a/htdocs/core/lib/bank.lib.php +++ b/htdocs/core/lib/bank.lib.php @@ -179,7 +179,7 @@ function account_statement_prepare_head($object, $num) // Attached files require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->bank->dir_output."/".$object->id.'/'.dol_sanitizeFileName($num); + $upload_dir = $conf->bank->dir_output."/".$object->id.'/statement/'.dol_sanitizeFileName($num); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); $nbLinks = Link::count($db, $object->element, $object->id); From 98dfc7ca71e113f061ac7c6f5569c9ba82615589 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 12:01:05 +0200 Subject: [PATCH 119/336] Fix css --- htdocs/adherents/subscription/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index f6a2871a5c0..b99abb47156 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -33,6 +33,7 @@ $langs->loadLangs(array("members", "companies")); $action = GETPOST('action', 'aZ09'); $massaction = GETPOST('massaction', 'alpha'); +$contextpage = GETPOST('contextpage', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $toselect = GETPOST('toselect', 'array'); @@ -116,7 +117,6 @@ if (empty($reshook)) // Purge search criteria if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers { - $search = ""; $search_type = ""; $search_ref = ""; $search_lastname = ""; @@ -446,7 +446,7 @@ while ($i < min($num, $limit)) // Type if (!empty($arrayfields['d.fk_type']['checked'])) { - print ''; + print ''; if ($typeid > 0) { print $adht->getNomUrl(1); From 5ca9c71449e750bd5d1a72663581ed73f31a41b0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 12:05:27 +0200 Subject: [PATCH 120/336] css --- htdocs/adherents/subscription/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index b99abb47156..e02c31cfe90 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -338,7 +338,7 @@ if (!empty($arrayfields['t.libelle']['checked'])) if (!empty($arrayfields['d.bank']['checked'])) { print ''; - $form->select_comptes($search_account, 'search_account', 0, '', 1); + $form->select_comptes($search_account, 'search_account', 0, '', 1, '', 0, 'maxwidth100'); print ''; } @@ -489,7 +489,7 @@ while ($i < min($num, $limit)) // Banque if (!empty($arrayfields['d.bank']['checked'])) { - print ""; + print ''; if ($obj->fk_account > 0) { $accountstatic->id = $obj->fk_account; From 5b8c50cb72c2d02e11305670eea91ef08e0fb852 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 12:07:00 +0200 Subject: [PATCH 121/336] css --- htdocs/adherents/subscription/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index e02c31cfe90..ac8f2e68680 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -338,7 +338,7 @@ if (!empty($arrayfields['t.libelle']['checked'])) if (!empty($arrayfields['d.bank']['checked'])) { print ''; - $form->select_comptes($search_account, 'search_account', 0, '', 1, '', 0, 'maxwidth100'); + $form->select_comptes($search_account, 'search_account', 0, '', 1, '', 0, 'maxwidth150'); print ''; } From e8380007957b9eed19e98b26810e5a3ac09e2054 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 12:11:58 +0200 Subject: [PATCH 122/336] responsive --- htdocs/adherents/subscription/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index ac8f2e68680..a582584ae7f 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -466,14 +466,14 @@ while ($i < min($num, $limit)) // Firstname if (!empty($arrayfields['d.firstname']['checked'])) { - print ''.$adherent->firstname.''; + print ''.$adherent->firstname.''; if (!$i) $totalarray['nbfield']++; } // Login if (!empty($arrayfields['d.login']['checked'])) { - print ''.$adherent->login.''; + print ''.$adherent->login.''; if (!$i) $totalarray['nbfield']++; } From bfbc9b303abd6cb12de11e60e32def796230f584 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 12:23:16 +0200 Subject: [PATCH 123/336] Fix phpcs --- htdocs/core/class/html.formticket.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index a48cf36c117..ee7be63d22a 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -124,8 +124,9 @@ class FormTicket /** * Show the form to input ticket * - * @param int $withdolfichehead With dol_fiche_head - * @return void + * @param int $withdolfichehead With dol_fiche_head + * @param string Mode ('create' or 'edit') + * @return void */ public function showForm($withdolfichehead = 0, $mode = 'edit') { From 9bbedce3d60f620fe3591bc7012fc03d15cca4d4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 12:23:58 +0200 Subject: [PATCH 124/336] Fix phpcs --- scripts/user/migrate_picture_path.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/user/migrate_picture_path.php b/scripts/user/migrate_picture_path.php index f478c42b865..b0ca99dd977 100755 --- a/scripts/user/migrate_picture_path.php +++ b/scripts/user/migrate_picture_path.php @@ -83,6 +83,7 @@ $db->close(); // Close $db database opened handler exit($error); + /** * Migrate file from old path to new one for user $u * @@ -105,7 +106,6 @@ function migrate_user_filespath($u) dol_mkdir($destin); if (dol_is_dir($origin)) { - $handle = opendir($origin_osencoded); if (is_resource($handle)) { while (($file = readdir($handle)) !== false) { From 62387f712c4bcd42dbb0a6000cf8f897614b14aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 15:26:16 +0200 Subject: [PATCH 125/336] FIX Send email from bulk action of list of thirdparties --- htdocs/core/actions_massactions.inc.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 17e063244df..7c16ecb5e5c 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -253,7 +253,11 @@ if (!$error && $massaction == 'confirm_presend') // Test recipient if (empty($sendto)) // For the case, no recipient were set (multi thirdparties send) { - if ($objectobj->element == 'expensereport') + if ($objectobj->element == 'societe') + { + $sendto = $objectobj->email; + } + elseif ($objectobj->element == 'expensereport') { $fuser = new User($db); $fuser->fetch($objectobj->fk_user_author); @@ -289,6 +293,10 @@ if (!$error && $massaction == 'confirm_presend') if (empty($sendto)) { + if ($objectobj->element == 'societe') { + $objectobj->thirdparty = $objectobj; // Hack so following code is comaptible when objectobj is a thirdparty + } + //print "No recipient for thirdparty ".$objectobj->thirdparty->name; $nbignored++; if (empty($thirdpartywithoutemail[$objectobj->thirdparty->id])) From e32ac7644d475e31d73b5a785d7eb18d61331709 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 15:26:16 +0200 Subject: [PATCH 126/336] FIX Send email from bulk action of list of thirdparties --- htdocs/core/actions_massactions.inc.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index e5734547a95..9211c771fab 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -236,7 +236,11 @@ if (! $error && $massaction == 'confirm_presend') // Test recipient if (empty($sendto)) // For the case, no recipient were set (multi thirdparties send) { - if ($objectobj->element == 'expensereport') + if ($objectobj->element == 'societe') + { + $sendto = $objectobj->email; + } + elseif ($objectobj->element == 'expensereport') { $fuser = new User($db); $fuser->fetch($objectobj->fk_user_author); @@ -257,6 +261,10 @@ if (! $error && $massaction == 'confirm_presend') if (empty($sendto)) { + if ($objectobj->element == 'societe') { + $objectobj->thirdparty = $objectobj; // Hack so following code is comaptible when objectobj is a thirdparty + } + //print "No recipient for thirdparty ".$objectobj->thirdparty->name; $nbignored++; if (empty($thirdpartywithoutemail[$objectobj->thirdparty->id])) From 009cc36355b9fceada94f432a9a136fef8d2393d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 15:39:53 +0200 Subject: [PATCH 127/336] Fix sendocntext for builk action --- htdocs/core/actions_massactions.inc.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 7c16ecb5e5c..012e9d2d8a5 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -499,9 +499,11 @@ if (!$error && $massaction == 'confirm_presend') //var_dump($trackid);exit; //var_dump($subjectreplaced); + if (empty($sendcontext)) $sendcontext = 'standard'; + // Send mail (substitutionarray must be done just before this) require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - $mailfile = new CMailFile($subjectreplaced, $sendto, $from, $messagereplaced, $filepath, $mimetype, $filename, $sendtocc, $sendtobcc, $deliveryreceipt, -1, '', '', $trackid); + $mailfile = new CMailFile($subjectreplaced, $sendto, $from, $messagereplaced, $filepath, $mimetype, $filename, $sendtocc, $sendtobcc, $deliveryreceipt, -1, '', '', $trackid, '', $sendcontext); if ($mailfile->error) { $resaction .= '
    '.$mailfile->error.'
    '; From 47987f239d02c5b37ae0c0348f502f5fc10ae496 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 15:42:39 +0200 Subject: [PATCH 128/336] Fix trans --- htdocs/core/lib/admin.lib.php | 2 +- htdocs/langs/en_US/mails.lang | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 2433f284a2c..42813a6cf65 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -1807,7 +1807,7 @@ function email_admin_prepare_head() if ($conf->mailing->enabled) { $head[$h][0] = DOL_URL_ROOT."/admin/mails_emailing.php"; - $head[$h][1] = $langs->trans("OutGoingEmailSetupForEmailing"); + $head[$h][1] = $langs->trans("OutGoingEmailSetupForEmailing", $langs->transnoentitiesnoconv("EMailing")); $head[$h][2] = 'common_emailing'; $h++; } diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 8b92cef3103..7b3bfd3852a 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -164,7 +164,7 @@ NoContactWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found OutGoingEmailSetup=Outgoing email setup InGoingEmailSetup=Incoming email setup -OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) +OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter From ed4aa5585700b0272e7ac495e848792d52a86d2f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 15:46:10 +0200 Subject: [PATCH 129/336] Doxygen --- htdocs/core/class/html.formticket.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index ee7be63d22a..b688d408284 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -125,7 +125,7 @@ class FormTicket * Show the form to input ticket * * @param int $withdolfichehead With dol_fiche_head - * @param string Mode ('create' or 'edit') + * @param string $mode Mode ('create' or 'edit') * @return void */ public function showForm($withdolfichehead = 0, $mode = 'edit') From 93ce4e9e4b5104efec76f34b22e86a8b215b07fe Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 5 Apr 2020 15:47:34 +0200 Subject: [PATCH 130/336] Fix phpcs --- htdocs/main.inc.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 0d0f14ba332..ece5ac096c8 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1865,10 +1865,10 @@ function top_menu_user($hideloginname = 0, $urllogout = '') '.$userDropDownImage.'

    '.$profilName.'
    '; - if ($user->datepreviouslogin) { - $btnUser .= ' '.dol_print_date($user->datepreviouslogin, "dayhour", 'tzuser').'
    '; - } - $btnUser .= ' '.$langs->trans("Version").' '.$appli.' + if ($user->datepreviouslogin) { + $btnUser .= ' '.dol_print_date($user->datepreviouslogin, "dayhour", 'tzuser').'
    '; + } + $btnUser .= ' '.$langs->trans("Version").' '.$appli.'

    From 4f8b3e06466d3b69aa15b0f44e0b246dc9caf63d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 10:02:11 +0200 Subject: [PATCH 131/336] Fix name of cookie --- htdocs/core/boxes/box_task.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/boxes/box_task.php b/htdocs/core/boxes/box_task.php index 94983ef6bff..6e25fb934ad 100644 --- a/htdocs/core/boxes/box_task.php +++ b/htdocs/core/boxes/box_task.php @@ -84,7 +84,7 @@ class box_task extends ModeleBoxes $projectstatic = new Project($this->db); $taskstatic = new Task($this->db); $form = new Form($this->db); - $cookie_name = 'boxfilter_task'; + $cookie_name = 'DOLUSERCOOKIE_boxfilter_task'; $boxcontent = ''; $socid = $user->socid; From 9950295e4132480783922f43a5f4be171271dea8 Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Mon, 6 Apr 2020 10:12:27 +0200 Subject: [PATCH 132/336] FIX author search supplier proposal list --- htdocs/supplier_proposal/list.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index fe010c95e9c..5d6d2d2e0c3 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -59,7 +59,7 @@ $search_user=GETPOST('search_user', 'int'); $search_sale=GETPOST('search_sale', 'int'); $search_ref=GETPOST('sf_ref')?GETPOST('sf_ref', 'alpha'):GETPOST('search_ref', 'alpha'); $search_societe=GETPOST('search_societe', 'alpha'); -$search_author=GETPOST('search_author', 'alpha'); +$search_login=GETPOST('search_login', 'alpha'); $search_town=GETPOST('search_town', 'alpha'); $search_zip=GETPOST('search_zip', 'alpha'); $search_state=trim(GETPOST("search_state")); @@ -196,7 +196,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $search_type=''; $search_country=''; $search_type_thirdparty=''; - $search_author=''; + $search_login=''; $yearvalid=''; $monthvalid=''; $dayvalid=''; @@ -282,7 +282,7 @@ if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')'; if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')'; if ($search_ref) $sql .= natural_search('sp.ref', $search_ref); if ($search_societe) $sql .= natural_search('s.nom', $search_societe); -if ($search_author) $sql .= natural_search('u.login', $search_author); +if ($search_login) $sql .= natural_search('u.login', $search_login); if ($search_montant_ht) $sql.= natural_search('sp.total_ht=', $search_montant_ht, 1); if ($search_montant_vat != '') $sql.= natural_search("sp.tva", $search_montant_vat, 1); if ($search_montant_ttc != '') $sql.= natural_search("sp.total", $search_montant_ttc, 1); @@ -366,7 +366,7 @@ if ($resql) if ($search_user > 0) $param.='&search_user='.$search_user; if ($search_sale > 0) $param.='&search_sale='.$search_sale; if ($search_montant_ht) $param.='&search_montant_ht='.$search_montant_ht; - if ($search_author) $param.='&search_author='.$search_author; + if ($search_login) $param.='&search_login='.$search_login; if ($search_town) $param.='&search_town='.$search_town; if ($search_zip) $param.='&search_zip='.$search_zip; if ($socid > 0) $param.='&socid='.$socid; @@ -549,7 +549,7 @@ if ($resql) { // Author print ''; - print ''; + print ''; print ''; } // Extra fields From 23c48b83e4fb55ce3d054ccd3501735cf3fa3a67 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 11:16:35 +0200 Subject: [PATCH 133/336] Fix change position of session_set_cookie_param / session_name --- htdocs/main.inc.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index ece5ac096c8..f17579e9d78 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -209,8 +209,8 @@ $prefix = dol_getprefix(''); $sessionname = 'DOLSESSID_'.$prefix; $sessiontimeout = 'DOLSESSTIMEOUT_'.$prefix; if (!empty($_COOKIE[$sessiontimeout])) ini_set('session.gc_maxlifetime', $_COOKIE[$sessiontimeout]); -session_name($sessionname); session_set_cookie_params(0, '/', null, (empty($dolibarr_main_force_https) ? false : true), true); // Add tag secure and httponly on session cookie (same as setting session.cookie_httponly into php.ini). Must be called before the session_start. +session_name($sessionname); // This create lock, released when session_write_close() or end of page. // We need this lock as long as we read/write $_SESSION ['vars']. We can remove lock when finished. if (!defined('NOSESSION')) @@ -256,7 +256,6 @@ if (isset($_SERVER["HTTP_USER_AGENT"])) if ($conf->browser->layout == 'phone') $conf->dol_no_mouse_hover = 1; } - // Force HTTPS if required ($conf->file->main_force_https is 0/1 or 'https dolibarr root url') // $_SERVER["HTTPS"] is 'on' when link is https, otherwise $_SERVER["HTTPS"] is empty or 'off' if (!empty($conf->file->main_force_https) && (empty($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != 'on')) @@ -343,7 +342,6 @@ if ((!empty($conf->global->MAIN_VERSION_LAST_UPGRADE) && ($conf->global->MAIN_VE } } -//var_dump(GETPOST('token').' '.$_SESSION['token'].' - '.newToken().' '.$_SERVER['SCRIPT_FILENAME']); // Creation of a token against CSRF vulnerabilities if (!defined('NOTOKENRENEWAL')) @@ -619,8 +617,8 @@ if (!defined('NOLOGIN')) { dol_syslog('User not found, connexion refused'); session_destroy(); - session_name($sessionname); session_set_cookie_params(0, '/', null, (empty($dolibarr_main_force_https) ? false : true), true); // Add tag secure and httponly on session cookie + session_name($sessionname); session_start(); if ($resultFetchUser == 0) @@ -673,8 +671,8 @@ if (!defined('NOLOGIN')) // Account has been removed after login dol_syslog("Can't load user even if session logged. _SESSION['dol_login']=".$login, LOG_WARNING); session_destroy(); - session_name($sessionname); session_set_cookie_params(0, '/', null, (empty($dolibarr_main_force_https) ? false : true), true); // Add tag secure and httponly on session cookie + session_name($sessionname); session_start(); if ($resultFetchUser == 0) From 41b2ed8f89d85cf03c2bac4224e33f561eb2cf44 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 12:03:37 +0200 Subject: [PATCH 134/336] Look and feel v12 --- htdocs/core/class/html.form.class.php | 2 +- htdocs/projet/activity/perday.php | 11 +++++++---- htdocs/projet/activity/permonth.php | 11 ++++++----- htdocs/projet/activity/perweek.php | 9 +++++---- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 0b8185b3854..8e30c65b409 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5473,7 +5473,7 @@ class Form * @param int $disabled Disable input fields * @param int $fullday When a checkbox with this html name is on, hour and day are set with 00:00 or 23:59 * @param string $addplusone Add a link "+1 hour". Value must be name of another selectDate field. - * @param datetime $adddateof Add a link "Date of invoice" using the following date. See also $labeladddateof for the label used. + * @param datetime $adddateof Add a link "Date of ..." using the following date. See also $labeladddateof for the label used. * @param string $openinghours Specify hour start and hour end for the select ex 8,20 * @param int $stepminutes Specify step for minutes between 1 and 30 * @param string $labeladddateof Label to use for the $adddateof parameter. diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index db6efca4721..00d70e31c89 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -146,6 +146,7 @@ $search_array_options_task = $extrafields->getOptionalsFromPost($object->table_e /* * Actions */ + $parameters = array('id' => $id, 'taskid' => $taskid, 'projectid' => $projectid); $reshook=$hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -441,9 +442,10 @@ $nav = '".dol_print_date(dol_mktime(0, 0, 0, $month, $day, $year), "day")."
    \n"; $nav .= ''.img_next($langs->trans("Next"))."\n"; -$nav .= "   (".$langs->trans("Today").")"; -$nav .= '
    '.$form->selectDate(-1, '', 0, 0, 2, "addtime", 1, 0).' '; -$nav .= ' '; +//$nav .= "   (".$langs->trans("Today").")"; +$nav .= ' '.$form->selectDate(-1, '', 0, 0, 2, "addtime", 1, 1).' '; +//$nav .= ' '; +$nav .= ' '; $picto = 'calendarweek'; @@ -484,6 +486,7 @@ print ''; dol_fiche_end(); + print '
    '.$nav.'
    '; // We move this before the assign to components so, the default submit button is not the assign to. print '
    '; @@ -497,7 +500,7 @@ print $formcompany->selectTypeContact($object, '', 'type', 'internal', 'rowid', print ''; print '
    '; -print '
    '; +print '
    '; $moreforfilter = ''; diff --git a/htdocs/projet/activity/permonth.php b/htdocs/projet/activity/permonth.php index da0459f9521..3b90d49b48b 100644 --- a/htdocs/projet/activity/permonth.php +++ b/htdocs/projet/activity/permonth.php @@ -368,9 +368,10 @@ $param.=($search_task_label?'&search_task_label='.$search_task_label:''); $nav =''.img_previous($langs->trans("Previous"))."\n"; $nav.=" ".dol_print_date(dol_mktime(0, 0, 0, $month, 1, $year), "%Y").", ".$langs->trans(date('F', mktime(0, 0, 0, $month, 10)))." \n"; $nav.=''.img_next($langs->trans("Next"))."\n"; -$nav.="   (".$langs->trans("Today").")"; -$nav.='
    '.$form->select_date(-1, '', 0, 0, 2, "addtime", 1, 0, 1).' '; -$nav.=' '; +//$nav.="   (".$langs->trans("Today").")"; +$nav.=' '.$form->selectDate(-1, '', 0, 0, 2, "addtime", 1, 1).' '; +//$nav.=' '; +$nav .= ' '; $picto='calendarweek'; @@ -408,7 +409,7 @@ print ''; dol_fiche_end(); -print '
    '.$nav.'
    '; // We move this before the assign to components so, the default submit button is not the assign to. +print '
    '.$nav.'
    '; // We move this before the assign to components so, the default submit button is not the assign to. print '
    '; $titleassigntask = $langs->transnoentities("AssignTaskToMe"); @@ -421,7 +422,7 @@ print $formcompany->selectTypeContact($object, '', 'type', 'internal', 'rowid', print ''; print '
    '; -print '
    '; +print '
    '; $moreforfilter=''; diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index 3bb024b29f3..81560c44777 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -459,9 +459,10 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; $nav = ''.img_previous($langs->trans("Previous"))."\n"; $nav .= " ".dol_print_date(dol_mktime(0, 0, 0, $first_month, $first_day, $first_year), "%Y").", ".$langs->trans("WeekShort")." ".$week." \n"; $nav .= ''.img_next($langs->trans("Next"))."\n"; -$nav .= "   (".$langs->trans("Today").")"; -$nav .= '
    '.$form->selectDate(-1, '', 0, 0, 2, "addtime", 1, 0).' '; -$nav .= ' '; +//$nav .= "   (".$langs->trans("Today").")"; +$nav .= ' '.$form->selectDate(-1, '', 0, 0, 2, "addtime", 1, 1).' '; +//$nav .= ' '; +$nav .= ' '; $picto = 'calendarweek'; @@ -514,7 +515,7 @@ print $formcompany->selectTypeContact($object, '', 'type', 'internal', 'rowid', print ''; print ''; -print '
    '; +print '
    '; $startday = dol_mktime(12, 0, 0, $startdayarray['first_month'], $startdayarray['first_day'], $startdayarray['first_year']); From 48da8c315f8935040f1bbaf850a0a9ff65a02744 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Mon, 6 Apr 2020 12:21:20 +0200 Subject: [PATCH 135/336] fix php warning --- htdocs/compta/stats/supplier_turnover_by_thirdparty.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index ea55adcc8c2..a9cdef94711 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -195,18 +195,19 @@ $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '. if ($date_end == dol_time_plus_duree($date_start, 1, 'y') - 1) $periodlink = ''.img_previous().' '.img_next().''; else $periodlink = ''; -report_header($name, $namelink, $period, $periodlink, $description, $builddate, $exportlink, $tableparams, $calcmode); +report_header($name, '', $period, $periodlink, $description, $builddate, $exportlink, $tableparams, $calcmode); if (!empty($conf->accounting->enabled) && $modecompta != 'BOOKKEEPING') { print info_admin($langs->trans("WarningReportNotReliable"), 0, 0, 1); } - -$name = array(); - // Show Array $catotal = 0; +$catotal_ht = 0; +$name = array(); +$amount = array(); +$amount_ht = array(); if ($modecompta == 'CREANCES-DETTES') { $sql = "SELECT DISTINCT s.rowid as socid, s.nom as name, s.zip, s.town, s.fk_pays,"; $sql .= " sum(f.total_ht) as amount, sum(f.total_ttc) as amount_ttc"; From 35f30522806764780431173c4fb1d1652ba3bd2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josep=20Llu=C3=ADs?= Date: Mon, 6 Apr 2020 12:47:57 +0200 Subject: [PATCH 136/336] NEW add VAT ID in sepamandate document add: VAT ID in sepamandate document --- .../modules/bank/doc/pdf_sepamandate.modules.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php index 3b627d79d86..3a01ecc8e02 100644 --- a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php @@ -1,5 +1,6 @@ + * Copyright (C) 2020 Josep Lluís Amador * * 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 @@ -282,8 +283,17 @@ class pdf_sepamandate extends ModeleBankAccountDoc $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("SEPAFormYourName").' * : ', 0, 'L'); $pdf->SetXY(80, $posY); $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $sepaname, 0, 'L'); + + $sepavatid = '__________________________________________________'; + if (! empty($thirdparty->idprof1)) $sepavatid = $thirdparty->idprof1; + $posY=$pdf->GetY(); + $posY+=1; + $pdf->SetXY($this->marge_gauche, $posY); + $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv('ProfId1'.$thirdparty->country_code).' * : ', 0, 'L'); + $pdf->SetXY(80, $posY); + $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $sepavatid, 0, 'L'); - $address = '______________________________________________'; + $address = '______________________________________________'; if ($thirdparty->id > 0) { $address = $thirdparty->getFullAddress(); From 3b9267fd8a16193d366c1768d1051d2e670cea86 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 6 Apr 2020 10:51:06 +0000 Subject: [PATCH 137/336] Fixing style errors. --- htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php index 3a01ecc8e02..9bdbf997ead 100644 --- a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php @@ -283,7 +283,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("SEPAFormYourName").' * : ', 0, 'L'); $pdf->SetXY(80, $posY); $pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $sepaname, 0, 'L'); - + $sepavatid = '__________________________________________________'; if (! empty($thirdparty->idprof1)) $sepavatid = $thirdparty->idprof1; $posY=$pdf->GetY(); From 721371a08cd50c0ca131c3fd2422fc9ed2c55076 Mon Sep 17 00:00:00 2001 From: ATM john Date: Mon, 6 Apr 2020 13:08:03 +0200 Subject: [PATCH 138/336] Fix warehouse list --- htdocs/product/stock/class/entrepot.class.php | 6 +- htdocs/product/stock/list.php | 188 +++++++++++++----- 2 files changed, 144 insertions(+), 50 deletions(-) diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index ab3dfde9bf0..6499cc0ce9d 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -108,12 +108,12 @@ class Entrepot extends CommonObject 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>30), 'description' =>array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-2, 'position'=>35), 'lieu' =>array('type'=>'varchar(64)', 'label'=>'LocationSummary', 'enabled'=>1, 'visible'=>-2, 'position'=>40, 'showoncombobox'=>1), - 'fk_parent' =>array('type'=>'integer', 'label'=>'ParentWarehouse', 'enabled'=>1, 'visible'=>-2, 'position'=>41), + 'fk_parent' =>array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:1:statut=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ParentWarehouse', 'enabled'=>1, 'visible'=>-2, 'position'=>41), 'address' =>array('type'=>'varchar(255)', 'label'=>'Address', 'enabled'=>1, 'visible'=>-2, 'position'=>45), 'zip' =>array('type'=>'varchar(10)', 'label'=>'Zip', 'enabled'=>1, 'visible'=>-2, 'position'=>50), 'town' =>array('type'=>'varchar(50)', 'label'=>'Town', 'enabled'=>1, 'visible'=>-2, 'position'=>55), - 'fk_departement' =>array('type'=>'integer', 'label'=>'State', 'enabled'=>1, 'visible'=>0, 'position'=>60), - 'fk_pays' =>array('type'=>'integer', 'label'=>'Country', 'enabled'=>1, 'visible'=>-2, 'position'=>65), + 'fk_departement' =>array('type'=>'sellist:c_departements:label:rowid::active=1', 'label'=>'State', 'enabled'=>1, 'visible'=>0, 'position'=>60), + 'fk_pays' =>array('type'=>'sellist:c_country:label:rowid::active=1', 'label'=>'Country', 'enabled'=>1, 'visible'=>-2, 'position'=>65), //'fk_user_author' =>array('type'=>'integer', 'label'=>'Fk user author', 'enabled'=>1, 'visible'=>-2, 'position'=>82), 'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>500), 'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>501), diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index 22f86df95a8..91a335758c6 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -89,12 +89,12 @@ $fieldstosearchall = array( $arrayfields = array( 'stockqty'=>array('type'=>'float', 'label'=>'PhysicalStock', 'enabled'=>1, 'visible'=>-2, 'position'=>70), 'estimatedvalue'=>array('type'=>'float', 'label'=>'EstimatedStockValue', 'enabled'=>1, 'visible'=>-2, 'position'=>71), - 'sellvalue'=>array('type'=>'float', 'label'=>'EstimatedStockValueSell', 'enabled'=>1, 'visible'=>-2, 'position'=>72), + 'estimatedstockvaluesell'=>array('type'=>'float', 'label'=>'EstimatedStockValueSell', 'enabled'=>1, 'visible'=>-2, 'position'=>72), ); foreach ($object->fields as $key => $val) { // If $val['visible']==0, then we never show the field - if (!empty($val['visible'])) $arrayfields['t.'.$key] = array('label'=>$val['label'], 'checked'=>(($val['visible'] < 0) ? 0 : 1), 'enabled'=>($val['enabled'] && ($val['visible'] != 3)), 'position'=>$val['position']); + if (!empty($val['visible'])) $arrayfields['e.'.$key] = array('label'=>$val['label'], 'checked'=>(($val['visible'] < 0) ? 0 : 1), 'enabled'=>($val['enabled'] && ($val['visible'] != 3)), 'position'=>$val['position']); } // Extra fields if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) @@ -158,6 +158,7 @@ if (empty($reshook)) $form = new Form($db); $warehouse = new Entrepot($db); +$totalarray = array(); $now = dol_now(); $help_url = 'EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks'; @@ -168,10 +169,12 @@ $title = $langs->trans("ListOfWarehouses"); // -------------------------------------------------------------------- $sql = "SELECT e.rowid, e.ref, e.statut, e.lieu, e.address, e.zip, e.town, e.fk_pays, e.fk_parent,"; $sql .= " SUM(p.pmp * ps.reel) as estimatedvalue, SUM(p.price * ps.reel) as sellvalue, SUM(ps.reel) as stockqty"; +$sqlGroupBy = ''; // Add fields from extrafields if (!empty($extrafields->attributes[$object->table_element]['label'])) { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key.' as options_'.$key : ''); + $sqlGroupBy .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key : ''); } } // Add fields from hooks @@ -183,6 +186,8 @@ $sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as e"; if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (e.rowid = ef.fk_object)"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON e.rowid = ps.fk_entrepot"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON ps.fk_product = p.rowid"; +$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as c_dep ON c_dep.rowid = e.fk_departement"; +$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as ccount ON ccount.rowid = e.fk_pays"; $sql .= " WHERE e.entity IN (".getEntity('stock').")"; if ($search_ref) $sql .= natural_search("e.ref", $search_ref); // ref if ($search_label) $sql .= natural_search("e.lieu", $search_label); // label @@ -194,7 +199,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; -$sql .= " GROUP BY e.rowid, e.ref, e.statut, e.lieu, e.address, e.zip, e.town, e.fk_pays, e.fk_parent"; +$sql .= " GROUP BY e.rowid, e.ref, e.statut, e.lieu, e.address, e.zip, e.town, e.fk_pays, e.fk_parent".$sqlGroupBy; $totalnboflines = 0; $result = $db->query($sql); if ($result) @@ -210,6 +215,9 @@ if ($result) $totalStock += $objp->stockqty; $line++; } + $totalarray['val']['stockqty'] = $totalStock; + $totalarray['val']['estimatedvalue'] = $total; + $totalarray['val']['estimatedstockvaluesell'] = $totalsell; } $sql .= $db->order($sortfield, $sortorder); @@ -337,17 +345,37 @@ print ''; -print ''; +foreach ($object->fields as $key => $val) +{ + if($key == 'statut'){ continue; } + $cssforfield = (empty($val['css']) ? '' : $val['css']); + if ($key == 'status') $cssforfield .= ($cssforfield ? ' ' : '').'center'; + elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'center'; + elseif (in_array($val['type'], array('timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID') $cssforfield .= ($cssforfield ? ' ' : '').'right'; + if (!empty($arrayfields['e.'.$key]['checked'])) + { + print ''; + } +} -print ''; +if (!empty($arrayfields["stockqty"]['checked'])) { + print ''; +} -print ''; -print ''; -print ''; +if (!empty($arrayfields["estimatedvalue"]['checked'])) { + print ''; +} + +if (!empty($arrayfields["estimatedstockvaluesell"]['checked'])) { + print ''; +} // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; @@ -357,9 +385,11 @@ $reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $obje print $hookmanager->resPrint; // Status -print ''; +if (!empty($arrayfields["e.statut"]['checked'])) { + print ''; +} // Action column print ''."\n"; // Fields title label // -------------------------------------------------------------------- print ''; -print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "e.ref", "", $param, "", $sortfield, $sortorder); -print_liste_field_titre("LocationSummary", $_SERVER["PHP_SELF"], "e.lieu", "", $param, "", $sortfield, $sortorder); -print_liste_field_titre("PhysicalStock", $_SERVER["PHP_SELF"], "stockqty", '', $param, '', $sortfield, $sortorder, 'right '); -print_liste_field_titre("EstimatedStockValue", $_SERVER["PHP_SELF"], "estimatedvalue", '', $param, '', $sortfield, $sortorder, 'right '); -print_liste_field_titre("EstimatedStockValueSell", $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'right '); + +foreach ($object->fields as $key => $val) +{ + if($key == 'statut'){ continue; } + $cssforfield = (empty($val['css']) ? '' : $val['css']); + if ($key == 'status') $cssforfield .= ($cssforfield ? ' ' : '').'center'; + elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'center'; + elseif (in_array($val['type'], array('timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID') $cssforfield .= ($cssforfield ? ' ' : '').'right'; + if (!empty($arrayfields['e.'.$key]['checked'])) + { + print getTitleFieldOfList($arrayfields['e.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 'e.'.$key, '', $param, ($cssforfield ? 'class="'.$cssforfield.'"' : ''), $sortfield, $sortorder, ($cssforfield ? $cssforfield.' ' : ''))."\n"; + } +} + +if (!empty($arrayfields["stockqty"]['checked'])) { + print_liste_field_titre("PhysicalStock", $_SERVER["PHP_SELF"], "stockqty", '', $param, '', $sortfield, $sortorder, 'right '); +} + +if (!empty($arrayfields["estimatedvalue"]['checked'])) { + print_liste_field_titre("EstimatedStockValue", $_SERVER["PHP_SELF"], "estimatedvalue", '', $param, '', $sortfield, $sortorder, 'right '); +} + +if (!empty($arrayfields["estimatedstockvaluesell"]['checked'])) { + print_liste_field_titre("EstimatedStockValueSell", $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'right '); +} + // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; // Hook fields $parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder); $reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; -print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "e.statut", '', $param, '', $sortfield, $sortorder, 'right '); + +if (!empty($arrayfields["e.statut"]['checked'])) { + print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "e.statut", '', $param, '', $sortfield, $sortorder, 'right '); +} + // Action column print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; print ''."\n"; @@ -390,12 +446,10 @@ print ''."\n"; // Loop on record // -------------------------------------------------------------------- $i = 0; -$totalarray = array(); if ($num) { $warehouse = new Entrepot($db); - $totalarray = array(); while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); @@ -408,35 +462,70 @@ if ($num) $warehouse->fk_parent = $obj->fk_parent; $warehouse->statut = $obj->statut; + foreach ($object->fields as $key => $val){ + $warehouse->{$key} = $obj->{$key}; + } + + // Show here line of result print ''; - print ''; - if (!$i) $totalarray['nbfield']++; - // Location - print ''; - if (!$i) $totalarray['nbfield']++; + + foreach ($warehouse->fields as $key => $val) + { + if($key == 'statut'){ continue; } + $cssforfield = (empty($val['css']) ? '' : $val['css']); + if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'center'; + elseif ($key == 'status') $cssforfield .= ($cssforfield ? ' ' : '').'center'; + + if (in_array($val['type'], array('timestamp'))) $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + elseif ($key == 'ref') $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + + if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'status') $cssforfield .= ($cssforfield ? ' ' : '').'right'; + + if (!empty($arrayfields['e.'.$key]['checked'])) + { + print ''; + if ($key == 'status') print $warehouse->getLibStatut(5); + else print $warehouse->showOutputField($val, $key, $warehouse->$key, ''); + print ''; + if (!$i) $totalarray['nbfield']++; + if (!empty($val['isameasure'])) + { + if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'e.'.$key; + $totalarray['val']['e.'.$key] += $warehouse->$key; + } + } + } // Stock qty - print ''; - if (!$i) $totalarray['nbfield']++; + if (!empty($arrayfields["stockqty"]['checked'])) { + print ''; + if (!$i) $totalarray['nbfield']++; + if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'stockqty'; + } // PMP value - print ''; - if (!$i) $totalarray['nbfield']++; + if (!empty($arrayfields["estimatedvalue"]['checked'])) { + print ''; + if (!$i) $totalarray['nbfield']++; + if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'estimatedvalue'; + } // Selling value - print ''; + if (!$i) $totalarray['nbfield']++; + if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'estimatedstockvaluesell'; } - print ''; - if (!$i) $totalarray['nbfield']++; // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; @@ -446,8 +535,10 @@ if ($num) print $hookmanager->resPrint; // Status - print ''; - if (!$i) $totalarray['nbfield']++; + if (!empty($arrayfields["e.statut"]['checked'])) { + print ''; + if (!$i) $totalarray['nbfield']++; + } // Action column print ''; + // Show total line + include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; + + /*print ''; print ''; print ''; print ''; @@ -482,7 +576,7 @@ if ($num) print ''; print ''; print ''; - print "\n"; + print "\n";*/ } } From 88297d5682db0ffda1e7267981afa99068f5b0da Mon Sep 17 00:00:00 2001 From: ATM john Date: Mon, 6 Apr 2020 13:20:42 +0200 Subject: [PATCH 139/336] fix key --- htdocs/product/stock/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index 91a335758c6..b84ddf9aad2 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -485,7 +485,7 @@ if ($num) if (!empty($arrayfields['e.'.$key]['checked'])) { print ''; - if ($key == 'status') print $warehouse->getLibStatut(5); + if ($key == 'statut') print $warehouse->getLibStatut(5); else print $warehouse->showOutputField($val, $key, $warehouse->$key, ''); print ''; if (!$i) $totalarray['nbfield']++; From 082b2051494480570d8d5827786330cc1669d2b9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 15:12:42 +0200 Subject: [PATCH 140/336] WIP Work on Kanban view for module list --- htdocs/admin/modulehelp.php | 62 ++++++++++--------- htdocs/admin/modules.php | 41 ++++++++---- htdocs/core/modules/DolibarrModules.class.php | 16 ++--- htdocs/langs/en_US/main.lang | 2 + htdocs/langs/en_US/projects.lang | 2 - htdocs/projet/ganttview.php | 3 +- htdocs/projet/tasks.php | 2 +- htdocs/theme/eldy/info-box.inc.php | 27 +++++++- 8 files changed, 98 insertions(+), 57 deletions(-) diff --git a/htdocs/admin/modulehelp.php b/htdocs/admin/modulehelp.php index 08ddbd4ad6a..1429888405c 100644 --- a/htdocs/admin/modulehelp.php +++ b/htdocs/admin/modulehelp.php @@ -243,10 +243,36 @@ $moduledesc=$objMod->getDesc(); $moduleauthor=$objMod->getPublisher(); $moduledir=strtolower(preg_replace('/^mod/i', '', get_class($objMod))); +$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod))); + +$text = ''.$langs->trans("LastActivationDate").': '; +if (! empty($conf->global->$const_name)) $text.=dol_print_date($objMod->getLastActivationDate(), 'dayhour'); +else $text.=$langs->trans("Disabled"); +$tmp = $objMod->getLastActivationInfo(); +$authorid = $tmp['authorid']; +if ($authorid > 0) +{ + $tmpuser = new User($db); + $tmpuser->fetch($authorid); + $text.='
    '.$langs->trans("LastActivationAuthor").': '; + $text.= $tmpuser->getNomUrl(1); +} +$ip = $tmp['ip']; +if ($ip) +{ + $text.='
    '.$langs->trans("LastActivationIP").': '; + $text.= $ip; +} + +$moreinfo = $text; + +$title = ($modulename?$modulename:$moduledesc); print '
    '; -print load_fiche_titre(($modulename?$modulename:$moduledesc), $moreinfo, 'object_'.$objMod->picto); +$picto = 'object_'.$objMod->picto; + +print load_fiche_titre(($modulename?$modulename:$moduledesc), $moreinfo, $picto); print '
    '; dol_fiche_head($head, $mode, $title, -1); @@ -256,8 +282,6 @@ if (! $modulename) dol_syslog("Error for module ".$key." - Property name of module looks empty", LOG_WARNING); } -$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod))); - // Load all lang files of module if (isset($objMod->langfiles) && is_array($objMod->langfiles)) { @@ -292,44 +316,22 @@ if ($mode == 'desc') { if ($moduledesc) $text .= '
    '.$moduledesc.'


    '; - $text.=''.$langs->trans("Version").': '.$version; + $text.=''.$langs->trans("Version").': '.$version; $textexternal=''; if ($objMod->isCoreOrExternalModule() == 'external') { - $textexternal.='
    '.$langs->trans("Origin").': '.$langs->trans("ExternalModule", $dirofmodule); - if ($objMod->editor_name != 'dolibarr') $textexternal.='
    '.$langs->trans("Publisher").': '.(empty($objMod->editor_name)?$langs->trans("Unknown"):$objMod->editor_name); + $textexternal.='
    '.$langs->trans("Origin").': '.$langs->trans("ExternalModule", $dirofmodule); + if ($objMod->editor_name != 'dolibarr') $textexternal.='
    '.$langs->trans("Publisher").': '.(empty($objMod->editor_name)?$langs->trans("Unknown"):$objMod->editor_name); $editor_url = $objMod->editor_url; if (! preg_match('/^http/', $editor_url)) $editor_url = 'http://'.$editor_url; - if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i', $objMod->editor_url)) $textexternal.='
    '.$langs->trans("Url").': '.$objMod->editor_url.''; + if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i', $objMod->editor_url)) $textexternal.= ($objMod->editor_name != 'dolibarr' ? ' - ' : '').img_object('', 'globe').' '.$objMod->editor_url.''; $text.=$textexternal; $text.='
    '; } else { - $text.='
    '.$langs->trans("Origin").': '.$langs->trans("Core").'
    '; - } - $text.='
    '.$langs->trans("LastActivationDate").': '; - if (! empty($conf->global->$const_name)) $text.=dol_print_date($objMod->getLastActivationDate(), 'dayhour'); - else $text.=$langs->trans("Disabled"); - $text.='
    '; - - $tmp = $objMod->getLastActivationInfo(); - $authorid = $tmp['authorid']; - if ($authorid > 0) - { - $tmpuser = new User($db); - $tmpuser->fetch($authorid); - $text.=''.$langs->trans("LastActivationAuthor").': '; - $text.= $tmpuser->getNomUrl(1); - $text.='
    '; - } - $ip = $tmp['ip']; - if ($ip) - { - $text.=''.$langs->trans("LastActivationIP").': '; - $text.= $ip; - $text.='
    '; + $text.='
    '.$langs->trans("Origin").': '.$langs->trans("Core").'
    '; } $moduledesclong=$objMod->getDescLong(); diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 91003d7cc12..1fa71b74f75 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -480,13 +480,14 @@ $nbofactivatedmodules = count($conf->modules); $moreinfo = $langs->trans("TotalNumberOfActivatedModules", ($nbofactivatedmodules - 1), count($modules)); if ($nbofactivatedmodules <= 1) $moreinfo .= ' '.img_warning($langs->trans("YouMustEnableOneModule")); -print load_fiche_titre($langs->trans("ModulesSetup"), $moreinfo, 'title_setup'); +print load_fiche_titre($langs->trans("ModulesSetup"), '', 'title_setup'); // Start to show page -if ($mode == 'common') print ''.$langs->trans("ModulesDesc")."
    \n"; -if ($mode == 'marketplace') print ''.$langs->trans("ModulesMarketPlaceDesc")."
    \n"; -if ($mode == 'deploy') print ''.$langs->trans("ModulesDeployDesc", $langs->transnoentitiesnoconv("AvailableModules"))."
    \n"; -if ($mode == 'develop') print ''.$langs->trans("ModulesDevelopDesc")."
    \n"; +if ($mode == 'common') print ''.$langs->trans("ModulesDesc")."
    \n"; +if ($mode == 'commonkanban') print ''.$langs->trans("ModulesDesc")."
    \n"; +if ($mode == 'marketplace') print ''.$langs->trans("ModulesMarketPlaceDesc")."
    \n"; +if ($mode == 'deploy') print ''.$langs->trans("ModulesDeployDesc", $langs->transnoentitiesnoconv("AvailableModules"))."
    \n"; +if ($mode == 'develop') print ''.$langs->trans("ModulesDevelopDesc")."
    \n"; $head = modules_prepare_head(); @@ -494,7 +495,7 @@ $head = modules_prepare_head(); print "
    \n"; -if ($mode == 'common') +if ($mode == 'common' || $mode == 'commonkanban') { dol_set_focus('#search_keyword'); @@ -504,12 +505,17 @@ if ($mode == 'common') print ''; print ''; print ''; + print ''; - dol_fiche_head($head, $mode, '', -1); + $newmode = $mode; + if ($newmode == 'commonkanban') $newmode = 'common'; - $moreforfilter = ''; + dol_fiche_head($head, $newmode, '', -1); + + $moreforfilter = '
    '; + $moreforfilter .= '
    '; $moreforfilter .= '
    '; - $moreforfilter .= $langs->trans('Keyword').': '; + $moreforfilter .= $langs->trans('Keyword').': '; $moreforfilter .= '
    '; $moreforfilter .= '
    '; $moreforfilter .= $langs->trans('Origin').': '.$form->selectarray('search_nature', $arrayofnatures, dol_escape_htmltag($search_nature), 1); @@ -532,6 +538,16 @@ if ($mode == 'common') $moreforfilter .= ''; $moreforfilter .= ' '; $moreforfilter .= ''; + $moreforfilter .= '
    '; + $moreforfilter .= '
    '; + + $moreforfilter .= '
    '; + $moreforfilter .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-list-alt paddingleft imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.$param, '', 1, array('morecss'=>'reposition')); + $moreforfilter .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-list-alt paddingleft imgforviewmode', $_SERVER["PHP_SELF"].'?mode=commonkanban'.$param, '', 1, array('morecss'=>'reposition')); + $moreforfilter .= '
    '; + + $moreforfilter .= '
    '.$moreinfo.'
    '; + $moreforfilter .= '
    '; if (!empty($moreforfilter)) @@ -552,7 +568,6 @@ if ($mode == 'common') if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); // Show list of modules - //$conf->global->MAIN_USE_KANBAN_FOR_MODULES=1; $oldfamily = ''; foreach ($orders as $key => $value) @@ -637,7 +652,7 @@ if ($mode == 'common') $familytext = empty($familyinfo[$familykey]['label']) ? $familykey : $familyinfo[$familykey]['label']; print load_fiche_titre($familytext, '', ''); - if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { + if ($mode == 'commonkanban') { print '
    '; } else { print '
    '; @@ -670,7 +685,7 @@ if ($mode == 'common') $imginfo = "info_black"; } - if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { + if ($mode == 'commonkanban') { // Output Kanban print $objMod->getKanbanView(); } else { @@ -880,7 +895,7 @@ if ($mode == 'common') if ($oldfamily) { - if (! empty($conf->global->MAIN_USE_KANBAN_FOR_MODULES)) { + if ($mode == 'commonkanban') { print '
    '; } else { print "
    '; -print ''; -print ''; + if (is_array($val['arrayofkeyval'])) print $form->selectarray('search_'.$key, $val['arrayofkeyval'], $search[$key], $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth75'); + elseif (strpos($val['type'], 'integer:') === 0 || strpos($val['type'], 'sellist:') === 0) { + print $object->showInputField($val, $key, $search[$key], '', '', 'search_', 'maxwidth150', 1); + } + elseif (! preg_match('/^(date|timestamp)/', $val['type'])) print ''; + print ''; -print ''; -print ''; -print $form->selectarray('search_status', $warehouse->statuts, $search_status, 1, 0, 0, '', 1); -print ''; + print $form->selectarray('search_status', $warehouse->statuts, $search_status, 1, 0, 0, '', 1); + print ''; @@ -371,18 +401,44 @@ print '
    '.$warehouse->getNomUrl(1).''.$obj->lieu.''.price2num($obj->stockqty, 5).'' . price2num($obj->stockqty, 5) . ''; - if (price2num($obj->estimatedvalue, 'MT')) print price(price2num($obj->estimatedvalue, 'MT'), 1); - else print ''; - print ''; + if (price2num($obj->estimatedvalue, 'MT')) print price(price2num($obj->estimatedvalue, 'MT'), 1); + else print ''; + print ''; - if (empty($conf->global->PRODUIT_MULTIPRICES)) print price(price2num($obj->sellvalue, 'MT'), 1); - else - { - $htmltext = $langs->trans("OptionMULTIPRICESIsOn"); - print $form->textwithtooltip($langs->trans("Variable"), $htmltext); + if (!empty($arrayfields["estimatedstockvaluesell"]['checked'])) { + print ''; + if (empty($conf->global->PRODUIT_MULTIPRICES)) print price(price2num($obj->sellvalue, 'MT'), 1); + else { + $htmltext = $langs->trans("OptionMULTIPRICESIsOn"); + print $form->textwithtooltip($langs->trans("Variable"), $htmltext); + } + print ''.$warehouse->LibStatut($obj->statut, 5).'' . $warehouse->LibStatut($obj->statut, 5) . ''; @@ -468,7 +559,10 @@ if ($num) if ($totalnboflines - $offset <= $limit) { - print '
    '.$langs->trans("Total").''.price2num($totalStock, 5).''.price(price2num($total, 'MT'), 1, $langs, 0, 0, -1, $conf->currency).'
    \n"; diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 9ea058de919..d9cf40f4b68 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -2286,31 +2286,31 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it print '
    -
    - '; +
    +
    '; $alttext = ''; //if (is_array($objMod->need_dolibarr_version)) $alttext.=($alttext?' - ':'').'Dolibarr >= '.join('.',$objMod->need_dolibarr_version); //if (is_array($objMod->phpmin)) $alttext.=($alttext?' - ':'').'PHP >= '.join('.',$objMod->phpmin); if (!empty($this->picto)) { - if (preg_match('/^\//i', $this->picto)) print img_picto($alttext, $this->picto, 'class="inline-block valignmiddle width50"', 1); - else print img_object($alttext, $this->picto, 'class="inline-block valignmiddle width50"'); + if (preg_match('/^\//i', $this->picto)) print img_picto($alttext, $this->picto, 'class="inline-block valignmiddle"', 1); + else print img_object($alttext, $this->picto, 'class="inline-block valignmiddle"'); } else { - print img_object($alttext, 'generic', 'class="inline-block valignmiddle width50"'); + print img_object($alttext, 'generic', 'class="inline-block valignmiddle"'); } - - print ' + print 'getVersion(1).'">'.$this->getVersion(1).''; + print '
    '.$this->getName().' '.nl2br($this->getDesc()).''; print ''.img_picto($langs->trans("ClickToShowDescription"), $imginfo).''; + //print ''.$this->getVersion(1).''; print ' - '.$this->getVersion(1).'
    '; diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index d5ae9ca5124..cbe3c3e46bf 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -830,6 +830,8 @@ Gender=Gender Genderman=Man Genderwoman=Woman ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view Mandatory=Mandatory Hello=Hello GoodBye=GoodBye diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 4a4c70d2bb7..810362cfdaf 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -87,8 +87,6 @@ WhichIamLinkedToProject=which I'm linked to project Time=Time ListOfTasks=List of tasks GoToListOfTimeConsumed=Go to list of time consumed -GoToListOfTasks=Show as list -GoToGanttView=show as Gantt GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project ListOrdersAssociatedProject=List of sales orders related to the project diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php index db4a5642dec..62a8f2235f2 100644 --- a/htdocs/projet/ganttview.php +++ b/htdocs/projet/ganttview.php @@ -30,6 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $id = GETPOST('id', 'intcomma'); @@ -234,7 +235,7 @@ if ($user->rights->projet->all->creer || $user->rights->projet->creer) { $linktocreatetask = dolGetButtonTitle($langs->trans('AddTask'), '', 'fa fa-plus-circle paddingleft', DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id.'&action=create'.$param.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$object->id), '', $linktocreatetaskUserRight, $linktocreatetaskParam); -$linktolist = dolGetButtonTitle($langs->trans('GoToListOfTasks'), '', 'fa fa-list-alt paddingleft imgforviewmode', DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id, '', 1, array('morecss'=>'reposition')); +$linktolist = dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-list-alt paddingleft imgforviewmode', DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id, '', 1, array('morecss'=>'reposition')); //print_barre_liste($title, 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, $linktotasks, $num, $totalnboflines, 'generic', 0, '', '', 0, 1); print load_fiche_titre($title, $linktolist.'   '.$linktocreatetask, 'generic'); diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index a95d7162a87..d473db7c753 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -647,7 +647,7 @@ elseif ($id > 0 || !empty($ref)) print ''; $title = $langs->trans("ListOfTasks"); - $linktotasks = dolGetButtonTitle($langs->trans('GoToGanttView'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/projet/ganttview.php?id='.$object->id.'&withproject=1', '', 1, array('morecss'=>'reposition')); + $linktotasks = dolGetButtonTitle($langs->trans('ViewGantt'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/projet/ganttview.php?id='.$object->id.'&withproject=1', '', 1, array('morecss'=>'reposition')); //print_barre_liste($title, 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, $linktotasks, $num, $totalnboflines, 'generic', 0, '', '', 0, 1); print load_fiche_titre($title, $linktotasks.'   '.$linktocreatetask, 'generic'); diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php index 88357f02404..0bcfe977871 100644 --- a/htdocs/theme/eldy/info-box.inc.php +++ b/htdocs/theme/eldy/info-box.inc.php @@ -64,12 +64,15 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> line-height: 90px; background: rgba(0, 0, 0, 0.2); } -.info-box-sm .info-box-icon{ +.info-box-sm .info-box-icon { height: 80px; width: 80px; font-size: 25px; line-height: 80px; } +.info-box-module .info-box-icon { + height: 106px; +} .info-box-icon > img { max-width: 100%; } @@ -92,13 +95,33 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> transition: opacity 0.5s, visibility 0s 0.5s; } +.info-box-icon-version { + box-sizing: border-box; + display: block; + position: absolute; + width: 90px; + bottom: 0px; + color: #ffffff; + background-color: rgba(0,0,0,0.1); + cursor: default; + + font-size: 10px; + line-height: 22px; + padding: 0px 3px; + text-align: center; + opacity: 1; + -webkit-transition: opacity 0.5s, visibility 0s 0.5s; + transition: opacity 0.5s, visibility 0s 0.5s; +} + + global->MAIN_DISABLE_GLOBAL_BOXSTATS) && !empty($conf->global->MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD)) { ?> .info-box-icon-text{ opacity: 1; } -.info-box-sm .info-box-icon-text{ +.info-box-sm .info-box-icon-text, .info-box-sm .info-box-icon-version{ overflow: hidden; width: 80px; } From 809c741d1199dd64b0c7cdd78423db4a7de6d2c5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 15:34:28 +0200 Subject: [PATCH 141/336] Can use font awesome as picto of object and modules. --- htdocs/admin/modulehelp.php | 2 +- htdocs/core/lib/functions.lib.php | 10 ++++++---- htdocs/core/modules/modCashDesk.class.php | 2 +- htdocs/core/modules/modTakePos.class.php | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/htdocs/admin/modulehelp.php b/htdocs/admin/modulehelp.php index 1429888405c..5a52dc99e3a 100644 --- a/htdocs/admin/modulehelp.php +++ b/htdocs/admin/modulehelp.php @@ -325,7 +325,7 @@ if ($mode == 'desc') if ($objMod->editor_name != 'dolibarr') $textexternal.='
    '.$langs->trans("Publisher").': '.(empty($objMod->editor_name)?$langs->trans("Unknown"):$objMod->editor_name); $editor_url = $objMod->editor_url; if (! preg_match('/^http/', $editor_url)) $editor_url = 'http://'.$editor_url; - if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i', $objMod->editor_url)) $textexternal.= ($objMod->editor_name != 'dolibarr' ? ' - ' : '').img_object('', 'globe').' '.$objMod->editor_url.''; + if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i', $objMod->editor_url)) $textexternal.= ($objMod->editor_name != 'dolibarr' ? ' - ' : '').img_picto('', 'globe').' '.$objMod->editor_url.''; $text.=$textexternal; $text.='
    '; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 751e3ebb0a6..45ddc03e98d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3136,6 +3136,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'filter', 'file-code', 'grip', 'grip_title', 'language', 'list', 'listlight', 'note', 'object_phoning', 'object_phoning_fax', 'object_email', 'object_bookmark', 'object_list', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', + 'object_cash-register', 'off', 'on', 'play', 'playdisabled', 'printer', 'resize', 'stats', 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'globe', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', @@ -3154,14 +3155,15 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (in_array($pictowithouttext, array('skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp'))) { $fa = 'fab'; } + $pictowithouttext = str_replace('object_', '', $pictowithouttext); $arrayconvpictotofa = array( 'address'=> 'address-book', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accountancy'=>'money-check-alt', 'hrm'=>'umbrella-beach', 'members'=>'users', 'ticket'=>'ticket-alt', 'generic'=>'folder-open', 'globe'=>'external-link-alt', - 'object_phoning'=>'phone', 'object_phoning_fax'=>'fax', 'object_email'=>'at', - 'switch_off'=>'toggle-off', 'switch_on'=>'toggle-on', 'check'=>'check', 'object_bookmark'=>'star', 'bookmark'=>'star', 'stats' => 'chart-bar', + 'phoning'=>'phone', 'phoning_fax'=>'fax', 'email'=>'at', + 'switch_off'=>'toggle-off', 'switch_on'=>'toggle-on', 'check'=>'check', 'bookmark'=>'star', 'bookmark'=>'star', 'stats' => 'chart-bar', 'bank'=>'university', 'close_title'=>'window-close', 'delete'=>'trash', 'edit'=>'pencil', 'filter'=>'filter', 'split'=>'code-branch', - 'object_list'=>'list-alt', 'object_calendar'=>'calendar-alt', 'object_calendarweek'=>'calendar-week', 'object_calendarmonth'=>'calendar-alt', 'object_calendarday'=>'calendar-day', 'object_calendarperuser'=>'table', + 'list'=>'list-alt', 'calendar'=>'calendar-alt', 'calendarweek'=>'calendar-week', 'calendarmonth'=>'calendar-alt', 'calendarday'=>'calendar-day', 'calendarperuser'=>'table', 'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', 'title_agenda'=>'calendar-alt', 'preview'=>'binoculars', 'project'=>'sitemap' @@ -3250,7 +3252,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $fakey = 'fa-comment-o'; } // Img for type of views - elseif (in_array($pictowithouttext, array('object_list', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser'))) { + elseif (in_array($pictowithouttext, array('list', 'calendar', 'calendarweek', 'calendarmonth', 'calendarday', 'calendarperuser'))) { $fakey = 'imgforviewmode fa-'.$arrayconvpictotofa[$pictowithouttext]; $marginleftonlyshort = 0; } diff --git a/htdocs/core/modules/modCashDesk.class.php b/htdocs/core/modules/modCashDesk.class.php index 9bff4afdaf8..b27a1ae30e4 100644 --- a/htdocs/core/modules/modCashDesk.class.php +++ b/htdocs/core/modules/modCashDesk.class.php @@ -55,7 +55,7 @@ class modCashDesk extends DolibarrModules $this->version = 'dolibarr'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); - $this->picto = 'list'; + $this->picto = 'cash-register'; // Data directories to create when module is enabled $this->dirs = array(); diff --git a/htdocs/core/modules/modTakePos.class.php b/htdocs/core/modules/modTakePos.class.php index 8357cb42b2d..400ff6c9b7d 100644 --- a/htdocs/core/modules/modTakePos.class.php +++ b/htdocs/core/modules/modTakePos.class.php @@ -71,7 +71,7 @@ class modTakePos extends DolibarrModules // Name of image file used for this module. // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' - $this->picto = 'list'; + $this->picto = 'cash-register'; // Defined all module parts (triggers, login, substitutions, menus, css, etc...) // for default path (eg: /takepos/core/xxxxx) (0=disable, 1=enable) From aec1c177e34109eecfa7b4e890248698ddbfee07 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Mon, 6 Apr 2020 16:07:05 +0200 Subject: [PATCH 142/336] Order printer with 'Receipt printers' module --- htdocs/takepos/admin/terminal.php | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/htdocs/takepos/admin/terminal.php b/htdocs/takepos/admin/terminal.php index fa62aff1bc3..c83f57173e5 100644 --- a/htdocs/takepos/admin/terminal.php +++ b/htdocs/takepos/admin/terminal.php @@ -229,23 +229,31 @@ if ($conf->global->TAKEPOS_PRINT_METHOD == "receiptprinter") { foreach ($printer->listprinters as $key => $value) { $printers[$value['rowid']] = $value['name']; } - print ''.$langs->trans("TakeposTerminalPrinterToUse").''; + print ''.$langs->trans("MainPrinterToUse").''; print ''; print $form->selectarray('TAKEPOS_PRINTER_TO_USE'.$terminal, $printers, (empty($conf->global->{'TAKEPOS_PRINTER_TO_USE'.$terminal}) ? '0' : $conf->global->{'TAKEPOS_PRINTER_TO_USE'.$terminal}), 1); print ''; + if ($conf->global->TAKEPOS_ORDER_PRINTERS) { + print ''.$langs->trans("OrderPrinterToUse").''; + print ''; + print $form->selectarray('TAKEPOS_ORDER_PRINTER_TO_USE'.$terminal, $printers, (empty($conf->global->{'TAKEPOS_ORDER_PRINTER_TO_USE'.$terminal}) ? '0' : $conf->global->{'TAKEPOS_ORDER_PRINTER_TO_USE'.$terminal}), 1); + print ''; + } $printer->listPrintersTemplates(); $templates = array(); foreach ($printer->listprinterstemplates as $key => $value) { $templates[$value['rowid']] = $value['name']; } - print ''.$langs->trans("TakeposTerminalTemplateToUseForInvoicesTicket").''; + print ''.$langs->trans("MainTemplateToUse").''; print ''; print $form->selectarray('TAKEPOS_TEMPLATE_TO_USE_FOR_INVOICES'.$terminal, $templates, (empty($conf->global->{'TAKEPOS_TEMPLATE_TO_USE_FOR_INVOICES'.$terminal}) ? '0' : $conf->global->{'TAKEPOS_TEMPLATE_TO_USE_FOR_INVOICES'.$terminal}), 1); print ''; - print ''.$langs->trans("TakeposTerminalTemplateToUseForOrdersTicket").''; - print ''; - print $form->selectarray('TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminal, $templates, (empty($conf->global->{'TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminal}) ? '0' : $conf->global->{'TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminal}), 1); - print ''; + if ($conf->global->TAKEPOS_ORDER_PRINTERS) { + print ''.$langs->trans("OrderTemplateToUse").''; + print ''; + print $form->selectarray('TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminal, $templates, (empty($conf->global->{'TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminal}) ? '0' : $conf->global->{'TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminal}), 1); + print ''; + } } print ''.$langs->trans('CashDeskReaderKeyCodeForEnter').''; From 079bfafa26f822a4c963b642b9517554726b20ae Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Mon, 6 Apr 2020 16:14:01 +0200 Subject: [PATCH 143/336] Order printer langs --- htdocs/langs/en_US/cashdesk.lang | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index f2bab886b64..85bdc978865 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -100,4 +100,8 @@ TakeposGroupSameProduct=Group same products lines StartAParallelSale=Start a new parallel sale ControlCashOpening=Control cash box at opening pos CloseCashFence=Close cash fence -CashReport=Cash report \ No newline at end of file +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use \ No newline at end of file From 34e434a17e8751f6e76ab20d8f7a6053dbc48fc8 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 6 Apr 2020 16:36:11 +0200 Subject: [PATCH 144/336] FIX missing member entity --- htdocs/societe/class/societe.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 87c4956e48e..5ea844a7320 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -3275,6 +3275,7 @@ class Societe extends CommonObject $this->phone=$member->phone; // Prof phone $this->email=$member->email; $this->skype=$member->skype; + $this->entity=$member->entity; $this->client = 1; // A member is a customer by default $this->code_client = ($customercode?$customercode:-1); @@ -3778,7 +3779,7 @@ class Societe extends CommonObject $outstandingOpened+=$obj->total_ttc - $paiement - $creditnotes - $deposits; } - + //if credit note is converted but not used if($mode == 'supplier' && $obj->type == FactureFournisseur::TYPE_CREDIT_NOTE && $tmpobject->isCreditNoteUsed())$outstandingOpened-=$tmpobject->getSumFromThisCreditNotesNotUsed(); From 665dc6f8d22e77d03e5467b938e4c674e0e61ad6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 18:16:21 +0200 Subject: [PATCH 145/336] More fontawesome logo --- htdocs/core/lib/functions.lib.php | 8 +++++--- htdocs/paybox/img/object_paybox.png | Bin 1428 -> 11278 bytes htdocs/paypal/img/object_paypal.png | Bin 4120 -> 6962 bytes htdocs/stripe/img/index.html | 0 htdocs/stripe/img/object_stripe.png | Bin 819 -> 0 bytes htdocs/theme/eldy/img/object_stripe.png | Bin 819 -> 12995 bytes 6 files changed, 5 insertions(+), 3 deletions(-) delete mode 100644 htdocs/stripe/img/index.html delete mode 100644 htdocs/stripe/img/object_stripe.png diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 45ddc03e98d..038f1e4f397 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3134,9 +3134,9 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', 'address', 'barcode', 'bank', 'bookmark', 'building', 'cash-register', 'check', 'close_title', 'cubes', 'delete', 'dolly', 'edit', 'ellipsis-h', 'filter', 'file-code', 'grip', 'grip_title', 'language', 'list', 'listlight', 'note', - 'object_phoning', 'object_phoning_fax', 'object_email', - 'object_bookmark', 'object_list', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', - 'object_cash-register', + 'object_barcode', 'object_phoning', 'object_phoning_fax', 'object_email', + 'object_bookmark', 'object_generic', 'object_list', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', + 'object_cash-register', 'object_printer', 'object_technic', 'off', 'on', 'play', 'playdisabled', 'printer', 'resize', 'stats', 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'globe', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', @@ -3161,10 +3161,12 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'address'=> 'address-book', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accountancy'=>'money-check-alt', 'hrm'=>'umbrella-beach', 'members'=>'users', 'ticket'=>'ticket-alt', 'generic'=>'folder-open', 'globe'=>'external-link-alt', 'phoning'=>'phone', 'phoning_fax'=>'fax', 'email'=>'at', + 'generic'=>'file', 'switch_off'=>'toggle-off', 'switch_on'=>'toggle-on', 'check'=>'check', 'bookmark'=>'star', 'bookmark'=>'star', 'stats' => 'chart-bar', 'bank'=>'university', 'close_title'=>'window-close', 'delete'=>'trash', 'edit'=>'pencil', 'filter'=>'filter', 'split'=>'code-branch', 'list'=>'list-alt', 'calendar'=>'calendar-alt', 'calendarweek'=>'calendar-week', 'calendarmonth'=>'calendar-alt', 'calendarday'=>'calendar-day', 'calendarperuser'=>'table', 'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle', + 'printer'=>'print', 'technic'=>'cogs', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', 'title_agenda'=>'calendar-alt', 'preview'=>'binoculars', 'project'=>'sitemap' ); diff --git a/htdocs/paybox/img/object_paybox.png b/htdocs/paybox/img/object_paybox.png index e8bd4253122ec53ac3876f083bf590a44481411c..523a21bb99ef8c96528f600e2ca1db0f3a8a6669 100644 GIT binary patch literal 11278 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 literal 1428 zcmd^8`%}_+6#XbZ5w#gjN5?J9G!-A9F20gY7F;PI6d&u@YA6q>#3DrVg=uYCnXk#h z#Uyd^nJwv-k4%%*TD98IZOf#=%ruj<%*-tK?$^I#&&;{!&bf1bxp!^}o%WMC(jEx_ zFsFo*qF}YyqzMA9uGKGI!Qw3>|1A7bz-9`0>3noFFO3b-*a9y!4u|F}h~UNtiw#8M z{DZK8L0Eq@28+XD6K2wmz)@o%g-SM_)Zb!dV!b^{HVa#(N5kWf1Au(LNj+kl-(}b| z;D%B|0Z^2gePbE|fB^J}XtI$dFtoL`LxOD%hFcum5stuYmyeGrK<@_rPQWKvAMNiH zfO9n66^aN>w8q7o1f}gFBnIra3yHGz4RsHp`|V~q+mWc-_b|3G5&$txkCyyh7{_Yg zQ46++K;aUt!9HscElX^FNZnr}D)EMQUv`Se394nH%Qoh9Jp2w5lc4`pX&oJbX93gw=U_+k@lSXd zRko8l$K_eBn=0S$Ax$-vON`E>fe&?WcD4_N)yiAFa4R}{7X%`2mErVfg%KdGFG4dhK z&0+R<0sdKOkmiEN{FQ)@r5LEnYwT2%`fT*v8R}wDSV8HPGHG#HMQ!cny7SHFB<*L; zHZ)$AH%gkX)iuc*71ixs7iFETO}FnT`V`Fr4Nc156@#+wv5|om=}>3=L{EqE@BW#w z+mBR_N1jZ*c<}h?#LKB^wQ6SO#oX)35EnatuN}JcOOgrc$4bpvpw5yPIZGB_o3+!(|kak0-`>NCG;E#Z@RfJ)~q7z2Z81Vf63-D|b zbqwCbIE54%o%K9r-OS)KWVF{vmxpBGfTFK~b?C^ohA!LU-YW7AS7#?oAfdeU0|>{H z@Lry7Aqm6wJ4ZcNKBp3H$Z{cd|MM}F_#MaoxK`V{xST}p>uy1bJ+HOb3}$Q6<%2!9 z9==71ugB7)9yXsYb#yjov=Wp_Ra^JjOp&0N)}^U`t}5R@6+FCSisOsTNBu?o$mDg5 zJzjj0p-j47v-C%d1|<$TMQoJx>Yg;UeNPWG6b_p*E#`~+M?N7l<_Gw9^UCkdds|NM Z&{iP!ODdyI-@$0}-V`#8)J{BD_#e8M9WVd@ diff --git a/htdocs/paypal/img/object_paypal.png b/htdocs/paypal/img/object_paypal.png index 74ac4392ded01a9a13c00027dcef80a6142c39ba..872a0356ac54b06e24b2749ec23b92f497402b2b 100644 GIT binary patch literal 6962 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 E1ErhzJ^%m! literal 4120 zcmbtX4{#La6<;Dy5+GCv7@1nuWk4Lg+uQpWZn;~z+$H1+mp_+Og6NdZ?ss=9cek6} zJ#z`Aru->G5ESTCM?kbr+O#uDQByR~A+$`90TtUKW0^DoMj{j|AfZ;N?YF!4XS2DJ z{>kM2?EBvDz4yKEeZTi^bA9cSsU@>Z5CoYTsPTv3XQ}dA&?6)FH&l17XTgt5}yeTrsjraa1aA=kdP$^Bl5;vPq)|8F%PD=5$JY-j;WqnXbIp?5cxdG zT)4m{l@&EV`CzaZvJvJ@P4>XxdAOl=Fi84=$UOnrYLSntrzX&%1e6SVuuKZ|CVcdVa8&!&^8O>B3cOAUcown!&c#92&aW% z(q$Qo> zoU*}+FO$bcnA$d41SINJ`UVe)n|E;M( zut54mK+C+?#PhJhXc?`K@-i<)c>(n`I?)9|n&A?P;C?s^sFa`MD-Q-Gdg?C7bs21q zlr*f4oC^|K?x@n7sB1aKhA<|gg3Sa&HEfRZ$3#@HU0`_j)N!SJbjLn=0nSD_LAJQF zqU==x33xw5?INgmOCyTxO*GuldXbNaK$2kRr4oFas&q1gdL<`I0uTi*1!9yf&5oml z20(^6RmPX7G#MJC28@Bg^08=|yNo2tkm+WmZ!lS*-VH;>=tLw5Sx85p%1EIcLM0u+ zbz+#6yy|W!j`J)R=JL^`-DS4AY+0Jrsp{g;1~O6`5NmlB)YEd5!Wljx!?8mh0W}pr z7vW?&=9MG>=Q|0`Ml!9EsDv+x@hx;L{lGyeE(kWOS?#X*?dJ(VrsbqWHL8QER}e%V zPGW961J_o^!Z=AoP_mc=S@o<`2T-O(QjKxB(w5ZPG0O6)F9V6l82z-+2&fY|m^E6N z`;|&l?dxSaeFI}rw;?QbaMM#H%R{brr&>Np7_|$2X`zFJn~uU@r^YXkKNOHd3Sf? zV%N`R{r;(OrBm+i_ZRJnJNv&pymLhdHo4)M-!=D6eD#y#_kKb=Ghq_Fs&Dau<6U?B zt@P9dM{H@s;JUZOk*|(!`RMiO{KW@N@7?TLD;AA>e)il4ofm88b@o1gYUhQQ?xtSw zNJB$qOJ^Rn)Ghwjw&K+K(z*}N{d#EjPJevpw*l)gUVNi((j$8&-Vxt=WiC?^+ct0i z;YYjbuQtEsdppwk{>vNA7k7oY?z4xl_FdB*ne=PwGI(glvC(3&c z-Qw&!ZeDVT?grQPQ-Q#qj_$wT2yfmS+4uc-uaA4Xde+ip-^hv?uMGU;^hRz<_bjxx z=$dD9Z~3+DKi*Tc*EXxQ>;4UtTu+_= diff --git a/htdocs/stripe/img/index.html b/htdocs/stripe/img/index.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/htdocs/stripe/img/object_stripe.png b/htdocs/stripe/img/object_stripe.png deleted file mode 100644 index 287bd24910cb0fc86f886d02789f29b993bad530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmV-31I+x1P)2`81ATls8IUq4NIxsmpFgGA8FflMNTjFhO00007bV*G`2iXD;69^O^U!ddw z00M_eL_t(IPfb%#NK`=_{$}2L`}XbI#Y*sBfuXLJQs|+mbEhCG$e>Q)sY3?|JV=3r zhax(3=~@s$cInbJItE!FL?o7(MUj}TmTjx+8d^I5p&UgdzdheUcQK3M;T)V+b@tl3*XuCg;3mUOj+e2U zwd2~^!rh)@rLp?c;M;Nxy)ah+d=Dn@;pB4g0=lOp!u2Uak~o9^C6#iSj#&I^pe~$z zZfsma*{F=ym&cj&?dT~oB2$&ib-bP3z`gq=t}DA&glvh4leoChL`!>sv8!F^+ZS50 zjC|g~!2>z&ON_)lfdVBcKuEJB$)Te=k;!n8WBSE!Je(@w>9cjLl%fWyQA$I^CfNSy z!flXcWU?A_^ILfQwv=yCu zeJfyS7UeW*Ay6%_B1;q{E1>aXwT|mIm+)$)f+(_wi=M6wE?;a$bBkx)qpU*gQ_M?C zNI~@=^zgkDSyg78(Ri53(-IKB!LKsGm#2? zUaH~!$0};Ir2eRGFuPd8t*J8BC;~4PkRAZ)(&!gcV>BC8ggDEh#0=Q&O4M+(L?J0u zn;4&$3p;rEx_Z2A@_*4}b0y|Y<6Cg^d?(GkiF-nrVjk$^ygQ5TcCHVf&Z4*1;}ez= xl0Jw_8nqA>;D-U6fJV|l@gnx;>KNIzfxiXLt)E)oqyhi{002ovPDHLkV1kvqX=wle diff --git a/htdocs/theme/eldy/img/object_stripe.png b/htdocs/theme/eldy/img/object_stripe.png index 287bd24910cb0fc86f886d02789f29b993bad530..4106bb6b2ee6a93aafc665e8849d7e4bc4b6a52d 100644 GIT binary patch literal 12995 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 FV1n?d%Od~) literal 819 zcmV-31I+x1P)2`81ATls8IUq4NIxsmpFgGA8FflMNTjFhO00007bV*G`2iXD;69^O^U!ddw z00M_eL_t(IPfb%#NK`=_{$}2L`}XbI#Y*sBfuXLJQs|+mbEhCG$e>Q)sY3?|JV=3r zhax(3=~@s$cInbJItE!FL?o7(MUj}TmTjx+8d^I5p&UgdzdheUcQK3M;T)V+b@tl3*XuCg;3mUOj+e2U zwd2~^!rh)@rLp?c;M;Nxy)ah+d=Dn@;pB4g0=lOp!u2Uak~o9^C6#iSj#&I^pe~$z zZfsma*{F=ym&cj&?dT~oB2$&ib-bP3z`gq=t}DA&glvh4leoChL`!>sv8!F^+ZS50 zjC|g~!2>z&ON_)lfdVBcKuEJB$)Te=k;!n8WBSE!Je(@w>9cjLl%fWyQA$I^CfNSy z!flXcWU?A_^ILfQwv=yCu zeJfyS7UeW*Ay6%_B1;q{E1>aXwT|mIm+)$)f+(_wi=M6wE?;a$bBkx)qpU*gQ_M?C zNI~@=^zgkDSyg78(Ri53(-IKB!LKsGm#2? zUaH~!$0};Ir2eRGFuPd8t*J8BC;~4PkRAZ)(&!gcV>BC8ggDEh#0=Q&O4M+(L?J0u zn;4&$3p;rEx_Z2A@_*4}b0y|Y<6Cg^d?(GkiF-nrVjk$^ygQ5TcCHVf&Z4*1;}ez= xl0Jw_8nqA>;D-U6fJV|l@gnx;>KNIzfxiXLt)E)oqyhi{002ovPDHLkV1kvqX=wle From af4365ee4d8bf66daca105be43c54334c4e81672 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 18:21:13 +0200 Subject: [PATCH 146/336] More fontawesome logo --- htdocs/core/lib/functions.lib.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 038f1e4f397..f12a59d1032 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3226,6 +3226,10 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $fakey = 'fa-crop'; $facolor = '#444'; } + elseif ($pictowithouttext == 'generic') { + $fakey = 'fa-file'; + $fa = 'far'; + } elseif ($pictowithouttext == 'note') { $fakey = 'fa-sticky-note'; $fa = 'far'; From 0933fefa1df1486a7f7b068c54f5efc1515db6a7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 18:21:13 +0200 Subject: [PATCH 147/336] More fontawesome logo --- htdocs/categories/index.php | 4 ++-- htdocs/core/lib/functions.lib.php | 9 +++++++-- htdocs/theme/eldy/info-box.inc.php | 4 ++++ htdocs/theme/md/info-box.inc.php | 3 +++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php index 54a4ff9f1d2..4dfe52dafb6 100644 --- a/htdocs/categories/index.php +++ b/htdocs/categories/index.php @@ -67,7 +67,7 @@ if (! empty($user->rights->categorie->creer)) { $newcardbutton.= dolGetButtonTitle($langs->trans('NewCategory'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/categories/card.php?action=create&type='.$type.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?type='.$type)); } -print load_fiche_titre($title, $newcardbutton); +print load_fiche_titre($title, $newcardbutton, 'object_category'); //print ''; //print '
    '; @@ -197,7 +197,7 @@ print ''; print ''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 038f1e4f397..f6279cc992e 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3132,8 +3132,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (empty($srconly) && in_array($pictowithouttext, array( '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', - 'address', 'barcode', 'bank', 'bookmark', 'building', 'cash-register', 'check', 'close_title', 'cubes', 'delete', 'dolly', 'edit', 'ellipsis-h', - 'filter', 'file-code', 'grip', 'grip_title', 'language', 'list', 'listlight', 'note', + 'object_accounting', 'object_category', 'address', 'barcode', 'bank', 'bookmark', 'building', 'cash-register', 'check', 'close_title', 'cubes', 'delete', 'dolly', 'edit', 'ellipsis-h', + 'filter', 'file-code', 'folder', 'folder-open', 'grip', 'grip_title', 'language', 'list', 'listlight', 'note', 'object_barcode', 'object_phoning', 'object_phoning_fax', 'object_email', 'object_bookmark', 'object_generic', 'object_list', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_printer', 'object_technic', @@ -3159,6 +3159,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $arrayconvpictotofa = array( 'address'=> 'address-book', 'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins', 'accountancy'=>'money-check-alt', + 'accounting'=>'chart-line', 'category'=>'tag', 'hrm'=>'umbrella-beach', 'members'=>'users', 'ticket'=>'ticket-alt', 'generic'=>'folder-open', 'globe'=>'external-link-alt', 'phoning'=>'phone', 'phoning_fax'=>'fax', 'email'=>'at', 'generic'=>'file', @@ -3226,6 +3227,10 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $fakey = 'fa-crop'; $facolor = '#444'; } + elseif ($pictowithouttext == 'generic') { + $fakey = 'fa-file'; + $fa = 'far'; + } elseif ($pictowithouttext == 'note') { $fakey = 'fa-sticky-note'; $fa = 'far'; diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php index 0bcfe977871..59cc20d36a0 100644 --- a/htdocs/theme/eldy/info-box.inc.php +++ b/htdocs/theme/eldy/info-box.inc.php @@ -76,6 +76,10 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> .info-box-icon > img { max-width: 100%; } +.info-box-module .info-box-icon > img { + max-width: 70%; +} + .info-box-icon-text{ box-sizing: border-box; display: block; diff --git a/htdocs/theme/md/info-box.inc.php b/htdocs/theme/md/info-box.inc.php index fb011e63e69..16c35052b11 100644 --- a/htdocs/theme/md/info-box.inc.php +++ b/htdocs/theme/md/info-box.inc.php @@ -60,6 +60,9 @@ span.info-box-icon-text { /* hide box text number due to problems */ .info-box-icon > img { max-width: 100%; } +.info-box-module .info-box-icon > img { + max-width: 70%; +} .info-box-content { padding: 5px 10px; margin-left: 90px; From fc34b5a4cb73f43e8d4da274b2cfe442b290fb0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 6 Apr 2020 19:03:48 +0200 Subject: [PATCH 148/336] compress png with zopflipng --- .../dolicloud_logo_white.png | Bin 34227 -> 26168 bytes .../mycompany/logos/mybigcompany.png | Bin 9827 -> 6830 bytes .../logos/thumbs/mybigcompany_mini.png | Bin 5383 -> 4435 bytes .../logos/thumbs/mybigcompany_small.png | Bin 10586 -> 6627 bytes .../produit/DOLICLOUD/dolicloud_logo.png | Bin 32826 -> 27269 bytes .../DOLICLOUD/thumbs/dolicloud_logo_mini.png | Bin 6329 -> 5696 bytes .../DOLICLOUD/thumbs/dolicloud_logo_small.png | Bin 17054 -> 14589 bytes .../DOLIDROID/DOLIDROID-dolidroid_114x114.png | Bin 8406 -> 7728 bytes .../DOLIDROID-dolidroid_180x120_en.png | Bin 12345 -> 9915 bytes ...ID-dolidroid_screenshot_stats_720x1280.png | Bin 49103 -> 39425 bytes .../DOLIDROID-dolidroid_114x114_mini.png | Bin 6032 -> 5419 bytes .../DOLIDROID-dolidroid_114x114_small.png | Bin 8741 -> 7476 bytes .../DOLIDROID-dolidroid_180x120_en_mini.png | Bin 7847 -> 6241 bytes .../DOLIDROID-dolidroid_180x120_en_small.png | Bin 12553 -> 9915 bytes ...lidroid_screenshot_stats_720x1280_mini.png | Bin 2868 -> 2000 bytes ...idroid_screenshot_stats_720x1280_small.png | Bin 8302 -> 5365 bytes .../societe/1/logos/indiancompany.png | Bin 4229 -> 2795 bytes .../1/logos/thumbs/indiancompany_mini.png | Bin 5046 -> 3727 bytes .../1/logos/thumbs/indiancompany_small.png | Bin 13969 -> 9734 bytes .../societe/10/logos/logo_nltechno_94x100.png | Bin 4251 -> 3996 bytes .../thumbs/logo_nltechno_94x100_mini.png | Bin 10828 -> 8651 bytes .../thumbs/logo_nltechno_94x100_small.png | Bin 9724 -> 3996 bytes .../societe/11/logos/comapnycorp1company.png | Bin 16141 -> 14401 bytes .../logos/thumbs/comapnycorp1company_mini.png | Bin 9957 -> 7592 bytes .../thumbs/comapnycorp1company_small.png | Bin 30352 -> 22245 bytes .../societe/13/logos/companycorp2company.png | Bin 9362 -> 8669 bytes .../logos/thumbs/companycorp2company_mini.png | Bin 6151 -> 4925 bytes .../thumbs/companycorp2company_small.png | Bin 18948 -> 14573 bytes .../societe/17/logos/bookkeepercompany.png | Bin 7847 -> 7136 bytes .../logos/thumbs/bookkeepercompany_mini.png | Bin 8453 -> 6963 bytes .../logos/thumbs/bookkeepercompany_small.png | Bin 9199 -> 7141 bytes .../societe/19/logos/magicfoodstore.png | Bin 4920 -> 3284 bytes .../19/logos/thumbs/magicfoodstore_mini.png | Bin 4593 -> 2898 bytes .../19/logos/thumbs/magicfoodstore_small.png | Bin 13292 -> 7281 bytes .../societe/2/logos/teclibcompany.png | Bin 26702 -> 21488 bytes .../2/logos/thumbs/teclibcompany_mini.png | Bin 6758 -> 4861 bytes .../2/logos/thumbs/teclibcompany_small.png | Bin 25838 -> 16864 bytes .../societe/25/logos/printcompany.png | Bin 20188 -> 14729 bytes .../25/logos/thumbs/printcompany_mini.png | Bin 3962 -> 2645 bytes .../25/logos/thumbs/printcompany_small.png | Bin 12735 -> 7171 bytes .../societe/3/logos/spanishcompany.png | Bin 6865 -> 4289 bytes .../3/logos/thumbs/spanishcompany_mini.png | Bin 6823 -> 4823 bytes .../3/logos/thumbs/spanishcompany_small.png | Bin 18740 -> 12325 bytes .../4/logos/thumbs/valeencompany_mini.png | Bin 5159 -> 3576 bytes .../4/logos/thumbs/valeencompany_small.png | Bin 14504 -> 9863 bytes .../societe/4/logos/valeencompany.png | Bin 4675 -> 3189 bytes .../societe/5/logos/nocountrycomp.png | Bin 3761 -> 2388 bytes .../5/logos/thumbs/nocountrycomp_mini.png | Bin 6670 -> 4350 bytes .../5/logos/thumbs/nocountrycomp_small.png | Bin 19716 -> 11651 bytes .../societe/6/logos/swisstouch.png | Bin 5766 -> 3953 bytes .../6/logos/thumbs/swisstouch_mini.png | Bin 8141 -> 5711 bytes .../6/logos/thumbs/swisstouch_small.png | Bin 22874 -> 14624 bytes .../societe/7/logos/genericcustomer.png | Bin 7472 -> 5110 bytes .../7/logos/thumbs/genericcustomer_mini.png | Bin 6132 -> 3713 bytes .../7/logos/thumbs/genericcustomer_small.png | Bin 17822 -> 10027 bytes .../11/photos/ldestailleur_200x200.png | Bin 49440 -> 46005 bytes .../thumbs/ldestailleur_200x200_mini.png | Bin 10635 -> 8322 bytes .../thumbs/ldestailleur_200x200_small.png | Bin 39105 -> 29744 bytes .../dolibarr_screenshot1_300x188.png | Bin 35075 -> 28426 bytes .../dolibarr_screenshot1_300x188_mini.png | Bin 9864 -> 7456 bytes .../dolibarr_screenshot1_300x188_small.png | Bin 33202 -> 25868 bytes .../quick-guide-gplv3-compatibility.png | Bin 29649 -> 23833 bytes .../phpunit/eclipse_setup_for_pti_phpunit.png | Bin 68902 -> 51559 bytes doc/images/appicon_128.png | Bin 2823 -> 2522 bytes doc/images/appicon_14.png | Bin 574 -> 443 bytes doc/images/appicon_16.png | Bin 544 -> 412 bytes doc/images/appicon_32.png | Bin 867 -> 693 bytes doc/images/appicon_64.png | Bin 1450 -> 1296 bytes doc/images/dolibarr_120x90.png | Bin 2596 -> 2353 bytes doc/images/dolibarr_124x124.png | Bin 2062 -> 1848 bytes doc/images/dolibarr_192x192.png | Bin 3822 -> 3453 bytes doc/images/dolibarr_256x256.png | Bin 4008 -> 3525 bytes doc/images/dolibarr_48x48.png | Bin 1292 -> 1147 bytes doc/images/dolibarr_512x512.png | Bin 9520 -> 6959 bytes doc/images/dolibarr_73x73.png | Bin 1635 -> 1468 bytes doc/images/dolibarr_logo.png | Bin 29999 -> 25554 bytes doc/images/dolibarr_screenshot3_1280x800.png | Bin 131991 -> 116379 bytes htdocs/admin/dolistore/img/Download-128.png | Bin 761 -> 364 bytes .../admin/dolistore/img/NoImageAvailable.png | Bin 11231 -> 6246 bytes htdocs/admin/dolistore/img/compatible.png | Bin 2147 -> 1152 bytes htdocs/admin/dolistore/img/dolistore.png | Bin 11317 -> 9165 bytes htdocs/admin/dolistore/img/follow.png | Bin 2869 -> 1398 bytes .../admin/dolistore/img/object_dolistore.png | Bin 1851 -> 943 bytes htdocs/cashdesk/img/basket_delete.png | Bin 773 -> 691 bytes htdocs/cashdesk/img/bg_conteneur_droite.png | Bin 171 -> 75 bytes htdocs/cashdesk/img/bg_conteneur_gauche.png | Bin 172 -> 75 bytes htdocs/cashdesk/img/bg_entete.png | Bin 599 -> 254 bytes htdocs/cashdesk/img/bg_pied.png | Bin 572 -> 252 bytes htdocs/cashdesk/img/calendrier.png | Bin 871 -> 819 bytes htdocs/cashdesk/img/decrypted.png | Bin 1624 -> 1302 bytes htdocs/cashdesk/img/gescom.png | Bin 5453 -> 4290 bytes htdocs/cashdesk/img/lock.png | Bin 749 -> 667 bytes htdocs/cashdesk/img/login.png | Bin 5026 -> 2532 bytes htdocs/cashdesk/img/new.png | Bin 2272 -> 2104 bytes htdocs/holiday/img/add.png | Bin 3208 -> 234 bytes htdocs/holiday/img/conges.png | Bin 805 -> 743 bytes htdocs/holiday/img/delete.png | Bin 3350 -> 329 bytes htdocs/holiday/img/edit.png | Bin 3307 -> 325 bytes .../template/img/object_mymodule.png | Bin 360 -> 219 bytes .../template/img/object_mymodule_over.png | Bin 323 -> 208 bytes .../template/img/object_myobject.png | Bin 360 -> 219 bytes htdocs/opensurvey/img/accept-24.png | Bin 1696 -> 1477 bytes htdocs/opensurvey/img/accept.png | Bin 901 -> 775 bytes htdocs/opensurvey/img/add-16.png | Bin 845 -> 732 bytes htdocs/opensurvey/img/add-24.png | Bin 1393 -> 1185 bytes htdocs/opensurvey/img/calendar-32.png | Bin 2155 -> 1694 bytes htdocs/opensurvey/img/chart-32.png | Bin 2059 -> 1648 bytes htdocs/opensurvey/img/date.png | Bin 62276 -> 57814 bytes htdocs/opensurvey/img/fforward.png | Bin 1359 -> 1196 bytes htdocs/opensurvey/img/medaille.png | Bin 753 -> 656 bytes htdocs/opensurvey/img/next.png | Bin 1349 -> 1156 bytes htdocs/opensurvey/img/object_opensurvey.png | Bin 828 -> 722 bytes htdocs/opensurvey/img/opensurvey.png | Bin 2350 -> 2113 bytes htdocs/opensurvey/img/previous.png | Bin 1388 -> 1212 bytes htdocs/opensurvey/img/rewind.png | Bin 1364 -> 1202 bytes htdocs/opensurvey/img/sondage2.png | Bin 73508 -> 67659 bytes htdocs/paybox/img/object_paybox.png | Bin 1428 -> 581 bytes htdocs/paypal/img/object_paypal.png | Bin 4120 -> 585 bytes htdocs/product/inventory/img/bt-save.png | Bin 493 -> 425 bytes htdocs/product/inventory/img/inventory.png | Bin 1802 -> 1582 bytes htdocs/product/inventory/img/plus.png | Bin 1299 -> 1082 bytes htdocs/product/inventory/img/plus16.png | Bin 665 -> 517 bytes htdocs/product/stock/img/no.png | Bin 677 -> 465 bytes htdocs/product/stock/img/yes.png | Bin 974 -> 861 bytes htdocs/public/theme/common/company.png | Bin 1669 -> 1143 bytes htdocs/public/theme/common/nophoto.png | Bin 10127 -> 5278 bytes htdocs/public/theme/common/user_anonymous.png | Bin 16334 -> 15184 bytes htdocs/public/theme/common/user_man.png | Bin 19908 -> 17821 bytes htdocs/public/theme/common/user_woman.png | Bin 24554 -> 22048 bytes htdocs/public/ticket/img/bg_ticket.png | Bin 13264 -> 9235 bytes htdocs/stripe/img/object_stripe.png | Bin 819 -> 583 bytes htdocs/support/background.png | Bin 229 -> 85 bytes htdocs/support/helpcenter.png | Bin 2648 -> 2212 bytes htdocs/support/internet.png | Bin 2907 -> 2808 bytes htdocs/support/mail.png | Bin 4435 -> 3845 bytes htdocs/support/pagemaster.png | Bin 2086 -> 1548 bytes htdocs/support/redstar.png | Bin 596 -> 509 bytes htdocs/support/star.png | Bin 381 -> 286 bytes htdocs/support/who.png | Bin 1847 -> 980 bytes htdocs/takepos/css/images/controls.png | Bin 2027 -> 2022 bytes htdocs/takepos/genimg/empty.png | Bin 156 -> 95 bytes htdocs/takepos/img/arrow-next-top.png | Bin 47808 -> 1034 bytes htdocs/takepos/img/arrow-next.png | Bin 5125 -> 1101 bytes htdocs/takepos/img/arrow-prev-top.png | Bin 47668 -> 1035 bytes htdocs/takepos/img/arrow-prev.png | Bin 5112 -> 1097 bytes htdocs/takepos/img/gfdl.png | Bin 4709 -> 3434 bytes htdocs/takepos/img/gplv3.png | Bin 2666 -> 2477 bytes htdocs/takepos/img/object_takepos.png | Bin 360 -> 219 bytes htdocs/takepos/img/takepos.png | Bin 3445 -> 400 bytes htdocs/theme/common/bell.png | Bin 509 -> 341 bytes htdocs/theme/common/cheque.png | Bin 2483 -> 1887 bytes htdocs/theme/common/colorpicker.png | Bin 229 -> 175 bytes htdocs/theme/common/credit_card.png | Bin 7676 -> 4596 bytes htdocs/theme/common/devices/audio-card.png | Bin 4588 -> 4459 bytes htdocs/theme/common/devices/audio-headset.png | Bin 3163 -> 3060 bytes .../theme/common/devices/audio-input-line.png | Bin 1003 -> 912 bytes .../common/devices/audio-input-microphone.png | Bin 2468 -> 2355 bytes htdocs/theme/common/devices/battery.png | Bin 2980 -> 2880 bytes htdocs/theme/common/devices/camera-photo.png | Bin 2905 -> 2816 bytes htdocs/theme/common/devices/camera-web.png | Bin 4956 -> 4847 bytes .../theme/common/devices/computer-laptop.png | Bin 3315 -> 3116 bytes htdocs/theme/common/devices/computer.png | Bin 3833 -> 3700 bytes htdocs/theme/common/devices/cpu.png | Bin 4639 -> 4484 bytes .../theme/common/devices/drive-harddisk.png | Bin 3317 -> 3217 bytes htdocs/theme/common/devices/drive-optical.png | Bin 3491 -> 3309 bytes .../drive-removable-media-usb-pendrive.png | Bin 2942 -> 2826 bytes .../devices/drive-removable-media-usb.png | Bin 3243 -> 3136 bytes htdocs/theme/common/devices/input-gaming.png | Bin 4858 -> 4749 bytes htdocs/theme/common/devices/input-mouse.png | Bin 3497 -> 3393 bytes htdocs/theme/common/devices/input-tablet.png | Bin 3000 -> 2838 bytes .../common/devices/media-flash-sd-mmc.png | Bin 4272 -> 4076 bytes .../devices/media-flash-smart-media.png | Bin 2926 -> 2821 bytes htdocs/theme/common/devices/media-flash.png | Bin 6991 -> 6839 bytes htdocs/theme/common/devices/media-floppy.png | Bin 2694 -> 2582 bytes .../common/devices/media-optical-audio.png | Bin 6302 -> 6140 bytes .../common/devices/media-optical-blu-ray.png | Bin 6651 -> 6413 bytes .../common/devices/media-optical-data.png | Bin 6753 -> 6285 bytes .../devices/media-optical-dvd-video.png | Bin 6475 -> 6264 bytes .../common/devices/media-optical-dvd.png | Bin 5464 -> 5303 bytes .../common/devices/media-optical-mixed-cd.png | Bin 7265 -> 7079 bytes .../devices/media-optical-recordable.png | Bin 5590 -> 5334 bytes .../common/devices/media-optical-video.png | Bin 5888 -> 5663 bytes htdocs/theme/common/devices/media-optical.png | Bin 5140 -> 4972 bytes htdocs/theme/common/devices/modem.png | Bin 2980 -> 2757 bytes .../devices/multimedia-player-apple-ipod.png | Bin 2570 -> 2458 bytes .../common/devices/multimedia-player.png | Bin 3622 -> 3501 bytes htdocs/theme/common/devices/network-wired.png | Bin 2735 -> 2600 bytes .../devices/network-wireless-connected-00.png | Bin 1206 -> 944 bytes .../network-wireless-connected-100.png | Bin 6942 -> 6807 bytes .../devices/network-wireless-connected-25.png | Bin 1864 -> 1707 bytes .../devices/network-wireless-connected-50.png | Bin 3158 -> 3006 bytes .../devices/network-wireless-connected-75.png | Bin 5121 -> 4972 bytes .../devices/network-wireless-disconnected.png | Bin 1179 -> 868 bytes .../theme/common/devices/network-wireless.png | Bin 6942 -> 6807 bytes htdocs/theme/common/devices/pda.png | Bin 3224 -> 3077 bytes .../devices/phone-openmoko-freerunner.png | Bin 2914 -> 2780 bytes htdocs/theme/common/devices/phone.png | Bin 3656 -> 3540 bytes htdocs/theme/common/devices/printer-laser.png | Bin 2714 -> 2615 bytes htdocs/theme/common/devices/printer.png | Bin 2790 -> 2653 bytes htdocs/theme/common/devices/scanner.png | Bin 3193 -> 3086 bytes htdocs/theme/common/devices/video-display.png | Bin 2925 -> 2777 bytes .../theme/common/devices/video-projector.png | Bin 4164 -> 4065 bytes .../theme/common/devices/video-television.png | Bin 2123 -> 1975 bytes htdocs/theme/common/dolibarr_box.png | Bin 34121 -> 28882 bytes htdocs/theme/common/emotes/face-angel.png | Bin 18255 -> 17856 bytes .../theme/common/emotes/face-embarrassed.png | Bin 16593 -> 16392 bytes htdocs/theme/common/emotes/face-kiss.png | Bin 15844 -> 15589 bytes htdocs/theme/common/emotes/face-laugh.png | Bin 16132 -> 16041 bytes htdocs/theme/common/emotes/face-plain.png | Bin 14788 -> 14596 bytes htdocs/theme/common/emotes/face-raspberry.png | Bin 15604 -> 15456 bytes htdocs/theme/common/emotes/face-sad.png | Bin 14844 -> 14644 bytes htdocs/theme/common/emotes/face-smile-big.png | Bin 13810 -> 13667 bytes htdocs/theme/common/emotes/face-smile.png | Bin 15408 -> 15224 bytes htdocs/theme/common/emotes/face-surprise.png | Bin 15166 -> 14983 bytes htdocs/theme/common/emotes/face-uncertain.png | Bin 14987 -> 14804 bytes htdocs/theme/common/emotes/face-wink.png | Bin 15438 -> 15254 bytes htdocs/theme/common/flags/ad.png | Bin 401 -> 388 bytes htdocs/theme/common/flags/ae.png | Bin 380 -> 289 bytes htdocs/theme/common/flags/af.png | Bin 390 -> 384 bytes htdocs/theme/common/flags/ag.png | Bin 382 -> 368 bytes htdocs/theme/common/flags/ai.png | Bin 399 -> 389 bytes htdocs/theme/common/flags/al.png | Bin 405 -> 390 bytes htdocs/theme/common/flags/am.png | Bin 360 -> 306 bytes htdocs/theme/common/flags/an.png | Bin 387 -> 344 bytes htdocs/theme/common/flags/ao.png | Bin 271 -> 258 bytes htdocs/theme/common/flags/ar.png | Bin 369 -> 353 bytes htdocs/theme/common/flags/as.png | Bin 394 -> 385 bytes htdocs/theme/common/flags/at.png | Bin 371 -> 313 bytes htdocs/theme/common/flags/au.png | Bin 405 -> 401 bytes htdocs/theme/common/flags/aw.png | Bin 387 -> 363 bytes htdocs/theme/common/flags/ax.png | Bin 399 -> 387 bytes htdocs/theme/common/flags/az.png | Bin 376 -> 370 bytes htdocs/theme/common/flags/ba.png | Bin 397 -> 383 bytes htdocs/theme/common/flags/bb.png | Bin 408 -> 388 bytes htdocs/theme/common/flags/bd.png | Bin 405 -> 350 bytes htdocs/theme/common/flags/be.png | Bin 387 -> 304 bytes htdocs/theme/common/flags/bf.png | Bin 364 -> 338 bytes htdocs/theme/common/flags/bg.png | Bin 366 -> 321 bytes htdocs/theme/common/flags/bh.png | Bin 394 -> 336 bytes htdocs/theme/common/flags/bi.png | Bin 415 -> 406 bytes htdocs/theme/common/flags/bj.png | Bin 382 -> 310 bytes htdocs/theme/common/flags/bm.png | Bin 391 -> 383 bytes htdocs/theme/common/flags/bn.png | Bin 399 -> 369 bytes htdocs/theme/common/flags/bo.png | Bin 349 -> 315 bytes htdocs/theme/common/flags/br.png | Bin 397 -> 388 bytes htdocs/theme/common/flags/bs.png | Bin 364 -> 349 bytes htdocs/theme/common/flags/bt.png | Bin 397 -> 393 bytes htdocs/theme/common/flags/bv.png | Bin 401 -> 378 bytes htdocs/theme/common/flags/bw.png | Bin 371 -> 320 bytes htdocs/theme/common/flags/by.png | Bin 378 -> 348 bytes htdocs/theme/common/flags/bz.png | Bin 396 -> 386 bytes htdocs/theme/common/flags/ca.png | Bin 414 -> 399 bytes htdocs/theme/common/flags/catalonia.png | Bin 261 -> 251 bytes htdocs/theme/common/flags/cc.png | Bin 411 -> 396 bytes htdocs/theme/common/flags/cd.png | Bin 339 -> 277 bytes htdocs/theme/common/flags/cf.png | Bin 363 -> 356 bytes htdocs/theme/common/flags/cg.png | Bin 386 -> 331 bytes htdocs/theme/common/flags/ch.png | Bin 353 -> 231 bytes htdocs/theme/common/flags/ci.png | Bin 389 -> 312 bytes htdocs/theme/common/flags/ck.png | Bin 394 -> 389 bytes htdocs/theme/common/flags/cl.png | Bin 366 -> 318 bytes htdocs/theme/common/flags/cm.png | Bin 403 -> 340 bytes htdocs/theme/common/flags/cn.png | Bin 391 -> 340 bytes htdocs/theme/common/flags/co.png | Bin 356 -> 299 bytes htdocs/theme/common/flags/cr.png | Bin 373 -> 312 bytes htdocs/theme/common/flags/cs.png | Bin 351 -> 304 bytes htdocs/theme/common/flags/cu.png | Bin 392 -> 379 bytes htdocs/theme/common/flags/cv.png | Bin 391 -> 371 bytes htdocs/theme/common/flags/cx.png | Bin 386 -> 363 bytes htdocs/theme/common/flags/cy.png | Bin 389 -> 330 bytes htdocs/theme/common/flags/cz.png | Bin 379 -> 337 bytes htdocs/theme/common/flags/dk.png | Bin 390 -> 338 bytes htdocs/theme/common/flags/dm.png | Bin 398 -> 381 bytes htdocs/theme/common/flags/do.png | Bin 386 -> 349 bytes htdocs/theme/common/flags/dz.png | Bin 403 -> 389 bytes htdocs/theme/common/flags/ec.png | Bin 346 -> 329 bytes htdocs/theme/common/flags/ee.png | Bin 357 -> 273 bytes htdocs/theme/common/flags/eg.png | Bin 361 -> 337 bytes htdocs/theme/common/flags/eh.png | Bin 367 -> 333 bytes htdocs/theme/common/flags/en.png | Bin 301 -> 297 bytes htdocs/theme/common/flags/england.png | Bin 396 -> 354 bytes htdocs/theme/common/flags/er.png | Bin 389 -> 378 bytes htdocs/theme/common/flags/es.png | Bin 379 -> 334 bytes htdocs/theme/common/flags/et.png | Bin 367 -> 359 bytes htdocs/theme/common/flags/eu.png | Bin 270 -> 217 bytes htdocs/theme/common/flags/fam.png | Bin 400 -> 339 bytes htdocs/theme/common/flags/fi.png | Bin 402 -> 356 bytes htdocs/theme/common/flags/fj.png | Bin 403 -> 394 bytes htdocs/theme/common/flags/fk.png | Bin 403 -> 394 bytes htdocs/theme/common/flags/fm.png | Bin 407 -> 382 bytes htdocs/theme/common/flags/fo.png | Bin 403 -> 364 bytes htdocs/theme/common/flags/fr.png | Bin 400 -> 353 bytes htdocs/theme/common/flags/ga.png | Bin 355 -> 334 bytes htdocs/theme/common/flags/gb.png | Bin 301 -> 297 bytes htdocs/theme/common/flags/gd.png | Bin 399 -> 388 bytes htdocs/theme/common/flags/ge.png | Bin 415 -> 400 bytes htdocs/theme/common/flags/gf.png | Bin 400 -> 353 bytes htdocs/theme/common/flags/gg.png | Bin 484 -> 438 bytes htdocs/theme/common/flags/gh.png | Bin 362 -> 319 bytes htdocs/theme/common/flags/gi.png | Bin 396 -> 351 bytes htdocs/theme/common/flags/gl.png | Bin 395 -> 354 bytes htdocs/theme/common/flags/gm.png | Bin 367 -> 356 bytes htdocs/theme/common/flags/gn.png | Bin 390 -> 313 bytes htdocs/theme/common/flags/gp.png | Bin 376 -> 333 bytes htdocs/theme/common/flags/gq.png | Bin 371 -> 353 bytes htdocs/theme/common/flags/gr.png | Bin 384 -> 378 bytes htdocs/theme/common/flags/gs.png | Bin 397 -> 385 bytes htdocs/theme/common/flags/gt.png | Bin 407 -> 339 bytes htdocs/theme/common/flags/gu.png | Bin 390 -> 361 bytes htdocs/theme/common/flags/gw.png | Bin 366 -> 323 bytes htdocs/theme/common/flags/gy.png | Bin 407 -> 392 bytes htdocs/theme/common/flags/hk.png | Bin 401 -> 383 bytes htdocs/theme/common/flags/hm.png | Bin 405 -> 401 bytes htdocs/theme/common/flags/hn.png | Bin 381 -> 369 bytes htdocs/theme/common/flags/hr.png | Bin 380 -> 352 bytes htdocs/theme/common/flags/ht.png | Bin 363 -> 321 bytes htdocs/theme/common/flags/hu.png | Bin 357 -> 269 bytes htdocs/theme/common/flags/id.png | Bin 385 -> 291 bytes htdocs/theme/common/flags/ie.png | Bin 399 -> 327 bytes htdocs/theme/common/flags/il.png | Bin 389 -> 325 bytes htdocs/theme/common/flags/in.png | Bin 357 -> 345 bytes htdocs/theme/common/flags/int.png | Bin 304 -> 223 bytes htdocs/theme/common/flags/io.png | Bin 410 -> 401 bytes htdocs/theme/common/flags/iq.png | Bin 354 -> 344 bytes htdocs/theme/common/flags/ir.png | Bin 366 -> 355 bytes htdocs/theme/common/flags/is.png | Bin 412 -> 374 bytes htdocs/theme/common/flags/it.png | Bin 387 -> 287 bytes htdocs/theme/common/flags/jm.png | Bin 398 -> 384 bytes htdocs/theme/common/flags/jo.png | Bin 377 -> 342 bytes htdocs/theme/common/flags/jp.png | Bin 395 -> 308 bytes htdocs/theme/common/flags/ke.png | Bin 372 -> 361 bytes htdocs/theme/common/flags/kg.png | Bin 389 -> 349 bytes htdocs/theme/common/flags/kh.png | Bin 390 -> 372 bytes htdocs/theme/common/flags/ki.png | Bin 387 -> 385 bytes htdocs/theme/common/flags/km.png | Bin 371 -> 362 bytes htdocs/theme/common/flags/kn.png | Bin 396 -> 388 bytes htdocs/theme/common/flags/kp.png | Bin 396 -> 378 bytes htdocs/theme/common/flags/kr.png | Bin 416 -> 403 bytes htdocs/theme/common/flags/kw.png | Bin 357 -> 343 bytes htdocs/theme/common/flags/ky.png | Bin 407 -> 395 bytes htdocs/theme/common/flags/kz.png | Bin 406 -> 390 bytes htdocs/theme/common/flags/la.png | Bin 383 -> 373 bytes htdocs/theme/common/flags/lb.png | Bin 387 -> 371 bytes htdocs/theme/common/flags/lc.png | Bin 284 -> 277 bytes htdocs/theme/common/flags/li.png | Bin 365 -> 364 bytes htdocs/theme/common/flags/lk.png | Bin 403 -> 380 bytes htdocs/theme/common/flags/lr.png | Bin 376 -> 346 bytes htdocs/theme/common/flags/ls.png | Bin 412 -> 393 bytes htdocs/theme/common/flags/lt.png | Bin 356 -> 329 bytes htdocs/theme/common/flags/lu.png | Bin 352 -> 327 bytes htdocs/theme/common/flags/lv.png | Bin 384 -> 326 bytes htdocs/theme/common/flags/ly.png | Bin 385 -> 266 bytes htdocs/theme/common/flags/ma.png | Bin 390 -> 298 bytes htdocs/theme/common/flags/mc.png | Bin 372 -> 272 bytes htdocs/theme/common/flags/md.png | Bin 384 -> 378 bytes htdocs/theme/common/flags/mg.png | Bin 377 -> 319 bytes htdocs/theme/common/flags/mh.png | Bin 406 -> 393 bytes htdocs/theme/common/flags/mk.png | Bin 416 -> 403 bytes htdocs/theme/common/flags/ml.png | Bin 384 -> 322 bytes htdocs/theme/common/flags/mm.png | Bin 383 -> 340 bytes htdocs/theme/common/flags/mn.png | Bin 394 -> 342 bytes htdocs/theme/common/flags/mo.png | Bin 408 -> 396 bytes htdocs/theme/common/flags/mp.png | Bin 405 -> 387 bytes htdocs/theme/common/flags/mq.png | Bin 418 -> 413 bytes htdocs/theme/common/flags/mr.png | Bin 402 -> 391 bytes htdocs/theme/common/flags/ms.png | Bin 395 -> 379 bytes htdocs/theme/common/flags/mt.png | Bin 398 -> 318 bytes htdocs/theme/common/flags/mu.png | Bin 342 -> 331 bytes htdocs/theme/common/flags/mv.png | Bin 390 -> 376 bytes htdocs/theme/common/flags/mw.png | Bin 367 -> 350 bytes htdocs/theme/common/flags/mx.png | Bin 393 -> 371 bytes htdocs/theme/common/flags/my.png | Bin 392 -> 384 bytes htdocs/theme/common/flags/mz.png | Bin 374 -> 367 bytes htdocs/theme/common/flags/na.png | Bin 412 -> 387 bytes htdocs/theme/common/flags/nc.png | Bin 373 -> 363 bytes htdocs/theme/common/flags/nf.png | Bin 475 -> 400 bytes htdocs/theme/common/flags/ng.png | Bin 401 -> 329 bytes htdocs/theme/common/flags/ni.png | Bin 377 -> 370 bytes htdocs/theme/common/flags/nl.png | Bin 359 -> 323 bytes htdocs/theme/common/flags/no.png | Bin 401 -> 378 bytes htdocs/theme/common/flags/np.png | Bin 353 -> 314 bytes htdocs/theme/common/flags/nr.png | Bin 394 -> 381 bytes htdocs/theme/common/flags/nu.png | Bin 399 -> 396 bytes htdocs/theme/common/flags/nz.png | Bin 406 -> 395 bytes htdocs/theme/common/flags/om.png | Bin 379 -> 324 bytes htdocs/theme/common/flags/pa.png | Bin 379 -> 362 bytes htdocs/theme/common/flags/pe.png | Bin 385 -> 271 bytes htdocs/theme/common/flags/pf.png | Bin 374 -> 352 bytes htdocs/theme/common/flags/pg.png | Bin 391 -> 363 bytes htdocs/theme/common/flags/ph.png | Bin 380 -> 362 bytes htdocs/theme/common/flags/pk.png | Bin 416 -> 403 bytes htdocs/theme/common/flags/pl.png | Bin 353 -> 247 bytes htdocs/theme/common/flags/pm.png | Bin 398 -> 397 bytes htdocs/theme/common/flags/pn.png | Bin 401 -> 391 bytes htdocs/theme/common/flags/pr.png | Bin 396 -> 379 bytes htdocs/theme/common/flags/ps.png | Bin 370 -> 343 bytes htdocs/theme/common/flags/pt.png | Bin 378 -> 373 bytes htdocs/theme/common/flags/pw.png | Bin 400 -> 387 bytes htdocs/theme/common/flags/py.png | Bin 359 -> 337 bytes htdocs/theme/common/flags/qa.png | Bin 404 -> 320 bytes htdocs/theme/common/flags/re.png | Bin 400 -> 353 bytes htdocs/theme/common/flags/ro.png | Bin 391 -> 331 bytes htdocs/theme/common/flags/ru.png | Bin 346 -> 309 bytes htdocs/theme/common/flags/rw.png | Bin 359 -> 347 bytes htdocs/theme/common/flags/sa.png | Bin 403 -> 388 bytes htdocs/theme/common/flags/sb.png | Bin 397 -> 391 bytes htdocs/theme/common/flags/sc.png | Bin 383 -> 362 bytes htdocs/theme/common/flags/scotland.png | Bin 423 -> 417 bytes htdocs/theme/common/flags/sd.png | Bin 361 -> 335 bytes htdocs/theme/common/flags/se.png | Bin 391 -> 359 bytes htdocs/theme/common/flags/sg.png | Bin 379 -> 333 bytes htdocs/theme/common/flags/sh.png | Bin 405 -> 403 bytes htdocs/theme/common/flags/si.png | Bin 372 -> 361 bytes htdocs/theme/common/flags/sj.png | Bin 401 -> 378 bytes htdocs/theme/common/flags/sk.png | Bin 367 -> 358 bytes htdocs/theme/common/flags/sl.png | Bin 355 -> 323 bytes htdocs/theme/common/flags/sm.png | Bin 376 -> 362 bytes htdocs/theme/common/flags/sn.png | Bin 382 -> 352 bytes htdocs/theme/common/flags/so.png | Bin 400 -> 372 bytes htdocs/theme/common/flags/sr.png | Bin 377 -> 347 bytes htdocs/theme/common/flags/st.png | Bin 383 -> 367 bytes htdocs/theme/common/flags/sv.png | Bin 373 -> 341 bytes htdocs/theme/common/flags/sy.png | Bin 364 -> 327 bytes htdocs/theme/common/flags/sz.png | Bin 386 -> 370 bytes htdocs/theme/common/flags/tc.png | Bin 398 -> 389 bytes htdocs/theme/common/flags/td.png | Bin 388 -> 342 bytes htdocs/theme/common/flags/tf.png | Bin 399 -> 369 bytes htdocs/theme/common/flags/tg.png | Bin 383 -> 377 bytes htdocs/theme/common/flags/th.png | Bin 366 -> 324 bytes htdocs/theme/common/flags/tj.png | Bin 373 -> 342 bytes htdocs/theme/common/flags/tk.png | Bin 409 -> 385 bytes htdocs/theme/common/flags/tl.png | Bin 384 -> 363 bytes htdocs/theme/common/flags/tm.png | Bin 407 -> 403 bytes htdocs/theme/common/flags/tn.png | Bin 397 -> 376 bytes htdocs/theme/common/flags/to.png | Bin 398 -> 314 bytes htdocs/theme/common/flags/tr.png | Bin 402 -> 371 bytes htdocs/theme/common/flags/trans.png | Bin 151 -> 68 bytes htdocs/theme/common/flags/tt.png | Bin 411 -> 392 bytes htdocs/theme/common/flags/tv.png | Bin 393 -> 359 bytes htdocs/theme/common/flags/tw.png | Bin 390 -> 338 bytes htdocs/theme/common/flags/tz.png | Bin 393 -> 387 bytes htdocs/theme/common/flags/ua.png | Bin 361 -> 304 bytes htdocs/theme/common/flags/ug.png | Bin 366 -> 346 bytes htdocs/theme/common/flags/uk.png | Bin 301 -> 297 bytes htdocs/theme/common/flags/um.png | Bin 402 -> 392 bytes htdocs/theme/common/flags/us.png | Bin 407 -> 385 bytes htdocs/theme/common/flags/uy.png | Bin 382 -> 379 bytes htdocs/theme/common/flags/uz.png | Bin 374 -> 354 bytes htdocs/theme/common/flags/va.png | Bin 390 -> 360 bytes htdocs/theme/common/flags/vc.png | Bin 401 -> 379 bytes htdocs/theme/common/flags/ve.png | Bin 369 -> 358 bytes htdocs/theme/common/flags/vg.png | Bin 408 -> 388 bytes htdocs/theme/common/flags/vi.png | Bin 412 -> 398 bytes htdocs/theme/common/flags/vn.png | Bin 392 -> 326 bytes htdocs/theme/common/flags/vu.png | Bin 384 -> 378 bytes htdocs/theme/common/flags/wales.png | Bin 405 -> 398 bytes htdocs/theme/common/flags/wf.png | Bin 411 -> 401 bytes htdocs/theme/common/flags/ws.png | Bin 379 -> 341 bytes htdocs/theme/common/flags/ye.png | Bin 346 -> 291 bytes htdocs/theme/common/flags/yt.png | Bin 409 -> 386 bytes htdocs/theme/common/flags/za.png | Bin 402 -> 383 bytes htdocs/theme/common/flags/zm.png | Bin 391 -> 342 bytes htdocs/theme/common/flags/zw.png | Bin 385 -> 377 bytes htdocs/theme/common/folder-new.png | Bin 334 -> 235 bytes htdocs/theme/common/gmap.png | Bin 374 -> 226 bytes htdocs/theme/common/help.png | Bin 657 -> 348 bytes htdocs/theme/common/login_logo.png | Bin 3150 -> 2942 bytes htdocs/theme/common/logo_cerfa.png | Bin 5718 -> 2973 bytes htdocs/theme/common/mime/audio.png | Bin 326 -> 204 bytes htdocs/theme/common/mime/css.png | Bin 185 -> 179 bytes htdocs/theme/common/mime/doc.png | Bin 525 -> 281 bytes htdocs/theme/common/mime/dotnet.png | Bin 592 -> 525 bytes htdocs/theme/common/mime/encrypt.png | Bin 749 -> 667 bytes htdocs/theme/common/mime/error.png | Bin 489 -> 340 bytes htdocs/theme/common/mime/flash.png | Bin 470 -> 258 bytes htdocs/theme/common/mime/glasses.png | Bin 515 -> 464 bytes htdocs/theme/common/mime/html.png | Bin 677 -> 326 bytes htdocs/theme/common/mime/image.png | Bin 601 -> 299 bytes htdocs/theme/common/mime/jnlp.png | Bin 577 -> 504 bytes htdocs/theme/common/mime/jscript.png | Bin 722 -> 399 bytes htdocs/theme/common/mime/library.png | Bin 361 -> 245 bytes htdocs/theme/common/mime/lit.png | Bin 358 -> 317 bytes htdocs/theme/common/mime/mdb.png | Bin 579 -> 512 bytes htdocs/theme/common/mime/notavailable.png | Bin 197 -> 88 bytes htdocs/theme/common/mime/ooffice.png | Bin 564 -> 312 bytes htdocs/theme/common/mime/other.png | Bin 197 -> 140 bytes htdocs/theme/common/mime/page.png | Bin 734 -> 656 bytes htdocs/theme/common/mime/pdf.png | Bin 447 -> 249 bytes htdocs/theme/common/mime/php.png | Bin 338 -> 264 bytes htdocs/theme/common/mime/pl.png | Bin 553 -> 532 bytes htdocs/theme/common/mime/ppt.png | Bin 545 -> 286 bytes htdocs/theme/common/mime/rss.png | Bin 552 -> 537 bytes htdocs/theme/common/mime/script.png | Bin 590 -> 351 bytes htdocs/theme/common/mime/svg.png | Bin 648 -> 346 bytes htdocs/theme/common/mime/text.png | Bin 257 -> 186 bytes htdocs/theme/common/mime/ttf.png | Bin 530 -> 445 bytes htdocs/theme/common/mime/unknown.png | Bin 786 -> 701 bytes htdocs/theme/common/mime/video.png | Bin 370 -> 235 bytes htdocs/theme/common/mime/xls.png | Bin 574 -> 306 bytes htdocs/theme/common/paypal.png | Bin 1825 -> 1384 bytes htdocs/theme/common/redstar.png | Bin 533 -> 509 bytes htdocs/theme/common/skype_callbutton.png | Bin 1377 -> 413 bytes htdocs/theme/common/skype_chatbutton.png | Bin 1244 -> 282 bytes htdocs/theme/common/star.png | Bin 381 -> 286 bytes .../common/transform-crop-and-resize.png | Bin 712 -> 685 bytes htdocs/theme/common/transparent.png | Bin 161 -> 68 bytes .../common/treemenu/folder2-expanded.png | Bin 517 -> 487 bytes htdocs/theme/common/treemenu/folder2.png | Bin 537 -> 459 bytes htdocs/theme/common/view-refresh.png | Bin 466 -> 391 bytes htdocs/theme/dolibarr.png | Bin 995 -> 794 bytes htdocs/theme/dolibarr_logo.png | Bin 10289 -> 9663 bytes htdocs/theme/dolibarr_logo_256x256.png | Bin 4008 -> 3525 bytes htdocs/theme/dolibarr_logo_bw.png | Bin 646 -> 564 bytes htdocs/theme/dolibarr_logo_squarred.png | Bin 9520 -> 6959 bytes htdocs/theme/dolibarr_logo_squarred_alpha.png | Bin 8921 -> 7844 bytes .../theme/dolibarr_preferred_partner_int.png | Bin 9804 -> 6719 bytes htdocs/theme/dolistore_logo.png | Bin 10519 -> 10077 bytes htdocs/theme/eldy/img/addfile.png | Bin 593 -> 567 bytes htdocs/theme/eldy/img/bg-bas-rubrique.png | Bin 300 -> 240 bytes htdocs/theme/eldy/img/bg-titre-rubrique.png | Bin 374 -> 274 bytes htdocs/theme/eldy/img/button_bg.png | Bin 199 -> 85 bytes htdocs/theme/eldy/img/button_edit.png | Bin 961 -> 794 bytes htdocs/theme/eldy/img/calc.png | Bin 734 -> 706 bytes htdocs/theme/eldy/img/calendar.png | Bin 250 -> 165 bytes htdocs/theme/eldy/img/call.png | Bin 286 -> 259 bytes htdocs/theme/eldy/img/call_out.png | Bin 318 -> 259 bytes htdocs/theme/eldy/img/close.png | Bin 301 -> 190 bytes htdocs/theme/eldy/img/close_title.png | Bin 240 -> 194 bytes htdocs/theme/eldy/img/delete.png | Bin 267 -> 139 bytes htdocs/theme/eldy/img/detail.png | Bin 589 -> 572 bytes htdocs/theme/eldy/img/disable.png | Bin 245 -> 235 bytes htdocs/theme/eldy/img/edit.png | Bin 818 -> 461 bytes htdocs/theme/eldy/img/edit_add.png | Bin 220 -> 120 bytes htdocs/theme/eldy/img/edit_remove.png | Bin 122 -> 101 bytes htdocs/theme/eldy/img/editdelete.png | Bin 245 -> 235 bytes htdocs/theme/eldy/img/error.png | Bin 385 -> 237 bytes htdocs/theme/eldy/img/external.png | Bin 378 -> 226 bytes htdocs/theme/eldy/img/file.png | Bin 505 -> 323 bytes htdocs/theme/eldy/img/filenew.png | Bin 397 -> 263 bytes htdocs/theme/eldy/img/filter.png | Bin 237 -> 125 bytes htdocs/theme/eldy/img/folder-open.png | Bin 801 -> 702 bytes htdocs/theme/eldy/img/folder.png | Bin 935 -> 485 bytes htdocs/theme/eldy/img/help.png | Bin 312 -> 232 bytes htdocs/theme/eldy/img/helpdoc_top.png | Bin 407 -> 357 bytes htdocs/theme/eldy/img/high.png | Bin 611 -> 582 bytes htdocs/theme/eldy/img/info.png | Bin 317 -> 239 bytes htdocs/theme/eldy/img/info_black.png | Bin 312 -> 232 bytes htdocs/theme/eldy/img/liste_titre.png | Bin 196 -> 184 bytes htdocs/theme/eldy/img/liste_titre2.png | Bin 304 -> 177 bytes htdocs/theme/eldy/img/listlight.png | Bin 177 -> 102 bytes htdocs/theme/eldy/img/lock.png | Bin 646 -> 630 bytes htdocs/theme/eldy/img/logout_top.png | Bin 293 -> 186 bytes htdocs/theme/eldy/img/menus/agenda.png | Bin 700 -> 535 bytes htdocs/theme/eldy/img/menus/agenda_over.png | Bin 541 -> 349 bytes htdocs/theme/eldy/img/menus/bank.png | Bin 827 -> 628 bytes htdocs/theme/eldy/img/menus/bank_over.png | Bin 620 -> 399 bytes htdocs/theme/eldy/img/menus/commercial.png | Bin 845 -> 579 bytes .../theme/eldy/img/menus/commercial_over.png | Bin 638 -> 403 bytes htdocs/theme/eldy/img/menus/company.png | Bin 572 -> 457 bytes htdocs/theme/eldy/img/menus/company_over.png | Bin 406 -> 235 bytes htdocs/theme/eldy/img/menus/ecm.png | Bin 912 -> 683 bytes htdocs/theme/eldy/img/menus/ecm_over.png | Bin 647 -> 406 bytes htdocs/theme/eldy/img/menus/externalsite.png | Bin 531 -> 436 bytes .../eldy/img/menus/externalsite_over.png | Bin 404 -> 286 bytes htdocs/theme/eldy/img/menus/ftp.png | Bin 788 -> 613 bytes htdocs/theme/eldy/img/menus/ftp_over.png | Bin 563 -> 358 bytes htdocs/theme/eldy/img/menus/generic1.png | Bin 570 -> 424 bytes htdocs/theme/eldy/img/menus/generic1_over.png | Bin 486 -> 296 bytes htdocs/theme/eldy/img/menus/generic2.png | Bin 570 -> 424 bytes htdocs/theme/eldy/img/menus/generic2_over.png | Bin 548 -> 433 bytes htdocs/theme/eldy/img/menus/generic3.png | Bin 570 -> 424 bytes htdocs/theme/eldy/img/menus/generic3_over.png | Bin 486 -> 296 bytes htdocs/theme/eldy/img/menus/generic4.png | Bin 570 -> 424 bytes htdocs/theme/eldy/img/menus/generic4_over.png | Bin 486 -> 296 bytes htdocs/theme/eldy/img/menus/globe.png | Bin 1175 -> 864 bytes htdocs/theme/eldy/img/menus/globe_over.png | Bin 844 -> 533 bytes htdocs/theme/eldy/img/menus/holiday.png | Bin 1086 -> 881 bytes htdocs/theme/eldy/img/menus/holiday_over.png | Bin 1086 -> 881 bytes htdocs/theme/eldy/img/menus/home.png | Bin 679 -> 516 bytes htdocs/theme/eldy/img/menus/home_over.png | Bin 484 -> 300 bytes htdocs/theme/eldy/img/menus/mail.png | Bin 718 -> 553 bytes htdocs/theme/eldy/img/menus/mail_over.png | Bin 534 -> 325 bytes htdocs/theme/eldy/img/menus/members.png | Bin 1044 -> 726 bytes htdocs/theme/eldy/img/menus/members_over.png | Bin 720 -> 460 bytes htdocs/theme/eldy/img/menus/menu.png | Bin 296 -> 257 bytes htdocs/theme/eldy/img/menus/money.png | Bin 1259 -> 916 bytes htdocs/theme/eldy/img/menus/money_over.png | Bin 908 -> 599 bytes htdocs/theme/eldy/img/menus/pointofsale.png | Bin 542 -> 419 bytes .../theme/eldy/img/menus/pointofsale_over.png | Bin 424 -> 252 bytes htdocs/theme/eldy/img/menus/products.png | Bin 510 -> 407 bytes htdocs/theme/eldy/img/menus/products_over.png | Bin 358 -> 226 bytes htdocs/theme/eldy/img/menus/project.png | Bin 449 -> 351 bytes htdocs/theme/eldy/img/menus/project_over.png | Bin 360 -> 227 bytes htdocs/theme/eldy/img/menus/shop.png | Bin 679 -> 484 bytes htdocs/theme/eldy/img/menus/shop_over.png | Bin 502 -> 331 bytes htdocs/theme/eldy/img/menus/ticket.png | Bin 209 -> 112 bytes htdocs/theme/eldy/img/menus/ticket_over.png | Bin 209 -> 112 bytes htdocs/theme/eldy/img/menus/tools.png | Bin 1052 -> 697 bytes htdocs/theme/eldy/img/menus/tools_over.png | Bin 706 -> 442 bytes htdocs/theme/eldy/img/menus_black/agenda.png | Bin 750 -> 550 bytes .../eldy/img/menus_black/agenda_over.png | Bin 580 -> 349 bytes htdocs/theme/eldy/img/menus_black/bank.png | Bin 892 -> 669 bytes .../theme/eldy/img/menus_black/bank_over.png | Bin 638 -> 404 bytes .../theme/eldy/img/menus_black/commercial.png | Bin 898 -> 593 bytes .../eldy/img/menus_black/commercial_over.png | Bin 650 -> 403 bytes htdocs/theme/eldy/img/menus_black/company.png | Bin 602 -> 483 bytes .../eldy/img/menus_black/company_over.png | Bin 426 -> 239 bytes htdocs/theme/eldy/img/menus_black/ecm.png | Bin 969 -> 712 bytes .../theme/eldy/img/menus_black/ecm_over.png | Bin 672 -> 406 bytes .../eldy/img/menus_black/externalsite.png | Bin 560 -> 460 bytes .../img/menus_black/externalsite_over.png | Bin 415 -> 286 bytes htdocs/theme/eldy/img/menus_black/ftp.png | Bin 844 -> 628 bytes .../theme/eldy/img/menus_black/ftp_over.png | Bin 612 -> 358 bytes .../theme/eldy/img/menus_black/generic1.png | Bin 611 -> 454 bytes .../eldy/img/menus_black/generic1_over.png | Bin 490 -> 296 bytes .../theme/eldy/img/menus_black/generic2.png | Bin 611 -> 454 bytes .../eldy/img/menus_black/generic2_over.png | Bin 490 -> 296 bytes .../theme/eldy/img/menus_black/generic3.png | Bin 611 -> 454 bytes .../eldy/img/menus_black/generic3_over.png | Bin 490 -> 296 bytes .../theme/eldy/img/menus_black/generic4.png | Bin 611 -> 454 bytes .../eldy/img/menus_black/generic4_over.png | Bin 490 -> 296 bytes htdocs/theme/eldy/img/menus_black/globe.png | Bin 1277 -> 882 bytes .../theme/eldy/img/menus_black/globe_over.png | Bin 847 -> 533 bytes htdocs/theme/eldy/img/menus_black/holiday.png | Bin 1028 -> 838 bytes .../eldy/img/menus_black/holiday_over.png | Bin 1028 -> 838 bytes htdocs/theme/eldy/img/menus_black/home.png | Bin 716 -> 573 bytes .../theme/eldy/img/menus_black/home_over.png | Bin 474 -> 313 bytes htdocs/theme/eldy/img/menus_black/mail.png | Bin 787 -> 569 bytes .../theme/eldy/img/menus_black/mail_over.png | Bin 533 -> 325 bytes htdocs/theme/eldy/img/menus_black/members.png | Bin 1134 -> 754 bytes .../eldy/img/menus_black/members_over.png | Bin 733 -> 460 bytes htdocs/theme/eldy/img/menus_black/money.png | Bin 1387 -> 948 bytes .../theme/eldy/img/menus_black/money_over.png | Bin 952 -> 600 bytes .../eldy/img/menus_black/pointofsale.png | Bin 573 -> 434 bytes .../eldy/img/menus_black/pointofsale_over.png | Bin 437 -> 260 bytes .../theme/eldy/img/menus_black/products.png | Bin 529 -> 428 bytes .../eldy/img/menus_black/products_over.png | Bin 374 -> 231 bytes htdocs/theme/eldy/img/menus_black/project.png | Bin 477 -> 378 bytes .../eldy/img/menus_black/project_over.png | Bin 380 -> 237 bytes htdocs/theme/eldy/img/menus_black/shop.png | Bin 715 -> 499 bytes .../theme/eldy/img/menus_black/shop_over.png | Bin 510 -> 331 bytes htdocs/theme/eldy/img/menus_black/ticket.png | Bin 203 -> 110 bytes .../eldy/img/menus_black/ticket_over.png | Bin 203 -> 110 bytes htdocs/theme/eldy/img/menus_black/tools.png | Bin 1148 -> 720 bytes .../theme/eldy/img/menus_black/tools_over.png | Bin 724 -> 442 bytes htdocs/theme/eldy/img/menutab-r.png | Bin 198 -> 196 bytes htdocs/theme/eldy/img/nav-overlay.png | Bin 109 -> 108 bytes htdocs/theme/eldy/img/nav-overlay3.png | Bin 1780 -> 1601 bytes htdocs/theme/eldy/img/object_account.png | Bin 453 -> 313 bytes htdocs/theme/eldy/img/object_accounting.png | Bin 170 -> 119 bytes htdocs/theme/eldy/img/object_action.png | Bin 528 -> 284 bytes htdocs/theme/eldy/img/object_address.png | Bin 358 -> 230 bytes htdocs/theme/eldy/img/object_barcode.png | Bin 219 -> 120 bytes htdocs/theme/eldy/img/object_bill.png | Bin 394 -> 268 bytes htdocs/theme/eldy/img/object_billa.png | Bin 395 -> 272 bytes htdocs/theme/eldy/img/object_billd.png | Bin 341 -> 282 bytes htdocs/theme/eldy/img/object_billr.png | Bin 399 -> 280 bytes htdocs/theme/eldy/img/object_bom.png | Bin 548 -> 381 bytes htdocs/theme/eldy/img/object_book.png | Bin 222 -> 218 bytes htdocs/theme/eldy/img/object_bookmark.png | Bin 326 -> 245 bytes htdocs/theme/eldy/img/object_building.png | Bin 563 -> 451 bytes htdocs/theme/eldy/img/object_calendar.png | Bin 199 -> 112 bytes htdocs/theme/eldy/img/object_calendarday.png | Bin 223 -> 119 bytes .../theme/eldy/img/object_calendargantt.png | Bin 242 -> 121 bytes .../theme/eldy/img/object_calendarpertype.png | Bin 198 -> 122 bytes .../theme/eldy/img/object_calendarperuser.png | Bin 198 -> 122 bytes htdocs/theme/eldy/img/object_calendarweek.png | Bin 188 -> 104 bytes .../eldy/img/object_category-expanded.png | Bin 295 -> 175 bytes htdocs/theme/eldy/img/object_category.png | Bin 281 -> 153 bytes htdocs/theme/eldy/img/object_commercial.png | Bin 304 -> 180 bytes htdocs/theme/eldy/img/object_company.png | Bin 492 -> 361 bytes htdocs/theme/eldy/img/object_contact.png | Bin 666 -> 532 bytes htdocs/theme/eldy/img/object_contract.png | Bin 359 -> 256 bytes htdocs/theme/eldy/img/object_cron.png | Bin 433 -> 393 bytes htdocs/theme/eldy/img/object_debugbar.png | Bin 827 -> 721 bytes htdocs/theme/eldy/img/object_dir.png | Bin 301 -> 187 bytes htdocs/theme/eldy/img/object_email.png | Bin 368 -> 257 bytes htdocs/theme/eldy/img/object_generic.png | Bin 361 -> 239 bytes htdocs/theme/eldy/img/object_globe.png | Bin 366 -> 330 bytes htdocs/theme/eldy/img/object_gravatar.png | Bin 666 -> 556 bytes htdocs/theme/eldy/img/object_group.png | Bin 655 -> 562 bytes htdocs/theme/eldy/img/object_holiday.png | Bin 771 -> 743 bytes htdocs/theme/eldy/img/object_intervention.png | Bin 340 -> 207 bytes htdocs/theme/eldy/img/object_invoice.png | Bin 394 -> 268 bytes htdocs/theme/eldy/img/object_label.png | Bin 769 -> 736 bytes htdocs/theme/eldy/img/object_list.png | Bin 179 -> 100 bytes htdocs/theme/eldy/img/object_lock.png | Bin 646 -> 630 bytes htdocs/theme/eldy/img/object_margin.png | Bin 571 -> 547 bytes htdocs/theme/eldy/img/object_movement.png | Bin 548 -> 356 bytes htdocs/theme/eldy/img/object_mrp.png | Bin 548 -> 381 bytes .../theme/eldy/img/object_multicurrency.png | Bin 733 -> 652 bytes htdocs/theme/eldy/img/object_opensurvey.png | Bin 743 -> 722 bytes htdocs/theme/eldy/img/object_order.png | Bin 357 -> 253 bytes htdocs/theme/eldy/img/object_payment.png | Bin 339 -> 258 bytes htdocs/theme/eldy/img/object_phoning.png | Bin 577 -> 337 bytes htdocs/theme/eldy/img/object_phoning_fax.png | Bin 633 -> 357 bytes .../theme/eldy/img/object_phoning_mobile.png | Bin 435 -> 305 bytes htdocs/theme/eldy/img/object_printer.png | Bin 296 -> 182 bytes htdocs/theme/eldy/img/object_product.png | Bin 559 -> 386 bytes htdocs/theme/eldy/img/object_project.png | Bin 926 -> 425 bytes htdocs/theme/eldy/img/object_projectpub.png | Bin 929 -> 470 bytes htdocs/theme/eldy/img/object_projecttask.png | Bin 941 -> 440 bytes htdocs/theme/eldy/img/object_propal.png | Bin 284 -> 244 bytes htdocs/theme/eldy/img/object_reduc.png | Bin 361 -> 239 bytes htdocs/theme/eldy/img/object_resource.png | Bin 197 -> 116 bytes htdocs/theme/eldy/img/object_sending.png | Bin 273 -> 211 bytes htdocs/theme/eldy/img/object_service.png | Bin 365 -> 313 bytes htdocs/theme/eldy/img/object_skype.png | Bin 682 -> 638 bytes htdocs/theme/eldy/img/object_stock.png | Bin 554 -> 358 bytes htdocs/theme/eldy/img/object_stripe.png | Bin 819 -> 583 bytes .../eldy/img/object_supplier_proposal.png | Bin 284 -> 244 bytes htdocs/theme/eldy/img/object_task_time.png | Bin 199 -> 112 bytes htdocs/theme/eldy/img/object_tax.png | Bin 394 -> 268 bytes htdocs/theme/eldy/img/object_technic.png | Bin 433 -> 393 bytes htdocs/theme/eldy/img/object_ticket.png | Bin 344 -> 232 bytes htdocs/theme/eldy/img/object_trip.png | Bin 369 -> 232 bytes htdocs/theme/eldy/img/object_user.png | Bin 581 -> 475 bytes htdocs/theme/eldy/img/object_website.png | Bin 366 -> 330 bytes htdocs/theme/eldy/img/object_zapier.png | Bin 716 -> 459 bytes htdocs/theme/eldy/img/pdf2.png | Bin 636 -> 624 bytes htdocs/theme/eldy/img/pdf3.png | Bin 566 -> 532 bytes htdocs/theme/eldy/img/playdisabled.png | Bin 474 -> 316 bytes htdocs/theme/eldy/img/preview_ext.png | Bin 564 -> 534 bytes htdocs/theme/eldy/img/printer.png | Bin 329 -> 182 bytes htdocs/theme/eldy/img/printer_top.png | Bin 316 -> 183 bytes htdocs/theme/eldy/img/puce.png | Bin 223 -> 98 bytes htdocs/theme/eldy/img/recent.png | Bin 447 -> 356 bytes htdocs/theme/eldy/img/redstar.png | Bin 533 -> 509 bytes htdocs/theme/eldy/img/searchclear.png | Bin 356 -> 290 bytes htdocs/theme/eldy/img/sort_asc.png | Bin 248 -> 169 bytes htdocs/theme/eldy/img/sort_asc_disabled.png | Bin 236 -> 174 bytes htdocs/theme/eldy/img/sort_desc.png | Bin 260 -> 169 bytes htdocs/theme/eldy/img/split.png | Bin 195 -> 137 bytes htdocs/theme/eldy/img/star.png | Bin 381 -> 286 bytes htdocs/theme/eldy/img/stats.png | Bin 640 -> 547 bytes htdocs/theme/eldy/img/statut0.png | Bin 594 -> 342 bytes htdocs/theme/eldy/img/statut0_40x40.png | Bin 1132 -> 552 bytes htdocs/theme/eldy/img/statut1.png | Bin 574 -> 324 bytes htdocs/theme/eldy/img/statut1_40x40.png | Bin 831 -> 421 bytes htdocs/theme/eldy/img/statut3.png | Bin 736 -> 483 bytes htdocs/theme/eldy/img/statut3_40x40.png | Bin 1577 -> 871 bytes htdocs/theme/eldy/img/statut4.png | Bin 595 -> 318 bytes htdocs/theme/eldy/img/statut4_40x40.png | Bin 856 -> 451 bytes htdocs/theme/eldy/img/statut5.png | Bin 741 -> 450 bytes htdocs/theme/eldy/img/statut5_40x40.png | Bin 1169 -> 586 bytes htdocs/theme/eldy/img/statut6.png | Bin 502 -> 257 bytes htdocs/theme/eldy/img/statut6_40x40.png | Bin 754 -> 394 bytes htdocs/theme/eldy/img/statut7.png | Bin 736 -> 483 bytes htdocs/theme/eldy/img/statut7_40x40.png | Bin 1577 -> 871 bytes htdocs/theme/eldy/img/statut8.png | Bin 596 -> 320 bytes htdocs/theme/eldy/img/statut8_40x40.png | Bin 848 -> 425 bytes htdocs/theme/eldy/img/statut9.png | Bin 428 -> 234 bytes htdocs/theme/eldy/img/statut9_40x40.png | Bin 644 -> 320 bytes htdocs/theme/eldy/img/stcomm-1.png | Bin 903 -> 718 bytes htdocs/theme/eldy/img/stcomm0.png | Bin 929 -> 764 bytes htdocs/theme/eldy/img/stcomm1.png | Bin 874 -> 844 bytes htdocs/theme/eldy/img/stcomm2.png | Bin 870 -> 837 bytes htdocs/theme/eldy/img/stcomm3.png | Bin 832 -> 805 bytes htdocs/theme/eldy/img/stcomm4.png | Bin 922 -> 894 bytes htdocs/theme/eldy/img/switch_off.png | Bin 1252 -> 1128 bytes htdocs/theme/eldy/img/switch_on.png | Bin 1228 -> 1111 bytes htdocs/theme/eldy/img/tab_background.png | Bin 129 -> 125 bytes htdocs/theme/eldy/img/tick.png | Bin 227 -> 204 bytes htdocs/theme/eldy/img/title.png | Bin 1607 -> 1540 bytes htdocs/theme/eldy/img/title_accountancy.png | Bin 952 -> 600 bytes htdocs/theme/eldy/img/title_agenda.png | Bin 580 -> 349 bytes htdocs/theme/eldy/img/title_bank.png | Bin 501 -> 325 bytes htdocs/theme/eldy/img/title_commercial.png | Bin 431 -> 253 bytes htdocs/theme/eldy/img/title_companies.png | Bin 426 -> 239 bytes htdocs/theme/eldy/img/title_document.png | Bin 570 -> 322 bytes htdocs/theme/eldy/img/title_generic.png | Bin 672 -> 406 bytes htdocs/theme/eldy/img/title_home.png | Bin 750 -> 562 bytes htdocs/theme/eldy/img/title_hrm.png | Bin 1028 -> 838 bytes htdocs/theme/eldy/img/title_products.png | Bin 687 -> 511 bytes htdocs/theme/eldy/img/title_project.png | Bin 380 -> 237 bytes htdocs/theme/eldy/img/title_setup.png | Bin 724 -> 442 bytes htdocs/theme/eldy/img/title_ticket.png | Bin 234 -> 124 bytes htdocs/theme/eldy/img/unlock.png | Bin 686 -> 671 bytes htdocs/theme/eldy/img/uparrow.png | Bin 194 -> 136 bytes htdocs/theme/eldy/img/upload.png | Bin 296 -> 236 bytes htdocs/theme/eldy/img/vcard.png | Bin 566 -> 313 bytes htdocs/theme/eldy/img/view.png | Bin 708 -> 295 bytes htdocs/theme/eldy/img/warning.png | Bin 392 -> 241 bytes htdocs/theme/eldy/img/warning_white.png | Bin 316 -> 233 bytes .../eldy/img/weather/weather-clear-night.png | Bin 2433 -> 2276 bytes .../theme/eldy/img/weather/weather-clear.png | Bin 7724 -> 7439 bytes .../eldy/img/weather/weather-clouds-night.png | Bin 4481 -> 4363 bytes .../theme/eldy/img/weather/weather-clouds.png | Bin 6414 -> 6267 bytes .../img/weather/weather-few-clouds-night.png | Bin 2328 -> 2212 bytes .../eldy/img/weather/weather-few-clouds.png | Bin 5858 -> 5730 bytes .../img/weather/weather-freezing-rain.png | Bin 5360 -> 5046 bytes .../theme/eldy/img/weather/weather-hail.png | Bin 5421 -> 5090 bytes .../eldy/img/weather/weather-many-clouds.png | Bin 4502 -> 4399 bytes .../theme/eldy/img/weather/weather-mist.png | Bin 1617 -> 1524 bytes .../eldy/img/weather/weather-showers-day.png | Bin 7300 -> 6954 bytes .../img/weather/weather-showers-night.png | Bin 6327 -> 6123 bytes .../weather/weather-showers-scattered-day.png | Bin 6533 -> 6317 bytes .../weather-showers-scattered-night.png | Bin 5322 -> 5171 bytes .../img/weather/weather-showers-scattered.png | Bin 5210 -> 4937 bytes .../eldy/img/weather/weather-showers.png | Bin 5373 -> 5138 bytes .../eldy/img/weather/weather-snow-rain.png | Bin 5857 -> 5406 bytes .../weather/weather-snow-scattered-day.png | Bin 7257 -> 6823 bytes .../weather/weather-snow-scattered-night.png | Bin 5912 -> 5583 bytes .../img/weather/weather-snow-scattered.png | Bin 5336 -> 5038 bytes .../theme/eldy/img/weather/weather-snow.png | Bin 5691 -> 5332 bytes .../eldy/img/weather/weather-storm-day.png | Bin 7792 -> 7437 bytes .../eldy/img/weather/weather-storm-night.png | Bin 7772 -> 7471 bytes .../theme/eldy/img/weather/weather-storm.png | Bin 7563 -> 7261 bytes htdocs/theme/eldy/thumb.png | Bin 13620 -> 11825 bytes htdocs/theme/md/img/addfile.png | Bin 593 -> 567 bytes htdocs/theme/md/img/bg-bas-rubrique.png | Bin 300 -> 240 bytes htdocs/theme/md/img/bg-titre-rubrique.png | Bin 374 -> 274 bytes htdocs/theme/md/img/button_bg.png | Bin 199 -> 85 bytes htdocs/theme/md/img/button_edit.png | Bin 961 -> 794 bytes htdocs/theme/md/img/calc.png | Bin 734 -> 706 bytes htdocs/theme/md/img/call.png | Bin 286 -> 259 bytes htdocs/theme/md/img/call_out.png | Bin 318 -> 259 bytes htdocs/theme/md/img/detail.png | Bin 589 -> 572 bytes htdocs/theme/md/img/edit.png | Bin 294 -> 165 bytes htdocs/theme/md/img/external.png | Bin 316 -> 220 bytes htdocs/theme/md/img/help.png | Bin 312 -> 232 bytes htdocs/theme/md/img/info.png | Bin 399 -> 297 bytes htdocs/theme/md/img/liste_titre.png | Bin 196 -> 184 bytes htdocs/theme/md/img/liste_titre2.png | Bin 304 -> 177 bytes htdocs/theme/md/img/listlight.png | Bin 177 -> 102 bytes htdocs/theme/md/img/menu.png | Bin 166 -> 93 bytes htdocs/theme/md/img/menus/generic1.png | Bin 570 -> 424 bytes htdocs/theme/md/img/menus/generic1_over.png | Bin 486 -> 296 bytes htdocs/theme/md/img/menus/generic2.png | Bin 570 -> 424 bytes htdocs/theme/md/img/menus/generic2_over.png | Bin 548 -> 433 bytes htdocs/theme/md/img/menus/generic3.png | Bin 570 -> 424 bytes htdocs/theme/md/img/menus/generic3_over.png | Bin 486 -> 296 bytes htdocs/theme/md/img/menus/generic4.png | Bin 570 -> 424 bytes htdocs/theme/md/img/menus/generic4_over.png | Bin 486 -> 296 bytes htdocs/theme/md/img/menus/menu.png | Bin 296 -> 257 bytes htdocs/theme/md/img/menus/products.png | Bin 432 -> 323 bytes htdocs/theme/md/img/menus/ticket.png | Bin 209 -> 112 bytes htdocs/theme/md/img/menutab-r.png | Bin 198 -> 196 bytes htdocs/theme/md/img/nav-overlay.png | Bin 109 -> 108 bytes htdocs/theme/md/img/nav-overlay3.png | Bin 1780 -> 1601 bytes htdocs/theme/md/img/object_barcode.png | Bin 219 -> 120 bytes htdocs/theme/md/img/object_billa.png | Bin 232 -> 161 bytes htdocs/theme/md/img/object_billd.png | Bin 236 -> 164 bytes htdocs/theme/md/img/object_billr.png | Bin 239 -> 164 bytes htdocs/theme/md/img/object_bom.png | Bin 548 -> 381 bytes htdocs/theme/md/img/object_book.png | Bin 222 -> 218 bytes htdocs/theme/md/img/object_bookmark.png | Bin 326 -> 245 bytes htdocs/theme/md/img/object_calendargantt.png | Bin 219 -> 134 bytes .../theme/md/img/object_calendarpertype.png | Bin 221 -> 141 bytes .../theme/md/img/object_calendarperuser.png | Bin 221 -> 141 bytes .../theme/md/img/object_category-expanded.png | Bin 198 -> 127 bytes htdocs/theme/md/img/object_category.png | Bin 214 -> 108 bytes htdocs/theme/md/img/object_debugbar.png | Bin 827 -> 721 bytes htdocs/theme/md/img/object_gravatar.png | Bin 666 -> 556 bytes htdocs/theme/md/img/object_group.png | Bin 655 -> 562 bytes htdocs/theme/md/img/object_lock.png | Bin 646 -> 630 bytes htdocs/theme/md/img/object_movement.png | Bin 548 -> 356 bytes htdocs/theme/md/img/object_mrp.png | Bin 548 -> 381 bytes htdocs/theme/md/img/object_multicurrency.png | Bin 733 -> 652 bytes htdocs/theme/md/img/object_phoning.png | Bin 577 -> 337 bytes htdocs/theme/md/img/object_phoning_fax.png | Bin 633 -> 357 bytes htdocs/theme/md/img/object_phoning_mobile.png | Bin 435 -> 305 bytes htdocs/theme/md/img/object_project.png | Bin 269 -> 178 bytes htdocs/theme/md/img/object_projectpub.png | Bin 252 -> 166 bytes htdocs/theme/md/img/object_skype.png | Bin 682 -> 638 bytes htdocs/theme/md/img/object_stripe.png | Bin 819 -> 583 bytes htdocs/theme/md/img/object_tax.png | Bin 394 -> 268 bytes htdocs/theme/md/img/object_ticket.png | Bin 344 -> 232 bytes htdocs/theme/md/img/object_user.png | Bin 581 -> 475 bytes htdocs/theme/md/img/object_zapier.png | Bin 716 -> 459 bytes htdocs/theme/md/img/pdf2.png | Bin 636 -> 624 bytes htdocs/theme/md/img/pdf3.png | Bin 566 -> 532 bytes htdocs/theme/md/img/playdisabled.png | Bin 474 -> 316 bytes htdocs/theme/md/img/preview_ext.png | Bin 564 -> 534 bytes htdocs/theme/md/img/puce.png | Bin 223 -> 98 bytes htdocs/theme/md/img/redstar.png | Bin 533 -> 509 bytes htdocs/theme/md/img/searchclear.png | Bin 356 -> 290 bytes htdocs/theme/md/img/sort_asc.png | Bin 248 -> 169 bytes htdocs/theme/md/img/sort_asc_disabled.png | Bin 236 -> 174 bytes htdocs/theme/md/img/sort_desc.png | Bin 260 -> 169 bytes htdocs/theme/md/img/stats.png | Bin 640 -> 547 bytes htdocs/theme/md/img/statut0.png | Bin 594 -> 342 bytes htdocs/theme/md/img/statut0_40x40.png | Bin 1132 -> 552 bytes htdocs/theme/md/img/statut1.png | Bin 574 -> 324 bytes htdocs/theme/md/img/statut1_40x40.png | Bin 831 -> 421 bytes htdocs/theme/md/img/statut3.png | Bin 736 -> 483 bytes htdocs/theme/md/img/statut3_40x40.png | Bin 1577 -> 871 bytes htdocs/theme/md/img/statut4.png | Bin 595 -> 318 bytes htdocs/theme/md/img/statut4_40x40.png | Bin 856 -> 451 bytes htdocs/theme/md/img/statut5.png | Bin 741 -> 450 bytes htdocs/theme/md/img/statut5_40x40.png | Bin 1169 -> 586 bytes htdocs/theme/md/img/statut6.png | Bin 502 -> 257 bytes htdocs/theme/md/img/statut6_40x40.png | Bin 754 -> 394 bytes htdocs/theme/md/img/statut7.png | Bin 736 -> 483 bytes htdocs/theme/md/img/statut7_40x40.png | Bin 1577 -> 871 bytes htdocs/theme/md/img/statut8.png | Bin 596 -> 320 bytes htdocs/theme/md/img/statut8_40x40.png | Bin 848 -> 425 bytes htdocs/theme/md/img/statut9.png | Bin 428 -> 234 bytes htdocs/theme/md/img/statut9_40x40.png | Bin 644 -> 320 bytes htdocs/theme/md/img/stcomm-1.png | Bin 431 -> 300 bytes htdocs/theme/md/img/stcomm0.png | Bin 914 -> 753 bytes htdocs/theme/md/img/stcomm1.png | Bin 874 -> 844 bytes htdocs/theme/md/img/stcomm2.png | Bin 870 -> 837 bytes htdocs/theme/md/img/stcomm3.png | Bin 832 -> 805 bytes htdocs/theme/md/img/stcomm4.png | Bin 922 -> 894 bytes htdocs/theme/md/img/switch_off.png | Bin 1252 -> 1128 bytes htdocs/theme/md/img/switch_on.png | Bin 1228 -> 1111 bytes htdocs/theme/md/img/tab_background.png | Bin 129 -> 125 bytes htdocs/theme/md/img/ticket.png | Bin 1034 -> 940 bytes htdocs/theme/md/img/title.png | Bin 1607 -> 1540 bytes htdocs/theme/md/img/title_accountancy.png | Bin 679 -> 567 bytes htdocs/theme/md/img/title_agenda.png | Bin 750 -> 550 bytes htdocs/theme/md/img/title_document.png | Bin 570 -> 322 bytes htdocs/theme/md/img/title_products.png | Bin 410 -> 314 bytes htdocs/theme/md/img/title_ticket.png | Bin 234 -> 124 bytes htdocs/theme/md/img/uparrow.png | Bin 194 -> 136 bytes htdocs/theme/md/img/upload.png | Bin 296 -> 236 bytes htdocs/theme/md/img/warning.png | Bin 392 -> 241 bytes htdocs/theme/md/img/warning_white.png | Bin 316 -> 233 bytes .../md/img/weather/weather-clear-night.png | Bin 2433 -> 2276 bytes htdocs/theme/md/img/weather/weather-clear.png | Bin 7724 -> 7439 bytes .../md/img/weather/weather-clouds-night.png | Bin 4481 -> 4363 bytes .../theme/md/img/weather/weather-clouds.png | Bin 6414 -> 6267 bytes .../img/weather/weather-few-clouds-night.png | Bin 2328 -> 2212 bytes .../md/img/weather/weather-few-clouds.png | Bin 5858 -> 5730 bytes .../md/img/weather/weather-freezing-rain.png | Bin 5360 -> 5046 bytes htdocs/theme/md/img/weather/weather-hail.png | Bin 5421 -> 5090 bytes .../md/img/weather/weather-many-clouds.png | Bin 4502 -> 4399 bytes htdocs/theme/md/img/weather/weather-mist.png | Bin 1617 -> 1524 bytes .../md/img/weather/weather-showers-day.png | Bin 7300 -> 6954 bytes .../md/img/weather/weather-showers-night.png | Bin 6327 -> 6123 bytes .../weather/weather-showers-scattered-day.png | Bin 6533 -> 6317 bytes .../weather-showers-scattered-night.png | Bin 5322 -> 5171 bytes .../img/weather/weather-showers-scattered.png | Bin 5210 -> 4937 bytes .../theme/md/img/weather/weather-showers.png | Bin 5373 -> 5138 bytes .../md/img/weather/weather-snow-rain.png | Bin 5857 -> 5406 bytes .../weather/weather-snow-scattered-day.png | Bin 7257 -> 6823 bytes .../weather/weather-snow-scattered-night.png | Bin 5912 -> 5583 bytes .../md/img/weather/weather-snow-scattered.png | Bin 5336 -> 5038 bytes htdocs/theme/md/img/weather/weather-snow.png | Bin 5691 -> 5332 bytes .../md/img/weather/weather-storm-day.png | Bin 7792 -> 7437 bytes .../md/img/weather/weather-storm-night.png | Bin 7772 -> 7471 bytes htdocs/theme/md/img/weather/weather-storm.png | Bin 7563 -> 7261 bytes htdocs/theme/md/thumb.png | Bin 12645 -> 10820 bytes htdocs/ticket/img/gplv3.png | Bin 2666 -> 2477 bytes htdocs/ticket/img/history.png | Bin 2191 -> 1950 bytes htdocs/ticket/img/mark-read.png | Bin 1014 -> 924 bytes htdocs/ticket/img/messages.png | Bin 1778 -> 1306 bytes htdocs/ticket/img/statut0.png | Bin 234 -> 124 bytes htdocs/ticket/img/statut1.png | Bin 380 -> 212 bytes htdocs/ticket/img/statut2.png | Bin 419 -> 244 bytes htdocs/ticket/img/statut3.png | Bin 363 -> 235 bytes htdocs/ticket/img/statut5.png | Bin 329 -> 189 bytes htdocs/ticket/img/statut6.png | Bin 470 -> 271 bytes htdocs/ticket/img/statut7.png | Bin 341 -> 198 bytes htdocs/ticket/img/statut8.png | Bin 272 -> 165 bytes htdocs/ticket/img/ticketsup.png | Bin 234 -> 124 bytes htdocs/zapier/img/object_hook.png | Bin 360 -> 219 bytes htdocs/zapier/img/object_zapier.png | Bin 683 -> 417 bytes 959 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 doc/images/dolibarr_logo.png mode change 100755 => 100644 htdocs/holiday/img/add.png mode change 100755 => 100644 htdocs/holiday/img/delete.png mode change 100755 => 100644 htdocs/holiday/img/edit.png mode change 100755 => 100644 htdocs/theme/dolibarr_logo.png mode change 100755 => 100644 htdocs/theme/dolibarr_preferred_partner_int.png diff --git a/dev/initdemo/documents_demo/medias/image/myimagesforemailing/dolicloud_logo_white.png b/dev/initdemo/documents_demo/medias/image/myimagesforemailing/dolicloud_logo_white.png index 3632504200d0f24e6f623575f37fdaba4ef5bf34..88c47a678b5507ace3cb78c616275d87ff31fbcd 100644 GIT binary patch literal 26168 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 literal 34227 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 Vsj$$4%YP^e16|{r)d=Uf{{tCnxw-%V literal 9827 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 diff --git a/dev/initdemo/documents_demo/mycompany/logos/thumbs/mybigcompany_mini.png b/dev/initdemo/documents_demo/mycompany/logos/thumbs/mybigcompany_mini.png index d430eeb0980980e222bcd8005dc57a7b1801a5f7..8c3dec79a75e9a19a13a316ed452c29639744620 100644 GIT binary patch literal 4435 zcmV-Z5v=ZsP)d&8EFv<9W6o){tjXgzIhmd{ zIWR7|OhU$GU5lb9s_VS(H0N~Py1Ql81z-PFU)?_Uo<5i2`_7;4ZSp8=yIQld;D$0U;aW;A|f0%WoMtQO-Z3O zKz&-8dS7vIi`V4I`b1}sG5N!X6J=PKXKP;GmyGzDI2aL~J(fFP zFEczms70l^EJ&|SO{GnlnK#+zYM?GPRo$dgz3DY+k|lY3OlQMEzA`*~c5`m-uVUxd zrKQpOtgMsqK|!G{d3kM8Q8eb{eC#=Ck^>p~rn6zghOwQW(3G8hU9;0cetmkndSiC> zu0S6jg8(lt)94v99A7Ccyj07tv*V_$tS`f+P4j$W)F>j%(%ASZ@5z(h0Z&J3Yh9=q z>}F?WMY19yayG-wGZ)X$kde{9Nu_G=b#)!Hx3V(lSXEWqqO`Q|XkTCJor@QL$UHzb z_XgVv3fdOUof`lTLTt^6zAc4?YkXZ?#_U+Lrf6|uV$VcVQ@TDg^Tz7zY{k;-Y?CU5;v@?XB0+4<&hCT= z!e0mpu|HZ?MnOJhM~2lYDam9InvQ%Uqv1{Y`PCaUGWvwuZ=65BcSU02B0mog{a4D$ z>N6uF`%K4&)& zD>}OGP<3^!m!spjhTPo7jgmDs&7ZG6R9sBC2y_A%q&wdL$=x9q$At?=@^>RYCMGI6 zIN0<=ef`_v-rm$~{CN5z-25lUkJGPCpQbI9mDJV7h8jZ%^JdOe@2#lV!#qKQN>#=~ zh{zx4fmN&M5qJPVCxF3Xdc%g1n2-?DTBY(;O%f;KcTP^{f;n@7qC-L^9#%PzMVOjW>w$@u987#jh^O$})#H$=|G0-V~t(UV-jg zu|g++!9@NXKR0H|4eT0DrrwdaBV;z4&w%glz_EThAu(9%3BnEIW?w>DALkmMB+Q!SityWMy3}&CGPITD>}S%d%y^Pc}EFh9KV%#D<52(0}~)n}&3`2=-N1vw2#eBS?3b zmw%lS8R?!878VYV(j`0rs}vftvtONPVPSs951~5K2fH;WiDVXAsg4P<(D8 zcVMoBtYGuw3F&yAkV{yz6XU*MLR5rXA|c%=g!GWd)#3sJr?sM1-?elpJy2Ro8x#tP zhdl2GxVbqr6%{2{=I39xGd9-lYC|B{%ZvW@(@(UUkuJamP=nAQ<_fr2Tho^1%de(J zMFl|w0ca(+OS^{kO63_JXJ>o#3hqV#eIVvXcme&<*s%$Oyv@!5S^=0q7l1Fe^B6WB zfq58v1HO8MjAQ~}^VyoXvtBqM@k|i22suKyxe-z_m5?=JJZ4}GcVnzG21CPv^#Yh9 zB}2{T`1^;5)-EIB*oF=2FHfKDL@gh)X~l{~tJBkOSQ#2pLkan8S6dnw&=b3M4a9!7 z`?)8$^369i*xg+s796=Jus1QGwFL!TTPrK$P%gS7+%v>J;vnJ;`g% z&p&jqwN-iT%9X394beSUg;`*zy-x4+SD#QsYkd_b|o*>!EGV33ZP zm`at(?%nIwsSa=6JnMtKd%I3;+(;WUGY4{x{QNdWc)0hScmO|;gyY4zguFT%u^*q? zajsA*04x-Ou^J?vodEKp5a&6;g~KEvAf1DMzR5hn@c$qHUkq_w4WWD-LP!|yyPkWU zp(TKn(9p0gysuv~kd^muTez@gWoD-N;f99R`lU%Tg{vICG!O~I)L|m88*CvMVA3xsvdt2ML`?qdYZpzJlQ(AT4<&s}#y1U!n z&I3#Vc>x1r=mokXKst7DoHPVH4R?+4=WGs0&&RO?_#H0WR+!u(iW-N_g~KQ(LUBt=Hj zjvs&2Bzs?f_8DERQc)*f;tBY=xzY6~=PD8R3lb8v z>=+9dK8nX{Apo`}8;^%z(y+T(*cgXf$ptV2RRSYBjE5Ac$dn0Y$b|q^bacqexw+j4 z0sTdZiAzkzkJmq5SND3z)TwGIaT(7)Pdl$(W$|58;gXIO5ab@xVq&%}wew6Ks~c=ug;?eBl5zhAygm(QQCX(F*+LPAiG`sJdcCT~Ya zeY{%MiuVfCczDzi9~x?X%Mic?Fakt^cqOnz9|SM~q{{?=^9DF~nTwzg- z!3!))f;hNGX@>yJc$yLPvO3XjaLc)*}086x@X3Q{%^Y=GlJphBTW5;b> zzPwH9!o}z1>FEO{pQO}dF`o&7eU_g83VA?7MFnlHs-hR(ew%i6bZDDIXVEPThR2Yu z&qB+gs;bkIY;5${OQrBWmQ(EPp3=KTA~+eYJQXCkfH3(rD+qvH15u5H+i)P7kP1c; zuAMbtn&8IPVDlxo0et8p5ebOyOu~5r8-?W%_f?qF0dxY)BXk1&TmVDUGy+(*tWBG_ z%h0lRt=Q?eg?!#Mco6n|8&m=E^`!zJ56P_Irejdnv7P!XbM^OW_7I0BA7j*RIJS7l0PupFK;{5h~a^Qu6tI z9=ZU)h(0gb`r*dU8neXiJ}nrPgvk8)u|1G`j3F-ok*PDVc>b)bD}6B{f|kd}(``$Z z&_ChQZ~plw{g(g)!5|mIpTGP0o~+*l+gHhVZCr58JKO0b;Te5ScCuu*7=K{KAjfNnL{g(-LIQBkFHNlq#qnO zpcR0ecp-*g(IMP{JRs1~k=6a;QSrZf0N@@4FcPQ$dVntAOWZ0hWXtzsKuGqmy3W^3pI-t(Ye#6(HJ~0h(KF-CPXmpnP=!^Gc#(z%Ri8RKOW!=pay(z;UNz2 zITwNVftx@Z;L7KG3sB%PU#|za0sIJj2>i-L7R%>X@cCU_c%K5jd>uh@JOA#RzlcJ}vM<`ko_Lh(f^MNbNVkATFooDAnVQnWcQ1f;KrPuR za`OXvI0@tUycGZi8e{@Uw_dac0c#aYQ zsQLBbTwIjzd}c~6h*$abBYeK%k%WNlD_6F~Vds{=@B)&Ek+hbdVw)~T+hd`A_3#$rvKmp z&hUGF2}DV}Pdz8O6KLV$?3ILo4*s_YbLH1h0a81_@AdH`dM?OKy}ckJkp?t0<& z*TC(U#>LS$TU)g||NAe#psR5$+25bW`})%F@U)N#;OuL!X_G!L#QiDO*3=Q5MD{WW zOZ+Bq@^2x4!D>PPO7ie*Bw!A_`N)z#VU-mXra}P11Bj%Lk>6NQK(8~`50Wq9q0VBI ziOB&0^aYU5GXB3dH){lN8gB{B0QoHGa|8KKAYYsG$;j6UKxRC5;Wz_4_1_Z!BOhSR zpc3FaJO^Ope{$jkT@V#TQ$ctw*kNOalb{$)eMNBdbvZfo*B^eMC$?;%s?boH z9u%Z$^Rj+HG&+6ZAfF|D0Z97(7e5LqL8x#A`3^|>Y(>&1eHOrBB=rE5l{x_oCIPTo zpS6OE5c|)bIz{pGZ<-78GeCY4lD@fkP7s5*&)U4t@{FG)ecLu{poRFZ$oP@;iHu)h zQ0D+T0qoq_!7~055WfPY-A=T8TUM;lkgo_178$?1&8toNa*-P(LnJKYw-On@{0(90 zaqtL0XRHkTaR2_RyH~HKJMqI!c09IzJ#EH20F8KOzX5Ls*TKD4<7waqw1O+LvS_(d zNy`)pT7+J}%G6X^iqGqi48902Qh*SW2O+88Np6Kj$TwbVYWi;rKxa`A5yKZNm9Bv2 z;`#G6Sd@|BxsV|}-E(1DnkRk_002ovPDHLkV1nMMX4(J% literal 5383 zcmV+i75M6jP)Md_4xEySy|n`vV5}CxTa!W70Xg93lq)IN)uCaLPbU9;Q)uj^uOr70Y@9#wYXVW zU|_(4$&*(mL`T2bvs*WpgQrjbP-!;Tw75h2g{?XQZAJiRM@N~IkPtdHCMMZbS~}cp zHoLhxIu3atKHm3iPR`DY`T6EneG_|UEgFF~A%L@!lS~~xJm${e;ML_uV~o)2J2>D_ z=TK2n64O62vfIU?qEwKeyhTrKzo^wlpw$Tg%hyf2>#jk4x^`V%Qd%0uCw0*2#KmAR zR##W+Ye9l)lPSD+_wKjn6c_KjSWr;XYHwrjsM#aXssuoyN98B<3JOXx8jYQ4`8tFG zoxzZjcKrAp;?()oBibW3tD9aT8#h>4i35*adG$e z3=CXeURLJIWFNVIEtH>>a`50&Mzc9TD>rvjba3#%N|VVCo%%OCJFceUS3`& ze#_3Du_PrWEx^~;>4hm%HhH+Z4rD)-RaGaJZ{7Mp>My@!Hvh@&S2Q&O*X;p1b?Bg* z|KNjjy&WB2#q`dV3T@}?Yy*FMi~{`xfj;PhYTh>sHqy zqfwS@*x*@hG`=?=Dr(w)e*E!~I=%j5)i3<->E7qn^jX&17j937!2h{a&u>%EGtWXAU5{>9jU30ZBI{k z;?f^-1gU|wA3AZu*|DZ3cJi1p`emPeHb1&sH#c2PO&?`;fLTISW#v#;H#bZiz)h71 z*#!lg;QUCnSOn74Q}=E-uOpf?_8?OV!)-b&BQMDmo~7)Q};5gMx!Utf{CNRSS!zWxKh# z)k( z8mB#W@4eo~E?s&&$i*ekpwqpEe83&yL@r&pAUFH@iQd311iQ4=2-r*jDu3*N0l|q; zQ7emziUu=zqw+mHJWga}XHPm)SXg`C;K5s8UA8O)(>>`L5FqzYoG6Z16{Ik#Ge-yk z3C4~bDJ$2mmAyxgN~y^->dC27*Bv~0az^f@O9i+2`7Je7RCsYpn3J6?KEA%qe)n5M zMg)sY#)Z``7m)|p4kWI{wMEq;JCBNd zRV-p+c|Vc&Q0}x>0q`-cvV8r`qohN8m4!HVT0MmxK>{CvKuYFt2g zxL16iK3^6w}1JUl!ySx>T6BiuX@AHS+kL_{!F8=EtV=8o_Lej@H3$Wgn9Or;fHrX*Z~ zNME2o0*xm-c1Am#_huOeN11)FeTK;5Eh4>gM4rN_9#1h;dywBm-bDQy+BrI6AJHI8 zZ~XS`P~RWdHEbGht)D;R*yIC^yYtT2;Smv=ii?Uu@?ed67nj;$lPBk#6ZzNu2?>c8 zva*)Gziyp(iAnK>%3yH`_#`ZQ@9y2oZ;FGu=u@1RCtqyeu9Q)<_DJ+(aZ*y}+k=8O z3>Z4p_f&E5xc2Sa|4KTwLqh1~;W2F1$dT)(#>GWwBx~s88b9i3DBnO)ouQ04C?N_; z?vJM5sCCL!!w?b@M0Pro?&FUBmau z&B@C8^zf-u^XAT<|88VV%%Yw9_IXyA>vwjkOb!+mRDne9rB_~&9b2}DxvWfa_ot5> zk>{U#P7a?uSswzlw^O}FaYco^lbq~x{`m3bk&%)8Jwiig_lb|s3knYx>@6@cjOo|4 z>*j~z<9jzXFnpF1BKvXp4Q_u1l*F8%0A*V(uf_S>cxD|!!Xxk&?r`;N=XzdbH7E@i zRxb!2e;I^pL86)H+X!+Tx|TL^uTf|-ty1K`S&^~mU_S=gwcZRY?|ftYZj=BcqNC#m zg@mlEsHpIz6=RFH+QZv>+1bj7SsJ8a?W5vY_dxwX=w`TqNM_>QwBd7m)_E~ZD@Q}aH zn!C`?c0~VKY#wZC975?WSlys z5a;XfznAAhg4f@9M*@-AKeJ$g%zWx8+4apg^25G;!UdhFQ>RMIpg~GlID8|-g@aJ`6MMpFcs9p(q}z1cC2p2#*L3WJbZXjjmh+A zJA>hZ!QK7aKN>jAdNX11(8OG{^*RQ33`QqfS~mOmRpc{d`ls+b!Bil$y9zE`A)6)$ z4a2d2p$`*@L_3C{Ea0kd8LCCTK=~|$llkNEddNZ877pXaltu~g!ImwlBm4KiRj<=I zrR>?0DRNT1Vu!M6Mj>E$9~VVbLPllB#>JFKOH-!8<&_EhWw!XuS=Ic zfoEEH`r^fc!y7)74|JZ=5 zlmLvkTYmVV;ED&P(jg6sRV!D*{RfAH$i$g58(h2M;;r76Wax~9ZhBZ)Ju%dJGiDGQ zl9J@rB}=3XiJ*1=S~plKuKjG!9$MZX3M~D7;#!R`dr5&tki%UTEHL=tSwpF8NTuiyBe{6H}Zjnixx>H*8M3B zBthS;pnSd?rss;=?yBA&Nxysv{H~r0lx|8Bc?{=fgn~3Ade@z?!vj16PqQ9<((M;P z@%xccUU$FRGq>ik*#yuQVLY%&(+jJDBmjxP@?0n~1Bqd;`1tx~q!n8bK)cphR3zJw z>3_U>wOqo&5X;$4IjV2RX=DS5n*YYMycd9f0L&H0FvjTnfkD81fFig@^(m2L?YuRP zn0YXCZflLc+PaTs6Mzrof~8<8KO7rAdL(|DVyVPKX=xJHub;SbIta0><2jdhcOb+6 z8X=7w->XA)81UdtYfvEu7upWGoCx8H8JFo(vo1X@75oxVj*9XT;U@5@+Q>FkU zAon$R%|750Ad8idb$~nYGB5+c@`daKJ_2~ZMF3|WipK)@4(|e-YR&Vq>qkxn||~en7I}DXOs1Lo(p=G4b*AR7h1^ zUM@x?gl4oM39R#mCg0|AgGca_7C#$6SXYDt_Ol9l2r6bGzz~*J{s6;CwhESyQh%r5h($n&17ZNK6TtH;=OX~RL@Ie9Kqb*D`2oD1gqQ#@@f-$F z=_G2VdSn~s4kQ7u83T}r-v9#vk}4HwQHbFn*(_Az%}^E=iR#@xuhf*UDvU}!4gyfo zmZB+?<)t7=H8**HDxC96A$|db#U1fNF5!V3g2bSAV3OGaPY|r$n+m^{^hV)50PBYX zR1lRzrII|BG9M>c%2#p+T3jliwWk3Mv23i?)2k3410)geMHvmyx|ahV03^d;fYz-E ziNkdZ-s35N_uw;{0D2|X|4l7_2uBJD!TM%Pvj{-z$F{B91SMGtW3?8qsp!J|e5r&> z*TmAA6#`)6hx`3hKEdAviJ*NcOvTfyDAzXowFFaiMSL5%vkVMSbLZ#=a1h7;#a{>*DM?haKR6cM0 zCO|9s3(x~d1!zUFKqf#p&!jH_SP5_d8B1xktAXp0hjB5-mBg6_Fu!1q5C)J$Q2>+0 zXn=%huF!LEc0-RsPqVhU9ay%vW?rLx&6z!0=i=_J;|Cd*)~_UgP(IzaBjWb3@#7o5 z<155&;0FsA%9rcc3wQG2}8`@gV z?Wt@k&GH+=U%LcnCR!&%i!@`)$dEqBZ5xst+B2 zx572KSOwG)KF#tqLa;g`wvEnNT@I zTMF}r~1m-%8d1LH;`i_0FGWZK zwY)$%!t$9!YGP^m4Zk_luuGeaK=TLyMNnB<><){HlAjUt5B&VIvXNu$_N~u<+OtPW zwM8J+@|p2#vkJbUGRv?yw#i%DJ8c*N+X+xtSL>|T*9PIsACiDewfLJrslc*t1U~hm zBAF93018%?cGdXK-}p}>BoMO&AN4r^RMpP lhU@K3>?2?wfj=05{{vWb{FOCA^$`F7002ovPDHLkV1l(lY0&@x diff --git a/dev/initdemo/documents_demo/mycompany/logos/thumbs/mybigcompany_small.png b/dev/initdemo/documents_demo/mycompany/logos/thumbs/mybigcompany_small.png index 796575ccbb5266be87c013a2f66aa636956eaa08..fe6101e55b79ba243ff40baafb0301f075d8cb86 100644 GIT binary patch literal 6627 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 literal 10586 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 diff --git a/dev/initdemo/documents_demo/produit/DOLICLOUD/dolicloud_logo.png b/dev/initdemo/documents_demo/produit/DOLICLOUD/dolicloud_logo.png index 6cb078b8ef964e47f53e78e36fb83658d67721a6..f18350d75db71b2ffcc6411ababdb8ad46f7ebe6 100644 GIT binary patch literal 27269 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�mXT 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 P0JzCYDoIp|83z6z*wDPC diff --git a/dev/initdemo/documents_demo/produit/DOLICLOUD/thumbs/dolicloud_logo_mini.png b/dev/initdemo/documents_demo/produit/DOLICLOUD/thumbs/dolicloud_logo_mini.png index fdaaedc73ce9ce34e887ac5b97bb2b54ac696291..bd2deb60da407bc772204c5e9afd2147e93e7867 100644 GIT binary patch literal 5696 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 m8U>?Z6pVsVFbYP&C;$Kq%B$wogNAhg0000Ct0 literal 6329 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 diff --git a/dev/initdemo/documents_demo/produit/DOLICLOUD/thumbs/dolicloud_logo_small.png b/dev/initdemo/documents_demo/produit/DOLICLOUD/thumbs/dolicloud_logo_small.png index 948dc776a7ff883363fdcf28c3cc52b5587bbcb3..4178ac51ab470e1a2627ab3a10f40673b3650f1e 100644 GIT binary patch literal 14589 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 U-ZXJF0TU5}r>mdKI;Vst0LbcS;s5{u diff --git a/dev/initdemo/documents_demo/produit/DOLIDROID/DOLIDROID-dolidroid_114x114.png b/dev/initdemo/documents_demo/produit/DOLIDROID/DOLIDROID-dolidroid_114x114.png index 88c6bf0c3da46ec8c7628c24c48f2073ca1de37e..8ad1bf11bd9331e92601e5301f8c6d2a4d8c62fb 100644 GIT binary patch literal 7728 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 diff --git a/dev/initdemo/documents_demo/produit/DOLIDROID/DOLIDROID-dolidroid_180x120_en.png b/dev/initdemo/documents_demo/produit/DOLIDROID/DOLIDROID-dolidroid_180x120_en.png index 4d00eb5e543dd51943c0f2f668485eb2294ae2f9..3a3d04e938a5d4acab93f19d0cf1522c2525b29d 100644 GIT binary patch literal 9915 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

    ~ND?|!uW>Ra`nHbm{a~p`u`n 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 literal 12345 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 diff --git a/dev/initdemo/documents_demo/produit/DOLIDROID/DOLIDROID-dolidroid_screenshot_stats_720x1280.png b/dev/initdemo/documents_demo/produit/DOLIDROID/DOLIDROID-dolidroid_screenshot_stats_720x1280.png index a26251d1daf064ef8be166e0cad358a91bf86732..49f0ce1a07ade544860ed1ecb9189f03f957a888 100644 GIT binary patch literal 39425 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 Xox6o|p=)BuK9uFvZxzTsc>4bU>v|xL literal 49103 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

    D|JufVd$exhVTsfBLFd7QK*4>0g|Rb^0W=b< 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 diff --git a/dev/initdemo/documents_demo/produit/DOLIDROID/thumbs/DOLIDROID-dolidroid_114x114_mini.png b/dev/initdemo/documents_demo/produit/DOLIDROID/thumbs/DOLIDROID-dolidroid_114x114_mini.png index 5c69c05fbd4957f87dee42f9706f0cb6b0310b4d..d755c700a4aeac67333ac413b96a1571f32dca82 100644 GIT binary patch literal 5419 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 VOs8qSRmT7T002ovPDHLkV1h2segFUf literal 6032 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 LNkvXXu0mjf=Syc> literal 7847 zcmWleby!n<6vt7KcM^g~cQat5NOvfc zT04pdXwPwo{-c#Vr=c8t<9 zDOLGuH%80Dg$vV3<^WZG(s1S@RRX_+sY3Y+H zYIiUbfj(AjKP+>%Bgex(Q!O%_Zf2^r{VmSOPW&W+PV&dkpF~ks{x}T~yjkSXnx_hf z zKVPSLMi(Jwl|Zt(y3eQKzOrpWDjXAn1hdGa%V0c=nenKtfVzeT=9e1p#QZ!=S$U9H z67pd%ECp&D?_t24iJ1~-RpSu#-K8KUCH;*?^HNl*qgV>Yc`r!h{vKbF(X`bR?}$}Y z@RVDaq8lK3`u!Wn$?9yP-kV9}KK)?T=$hTYpt0`){NgcoMjEX8?3;wzl+|+jzf*91 zcOI@*OW5c#8zL3W>>kBvUEFR7J65>b=wADluCrxnvg4k9t^F?=yI4VP;_+V9t9(s% z5zK^JYh`_E`>YT*I8~TnpiH?Qo|la|bytoCLnoTWAYgLSZP1n>SOo-?P*4|Fp^rxpKrnq=BEqqNOF!Z^+UGnpcI z6@zn}m1eM@Kb^yF&YY#%;IMLwN771cUC4Rk9GUINTv5dHeK;o|B}G-e>$v#M^a3wa za-1oBX;@XkYr2n(0h0O?oGeMr2n;fwU{(DMflISkGV|9I4LXqXwKytp6u{@c@fj z2+okFVUs=AFIh@`SrwH;*3d@OZmW1y45rxzf!Ve{#fWZ zizS9A_~$vJMabVu6_$Wm(NBP5w10C8T4189ur-qx&*0{VM{_>b+`m+V%r1Av9(ZhT zbJ(MfO>^3mAT%rK=N5%-UozWb0*#$#L;~+ zcsKdJ5Rx3=8Vu|2n-kFwcgAGE%%N~HDu?>rUnWuoW%k1l@&m4F1GWnC%kFO%>pmo6 z`^Q2X7+RbPEs36d2zZVfVGdVeiKwVxSzqrEvaW~PZ`iBp6ymvMv`DZ*@n;9>5Q3x1 zu#Tv9^a4y?|3!d_K#r>W-WB-WIIWeK=sT+{+ffMvhZ>KT4MGb0{0{H!SsiQDoLodQ zmwzj($4q8Qg(2za>F8YhojC>xn-a)^s-vWZWDYj%8cJ0c8bs#9vJ;~Mzpo!tWGHfG zu6^$>28ktR_$;nCcnS{OB%WsbeWeRJEaI4MSUvtPj1}QMX?HfdMKH#PkQ^YKRK{QMhvwbw81TbY^}!Lq zI$#2@BSOsDMa4sthf%$s;vmxZrw?6QVOyjGX5R}s{T zU_GVfxN%rYrcip|V?y}C;MN4*Dm-U>`_&m@M*iS8!?72oJxZ1H;WG>pwIA%9Uu9Rw zi7P&}_mPui<>Jr@gH%AD*wxa~*xlYH-mzD^OnH_a@{UUnPTolgBAg_uoijGo#c1AI z2VMZU0t&}?#ue1LA~ylLc!Yhz5MbgNT2+v1=gI9s+nb^A zW`YSfGxE(dI0v74Dsu=u(XU4%YXT}P=}SKv(7SR_RR>+#odaj1@=f+A`DCIO$snNc z8*VDF78te(ZVt(eA%~`gj$83F%WC=aV98AoXZe>BKRaVjVS9bWFIVA1N6B9JBXP-% zh&C#*a*zQDzP$}Ocr2QanuGSu8l1W}1%Ev5g`l{`fB--1T(hq@!e{gYlEvh`CnNSO z8a{wMkn*BK+&%j;IN>#K-#XHD&{D@5s><-!!N!I>fMcsOG#!QJNp4clwuTA5n#}B4 zhzMT$k)Cp{*B{tM+mJS9Tc+3LP}l$EFQzq>N9OYa<1@#Y#HJ&%F3$s-FG7OP6ZTJK9!F#8MFhTohdx--Y?gRk z1Q!1BM0sJND=Wlr{tc6$`jb%ZuLX$E_odrca^f1-Fnq`+!t0-*;O9+eV{LX?XTw!%dBU_+ySULpqkpsuCv; z<0UmyUN$J)S`oLBgzA?S*Tnyb`Oq8~GTsLJt*?g?7gCWqt?%;SZaQ*qP)exXyCk0O zkaY;521j&HKEn27#yfmD|al zZ22K9=sxq$&$*#s9$3hi7?{g}Z(OS@^Gj0w$VallZHZ0s)xp=A`RmJ@Sj4J9X4IoE z3DgEE``sl&T9=9_fPYdjt}H@x=K7yN7Jhc=()l$%tZ}tP4|i>>_2Zd!W!qwL4^Z`l z8i`313#*aQ$eGf|Te4xVgYZu0eRsHABm&Gnrk_P2S@R(Ky=Da5Rn=~1X^;|@zl3!= z`v`L*;m+!sEM(g{Q`GA=e*&K)>Pr6pwc(-uf_>v<&(AeAIJvCcUrjE2P$Y^yd~pq@ zJrhfw8akNh5fIQ zA`?IeB7tdbNTIRYvu1Td!s6>&y(XkJ6;9Cox*JHLm@9uVzD~zZ>fghYreQ9A!o`_9 zN12)u;q;q%xqSv^u+{t^$AHymr8(IYPjFgu)iKw8i)-ZF7mp<+C5Mr%a{<7MNwr+@ zy(qCP2crmRB)#7+B|n=&{E-nPE^KUk4nrBDriTs>`KqtagHCnIsR>#QEhfdYeqT0Pfr0fhP500AzC zhUTvfCh8g({P%Tp6AY9{b#-;iY&Js46QT^e2^31+%j*U3rqZIKh=Bp6g`fjT-`zj5 zYQuvT2((XU6`d(XF|i+~ zJLrIu3FUuXLxx?w-+{S#$f-WSjniEr;=t;7dwcWo@yUqgvE^w1us#ZqFjkpONJz-; zV)x?CDga#6j6X5&t4S{r>FNmSCaQ`?fYQA;gScLoi2+l9x7*Wz2AuGk1ONgLm)V zWo2hGF$0cam%-CI%qCOq4&^|kBn6dk*7L;5gTZXseu#W0K!;coZ^EPX_pXSKI zO|n@tzF8Z$lN!C(ydP+t3;944@mh1^s$+CSo$h-k#Na6pYlhf{wK4}!Vw1bT^{CtH^W!wB5#7-h!_aM@jSA z6`*(pUk+QWZ%!1CjE(6SwH{6uTSN8q(^Xh>eyvD5wQRsxh*|S&pRi`^{I-s1GlH7t zW@tEkXpvIX??{Ppv{j`voPH9~!(f7hGm^zlEG%e%Nvs_m-w)D<<^Ef)yPE*Oh|vn) zf}ppjwPAU^?+BlRumLrpthySZ+TM?5jx==7bDh~sGD~adCx!}Q0v05^BYT##Ym=C; zdt_eEY>Uha`JsMmS?EL$nAo*LP9Wz4r4 z+MJ643u#p^o7)PoHdK`@bxF8eeEU{tpgX{wzBFs2FYDO$n2h|YhR-7;yRx^KCiogG z$~@loa#Z5xE8V!|8dET;6c#DR2vm#rgDZgAa|pPqmWc_T3{cyE{756>{(5G{SRK`O zaDM!jH#i(F6uWqEp3uLyICfp*ndC{@s6dWPV<6G1zJL*^9tr%prZ=;6-WR>Q4!aae zCl&T>;8Bjwuq$+?Lb^LxM>q<8y9*H)z3Ne(Yeq2pywpEAB`k8JiXo7jNP?8C^gB8` z8#km^6&LrW?(FPzepyDEzTrXNc`k&uGnAORKR1i}m1sah+I090sfl_YdGo1JR6uFr zh3Wkyf9UP{!R2;pViD<7_W&CZflC6HIob5Kws0r4}N*$eAW^;}OIO6<|P}(LoQLMuhg*t< z5He=1O*MWfmHLEWnp`Aew=MSmVk8wHosv7*&@+t52h?C_2C8P+eUKU{j2l*ngcC+49PS)tNQ9vzyv$(Yxu{JoGk|RQ*C_m|~2OB&f z)Y8{i3<;4ucby&CN6ecqm~95n9iIH8j2pJ0B<-q@S~Q#gOkYuU zG6Zb+@$*f4twcmk`Ay>eEmL{b6P2qdrIuiyx#GQ3m+i|l-9*e-G~M0l&nFNQffogA z=|cjNFE-3#WiX3f$0SWJ^>g<_=5q}9=4Xb`-N9dHlW_4IqR)Y90*ki;u+LkpQ>UI4 zg#B=Lp|joAd`tCRpv^BvlJuTrkAX6K(GZWQu4E8$ zHKs3v+eD>A2hgj7q#tX?gT|ma&X(HB_}g;?Fyo<{ZGIbmByIUYh>TAt^MSs+c40No!0kEQecMS)Wl&2_ zM0-8%9d69JJm_syo3pQ*)5hN*@;cT}_&I4-B7z*24t~@-GuhEm^0}L|_U^$?pTv!Q z`dkAla+cB?jiw7f99zm=jAvL9DcM)}0G^}f>Eci9xBfjj$uA*cijhM2PG#j~=yY7~ z%e3AsEiE+!$bpuR{D-)osNu6k%AkF2Lg^U}x5Tnbi?3PQDu`k)T5E#{2>0eTJL@Ov zk?Gz3?p*IQPG6*sSQ`sT!Ac4_zo8O$i#W+x^E6h@uj@X!lazx&52OkbEX1U{YC#*# zbKUL-N-0?q?18n(FKGw~u6%@QUH--r?#t-wJ6EpUOom_kA5{}l7N}Z%AcHO`C%`xk zFGDo+xMG?kmUP`jV#mv#A6^%_ry4&EI^SQ*?7p#^zL|XsbQX`fczHUiXO`SSirU}T zJxw>ep#pjGAXz)XzPVuB-ZTZd&>5OadhMx6^z!)fK*3BGMAKgK6A>qpALnq5)n;zFK*@Tw2{ zkflJ(i0#+(8}&=8{jbt&x<%-vU4F>fbjr%ly*_}q27nGHE^X|2l(*RE$jGkFo1Sm7 z?LV>wE4txLFtKIOdn@c^3cH*4(FedYOs zhevn&8hVNaOjs80@6Lfq2DwErFtBRWNzaL@+1Z_IO{KrT7_=J(_+-+w4+>V~7G|zR z&gCVg4zbjBT~+vvklwyJsFp+fh>3~$Uu~6L&Y-)LTwJ)^d!sW;`gCx-#4TtjOIDW; zDz(2sF%F~v>vnZXDJdzn`0i23%ge_lBnZ5GsmPhm35n*uNqqoAy;opTV0s1+U3z-D zppa05*M^3W+k(2_HY6qU*Iq-KA#TmXSW+WshUXgl7`^gc6%`K=sLlz+2HdrKY6NvC zTJ3tfMYmtWrKnAI)31DF*!E{Dv$p~tX-q;rb{opoFgxX-%JZM1HVEepcC3AUodoqf zzM!x-3}x!^`ktoXDSUQ7kQ*|rG;G^|{g6^7l&N+kG(nRtW9>#?pDk53r@+sZu5lV7 o7wlR$&IB30H2JGwoqtd0i0`6$E$!z9OrEh+6*UxU@B%)|d+-5hASc5(eg4Yq){+0!$DV_N@ZAjigy?ZOgVSX=O>4tjNsp#||?yCqFYY z-xWMAdPR?m9y1^FUGT!sVKXzHBa@h=-PQYQ+uCfLb7I};*j-aoJ-stMv(w*p_l)Jw zJS|4c^s&o8m%m+{7kHkRYKg&9=1GJkfpSOCClVaXG(9~%Iy&lbIB+z8)lq|p2RI%x zkg~<45P$-dWW-70ts>#+#||9J6bJ;)pFiK$*7le_KuJU-q=y=f26kOaE*K7n0W6q* zF#t(&wOYM%=gzfj*M5w^u}rY{U;WizO-@dNhm*(>34wsjh8iC(8SE1AC&>7eg;zV&OCK6&3Kn7$$I5afW(b4gZZ+ru@d@R7RO#k#x|J2>x4Qs)% z*VWYl0c5$wYM8UQxVWdM$LI5*Nk>hIk!uFX3JMA!gzafKX;`2z6bd1t0he$v=gyr& z^JhQ%*)ljjdTMEDX=rEwlarIPVZ#Pk3$~Zcwpfk+)z#IH?*n>QZSp2D@KQ#j5uptZ z2L9>Fl`HGluV1%r-J&VZve`Zyx_kF7%me4YY11Yck_<)+FDH^DQZF`2PV(s}Ii;ND znP;9^_8cGm&0}L@BWi=eKzYF9-N2)g2VS6Wtm|6y z1*hBoVa|&Wt8=iWq4lCK;7zV(B!KYbcrTV^6LJGj_ABqz-$)q@GSj4aj<){B;i-No zm6GI)w9IU+QK!}ySxVF@4I~LE1PC0yIpTNKA2MVchu-PG+Hn?n)A;nrw+{UT3H<%p zckXmwmyg2Vf^-^#PNlP&3Uc)3q?oX4xa~&IMKCk2=`Zg7*1Pt>+B$|C83hBr#8O#b zxo#<%y zf1{ap&)j#66K{9evswMv%y2Lg!8^=yv+vj@3ao|xkbm4Uwjf1kW*AVaBBicq-R95j zKq!5mSCa!1J>f_M{G?;t=l5yUnn(N0*r&(mMyaW1O$oU}Tty%U#F`hJJCe`KnMLF{ zs;pYID#`a8KwVVeIi7p;QJ9Io-Enqsa^Td?FE8=>7OUh1KEg$%n;g`7bq+2I@kq&} zXDU@-=ywLOMU*rS-yXCLe0BG?G+EmBgAa8&8|4KsnW$?f;|6B?FE?I9P*}1;1p*+j z0G)_ZkW?4d78@$nX}Z;g8*ze%8Di+LU`APqM5A-Qnb&W;N(Ok(R9#qS)fTep`i+&_ z77LCsMU0CHyjTlpy(fC=si%_oyDGQa?eTbE@{*Dgy7$CY+bgfU0tumHZf*|Hxh2w1 zfBMq{2M!!Ocu;aAxUNl_=b)GdlPugc8QU~+ufBA(#cYvpvD4#pcxp4ctl>7K z8VLle({+KmyYaN9wpQv1IqERsY+mYchEiJ8i`?A znvda|`kD?K57YNCJ~eix`HbB^hldznVk$kc>7-VzC5Z6&5XF&b((sr6@5O~8VBxG6;;!1^t5B@fO*ka)0<-^I2EWiL?wqS12`=o!ERzl{pWQ=dS&)&0`~@{OsVba`ZW5)b_!)%N=ir zqCse=GSm{3@c>(q5HdhMzki8C7)9KyA0Qt~a?SyLF2f~T@SK@hMFw+vCPNH+0?bhW#W& zfkL;>eYWLXh>LLigA55}$~$whG?cVnh8rZWt*^Nlq3eCVSL$F+OK&+KDYt0guHam^bJi6i^+r_S(kPXYU2`t zwhLnZ0XPI{`w+IQCMy9BqXAZr-vgU954UoFUOYX5-pj35{Lvs8RVru#5Y1z4(~fEK z1bnl*DYD<~x+$@QQiN#Oh_;0WLdI*$ZrPG%)=fl$yB z4M^Tnld8hL_SuHejTCBA)n=`E#5pD~ur**8?VaccvH>IDUh=fqwZ5rAE;cVwDwJ7i zDiNjvnHj1Q_Z$rP+4c)Zzj^^o#Cac*#gb9zhgIpjC;sBaOK-jP7TR+8>C4-c4r#$zWlV?U4A9jYv;c)R`Tjgh<5 zf7)xOi(j7fppNe&w1DIXNSKWz%){Pp(qSWOQHq7^0SSk|fE8~nQZjzJ?}xawxYE}U zjf43cTfdrXG{1K1t=6ed(th7LElvu<&%1ZLpu^<|2;upUk7s_m{|8Whqw_ZUKp>(j zVQ^T!{Xyf@&}y`qshQrW zAI(54(mOe5&NVj=cSwg)O@;=UisU)uHy;9d0ukTR)e}7hGdX9QaNeKw*zb+D1-YO! zFwbCxLUhJT2v~4nNSSdFu4I%UAtD~L!`S1*>A?;p{;IZ(xm4K88pS zemdy1%}ujv?a15&c^CB2tM!TAkbbO)mQ+?&mLzac_(zQ*`r%t6%>&Ny1@mR3DC>)A zaN0Cz4KBNngfDfSKR=Cj#U&It(TqY8lO#|JAt{IFQ1na=yw!7+ zup_69Wvl0}Q-!#niyNEGWc~g*TH-%me@3HJdm=t*(Uxp8`6nsBVK$wH%}mYk^C1X0 zh480m{suwH%LN`>nz6=26Vi_%I6z4|tw13i_PF_kKL!R(nNYFGx+>S4i%)iA$tp3o z7gK%2xQI6*_CZNgDC-KU@SzLh1s4@Ugj_;Mf?Rgc08a-?sCrO}*}OHC^{^R6;22B= zeaMij^J}^Iff;gV#0!Q>Mry{I(mM2kX6dwo92WPp)uwVu5)ybf7oY_|X|CE-Y$;SM zjqvNhk0&^Yl6RC<(9MAYMZEBgH{+$0&EHqI4VMtu?p<|TOll)1_E}IiS?lsw12o^g%#;=DMLf zvFwLCzGOC=>Eb*sHSJgXzpc+;v7z#UZim+F#2?it4U{&WRthEpOF$l%pqBe8phxaV zEGpwu`@dHpLQP6gs7N6UG497ZzQU%f;VR^1t)=?d`h7GIh={Ln9#R%_?$_5GRVvcu z=m$8D*Y4R_w+TQ@h9#a%xK8{iJV)X=hhD8K&{*hjY*6WG}1ZoiK@XNbSYha@k{ zL=qKF1gMpnd1`Yke(+JHtF)<_Ol3w+7Q3$Sb30dVz!h!$M< zGozUi8?YFap&(|@9rDaxJQnJ_IVUHF-TBVN9>b9%=}4GNViDY@UBtrz+=xyWrcK;P zXzLMyQYH(?V!~EKzKty55~!vKMV`cQ@PJ2zT9#k_3JhrLh3e+2Xa+Z=^PtR?RY=_{ zziQ)oCvOu^bqF(n`|i7M<;s;10AYacB*5N1zt>-X{lbL{W&iM*ScDMPr>d&j9;*Ty ze|-9@osS6QQwLHy?%DWekz!MZXKl);@6mpt`jkW$ifLD&-T1Qshw~o>3v^&twrkqt z46owZu5Y}w&l5z*fyf~!F1Rk6nL&*WoD** z^;LCwdCH6#!O_v~US4|Gr|&^Wj+}!BQ$PQ_!o?-Krl#rr_ffgb{rA6xa-|c&QKGC4 z_Upg14;kkSqk-*l7WsA$5MR-`MA(!GjwL3)uup zOHIu_dXz&8L^@kDkP|oHlfHcUa&-K}h+<28$dDo3mgmq# zS%0%RY1ps_{_&6Cn3$r93Sth3^nc>a*bGyqOyPIUnl%$APLzov#eSZ{`H@3MjzJS9 z7~I^V6B4TH>o33j@-xECtu+8Mv{Rg&a_E2*+9BkacI&Nn*5v%s%7-6*SX5M`UFOk8 zAJxcRv0??D;_@$H0tjf)YDof4y!hga@`c)fMGVgSY6_8r@4x^4_3PK4(_tVofef8Dj z#*I6ty^PtL^RIMWv8-(0zMYsd@XynyPv`HeufB>6A2w~68zm(r5lG~%x8A~{Q`nN> z+(-Msr2qZze?+~3*`7LeDgj&}8=;}0l>g?NZ^#8v_^axah_Om!&*bD}*maRe$!o8@ z7EYe`5TK3P34;L*qjnes=FQ`g!-o%(l97?IV8H_ZE?c%N zGBR?;j2S$FAb>%X_}i5{hp=$#6wL}f%!fGFvVxq=yl41{I3uj`d-dvd>#esE^INPq z3>%SUL=++d9%5T?#~pX1rKK?#zy9^Fmo8n(SCI%kU=;wX{`R-O*-UpR6BZKS6EVDH zq6iyJEnpJw5doHX5aU1Iz^a6#H)hP3E3dp#UY)Rz!dVSV>K10ocOPjn1V6V@`wnm@gn|GqZ)+_t2q337jhydqzFM0>sr5 zj}Ww#VFQOoj~>m|HUlQ`1~_=|AhZEvTHc`6!t9?kX%aK6rELW7fsOd`%P*;j1&$P= zAJGP0q7nQ`#Nxy;kj6m0NP%WxuS*qOuLL9HG*g9N!eI;hQ@bs`oNHNO*qH8r`qQ7d zXBHw>iMUPLwhnfj7om~Gs>G`ZmB*U}b_zRC%`j!QwS#t!5@nx%{&{$#n=ByAfV+vb z0?I?fAF=>Jd0I|ZCTO|^U_R9Je*OBvTR>gl10*X-*l)TCHbM{~353BD#2-6-oAN&6{EJ$(jA9Xleo!5piUai=a0##r1V_K&h8ws6pqi&U4$K5T-?^3* z<{wTL;+|!Kaf*$N6@P_S1?&B%pMHv@Ds(krVPRrs!!0topM3JkS+izw!!pFYkBW*S zCJA(vwMKOYht=Tw;W=P?DNHdEMMcar+&aj5|NZy*a#janYt9WNAtxZ;yYId$UnL75 z?7aN)%b<=}uy~t8)aRh7OJ{&!JM3?jw%>{loe0Q8x7~Id+!$;ob6P`)XgGPgzEMUU zupdlDg9iZyTnrkj1lV(Ke)F5(z=>=7tvDX^UD>+EQ^!k)O$D4ScDTD5`ArNnWRM(&MF;s;|g?CDIh2{0QlDimnW1nuZWzSd&MbX~9d!-WDZh-nwqvJ(c9Xe5z zmDU*IJU08mpqmMHBc8*fhs#M9x6Z1uvZeutVx4ky6UyP`ZmO>LOg&n5>Z}=3vzsY4 z*lYqhbYq|H!E+#aMg+J=_`7$K!?bSf)4g~O5ouOG%l_x?tl%gd6`@UZhSW(Zhd8#= zAs|dfoR=Zhc@B=uVXLU4_H{44^b&iJn3#ObiTif`IyFP8BL^dmiJCa=u#17cRrXn( zSCrM2U`$^up-6F5OfYAs9J-!^L2^c=t&SX+sczf0O;{(*o;_O}v5C{~Gpn>KCQ+i$;(0o#!yNB;fqe_<4fXo(f2TA@vvln!TiO9>MF$*;FnH!hRaMb<+z5MPh{U2r zi(Y%}HF;3RAK7u8?;~)W8gzvFV0qyg4u$-?^SlFqrt22oFjyLvSI8DsUdGAY!Q&{;L2q zMjoC5TCfIb`$2W9_#EQ!hn8@T3=wQ

    ~ND?|!uW>Ra`nHbm{a~p`u`n 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 literal 12553 zcmX9_bwCu~_a&8(l9q<0yQQUBkq+sQ?p{)mZjePnx?|~X_z2PsvcwY7ASK=K8^6Cl zhFzAKw=?hEcka38T%y%g6>+fMU?CwP;eeIoG=bMf;PAnC0sJ)FU3dguFkO}OJ&=%a zfBrj=Q`m7SkdSDRz;e>sJ|;(9zTYV4e6OF&VaNMUC5jF95IazQ%5*ojGKT^_$TB4O z_uH^}5cki@=*{`BH*b@uJU-nEO5H!aJ|r77`$S@HLBjA|9tD$*4)f?<2&#}lz+X6h zXvnSOwI&6t@XOwJj>n&AmD*jNHP&f?9ar70mge{$tQyV?#Ak;0t^c?0Y1V?!APRp) zUi}IU1|z^g!$fH6V_F%Z5ir=-Jt^J63YGc*yyTs4?iiTFH*V zV4JRJz=%SJ5HUzcd?km!!W4NmSs4D8ck^C{5Muc{b1for{ZtL2ek|ZB%)NH%naa3) z3rvwkRp589rTrK3jVUiG9i3?b&OgFuQeQw|)|Z*%)^pR6$}K_+ds4g^nVIDk6@^t* z@n$?xFc?~>GXht3is;{qieM_kuWyHnKURYWA3Jir(u_eUiJ#mD&jOH0k|>QEm^Tc`gB0!$eRE_4Pxu2k3z(Mb7cvA;+Z>4XZx*mXe~Or4>56-}v*};m274g+%J{^}fjc{e4Wq zG;_@92bx&KQAvIMYdSRQ#6eN(q9}{W?ekk(XJ-W+9ZKAnC!OcGlDUa5seNdVZ=#1V z{L&lzubqXQmeAgro6~vhj7iUX38*N8$9A~?`x#A`JP=EK@NPHS*ygEa(UFLVXlj05 zQBm8y4w zyy*5io0~5|A1v_sCe6f;RbMwaE}R;ULAOw6@lpok?ED zaTKDsyu55|X-Q5?6SmEX3=b!falN>ZmR!E1KFY2dE--Z$P}zKUf zPspq~H9ZXkaLs(?FW7*=VVBC`Q8 zHLDjrNmk$04Bsq3Y%P}E4x2gL8_tKlwl#IN!R97zMp?1LKa%|y1AM5Ec11JV9+zrx z-#i0DT;(nYhq-mZln3~|0^FZ@Q;(0G!+6-d!o$OD4g3Pn)q^bNaT+BTc|SNcH8Tn8 z%94001~Fe&*~HBd6@Dxq_EFvv|NUw8#-XguUSa7dJxRbjXLGihAMWm8$j;E|n9-?-+|SQ{=*kk0?Agcxi1c~=gR@R~%*~Pze3YKG$-Bz~&d}GaP`zm**!F@Gs?+st zz=uqscy03fJTE$oKW|_qxMYLe==vScPWF@3yUMXAt$81FWiSMc8S-9Kc?I^+d=Xcp zlh%>P2sR$+we!{|Wg>g^ntRt4lC}KaY18ev{i?#U!vp$Ll}0T!Ezi2KLo|ibNOeB% z^zjKvdakwv3d*-D?`l&HV@(irfFu2_a{2r(3L8G(U;Thk@CmO4@V~^PF6!>4MvCkU zUOU;H`)G>(J3;K&>_-T?HUK0mE8|fF3~#;u5FvGSb#ds`eo2&iN?%$sC{fMEB0Jh2 zCacG*!VZQV*ygVdKKL$70?CZJ2u8+t0K`Ig#6Jdot%V>FTX3F65X)Lte1SOcw zvvH~>r%|b7!Xi-u0)FA<34zSa&Gm<%W0zG|H?Q7ET>jGPyjpSq?(o0Y*SF`pSZT7w@-i&{a) z1I^w|v+%i*q0ZOh&T7jLW3_-Bj*ie`kEght9O{ZTMJT8brYPRq3&Q_aqBZXq!{8P9 zU0XuLKDqj!5t3C}*b)kTc`f zz7+A3YbRo1Q#~+ zBx_NX;)lr>gWrfH9&hc0WO6FImFx=yEng}c_)jvR*Im{ho6bbc& zm&A8Yr0%E&C&SrGytyCPHrWR0qDUGmN5?ADQK5N=wekIC(Ez`m6jID+s=*e1^IviY zUalU7ggt8yY*dnkO=i?2`fs)u)tSo^kossHToT-C;}23wwTfK zv!p;a($Gn{N`UA(8OXQ5t*Fk&Zv8xs6;rL2I+kuPUrx@F?loa0t+@zXoQO8Zws=1$ zuErcGOLq~HK3R>Q<34?^r?*HvY%wV>6I4fvW!38XDDRGUsNI&YB_TSV;?etk&+(w8B>Tz?bd}m-WOh$O?w6_ybYVpBWw(bVk46_7ngq3 zLjjNx+(^{KL0LO6Ys0{V0%6`C6dlqFn51ZjD1l7v{%`B{$1b>#4ymn7X+vppi+4|` z8cv@5v=_S0tlb~U!SC6jHZ#OR;YP>bk>@RDPVLHyV7gF~6e1GUm(hE}MH;zWrIDwf5h(U(yeZAGFUf_Xy zDyLzpYlpAVK|sEE(M&pzr8Gr~430_|dq`3=kZKADo5vBR&3K+{(&hxrN|Ht84lGoS!6;wFutFQ50=L-N51fG`= zV7GRt9!t*&G)DP_;D_K{Rh9}bxL|Vem9?v?&o6lSagRHV4+!>_jb$K%JdJl(vQO4$ zbqc4D*%Xj}VNyirakZ+Giq32U1Anh?>6rD|&xfHsNcM5OUr)Gk8x8x(7|byYuLmht z>bbE?J>O1lG}qj2zDeaa9Z1uy{0*z9jzMrKD`4OMH^^+iI3~*$k0}cg@idPb?%a!Z z1gp~OBj`BTYYQK@6#!l^zvZj&kV)XBBcf5FgqA$Xt0 z_|PhWJglS!LfJdNoFzVN;1Ye;ydeX%Oc2Vcy&}MHC&KF&>Cdv4is#y=eMcyr@Qa2Y ztD(B^k9itu99NcNroD!|PZyP#b0)hszL#>8bs$$*ZMe_`qW(m}x$Qs#3FRo);NWF1 zPdZ9;Eu&!Ce3gIhT*XHUbXx2C48fpR#bThPsH2McO0bW(N89nmewkIWGLx-N;@+A) zj5%bWndukC`qGgC4Z_2?DiuGROV7lEaI>Q3(@{5$qvU0DQ;>&ug}IIl$@BtU05w5< zHT}*q%H}@7RsJT8k`3Yw=P50+%B7yG)@rlJ7R6uG5Sg-e*tb8)N~gTCn-hfYJcAbA+r7RHI(6`oFcG3zcoV}N zjx{)iZtQ-&Hs}=VoJfv_$>9`;+f#5vTh3=G?Z8VSdbL4QCN|bRP^gj8AU={0H^3_=b=XI)W6nPLN*XX z_&on+(nc=v5r<|jQ*t{=9BHI>{FkC;E=~9O@$|Gn*@qq+BEa4q^PjblzmX0ey08%1Ka0?e1uNQx71P4W74 zW9DnZ#pTqaA%)a!TWqTDFC>0763s8smO!&7wuGyrI5erjP z8~>~e9ZfJ8L@_%4cqEYHGH@`w{_FOxRz3}MCLVgtLlL)73Qvjp9$9BG$Q12MfW{f- z)`zB-IL}!MaqE;=-bLw+b{~S2BxHom?t`S5a}(fyF`_==b&qxo3eOf^DYS9j<^%w9 zCkw1NfM~~#$m(}$J}>E5$jv?d_>6GPt4J~28@k>SzwFAuLn6+mc{r7F8^LX# zlRV&of;6@`f6GKw5}6DaB|p)%xMKv*QCf9Fb-gwTC>FJ?gfhq3GY5t?l2~GTm;c!5 zI+>t{U@W1mpvj!-(AAokmbjzTa}*M;6qp%oEL>Wf^91berDEvd2`84*i^g50@>@J; z%T9$vmAqSVM+Q=;U%#bx?|7ti{w(!gg1x3E3$Arsxil2Cxg2IF0s=F!v&TluZx+Ds zJ>ylIxU=xgib|uV8Fk#|C5VCgNx%^;+g>t)!UtQQy{DcH-a?>|b9~G{ent!a3v(rHo5U%s8$; zua6Ruk{Z@@I>p3CcHey566u7i#Jv(kw`j8)__XX?C|Qk3;MF(I0R!ScK8@{1)FsMB z4rM#FOOvt@y7*PUfB7q7N()nhlt?Agp?%M@7SmQjmsI8vwoG&DVY$@t?jNG5)b9%k z;w*;hKY&k_j&t0wA@v(rJzQqDTL*eZ{M@j8HscurS+<*iZc7a=(S5x=y89{L93!>{ z%h7O5Yy#C_{|& zx!k`wW{#S$fneNyBneTqrX>T+oAMg!A{f#ED1ACZ*)uWNYtx zlDO=NCaqo5TCa#&{D`v>Ug+~(&2vG0J=D;-4V`DXrn;I-R8$lY7Jk9u8>c>Gyr0kt z6%!Taz23ZeQwD42N!yqCnm|)S3_xV-in9aBvnOvPB7LadF+Sm|l?WS1EJB~hQONLD z7J=Dvo*BbmEi;t| zqC%NC@)`vj{Uy@SB9@jHy}o!aLgBtd^5oETXc+iJ zwLL^h&Q$SbF11)H$C8c0fQ$`NUQdsd72T_!ZSA6v?sHrTDyp&PnKTwy<CKMh#e~dEVmg{L<)}vOpHkPMgd$Q#?OBqpU)G$Lhe&rOfw~KqT5RCK_uR+n9x{Sb9_UJyjSgKpgT7pF{T86*hR~YP{G5BZ~(^&jyxmDy~GiV{>VC`hWg zo-e^=d8lDhaumv_j6p(NXE)2V8gQ;cB)|T5y$=8;{?B(8(i7?Fo-?@w7d$pBArt35 zWWpXyQg^#SC4eU9k)3^^_#yq~$R$XO?FmPC8R@?W9Ew(;#ErJ*{JE$Yo$jc zCLA1`iwn6|aX1W=8;e>`WQl;JO{0x8rCXYsPNx-V>bwr%mKvOX zT3Lb~SBHz*A3rKq@%KcClF4A)-Nk9Zy;r>E^V}>Jo1G|B@~vS?&5nz`UDvClq}_kR z|BX14!FSEalr7^6Hcl|^fVd4(dDj9{s9ULr{GZ39MC9mpL349z$4Pgl+vb4V(}S;x z&pLXRYN_CB>&riLfJWBt#m@e*+7gi3C?x~Zw@1^ow6yww0-9XJ9ke+RzX^Pq#R0qu zxG{eBt)Vgjpe|bV-KBz@td1|YdFa<$MmHS+=WIHd-oJT#e5}-OhyaAL+E4vhOez^a zPXe#SfZ9q7a`-#d(AgYbsqeVj`5jPI+%D%ndhBL-^TXbU?Z*i zY~qZJj^56sb%%{^Z!Fs6_McoE9!M(B5QIjH6zn$iQtofM<2*5^J{^0o+m_}tU zFTq6dv#3kf$dVE!ZJq6C<{Y!fyGwwC6v)T6?&kP&@S?`iNae6&&T+`@G6{sN>W{&CAeVp5COhKQC1dp?O{h4nT3;cd&!}uNs=ZBYmuO< zldI9=1KTbX6rGXr#!}yUsnHJZo2_ag&{n|0Iv$1@J?qOVwp7Xxp%i!;Yg+4s5IXL8 z4*Yk}itAl!dg!-Pig_Pz0n`3_Q0j?S>ghCb|M-}CYGiwRTf@*$*~y7>cQUd^*_O}u z%(B^e<-M93-e3Y%EbNtP*4rc}MDz68nu`QF{dZ9>*yY~IpFc4OTpp_tqKO=dQ9v+0 z_3J{#b?0PbE2yjET^Hgxn_gT5`}>O_nw=WDUEEpQ@TEJ9xIB$*fSvqswDweWN=0RC zGZ04(f6hnK(MiUoOaNtz8}Uhx)_<_FDsJj@U6=VcbeTqBrPs~_j`ylBvrE?{iNkz# z)0<7@_wPBdMI7K90NhDEZA#soOFerK$>-* z&(-;GHmb2373V*1?0s5c`WQ1XpfEZYJ$7z09DX+9<_t7bH2b~jxPRh8r#>7*p* zQv0_pL-8b)c*raPFQW{Wp*b32I(LdLpgA>(ZmtC~(#ML)T7En@IUX#)t>KmI0id+QQ$nMsQK0DzZS8~G*Y1MqyWL4__c^y>J7dP6S zn!?4z#lr=-(L1;_8My9PrX$@P?BV2G68kqfOgkUbuMZddf>8(NF*H9LX5zLhspNe% zDdw@rj}+ODqJs_vj#4Mud`%}+a#!o4x5($$E20lkGScUR9V(GH4S8PPC25rr$@qoy z{r?rnv-#{5XUb6ri)vXvAkP0Tlva9pTW(F zrdrLDRPXphsCSCkZ86$f>@beq|Jf(fT=2N3Tw)nA!tKmQXFe{)7qNQSR2XO*Or<@P zm;ie^IMohwgaVn1DG6_7X(?ldRR85aTj}}f`#V;Gm8MKYILb*dag49H%pm3hWoA4iN$RmLV|(tFz4+5$Ey)@oBrRkPnTeFoyM z4ECnQRJ13lh~6?8$YUaPArs@{#pUIgJ!?`!Cb`^@4hh(#4?t&Xqlkk+;BTp^C7^`K zWF_`&RRiF;20&-|Dw^bN9&KL)R%;ORSRS(~V+>Bf2|FOQB*$^~fP zIh=;gfalk?li|R^#Z}VQ_8m}sVHFj==i|a{cYi9{fS`Q~APe9&4LY~*2R#LhjEwkP zuXyXXy3zs6wXwO`9YB2&4m}>d`WHkOu8a(Ou|I=RU+Oj469XEWyhiIK+|c*5pR~NP zatnz3fL*aQI=~b=8|AiWSk&wC6P%R1=KvnPptknwKai<3Y)P=m@r@ug@d*Z;qOkEy z;X)W&P3IXFch3VKclQmwyuAEamPqpB{q^~emoz~By}o+kvl%ZtmZ1|-f@xsjx7b*o z0Q}*dtSqx(bC!8;m<)i@M9Qh!o30CbwPt&!Nh*Vp6P~K=QI$q*P@M|h(~VeelmXY8 z(%is|e+QKq1nKY1X5#suiW*G~4QWF|it+JrA`+5%hk33X|6>vApa(Yx`kWN@k7vss zle_@t050RHkGOz<0Ft_?X)c_nBsO?3SziA;X^U9w)m0!;_hl91*0zXh#ef za6eM35rl-Jte}SbL2wnDFSw=1(33a-lJI4^q@zYuf&*F8S3S4w2LnjzI)e1}k4`Nr$YxtZj!&1SF17HE z6)HoO;rIf)iFf^Tb!vgnaRe(6_5p8cYas1XDPs&69s zwohoB;AxtgL@&haB!Ub1t&&XVPe9uGvc5TyAs8F!*_QehS;BK!tnu;YnQl%d-IYS#$@-#KbIg`3nP1@UOW!Ub1L5trDeb&LnD*03*1>4mD!3(8a01Q*Kqjc;5GRPPpwl-{owo zD5Ld@iL*BV}w_n^2V{lp!!%@qWFn0EIaW@Xrbg99N z=7Uc_bqIXzvuv)EpGhY(_0!r|E$V$!J{aZaUGmV+H8}(es$u)Ll{%@o&>(5;Dp4yV%?RTN6NG z(9t0dy7mrIG&ZK1lzJ9->3M7>b~#>db6o4D;$dp@d`mgxu4yRXs3bqc6pCe_qa)hU zj!}kcSo7sg-aJiSaaZi7myPd9q0_@z_`F`-g~4(6=kJ1ph<>2C;O_qZ^rb+^k3E6! z#`JEL)ni0fcXCgAj6+@qk)?ZpzQ3s#(Y(tSwh2|lRlSv7#P8NrEk z0a*Y5dVaqPTgrsLQTA!0@){ZhNO+Prv=zEl8#GVrG-Lqno-I{tvHooe4MxFJPF3a9K z1c6hNh#A>H_u7joBd!FVFkhu%ny*^qp+f)N+N%YPDAznD_1umk2oNH1cD7$xR^ zv`*eL0}(e)|D~bf9`qCZME$piCxjGd&)A5S2+=F z?`r59j1{@f8F`N{7ZJB6OmLYPo=Y-MW)*jzQVM1Eh6a6p*-)ZVw{dZKeZG`&EfNUJ z;m;KcE%KPmUF!vIib8$4PkIcW#FOo^Zj1Np*VlS`;SCP0cBe)T3RhPNszQ#4(bTTN zjj$^08=t|zV?AmTPg?xn-WBs_JMD?njjrf54TEZ*wJ0d07AFTguFj{ryrIJM!hd|A z^bCWmrC-B!bW&uSN=0<9?Y^ONQ|S|Rx7Abb${w_<`hUbT{*2uI=Z%Q&{E&Yp#C=n+ zq3wiQS59Z=gP;Gs4`eRWaiRGofkvKaJB3JKdlFvr@p_+A$L*bjX-Q+zTjwA;G=Dtm z?fqxp6nMgM6wcJjtcCu@QgZ3-evQfctVfl`y|mKPsxBtjDb21zw5Q)F5IKDA&E&HOwcIM7u9f zqzbDF`9;B)0lu@_JWDBFMd=p`CfH!zuf&Ghw3a7@vre0joc=dyr8&_QdP^tgr$^8C z9+Jy}NZ@A1PKA2M&8g@YPq&Iad4>E>=cK!cCEq_irukJBQY9t@dEq8lmseM(eWso7 zEF2V-&89|>GBSi>{?O7No@_IDelJL) zX9w6XX=^@d4V>9-^vXnj57L3>O9&0$e;=>vnmlZOrQZGlK-*qsj2rhQ5Zqh&TB4xd5cm8dq3MoV)ATeD5GJp z5r>Ju%QCxPb>%mrUzcAsYM3F_DWjidABER3V9OQ2@%TG0*C7)^*|HcvhTHio5$)Ut zVRhlWJAO{9USUgGHkASw*Y^wUySBX!4lz19IzmUHWNw@V@mQg)ZQAR-;3TV z8L)m>9-%AX$Z68W_%kWQU`Z~r6CSskxL^fZ$~?|4 z^esC?*ch|cwqr}&9}DyW>9c6ud*>F~-;o90?FYziD3SL$Qc-%_=WzU+hd>k49#n8M zA%aH&R*3<0^Bnz&Cp6S?hbJ9@HLGYEvTld*(@)Y8Prb3n8j;(mkr zy8e^JS*r%p*0#?^v!M6I)X6zeF4Q89vYhP`Jy@|6!j#K7`lUh&ohvC%X7K6uI+rOe zx?Trv<=Q&}Mh{@%*K^D+zzKJ)x3_ol4n*5b)Rvo5t0n)}W=K^!3$`;4%rY#5O;^3H z^ZnaOY3VP%a0FqHlKE-;vcE*#NZYKKpIEw-9*w7Zybn(*OVht*m?2TT7ibIvbTV*# z8Oig7+B4dJ!riCwAYPoAVcD5)%4Rotyd)pzy#mh;=HL3jz7Ne0q*}#Ahgx?f`XEQ3%toEaF(0J(>>HVyf+y+l9PQd)|vgL_7=@SH;FK8W^^K z8=ykOft9D;{W1&D=DGLHoE0eQ?RmcMK`j!OE&m>=efNc#R3Q4^9pe=?)Yj0ls6vs{ z{d_|tUB%yuv7aNyU_9dUI#Z?kFJyAVjM3ij$qXEgaiC9~#bu)TuU#HxK4}t#PyeF_ zJn2w921;UohjqALKoF z#HsOs6b83VXHSV`-$UjAiVY=96FNmr{`Rl;&K;{~m{$4&M-Y#`hw@*6O9P8nuH2o$ z&dIXDJqFEW9V^t;L?c-4m3a(^{B1cB(L-54luG4Fe{X!wZu^Qu zt~C|5{5aR7xEgFx@AAeF8(M%!v?ntEW>8cFh3|CT)rKKEDS@)xV6M_#lqX1t6?0LSKr*W z{JJnRQvk3rKz{$e_1+q96K}5m*^+-(^nULUdjrBkJJ%QN?7H@kGtIWlVYvCYC2MG-ykgmdG^GSRJeN20{P zJXRlAV{J_1N4M$g2eUxnx7n&paTI-h{o$1>^@+*xPFW{s(-c!OyB->R^Z}}0dYAvY zH;;ntOfHJJofSQcr?x$R_9qpir3T>tQ;c&0&cFerb!vCJKR8>Kp`IlyNc%UZ21&`u zp@<_u^OlQNpA`s@G}RuYoFz@Q`u>jgOZ7qO9RKcTo))|a{DI#HGalRUcRW$E>$P`L zKS?m?;u2H>d!+2uE5@xGR_p;cnjKZfr~;OH4|dcH8sQ zz3Qr@yahtja~ zIfF{}UM%H|@b*czXXyrhqDe$0{xW32G^z-5(=>m6di>W^`Ht4l>@+1rB-FvNn-Ej9 zTvlkIUwQETD>>2L;H}eSC$+FPwRRa^@)429H_XKL_VzwUP4lgr31WLECu$^*^}T>U z{ct{68sMTCo3b8bvp-W@Y0~vZtxRovms}IDi~ni$4(hIKmS~U6KR5bg^*bP(|GGbg zGLJ&!AiPRUK6Ge6EAu*_i~fcix~M=}S)g}QK$_^*vDK zE<8NFvsEve*5YhdT*{@-Jr|33#Y!J${slD{>G3fTXeShEXaMeP;Ygpwt?vt;Wve)^ k5pFgRpOZG7Mz=vi@doPt$HykX|280j26e&u$J0wfN@6RWmk8JEsvDRDAq=);8A2B1}w7y1Kf8f`V`npr<_3&j(pdt)u>hy9)5z7ul~uMb z&o9N0`R#HG=D%}K!{-87H z1wDm^`G0sm>9*p4zW@yHH*c?&W ze7)FQUsm(krlAF~yT*5<&3j>wXo+Hic3>N}SvJvd40r&>o$*tU2b!{p-*A`H3r{ z^Re`V&Ao;fUBb@^ao2JQU#TG~d>3p368XrzoGw>0GSn8;^l7)N?ZZ~cN&*fdmY`%w zv=SWEASe#!Ud>mbH|_?LVRufSLp&y|j{D=-rD1nC8BFj7wFW{Q?m>4TZNB;SCp~pp zD}UwN>iA}re~ZrZ)yS86QO{@dY7LfQk*6KY`8?vAq-JP-qdHLUnn1#~u}O`P#g&@1 zra}WY1L-xrnp-=>H`XSlH{n+17QPlqJDOWMUIzyzX~3<>E%*wV9ByErhs}TaQTyjF za$T1NMcu-#F>ExxsRi&g?(%FZiv~sA0)GY#waSsrd%<)uA;fp;+_GEkFnjD00ftFM zh%?26nLdbhMa_7K_PJZ82gOcZ*$OPYD06&;X^tu+c+K{r=nRU%#9G{AsCo z%>|54Md#7*_n&{0Df79!LIXE91s2s6iTRLIkGH0Flh*@~gU#`#_m_js*~@zhjDOP4 z6OJzY6E~)Vvv3#D5iNoNlSLf%youRklaZSYXyxqo6c68 z%Gt>ocLPo&%6O29x`oa|?st9@eZnmf^=dtz&l?~9G)

    xb!7I)U4@-Pvq*%O9A{ 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

    kehK1wZZiFFxUX)P_j}c>+F3 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 bKrjF>=MbZWWm5QJ00000NkvXXu0mjfy_+_3 literal 26702 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 R$Nsx3FQXz|`^7Be{{iJXaQXlM diff --git a/dev/initdemo/documents_demo/societe/2/logos/thumbs/teclibcompany_mini.png b/dev/initdemo/documents_demo/societe/2/logos/thumbs/teclibcompany_mini.png index dbf9d4943a5fcf5b3b5d04dbe8e08bb9092733a8..fe4d77c15b7c08077e66c2ebfc1d157c7fcc2b95 100644 GIT binary patch literal 4861 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 literal 6758 zcmV-s8kyyZP) zdSA8G&rfaZXRUv0tyMp*TD98NTk)(X9`(Mtm2!#5B_be(J0vgvnSF1=%OgQ*>v#QF zg|}~aW_EUFc6N65A=c~lB6EfIiN#`bAoaF4; zjlS~@gBk^YMVsp98-c0*M*LcjU`js!4*3~*fO`G8iO!13Jon7(EmP!HJ`X(ILJ!Mi zPQ@m`Og8DXPh8Z`j)gHyvC6@5{6-6@V~I(?#>ST_0V$;}^aKqVHT}W5+4r-T&(Z58 zqU4O`i&}V3S?lZl!4^wP^U4Ipt4f}3nf&bO=1DqTrYCG1B8fz*ad4XXUE}uiVzCzL z>P7U2cw`IU8-Xdsqhk1Q6sAU73xst_T#rX>v*N#%X#c+ZEe!x;VN{o9~71rp6#}X2!=perd!v9njY&KPi9J)n`Qw zTb+7QjrM`(z0^-uq-1QzAMO)}iP{T5Yb&!`zJ@iM1k;or2RkXd9Jp9lFHV{hKP^NtYz{{76?Zr_fMxCK8&g+=cC@wHm5Z1CphjDxB8x+?xN3c-@ybEC;^L<+J9q9~R#sl&BbKnXF2rx>{BaJrK*g{U z$q&azofSj{z<+8gYvlQXyNN~ z$yTWpCd1IcnZJVN*4;eT1oUb4sUDB*79w`*2Ev9^Fn>R!)3oNIyTyszN{g>3w6NS-H7kM5x?)`7Zk00|5<)6-{ z76%s=D@_XXBK-Sx^txhgBQHxhohg!8Tax??(le|iN|etm)**6~xtV<&C1I2Z5)#38VkCMo4^Aw}PAurX`QxMATXyz5HE>eb#XbRUF%pS&m4{pS zL06Z4QQ3J1ho(LFcAmOC*{b$PO1gVhuqvepQ7SoPk?4rswO#JULF}r zrLv4KOLO>q{*YF7c8=fErzNfu3yId*S(W4E>6xKWSXVp`AL;O6u&&W)qzuDI(7{<+ zT56?Ii#jf!>Yw6PRaMC|GBW+26c&0~N-e9rygkz0-Q2P)ER1paV@01#8J%)1Yi{eV zUMp1|_F0sdKa>Zciy9e%ok^Bxni}hyBnq6D*%~x*=@gF|S^4-2;&;01<*ibk&s=(#Je9>S; z8ihiU->qBMePhRtT;}BH_}ojZl$5jp2*~Co-o4kqx~kd)nnVJ zk?*dywN)C@-$H&&y~7D%`St6!#xRUdG;_w3u^}PdPYB_t+|f`Vpd7h(-+_f-fW9yv zh{?nZEP^TzPxrX@BHmfn1Mopcb&RN{ic!4MtNEg!ur?dTWRqq~ojd?G*WHIGxUnxH zZe1sm-#hX)}B1}}AVv(2%vP*gZLbcg|v82^VX2Bzg{xP#o0NJzxt^33{u49&J{2w zWm#Fd3X}_JbT-Hq&L2m_X|IRlzsg&yXfW&*@=<2d%)t?d|RJ`M6iETp#f5w`+ETpyV)j#up;&!Jz{;v~1ZT0R*E> zPD$-}53{m^%gf8XKmTIMaqu9$TD0&b0V%&6J$hoyPe1Qm1$eMnL`<pR#sMdo;Y#(?|`Ryy;Fxhg9Z)Q?B?d0m7o9E6L_2w9TPhOc$A%vI{S%J6Q|s< zV@7_*AD3_3*iOf%Zp_Fkj77jPg?dJfkpd=x=Qy@X-f01wR9@Mg_}R@PNt69MH;eKP zbWPV*GOFyPg1)*MQ7Z#1XEz4KdMYhj`X%8{((ftl4eTW4{P~N{l~+`_-%o$g z^Ww!TZ}sWZ^QfsQQNd#$<;N5pzpYlfVogNE@K0f@Sx@(SFE7umjvYJP*s*g@^xnOZ z%h3oRyZCv(zPoZ2@b;a+FjkIz%5&W?m64A2sZ{QO#+pEPmY5=%>I zonRCCl7|fsUy3$}`|FuA=SLxqxl(t2#*o5(;wnK}L0w+oF=}LlLHQKR!a~A~9`)`& z+qDZkh;6VvIvoA=>s$A*&jp@)^S3e2DaYGZUf-9$$n(w$>|??B?G{J z)^fRcgiJ!<;&@u5D_A(bkS97RN{Y`v21%E%TzePCM|VARNZ2Y=zK|vz3;L@1_U*Ne z&=iZLmoHx(LSgabapT6#!FbAm-Btv&)}UKAMGM=&qZ|wl4%!m&?(n&xp#y%Td>i=X zDnfh$$6E^gem*YnqXF70fggtQPhs(id;Z&DgMI)U;=yj+y8SlJfzYovsinLT(P4eUg^ahe@8yR`ND_|IHZgfz$*f{)f3vHb-6aqf zrf8&l?uC1>Mui5#84sz|)@vHgG~(aK-FBYFj(IyrQBal}=ZqfTt@O0PQ!$pTPh?sYZo>n&L~XgXF#2Tj7=4XiX%H;YDywBuCEBId zz;klYL_I&J{|b**&X;gp;lv3uf1tq48{TwDaacGbNwXeib!XA}yzmLK^QD4C<%7E? zZWE4{c1R0nAd^{Pl80P8)mNU^kGLjbsF+Olvz^w~brVfOUXV8OitS)CQaCx-@nKAj z&C3IzDp655N#gcIMOn`RfBM^rUwu2eogFl-+d`i}w>wU*c6kw>^_>=;C;-pAIk7y@Qv-S9%!Uy$K7lUlTz#EVsde%hZb;o2j~f+ux01<< zTeWI=g<}MiDl`J&J7nTyGBtPuy3Z3sAW(WXQ}?1g^52Z=%fdo+%9+idg!gr&)03$xY7FcsY z{Xvb<%i~U`eUx`G90fpApl@#Jc;c&`SIr}>72%Xh6=&h+iQ=0lX8I;cfKKH>_KVN7R5hHOp*QetIAQ-f} zeJ7^p^N5~1_gmP9A5Oi!VBz8eJ9qAxPLEDD3WeIu&5h&;K=87-_yjJVFijD1^C~$1 zPu_pv$kHu8{=A095~iX5SS!x8xVXd@E}?wt!;FrJ3(@Md#8Y^CdBoY<)qa+54$oi! z5bc8N2}@-bnl51hd*(-e@amAi zg-r12;Bv~osm%@VSDjZ6oZ0#H@K3tG58o6d;h7b!xw=v#R~MH$QCDh?N!kw4x#1QO zZ_xmcXTT&c&vfq|yc-$C6|ryMp@o^fjlm)YKJT<;RPK(PE- zrNfPb_onYycs6m@!rxLLP28UL@h6CN{yXgF8Z=_{7e;cJE(;0*7EtI}ASVL>N=b63&m(;?oqi(f11%uTG9U zaA>?R!2`-y!bQ-Ayu5tKWa>rEDyO^s`}f%=l%J`0Lk!^G+2>NTK-UWo6CXn`hpOj9 z%`;D9OC@nXQHKRs9Rz~|)_ruKXS+9B?ie_s%Ti}A$4tQ6CCjV@%5RtZ6ls zI$t8x0h#nWo4x@ zCMLemg^QOz0HxSr#;{k<9veG#>Tm_=2>BPbJ+Ghgf{KG3}J9>}0%?%dhqsER_30TR^|?qErgFm9UQrP z{qEhnM$OUAdKd26H^A!f#1BXh9y+oF6@&wFf+9~iDyc`08Z{p-mVPodZpa(Kr)o5s z_u;bW2QWOBtgNiyty{MT)0J$2SJZ5}SPNUmmYFjr&l3vT6y1imu^t(W_mXe(<`)hg zI=Ub(E+Ha1Ixd3F1!aL_+JNW#WcJMW0|MIKX()X|9smhAy4vMT-#GluJI9kFPW^ae zQR(AKU(_*GKJf`gmH@*59v1o=pEVFDUfvbI;L4u(Io_{$ltB^+4b6_A<0gq(CwTDW z9fD1{OhTM1z#{`6P0R($FSv5`X2i3S64-OajKbPFA1;8Duwo4#cJ%D|#xegktz+PF zXcByI5nfR6#1B5YfB*?riA2x92O)5a);?<3(6`ruaPP7P$qJi4Ce|^cZ|&bIZvXy+ zGvL$iu#%DzZ*cYOA6Y=^74UC_hYw!cEjTC&Rv^hE&;sL>czJojw+14Si?fPsCs-&9 zc(sS%P43|L01$YV@Nx0h5pMeupicp~F&}<7X0cCm@5Fuk4$RBR$qR%}LyJb;g~0{GBu76pU)Q@3+0$5hL2I~@D|S5**RaSw1EUt?dMp0d{iv_(0mI+;V2C5 z=g1R|fdMEDkf}jJe;r&1MrCmCp;D_$onQ_XE-tEkex}eI|9mA-7?TFTpK!_JGWTEC zU0NJ}CSwfb0%V44p}-Qj^~@WC%?uI)u(z&r7eKcT%o?_P(|1}>Sljhxt)#KzrAeUP zy_ek0&BMAjYwsEboRI5AR3Iu370*{bY2(@rTmwKI#{mY!ri>Bzule@< zrAg_3n6S||f%VPP=T*0uX&Z(Qj6ate2C3i0g%8z%nwChjpbi20Wt1T{C$w_4W{-H+E!JeQCy9TAOG9-nE4eY)$aV&ZJ-7E zWI*9G1|aH1uR$U~QYBtNrjRB?Eb84&u9T5av>P%$Ura(i8}ZrrNhlY-Z29u5HwNGX znyNo5D0ex%^~StgNAFF94?UF>h6FJ950uOr0L`7$nhG%hi9V;_N3RWQ-p;+wU&NXk zud(f~m%yJg0BTi_(u(|#et&Uk%GK;}lG))3F#vz=6aaOSMMTe_XVl(-&Rc^9zp}E4 zhaEY#G?ssl1jrWfSCzC|**y=hxwPyNxeenkJBzvJ(fu{G zvlEyAx!~bjjvs7H1;-5H_3u32+?d7rmyNkQdU|k%LE=T#ys*HT&PQ?4Su}iicf31yZUw{~!@1zG1$XZhW%k*f?{D`1f7CjsJF==cXfd^J zlm$7#L>SE3w~_8sQh@oslye%mjw&m`4hNG=;;W+$d~8Lxojn_$<$qIMq`M+G3BSOj zfD9797iJl_KZLU!D{%3ZYO$R2g`KN_aomWa4wRXhK~QF9W(HxI8AWAAVVRi%g@AL+ z%n)*p&#-W~yqnn5aWXnt-z&|mf8CYSN_raO>NG3<+ZFrYEIcw|@4CiQH}*V_AtLvLW(Y zS|ah>memQ# z9rF3;DOmq&VGuJM!Qw3HI{kK&;x4zjIinJV(B6tzP95~(;)rqEX1EK`xeEcIk@xm*LKydawH^q0^Lq1O1rsfPfLnQ+R z1qBMn^B>1Dn^B<%QAiA7l5_}2g6_vD{us4y>y(){$nEVjr~~P@9f-h>aUj~;s~p~H zJB-pnE0x05Ra-DB6!jKBVd09l@|qcz*%`*?Has~x5A*tndX@li=JeyCHpTy9z-H#m z?*tp)^Bu>>v23*NG#Hp*G_dKo9HD49kc7OIIeywj(^M^WWpCe#{fX5Z-PEsTQFLr> z)mHD_)iLHmWA&XsSBl&Am!U`$!8U`vU#<(sb@ME<%UkTo*&phhJa&YDeFl&-CYOfb zfy)atGv{GhzX62;dp^L4vDxDr0|#w z;J7Z9p~5j&awa-KXaa--2#8xaY{${%p-flkv+-|gQhbqH06248QUDfbHY;aep2NTg zNRDQi;{Z;Bwr;qtYakAVgF%6MnNB_wW9@CfKH6=md>_5ap0X%}wnNy$P zLA?;d!Qc*8z`lTRFoEE>4S2o)g`-R4M~+&r13zz3n~r(ipmB!h@kG?CVwiid&jtxPXLv8hLHXE6pg9{$*B+`V zYYx{c6tvYD*6JO54|ct0LbxhUSjQ2Cxr@OahYTHvBS{K`gYP!rIp{d9okJZ*7#m|^ z@2&t`#f$St zdf{xEX1JxLb!SDX9Ew~}irVko(7p9n&t_wvK9b6R{y4>Be^I3JpFNt+kNk4>lYHU$ zmtmO$;X?Vu+=lXA!<7!XNWJXC>>f(gUmxeg#4C0jUF-JG$kzM+bxrvfPZ2c+x9 z?p69j_WDp9bO9BjXv;UwhzeF-xwfY1d;aoE{PvsvChp6lqBz?<@8>v<<9I!e$K!D_ zjwi?CWO6*Yd`8im>t~E2A|eVR?z!t8xcRF5m4mh$Y zvo*>oT^Hk$p_gcvbY0YjbX`_Vv5(k3#x%sp+V9chNS|{T`)Me)K}6gbioycNB^Edc z5YS8hIt?5x&pnRvZ=7uXlK{rQyl80|78`fWJ0vu6hf?{b-^aKtjS;zN{3y`BY|Ni5 zc)i=(+Xr5{bj5c4de`h37IPIi`P0)cE|#+Y)~!1ercJljSz680&6;Javz#>#z+<*9 zJUqr%;`#f$dGlsKT3Y5}myMe)n$MWq^^eKsy13Y5KL0#V4FQgf)+pyxUChRG5C9HX zM!BTvvSJZ9WCno!m4$L!TCZ6qT^iUW0vxnUR$MNNFb+dTP@YGH*f<{a)hXJ~ES3+T z{A31#Xy19dc zORo8hIVu1R{lvGJX`@R^zqnM&_1fyQGr?^7Y~3sX4kGv&fMchWvE}6aV&%NS(lg{r=xgovDkBJ?>+y40XAT_8z%n;(4j#>C1C zlx>3r4iwh5LDofqgB3;_|&{_oqq)ipJvcl_vgbe5G} zv&GE0ddeFR5JG@M?sb;AQ>V=$`@+)BAaHz|N+`YJo}vvI2LOi?fQ6u{ z2;c##%2gUTWO`M&1C}d~8%{VRT^^`PzVbI3EZBA0I4V7kLnLBUL@4je|4_be4fgu& zH+4T_w@1MBbLWy4+s<23XEq%lV0d_D+r0-IMyygU{d*&v)5v2sI&E)gXdJnA-G(yD zS+=6UA?0`o9Mh*;>8x<#!+k@+dq)@tPn?|GatPBP`|E)tjsS=8>-=($K~xpbUK_^- zV&g#I$OOi5$A{Zj#aNYsK34td>3K2yR?)(X=P&lr{>d$iLdSQI&yrLXvQD{R4X}=f z_xos@8mzP4X<7!$2T1Ylh!ND+cW)Hvw)oH>aDdDc1r8ah(Q+a$WyM~w@>h?UzaKvi z1c77C+6`qhEp5bsL&BTe+j~dCG_zSc1Ro-103_jI(Z1~V;=tjaV?M*0Fb=&C;Na~m zpKb8f7-SqVo~e0Zj!Eqi8ALKrC7VAwJ5~;@)TrL|ZLRAZ)%K)& zq*kNtD|Pa9D;q}U+?t-NkLkDq?%Axr0Z{yxUY0>6z=?QOk}h%Fv0_G0>N~V))K>Oa zH$Iu4p;kW`Zp^wQ^g05^o;`;mEZ|`!53Usm8rTSM$o6PRr?ax%to*SUf6V+baRE&_ zr(;qM-ONBWCCVvHmvf@jQ|vk$RrToZPz^rke{HX?ZCr()-O;jyJ(q$SDqno{ zw&$%R+OO!WFexfqo_68lzjh_*vt@;>Sx{jZj|xXsq16uqDhqyBUHLa{&4d5l`trGB z{9ASXXTSZX?PJU!Hxb~7vY1J|^%&rgFky_@Q^t56GUJcgsKN&h{ylDMYa0q~^AQmH z@fi{P+|i*JBu!Ou*Q+X49N_q8rGTI)6{>-$0XNU1VKmY)MRy~yToe?Idh)Bsi(NK+ z<*)M`7p&VfE>!0+Hbmz&DY*6I?u?LzyDj710Rxe8oM+FI7ec|FjN~gryUt%i2Gali zaCEYiY~vt8RF?mWEJIuS@c%ZvXj&Qnrn_X^Z(0ot7)G9W1UL>xp+OYY6cnN-2LuYh z!7JT|B6a;gqh=|}UpQvDDwaXUf!ACFIAl|OspBHRK|o^`2&JmXNWC}ym|r({4nMs; zJ2!S?rY>wq+BG$0qsbxNCevWOcuoKr7o_v}I!LqKBC<9m z^!m=1_3a}yZ{PJbOm*M&>FIejK_9{rvS>c~YYQ0e7kC{)$CDb)# z7{{N1gV!!V!dMJ`FA5x#jpO6$kPa8Kj)`$guR!By$eJY0qtd3aV*AK8XtLWV zJ9_#DE>Fz&7<*Xvy=kb>cm0^-1l~j^JH!Ps{6i z{bm5i#v$vZ6mX~kIDRhI1IL6vfCEMN9D;y?>_g`8Sd zcr_4l_hNYM<6Zt)dH+#;9wJQ%13_UK2V2>z`u_h^HrAULb}OPCHJazcfYHeElglv{ z)9VB{W-vAm1P%xQJIVrwbUG@ZEyz6|dmiJDS@u}Pgv&VORCyyJam)lbh)0F8aUAoJ zY;ed^1fkBxCnyA=iYjR=R-ma8WUT=9Fc<4bwaxI%#A@CpGq03Zagm>_@# z3I!knsEiBKxs5%n*)=b^q%gH|dDp8qL#0Ikz8L!O(ZL;8^Cp1`^WTITq*sJu#$}~_ zbahpK>jevt%E4Vv>n*doI^tJr-*pZ&Lc`-v_NwgP7Z8SC6%qg>L?2pdLPH~WLU33g z359fISFgt4vllO34sB{`9{%LX(~(V(AM>K+?1m6iEPtYV^+R-)35nOi++4h zpFTt5b}yMlYHQi6?H3}IT7GsyegIkfdlvJP;~akYXR3}#ItA5hvPka z`&QG}SYuXoy&Z7xdYvT%fnA0i6>XGbrtZw{s}UV7-NSiJr%~kAPY?$VfpLfchp_Gm zDvSq+``4h#Obk{WS{0vLmR)0|RJ<9)d)QFT=B`pHOSEK(-eJI%X3C=&H>?j-8z>FIy>?!B)nDk^*B z!5AN(oo9)0lnD6twL5q1iGyv&{;}l|G2*Q|A}05@VKF4sA1Ec4m6^AzOD_+@8bw}c1tGdN$rzc>I4K@`TP9018? zBQV1h6U8=f*`5fKyJYnm=ZaOUoho6y+|kJ`AIBFF8M70|_v%&KP#mAsu}B3DDfhRo zu6{)My$W)F^vm+{3X`U$rlC?^yaYH%;2#QM9Q3vtjixW;)C|eKcHIK6i@V3>i)+_8 zm#J>Y^pnDhtnWmXpsqO5RR)M``@12seZ}^3e`7al-b%mm9 z;PvY_tN=uh!}w~aPP5bqD{C0vEcK$rE6NV}2k)(}t{o#eW0VCB zQLhUBExiSR7q1g_k6>K0bYbCB5Yx$-d1K>Gc$Knez@y?O(+dID z{i9sdsv{j!m5~l9?I(Y{a<=_t*RW4DlH%LoAK%W<;=@1F5+^JH5If=$q$5a$NlgSE z7Mw@~ICyFUsV`AmTQ}Oz??8mLwS6N58);?|LoAsrlu;HRz*#h?!Dm#XU_Uhi&XFVW zUJ$3i(p6bP@^s3|?wNRR-H|ZcdVVu7Ee(PKb$(om3b|fnd`p(DE;)57(Yd?38(%O+ z4FLNfaCrZ4cAD92yl&(^A=mb1_(w(0C%sj@?PshQe$?rz3mPZ?d>}gv z!fb1!*Jnaf4@!m(Lv2G>rL^a#RxbWjPs+`kx2AqO#X?Ixtb$Pt*D2tjL;w|PVlP>` zh5!fGHUm`NcE0`6N~jf~{e#7z{4wzea1mj@Bm3d{)M-|lHEW&n0F1`S?SxOWppz%h zxLVIy&;S#kB#KEB`q~KV0Iaq+=`?&Y!_l>M0GeH1Rgh2>=ceiq&@q_C4jDvqN zE^yGSgIy0Htb+j-5L8=w0c6v7w1EU^x0;1EocJ*#=J|v6FVs>2L}dLv=RkxtT}R|6AH3H2n};k>P|T^lf)F8m&Zc_0PB z+zQMp1^df4h78F((1?Mz>WrCl+sQScgp3VEgX4kmw!vg+g(YsU1VQknu3hisnWZ0} zYTNc*@n|pk6dQ+x`zmC|B5?c;@C__35@yo zYXYAYa6MGQHK72Xx|T4euAt!X{dnDt(N5BsO{bY{7?;WjEuu#B`5?ih=e<& zKvrPUj!(_lynDCeD;F1!jLn<3r=bAVOKS1nz(rtH9h0RNPfjODq%+^_^2#>CtC zg;Ssu-a>!>p#7`Ytj~wq5-K(v9t9Z!GMUGZpN#(4-mz-6y5G^G@m}~QB$Jkar7%7l zc+jm>t5!P{`Uiv@#7TVncEMB}-;JBM&9O?>&Yga7)^qF|VM1tG7J}>FeK%7Z6&33P z6Q!S#L(W;?NJQYkaT|ki5Sb|eC%GoQDv+fbUmE-N`yb56xV$hwzi4vtozjWdpr*%> zqw($=T(A((oOTNf8w4*XBf>XBl=z+uiYhvS|0fV)1 zFd$+ovW>`ReH7}r!swsLl@$A9ukVu!*+DNA~ zRrCe{D2Nc?pe4*9S$8G2c!zujMkdYMzHM!jxrdRzPtCuAp2l*RSp~sOaOqO zw?!G!-rg}7Z5Qk~NCmN?;*v=)sjJB`X(|gKpn>12j-NQ={_I)PNO&vv7rS?F&<)z$ z{MoT%CtVjVT3HUq(o&NX1u3w0lh@YsV1WC~a9jvuAiiM( zZftBE`R0wPAA219kDZ;J153bI>*={A3C5u&lV2F0a4cKfMfC**MN`Or9~*Km#e?V# zz(J`huq40{y^}LXSm2<+hdQ2M{DlA1ym#**|Hj5=`g=z9rx<1*EIoMPLh8b$OV<;ys&Wa0Le*sjI zOkfxnX^_Bm5DGvrjo8H?a1fDM@}2~M9ik&gNgPLS$hoTT$6S8|7MG1)8ALCp-Z}_I zS{E13i}&w8_zKP|Iq#&VrtV9aV7V|M$T7(q4acbhL!gh;tW5+>Cug@TWGo^qMuXL` zz(sAsd1;Y#{J(>C?ZUDI)@m~8h&>2_&CS&-P5l4yy(;|sN&|=8@7II?2X9{%IB4)7 zMo>XLo!gR{nr?^eNlLs3xa-G&Q8XJ3%>+b=phw2T(>n!#cL3iTCxdYqLzDm9xP}O!>D}5!O0gONp5=qI7Ao+DINGRaS%VBO>&rSK3B;a%D|JNaaiw? z^W;gxXsHQPDAdFF73kcTEi7%`r_}Iy4j4D<>K>1hP*1f_I!s8kQ!qw8oUB?WXOHaK z+Q*}CyN^kxgSYUAUgn_{fa8y`nVDI&-z~2g%kD3QaY&h11UT@VLDYxqZDvZ z9yMTQjX$5guoTn_@*GI2l#VZlb?Y`{!~N1S0FB3Ny_S958n%<2VHhlC70O^>Ee zgi~^c+us8jmcWPzh(gSjvv%TjblHeS}nx?Jq7)|@5)g-fRJ znFb3GvF}*m;Od6bZ-!`+8=F=yl`ewnF?{7J$3k>xTK!Jhg_w+mi&j*?!(<{ew}F6% z3BLV+@=^vnJ7fyl(9kGfHb{&;wnCv8ynelVwxITq{RQJMR6wgQD=jw_2VDMjEGsJ? zYiVWIipD`&ZNMnZ$jCS!pz?-+gKr$A$HJ;A6qr(sgEMBaw0dC)pn)DNGb!1FAXhhw-c}F6!jzRK!2pb4FH%1cE&wH)~x%}H9ig6IbCjkdW zO)Zf`_0-M)(lH4YRaYz^Xn6x`rh&&AzfWuW_7lMj{A_^QJ>0ID2LOl+$&S4xh zaPX-kK41_;6;J3oi9*Clx@`HnlBVa+hZ&=OD1=i_M0S9ao>4X0v#;e^8G2TNf+F@} zjKVD9{scjWFyDT8byZdM7><#Sd!4UlU7I`2%v$l?G)sLD)+|e#7BG<3g54zL@#Ff@ z25cO%iWRfKK_)+I9F=P0pbgL9rdC`?N+n~E-I5hOQ8u=Vo5;(AW@5*WpK>>5OIM?& z=VAr0P{(r_;Qi44ZserY3lu5{j0FV{ig5_*EKo4tQMoVU2;(4X2MPli1VHe6*5={z zXW)=fvQ6@JlUk2M%DJ%W6nG;l@NM$m+hwM$=Fp*_{n!eC*XvcvnDNcMapR^eCcXnF zsupZDK_dGSBj!Lf%+6q9O3+9OVes*opd~f4lZZ&w^3VPJ4u*j%bUSz#Ru&hROa%MK z=P>5s7@^AkU#T_@W@(Ud(7-{DS!y94GLFTIR~3WZX!NHhRw_EX`nh{}C*cc(fCf>8 zxBC2;fbl-OV@N$8r%_AC;I`J+gD~++>cJlr)KA_rCA9hb@nLAhBnC|)Ld2+;orCk4 z`3;0gngdlOc=-jrsuDxnFKEypB4Qk+!6sY}97V=gRipw3C%NvIyqi;JSXiqlmm~eAn7U()D6*uz{<)hlX-TF>u5?&yhn+N=Nu%A z&DixgjOtY(jDZCXp3ouZMAgA-0#)Gx(G@MXjU&At6LWMk9+M6XL#Brv>*^sR+E_hm zMbWKCrS5krGT+;8!I5G=`?#`%ommkL_g6r_s0M(@vv+zNjYqOy3Y2&kDBG&>#?JdBX-$EuB z>`PpZt#|H}j^o#s;Eq{p1nWmJ4iqU~74n~0;NWGMv#JVd$b_vZ`62w0z!lRDEYQw{ z$ELs@V>+6O@03j9I5{L=XVHmJa<$6R>EHHfJuv0{>ku851N5FA){t~4&#$%d^++E3 zc&pO%&pCa^ajRK)1JvBm1BE97$a{uS5*2EQS&;2nVU49MaIl^eqLzR#HV*Qc2yP!i zB1h%7eUNP9uo5wj@&c^(?F$HjeVD)@TX?H1ufKJxVA8|t+Akkg)qDxIgin&1nn$Bk zQZwvPN5=4OE9y-Nq3y~tC<7p7xJ`y$tT3i7HbT^X!Llj{ARGCqjiJc*(t(5@a&8Df z#RI@T?2hGS$CB$v)QDeyy**iWdj#ft$SWEJFOYhYO-m(Jwqq_6=Nyu+vuN$X#NF8u zZeIuLHc{#YakC&T1<}mq#xbc0iTI?gh|CW5T1@gvTHv89MOiDg&~(Ld=6imth*jx;>Al3XTOujIOa*VagYpH zNJmc)f~qJZ8;bRO&0O1sjdN`mHQ1oo!1{Z#fF})e=fV=i20z0w=GrW3Ccp&jhNwme z9I9(MxmILcbg`iD@F+h^j42>M1A_k<)4y9@z8uc0iOCB8I&(qX*o;FshD^pm?mIF! z1XM_H8_8@hTaAG3_n*zPTUyDa4q%A})v42G95sU3K?>tA_*rxSC$?Nn6g(qnr@$pn zj2Hct>GH5H zT{zoQY86TC1{;eS)R?907%{#B!lfgKfsO(WbUEHc<0U7fSqv=X==}6jb_FncoelsK z3pq!Tl;p-F_km$lG>l(PV{g2^3l^>{Bk?`tzTtVIV~+S?l{p@0Nck-K<#BHS4xEtU zg6uUVmbyQmO|SI$1YV_A0$xYaQrtGRt#fkizq8WE;U~KxGW40;8a8 z93X~cKg59}odpQ-&kS&2y~P-}jN-N?#R%yaR9cxmQQ%-12S-=Od=_X3REftR`%^lz zh)@=MvZVGQ%MYgElWpkqZrBEaBQ-5!IXh0w$n^EyABPVrVJHMR9GzUVUqNpYDZpXG zX4EnY`EVGAl?dbD@6Q4Ui5As?`Zm~Dg|e|i+Op*iH(ADk_aibgb}uqQ+36*mV#Np? z33{6Z4HgsVNljQosLpk4AoNZNYCHYY)riOC&&F|Gwy%2z-8@&mde7pxo1ngEz8@D( zjwLLK`thM$6;?!mim6Wx|9Q5fdH6SfK$ZJo!@B-ccpl$^Gb{og7GMB4S!zT+(8zzG8-@X|18 zkIxe1CuGUbj^$_k(y9v29V?Y_fGVhidLsRKlUSwo?o@>?{=HeX6>u50^TswG=$T}P>2 z6^^Y0b=V8|e6?%WU*I9ID1P-D?5D`%iK;AFPg8<_4_k+4!HZkSd#|qtFziQ_;Z*FVs8krgO ztIu}xh&uGZpc+IN4t;z!-JS|d7Xc2UhV%-%j=$4xS`?>rO@wpOt*YBkry8l!m@MGn zxXMsf8N41;6*hDkA80K0TLRI8cS=gXxpSusq!eY+A5vyON>S)_L*IQ25@j}9OQrTy((PBfl^=pWH>u!x%nhmyTyLN zigKc=z*q@zsIe{zhU?4eLMWMWY@$>Z;>Ca^W0+*Bm{T?oxA6h014~ZcEJ%J}-`S=d zY-kYgAoioVrejpX-YbDV=8^SS^$U(clGudvQE?!I`H(7OXvoEoa{?SBMV^fqjlv~J ztnfVmMjEv8&(KCXq$-YkXQovZKAsG0h)iB1G#4^{0GOhqbAYR>*Jbhm62^f+KihxU z6;En+7_qFsWZjn(?g8(iYR$trz0F{v)K#V{DKB3PfF^R3u?sVMMJ#V=WswN(sr3MM1zw z)x~T8)x;rP5$%>%crCuj2#V6tuTwzkEXEAB-5NA>eyDWz<~?{1sR3_ zAS7cpa(#v>#yz9@(ve$UEe)?ff2-E?D%=|v5)$P%9Wz5o97k`tIlK8w z>mNR>`I6Ts^kbV+eXI-gYIe?C3^<}ZH)vSJWov2aT@y*YP5EGf>Gk81lhc$8k`?F^=-aEFL)uts!(^D-vz&EQeWTW?Ztvwh63f&34}6 z`pO4YUvYxmBtQS;gJD&LSCog&9RYdI8$-Su9}0Ct19U#-5e=z#4P9(zF1)!wDC#?}9h&&q%I!RFtV(AkrFXxX z13_doIFeiyj4GADfVkgdcQ?3Z`@j3nQVX6V1?ctFD_1%cySR8|Kur#>ztXEhuD9%5 z6>5J34oKAVhJZBD5oW|h0!BWO4-^Q^8fdk+0bj0Qd(%W%K zg^tq(OWGDfwm}1`>(~D3owH-Ba*mg{w!i2c&i0OF2iw)I99(qezU`icNAm&Dl={{Q zra`@xz=&5xP*q|C8;1}T>Y9f340N%oBc0RhQ$q9n9^Y*?>3O5>FDJEFMj;e2#vxKV zkgfp6f8$qHKKKH{ikkr_NI({OKr{yq9`>iQW2Jb74A%X)bm^+Cho?^xWZecHJATSD z^WqizJ9qAy)<1bN`a{Kho;5v(B0~_$BXB>Ri!vcrYnxkaN8b?Wdi;K&q%kY1Oer&H@c8p+n9t<%)*(6ql z{7+;c`}X;V;QizrpZ7Z-IH>S&5T?p1sYd-Ny&04=p{NSD0~sp|Vrx zifu^R8qqe$NQ`eU8`?*v$Nl2D(>kVN)4vC|Lkx)4b!>nxV98m1n34TE3g_qGvHrD{`Q<=#n1x4-$Dd9;Ej*~x_N(IFchht9vyRRGZ;uAwVp0| zi*J|NP}(mV8(8z|mvYCPm37SySWO$rz9psmks)o_@r zFF1-fJ51140t zKO$mGgaVT=9Zvl3zYS`Q-+D3ban;i?QjqawUFRssDX}}cEjh-2#i^{5+pOy0RwIo=y#y#SlS{&$IgHBVIfclCWe5*OQ?Il`JSId_TOk8JFN3-Hso9&qJNg zfl_tyL#0bPePE$fjVT_ighKJGePfl+s{sGt{VJ^YAzw9@ z#yGNK3cX!S4iQy_xI@`Gq8~P#!csJ3oUOgV6!_8GKgRlNw@r^|xUlcKKYBdgz18;R z{W-K*yixQFR)H~9{pM|d@s9H%6Zze5|I+zNIrwf)jpc>?zeL5jr@UxS%drnJB%P^@$d$F3+A^*evX8I;Yc2w`x`S_O6E?=>x zu%`CW7&&9^Rw@Su28QlOdjUN$iMj#Z(sQ0QHH|PdxiQcvK0d((#?poRF~FnUzWt~8 zjt<4(j~!b(G-dYPy*~oj232!nzR<*I+N`dUlDk455jnuYVWfYuaeS(Al&W%$FO#+F zT(Yp;fs~0$Gw{5;U(KN;W5rB{-2oVZr)^1fB^0jyOIkp(Qd3rM;yT`6wP}11iJgE+ z9!9YTj<78t4eUq4+ELK<;W7NaxV(i%PG#3>%+Kw~ zO@P+^EfJ0>sOCV}d73VC&4uck;-}yI6~GY_d(;OeAJd{yUxcUWN>(Zwalc`&6$hB$1%<_vNa12Bpaj*h`v)ElJqQnS8<}9JCksmmG(&wE+=pVc znw6FpFNd#P>zoH;A!DOimU8#*{ZY@Gn?Gn2WXBAQY(QvOlrKzn17v==;FIH@1tmfF#Ev|3U4%!7UAJKqGnO1c=vaiX8Z3o~8cXprn-%K`Lfp9s zAZYM(`TCIR(2|5(H!qYf>~4QESWam*nqeqjbq_AhuD1Gl_x0o9>yvAvoKv+Vz5@fq zVqqD&Hd%A+WSOVjNJc|99J-0y!o#9qClZ#iM_+qv+zD?e>@u~muxN7D)ttG>;CgMx zH?zp(eD_Z1T>@|QR!gR{JHCanHG%b<`Hk4O75mRBm2disjSGPVlg|nYil=yaZ98jj zZmlL041}`9%+Y{tBZ0IPl#+Cnb3M-zsCaLi1w4)oJ=xXko!ql?b8lK=au%`_atyYU zTPe7By@jUFsy|=5d3rq_)Hl-)ffZ*KTSh>$YFAs^#Z{mVA~R&YH5ykpuQXt>!{r*s4ao-&Qgy3g@(K23sU)(LsfvzGr&FN<*d0;<%&3e5a!DpZMr0$IkmQX+LXh!6wh|K7&>jFw z`^I|}l_nn=3xGktpx_8Uh>=i}NlA4&C&yGmLELgEpC5>+@VU7{?^wubnfS{uH!V+{ zPITGgy(3``xOl;)p{2)#LLyVK`E*rP%@-fjxxS}I-7hxwgtz$&LI0+i5w7E#62{vC z9mkSR#GiJ(o||V?T6WhIfWj0a9nH_4OIrIQ^p3^CL@)-SN6YN@Km)6It5TBF7Zc#& zhMeR6#ts0Jk*k6N*IZ|7w+R0SH6~kRd2JpZThE?4b;kKd-mhk5Wp_E{6;uRGYm0$5XuZfKj;ywC9kdrSQM?o56qtNHU^W!*Xz&5~=+MrHF8;%WCBUlnJ z1DVGpiP^P9Lc?i%3mafTQX4Xn{df(TqpQcILm8YvmbWXuX` zN)!k#1>i^}z#$79c$4bf`J}azzn!7AoJAGXApk-Z=OJ&8xFaVv^KPU<(K!&d^Mr@4 z1s`StK;-xYl*pt-fI%S-AFXqfvEc6z!=Zsz2N@+LrKVB?l9=sCW9tFilisPWLOuq-<6YmU51U6vZ$6jc{cU&) z#7q!d2MVRa2urGQG-K01A>T>p9gD{z$JGmy>;@i~jbjgKy#5i?7P$1xt@tfhyvw;+&jhp*NCH=FI^6EOzHw-r~9Hl zRR886lY%yu5rY|omjCqAo;WG?6pY;{EGnMt>b5xzCSE&w8WJdQX+uM7dan^-%2VDu9cmPHhZxA>T1^ALN`Q!41L8#pIyw z;GzT_^sm*Sha}pW28Q0oOH9>s(e?-+;p;C;a33&%x)*bh}| zTIND2Nqt+qe>gi8?i21$#)+T9!Xka8*b*SxHy5un*%#RkT>Gy2`ufkvHg$FNUqD(y z2t<=MOoi(5WP1WOC^&BXzPD3etEcDIBw#Fap~K$*xp5luZ5$F0s_Ie?x|vq8c<=n< z#h^NHcv8ZJzXB2qq(ZrT*K4po)n z?M63_GVA!3fk`w3`jAXHawL8;MwP;Zjq>w55CLy`|EQ=V+f!3AmO_K(u?B*N-8L?Up!Nl=JKnD`t4ApR;pzi<*B0|nMmzG43lUi<2r+R?|3$9w*;!}sXwHI8L) zuPVUxUX9lTnUl}aNVjot1;e*n>pMrLh5fR9+tjEgHyME*;445i72`(7<72#(^TA>T@S0S5*R+>wv~*O`l<$ z0Q5}x0v`C!pFVvy0^Z(3JE46bZu`#~vqmF;DA*!Kz*~2eFusP7O-;?iv4guYvv-XZ z3&cBzF~+O}z-xk}LA+Ph&@TtB$>(5TAJ*Ni?EB9gv#j=e)E50(FuDm1$loL z*#xQWT72_w60aM|B+0S8VnZYvPnp~pv0}w8|DU{T0Ip;UqE+8k;oG)t+qR8G@NMhG zwylS?ZQJ&4to7~M^rUhplgX)G&7`Wj-rRXQ!StNlI$jIsU_QqpO=RqFtgZ z*vd|ZY&DS4e!zHrCt$Y0DtGK1eUFHxxfQe32Z(;K%2l-|^-CM|#Saf9&HeQ9|0s2; zrBjWIUT@DgF$^{%^{YD^^OSRI0j5v1wFTpdLKug!~69qP6i^Go%3hlMnQ-Bv|s8dNE2b{xAjSt8yk*)gJM+Is>v z2D}d#>xWE)vi}Z8VWvm%ejT6eEn?(u#w@$*06+AWrmcre88+vx=nso3f^Learpe_- z`c~hn7+Vl6*1^x&2S$?*t-Lln5M~`MdMk=?#C_y#&iQdbT76a1ap=!0-zvx}GXc$2$6=QLf8v-0 zuXiwa?1r|2UKmWIm#D1^sApAOP<;Dnuu-GyvDMR`Zk8G-Jq#Oa8x(56eI^x z$&B;VuQFc^Honc~4sG-E0`y##LX{L|xe7D*{|PAE*`M!9>X;^f6;<|$8}pSKKX{11D~tE6 z^oTM6&1|qZ3o~#L>|Um#;RLn`uE)#=`_!m_Z2r`x*Cc#iRuFP~)cVh__K*Ucx$3mt zdXET;%2AGSSUC=_F}x@CqcYN7SsI8N6;bMSJQ?DQQ*% ziieIWo$*p#b;D5*od@(i<@-!|PmG4q0hnba(t_uNCG+mbyvHgZplwg1Vp#_uP*|@Ii1T~NJ z06e-aqWq8vDmmF)i&@^_CGR)tYM47NMHZB#(sR=Fiuvm%qyRDOEJKU{rk z%p&d1%JqihDAJnT_^~y667@mpmY9#r#|}uE+;jEf^=GLmX9skKa_h%vKu{1I1mBMz zI{@>(G64>EW0nKMFC6G@L`-1K;*IC!{?IQb__oNkpI_x68HF|jj_Hy5Vmu@|{Ta^@ zWyj%HvIkxo?o*lA-8;O0>csBrmTfwXDqBT*u!3N*ynX`5Oy*F`qAZP$8ErHZ+|6B$ znGWE<3tkK+UsI-ILZ8`Bg}+tU_ruHoRF1-zb>1%`l2n(TMiO13V?Co83Or*f`66+FiTUM0uyZ2T#nf$3NG>fyPtOQ43Lqf zQ(pQ1je^15uKmC9i!1-zC7+-i32jw~WhnUrRsE@^nSbUT8;BY6-Kqua&mo2Z?B#cB z{R6(m!^MYjX5c8y`g!1ez|SY>{OxL(A;v)_SAvqQ8S92sm8T3VnEYPM`(?fXhyi#0 zZ|+W5-t&gY+K4xbW+r#@jZ6#e74S!m{dd8{l~*Wnslx<}LclmgP85E>^gEr1S#I(> zwcMPE8KRJq9s_6%)ZLSWgQ^2LWJ~kbL$<0%T9Z+1q*Ky@HXeOvIcJ!HKoo+(``@|? zMAIyTp!;*FrxVN5_*5~dih4PhLOEDbxy=uS?O>Mg2lbgB?=ESJzs~#>4jlJ^Lp%ec zuZqCs5%z5+<;)t`V!L~o`!46+_FI_a0j}ptePt_N1s~Y+q91-1uq z?lb?rTFwr;^`$_sG4PB8{>APzj$ltHpZET^FxQzKYzO{tGo!G=O0d^Iyz1`P$Z=rM ztdM;<(DkCE{_aX<)@vN|gWVsbBfO4TEwS~Lm$u3xE`Aa?SPb-8mb2<;=jbZt`ApyY zy28v6-tTM3p!@M-nqW07{n|al95oVwG<00000NkvXXu0mjf2nCSU literal 25838 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 W7WYu5QiAZ&o#vIBmy0w|A^!ufXIKmX literal 20188 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

    =WWQ_^3%4@;Qzltjph&4I&h0>y)Q=MFMb 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 DaJEMr diff --git a/dev/initdemo/documents_demo/societe/25/logos/thumbs/printcompany_mini.png b/dev/initdemo/documents_demo/societe/25/logos/thumbs/printcompany_mini.png index f7ec99d6ac024863b3c8fa0135af99df5545ba3b..dc3393180ab784e3c478f75e5b043048c515392b 100644 GIT binary patch delta 2637 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 UyKt~ILjV8(07*qoM6N<$g2}C}IsgCw diff --git a/dev/initdemo/documents_demo/societe/25/logos/thumbs/printcompany_small.png b/dev/initdemo/documents_demo/societe/25/logos/thumbs/printcompany_small.png index 2d05e84fc40527e641b6d4114f463aee9bd37f6b..2004096f024a8fd1ac8af8bb858aaab723722079 100644 GIT binary patch literal 7171 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 FV1nmy8hii% literal 12735 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 literal 6865 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 diff --git a/dev/initdemo/documents_demo/societe/3/logos/thumbs/spanishcompany_mini.png b/dev/initdemo/documents_demo/societe/3/logos/thumbs/spanishcompany_mini.png index 41c2ee191789652d6124450ede47bbc809f04582..20683a0b4b75efeddfb30433a66b9162dc2a46bb 100644 GIT binary patch literal 4823 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 T;Zlca00000NkvXXu0mjfV)ba+ literal 8302 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 YryiW#i<$(r0oU==lr$A<6)eL32g0qbw*UYD diff --git a/dev/initdemo/documents_demo/societe/1/logos/indiancompany.png b/dev/initdemo/documents_demo/societe/1/logos/indiancompany.png index f38da8ae4b14010fa96fb423e8e47270a2aed014..e25c3b1a08dd83437c85a4a89787ec5d2e8558c6 100644 GIT binary patch literal 2795 zcmY+Gc{~&TAIC?oxt8=5m1C3{%I4T6bBsCW*nF|(EOL}EM=~+Fa*Z5AkvYp1p?u{i zji}5u5+%d(Rr;Z(>l?m(=eP9xm=rNFI~~001&L zJFJUf<_N}ni9G_ghsQ|(0747vRsq*}5BIaj zZ@5Tzwa&QKp0LL^W`Mft<#dRpq`uxeC=l(27`c^1(?7)Zc-`S!ReP+sT(dTic9`qy zMw{hU1qa6;N4b}(BT?=zXBHQIt3!NwvM>Gr^lsZ59cr7DMugtuy^6UaoNzk^4c4}P?|6(%=NI8!VJ!cTdin5 zj3vGSPi%5!Z_9$FW1%L~ryc>Honr{sf2t3F@r$NWkBoDexU`IQH0tsS_tZjzfz&$9 zPf?<$A<9|Ss&ww}%9c?X(^mN{HqcVz!wJ9TP(;6N;OGh59@1;%?0lpWlYXGKT~Ag5 z0#2l-6=y#U)48C{$1rXcgxrj>5<16sI`zU*GS2K`TRmVOpD=YY_pn<^{Us=6-`VWM z>bZd4H7q9^ziQDXyVu>t2vpEn%R%+~2li_WzNZ780$=xqsEE_xeJC)&PXt}?u;Dr$ zviZq!d@A_ewx#Lnl3g-ZDbFB2XBM*Nbi5&(Au|!&HrV{N7#=v+28_!kt$5`?h$T-r zSBE@NY7W)L_VQzzhF^|-)lio*HruB)BrA^m@gx7uqz@~p%!J~l&wW?XXwr17Gg(nO#5nZ2l1hJ0R!jBNck||aF?d_yj`EoPjik9z^j3W|~zyY~yTXoA3tB?2IQ_J~* z!XLf>HW}G}&v4|=@RBGKN~uo3z$8-7pL~|ApQanpdn9+#$!_R|Do6WyI5_)iPqNJz zCz$p*ekkWbztQ=jYowDOW`jgki${CI0QC8-{t#oD@qS$o`aW37EInsdW;{68L&hy?PXg)5 zhjeeZ&TIqi?voe$pXCE1Qyp%^MB=P%r-;C))Uq4?Q&RHO>#v9f^RcCezWXS+Z#3R| zPFB<~UBA65Cyc!2LY9A^y+tmX2n*w_Kh2CrKEA)Xz{hY(oVnB8wt1CIKW`Q|DZUB%Sx-A_vBRESB$?a*H4z8`G4 z;5t!OSLS+?%lk-`^5}(Vah#(_-+)${-zTR%eTvt(QG0^_@t~53w->RPAiO_`c#fwF zjsa~-lo5P%z0P*N5<&>CZuebTYquK_Mo@>hlTz+$nMftt6y-zPLNPHjx_o?@qfbO9 zKBwFWWQXxmb%yCZ8TWh-P&1B9u=v79>|{=OF+|6<54M2vPp2$*uFd{KgHE45XK9nE zJRsH69@BKjK5bc1f4e2G!b~x!Who($_r0?Ls8rnmEB-B{dUcM%JU~4^bk4tfE3vZ7 zqnSE2u=RMs$Jc9b3IOnAu)pu0@V_XKsc{pI@~dMhHkxA(c2MaFUGrW>5On>9R%j&x zvzjZhJ=DT%-6r6DI^zemngLd~WK(C+_aag?BKr0eKD#^scT0j4l}I<+eB0a4M*#=jxwO>ucZf&0Sv;;@^+N>ku-ujUpEN#n<&TWEqLH98LXrTc$r(a zCL@O7_ZYcUId*{wYLv$3YZbm0h^6zr`*N}_^bu>)3hp{|Id6!ildj#;GfK&Z9k1~Q zb@bKdf0GlXw@Z_-Pt!JSlZ`{TOF5Bb$x769nE@wfduVNu%l~ln;v!i|cV6-_Z1WNZ z(-F7vsr5`c2Q`(Lb%>c50c*HsfB@@stb*`fAduK>a&nUqQopo&E||cSX6DmWZV&qy2^0O1?|e zeLC-134I@4iX*tkAsw zR5He4@ynfWSEeVwVWC-`hQ~kqWsB`PBR5+h*gPd~eS+pnT#RsKA@6eYXE~%j@U}JL yXt3aJA#1<~#Fz5)jEtBfk26sfE39X~!dxU_i5_A5sZa2Y0^qFi*cMCQl>Y)+kT@m) literal 4229 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 literal 5046 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 M07*qoM6N<$g3KC)9smFU diff --git a/dev/initdemo/documents_demo/societe/1/logos/thumbs/indiancompany_small.png b/dev/initdemo/documents_demo/societe/1/logos/thumbs/indiancompany_small.png index 1263124c435fc2b93137159f6e4107d135d27619..15e4f65dcad388cafa03bfa01a14b852dfa27b07 100644 GIT binary patch literal 9734 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 U(R2VNQ2+n{07*qoM6N<$f}TIL761SM literal 13969 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 G5cogYCFZsO diff --git a/dev/initdemo/documents_demo/societe/10/logos/logo_nltechno_94x100.png b/dev/initdemo/documents_demo/societe/10/logos/logo_nltechno_94x100.png index 7e00ab58884dc198b9ec2874db88b1892088cc15..f21edd03fca509f01b40418eb1214700e234482f 100644 GIT binary patch literal 3996 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 literal 4251 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 literal 9724 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 KMNUMnLSTY_7dKh} diff --git a/dev/initdemo/documents_demo/societe/11/logos/comapnycorp1company.png b/dev/initdemo/documents_demo/societe/11/logos/comapnycorp1company.png index 7d45cad6258c5f5ebcd34495c9a055a12014df37..80c872115dbfc37e6f54c6526862e5ae78b491e7 100644 GIT binary patch literal 14401 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 Hu0mjfAxaLM literal 16141 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 diff --git a/dev/initdemo/documents_demo/societe/11/logos/thumbs/comapnycorp1company_mini.png b/dev/initdemo/documents_demo/societe/11/logos/thumbs/comapnycorp1company_mini.png index 9e7260c4b2e7280ce9764af6a9bac76a51fb8630..1fe85ef3dcb10d9fb550f795e98af5a518de1744 100644 GIT binary patch literal 7592 zcmV;Z9arLsP)b7Ul+Ig}IfQniUBaDEG;+pb{usc8MyBK+rg*4za5$&g4ejdEZ&!2|K=GR{wLmh zQoCVwLt=KOhQmwXF#p|P!4dE|$$n=}_MWY$y(bSohD`WQLgC?SNPLtlk;vT8{P2|+ zkA39x@080IRd6L@)-(LKfg|K|nm!w$w>m{KMxj3u56>@ z(9W~OZBJdn)cgb{_r1b=>FqVIF% zA>e6hE821IpCbY0*P~Ai9rcwAi+2Y_$$Nf0@Q1&rYoq_KswgRa)r!YBC()8AOUa*C zX87>^9>`J18OYfwG6va^T3T3*OhOwMAOA`>A~I$eU4Q!G@>FBY_@JSk#1SmsG89Yl z?NI(BUnnwn9NB$EY&Yv?3g!~CGBxS-tGf^kUL#R`IFO56r->I5R;2sHzB?J48-|ko z4m;ui&J5l_kk!|DB$74Ynz6aQ^(}5gEF|u1qZg@JIQVk@ao1UaRxOFC_-v!m^lAHX zDB~CMp4SmCBy_)Lwtb&nl;(JYi1?{mjTZ@+jQ0BONG5`-zHMC%!{W^$(5A_-=ii#5 z{BHz0wTL!1K_(S}((Q$@Jeie}DgVYjsB`iEznQmp{8ePmP%<%K*wWZVya$=@86WvM zCFsv*-V7{<57Oog9)4K)7leAc@+EGo(f#MWSAC(mFJBLauTPP`-zQ`bH)W3 zFY-22~vqbwW7Gx`N!Sgl2{<4(94}h8s27Oce;&LR zGRWsBO0ntT+*m#yV;}webeMKkS1zSKK*i#`08&BFv=NGyxZOwE#;RssYKq`(vW}`% zB}J$z-il-mleLClGuqcTF%*dHSr&}{MCN+F9=U_KMa;|&EKrjV;^F;9g0k#CY&}Iw z!$f9--gSKMgDHiY3ETc1mlCrKTIL;rr&5SX(I`R(Pco2C<;D5Mv9~bHf#_RnJDJ&m zUHy)OJI{w)|4&ISiPt#nFetjC4)ZR)8&p6pcdP=FJQQY+QJjBGcBkV=$PTnO+85&O@TaZ&iibmufC_6VXEM|uBlhzSDtRFq&2Ofg#QA8PtjqI&heJ3X?fQAnn zN3e1^Gptw+p^LG9-yr+;)FMt)t{)mFMrA+HcQw7fvMxcE95a>xZCp#@fY5tMuvZ%8 zZ1_AbKI?mY=40oVd#*9@F)2b8+$0h`58WrL(X_pNgu?Q1Og)>&!-1G>__H$!3Mnr( ziKLcUc6S{m5j!MI_fD0c z5I38Siyc`Otk9Wz4Kg%p{igN3?yrU?-yaef!95tDh8nk6jT-OQ2grP6Ej{OHb4=UX zNx|p}g2Jl|3+hVZplWv&EAV1QTipOHqjtti2R2)&S-I5M~9DD&CbX zm_KJu9&X=Y-Mj75RAv#|!R7cwA=QFVb?hK>(HHOw*hJa%aj=V}_-@}5s#%a8l?||n z7mK8%;s^N-d38bbs`gsFq1BumaNFs%g9I+=-VG}Z%D;m?01fk+NJvQ*kUGKCAThJE zsXIm?is$*u$UX8m655&4#U$~3ec(2}-*t)4SvYN&1sXTK?y=$PaFPEfNLQ<)R#?O8 zR-y#(?B`sW=YP(avaKT5P1EzBDNMj){b^@eHPpOKwB7HCuo>iz2~yU6{G-K~dc zok0{ zaR`z4Ia-qk3Nqh&#`Zr#2QGF0#0j3da0-W5;u84#C?m?qomZj{`mM>@G{tN16Md6g z(8zHTV;}>emZfp_;F9au;6vINR{l18#{s0TXQvIZK*@HG)ua~(WqM}_7*7O z3rq~4T>Kpj-~r^Bd{JHz^&Sg?fjE4YZob#4&+!Gg0={4ljVV%im?wrUO~+8&xq(wc zWwd!2?F~KN@dH1jbS;W9()ZWYk?)9YdO0xOoUNN=-q7e$t!p3wVR5 z-UW%rR)+7`iNBGO3bF<;jEB>dR=vDCh5_6M^;$swN}E|NH)iM!`Sab9bV`3A)rHrzVfB71UzA^IKd_U!iiHNP0)Hzp09ka` zk}ZhuxCI9AEyE(p0ESR9t$_#F6T<**qQ)Mey4|+=Bj~(2ixWXz$OL++X(lMz6n(mr z0r=uXNfJ3g0&r0DNpsl^X)c>pm?9Mmr4mt0f@!{|5Cx-iNK>7T!@KX(ia&8&E)QJ5 z15u_fQ!?HSfEPRlae>D3^eUfv;o91uH%E3U;svj0yK?YKt*r>nM4%~ zpp%+rX6h|TYNdn$6j_;S!L-&eE=tVq)yo^OEfmdQ0DiE9hj^(nHEBUZ30O=q04{<+ zs*A_DgbIAeDtM8T(}q~2E?Llwhf{$pV3;V0xr(4z=@#75Zm|=8Hpf<0i2JK>5%W3 zkCO9v^eD>%lwu127tl3A8%GhP2L@0;8_W9qqtoON2U0&?_MRSUj-BST7LzMqA{Lky z<>$OK=C)}P6|zViz!QrEo|=`_;#9e0T7=&xGG%BG0|XHR{F4D_TL2D>o`{hK_NCXa zvVsTL!?1|jAN63;Ix{<)`)N5mn8HG^fsNFa)mGmJ12{FQr22LQV(O?ZrZBIZT%l-L zZcE)Yb5VXLFHt1W1w49A0+$>4JJd>zaY1e{K_rY?-L`$b1LUf%Dr>cm_EB?r93U|x zSZt@qIh*?70df%M)JBi8wE&T&zjGUu+(e^-1sbIowRdVM74E;yw!imGh>cU|+v=*P zj>Dac<(c{d22k0va$J?m#(nEnoes9tUxE>YgFcQv*PpMsL`zQf2v~sw9`y8KWZDn_gE@i&_BN6F}>=Lng2Tfs$8V6fB@*0t}i#w%|(h06X9T z#(v)})|Q}wQxaK~x^#b{QZ5!C!uQv%zK}`Uv}!6&ChIf`(lLarKx`_?uNKKtl(BjU zjayqQ$rVi|Vq_!_QIPUey%9MVNC7$1fDWSuLq}sT+Qw;>Ocwgqb&c2xv>N;b3vC?i zTRth%M#TVqo!?-8?fktjKarQwQRgMu1A*FUwa0-6uq|6WXj+(88)&FLE5RX=$>2|K z&0LUM4VTYj=zz;FHH)p83I;%5Umdvqo3wfb(n3bpQnMmPr*k2=0V9~sZiYq7qKiej ztf*MKp{f!Om`mx;=cy`|ycEFk6e$9n!+Vq*aJi?og9(zoHW5EbtN__lggn2{T~$72 zTVB!wLa2^V!WlXK5{<_(BOAz5$+=c#KDSKU zHuucgtML<11+2;;ok>U$oy@DjLb+mb4o@KyXx6U`%=FuUWc4GbZj2g3WS_mXs4dvi z@C2#ebL-OLJB-SC@bT*D2SKtHFW7>7-#f2<&4s+yh6y6M&2^95YnJ!% zlM*GfTe&}X0FO-DKNx`W=d3*P8M=*CW^$%b;&sd=-e94wT%spG5RtZanVE^B z8i19Ywuu+NtWY$2RH$s0A_RWr_VSX^z=rB?eCsN&gRMU?t-yNitk4beA-bc#3Ccs5- zrMVt>GOGwDmc`86!9r{|iEyHpBQMV3MdjRC2K~GPJD<3|+;dlC(pyQ;=U7=fD3VL1 z*zb>l+^GQF`wd@`B*`i+=p-J2&OmY)*?WOP97ehAI`+li(Ol9 zqI?ztor*)-0-)^S;HC`|fxW%t9N(ji^{Z-7^Y?0ft}5jGL$1}!hEd)vNK&O5U8~E- zXa`7L9iK%#YshMm>V}c7IPm#vxh2n}G#o#rn;Tl}pD-a2JHk@9&;KBj!{5 zNMn!6Wh+JJZ&~(|g##q*b5)ifLs?fFrJPim*f#Rn7>GhS{f#Dwtg_-JF)M%b*T4(BG(%L@gqWYuNtnuic)yu;?(d7&)B|y zNPKqVOP>!r@X3V=h!^4yiz-PZmJ4|tuUu$=SRqcQOsExxeu3PXBGBOfEFQVgn1mFS z0hB_nC^X-K_X}Jy;fpz;d1hORP$?7&nW;$T#q)4KJH(%nEL0{WBrt;bf3s_55_=S@yUX-ZcXy+ix=<%lXDE^3@hIK5Z~Og! zXO~TBs&uS&XU;75Tswa5XP05JZjg-Qm??(SPuFn)!G#c{FT%%;2pB$G)|EMQI-y@+ zyvGRlVFSkPuGcx}AIukNigI^%*LiskcORH9O6Ck2<35h_$$cx=Ixe~cCVRTM3tdu( z^BK%j_?QtB+}wWo9$Wb6;Q>O|C_aie7z{)IhY+FLSL|2T)V{Aa?9_0@e`%KOt0f9J zVZ|bi`vOLTrY_#Lt>F{CY~9aXd-Lt$CB~~84vj{n&yNg)aQSTC-0v5olc0USMAhW? ze`{f@n};n2%ZyL5-b=6&?6x}eT$5^ShzRfHk(671pd$kycw#BO(j#n!#+H3;@9!yw=PFZ1=-sZL=fCZ{TBYanN*tSQR&z<$5G;VEI5ILM zC~D)>yU73z?$TMlE3|>R<#&5Lp1va+7s&j#XQS`U67*2;_UxHxdA<<) zMfrCUZ!xJ41Be?tcC4;B);m`to{H6O$Ur~&>Jr{oFTlrCXy5*(o?JMK3%?66xlEYon|ZVi|2a~OeX_hwDG zuG!)Jv8(HxhOo3!GoQOrQ?6~2qh9aj`+Rdlwk_Mu4>Y?O0XF^Irm%Hk;1*%v{W93i zDxL*U91|0hm=YV4O;78!vyDRj*l09nKbUR2N`!Pz4*D)nL)(Bc*k!y3^V?e34_449 zoWeSGO*)e;KeJKi0~wgZ8c6w73=-95}K-_H7Yn@(l-^+ zuLwiuB%qT*aYTnLXQGRSVikeyOF}P0ot1NH1+&opNx9Q=4iusP;XL(8Mwu>#bFF4B zzEFY8SMsOdBHpy0;~4r~bR5ZyQ?jYlV>Bq4|0_{&d#TeH#aQN;)hAQ=nim(pp%A@K6sV7rrW2$?E1rcz0OB2MaQz%a z_%Q0+E9)F6hK;hlX6n?bL%Y-t4o$hf*(+LfqCljKb|!sWC5nlz_nJG`~p=oh0o z^Q2Zg7avkNR)RL)j5d1V`}Fo6;@dN0@FWHiXyZR*s9sVU>5+(O6Q157PpcN73&4I~U*D4o_To89N2`@~8NVYQ-K4qH z({qS#Me%j2I@bY>qS#m(f%zOqh}YEf&yi^0RQ&ZVk_zO~Q1CY1C~D_r-fy1Qo9r`c zlz6#VX=fGsjxSQ$ZFR~U%&`r$+Peo*gS9mqx1Xp{9m;)-3fP;7w`2_Syv?MlmlV!I zCOxp8Ik;8&{C5`m8j|s>{QXpcSU(;Gu#2#RP?Ivt5^=P~^oF!cc;1zOL-eR_sfz(T zQ-A}ago{%lQK_!G8V*4UoRxqsrlZ{baeg&Ye@5m9n&|oNgL&I9eNw5k+X;+fj8e)Q zWv9^pXdXK6V_NI0Q97mH&UhSqt`HqEj;Wyg%vjuTq6R&TI`#z?T+^DR z?3K2Ab6^E)v3mM_CLn-(m_vrpF8~C{8@Ns`t<3R+q0CWk2!BU zy^R~Mwy3D6h)2^STDaDUt?~HEwV@o$SB%f3DQ}jjuXR?dRu^B4Og64}O;a-J>D|Yi zc-7&_G}seyCfvz&+PRMK`7BdP#3T9Y6~y&YCU?J7sN636tzCf67&+3pp)&|SBS((Z zovPd$7X+>2dfnG%pa;NSG0;DBgbW}5K6~mhZ?gF_)o*u(er^n1pfX|%Qr6oD+n@Q zB%wy;VjrKuYkGNkxpBU9!WOPETXx1YB2NIN(w{J&u#Qma=jS&nI5>C=`^sFqMA_cn z-tJ*xVG{;$D?&nkdZHQcHRxz4kwWt+yycS4aoj9si(&@&s^{-A@)p5VB4akNo-6AF z1qHd}BWpzwmdKhB5fQ%{VR=b7O2WRR&uA8j4nr^8u<(G$iw2+B^TQ!f1BSqR1G4kS zC424iplJO3*dd(|B82g#h@L`pbHT)k6AgmrjSn3!rwlHCT;|=5I#+8qs8(YepKjxn#ihpfE!n|(SUpUnNTmA#=DrsX2QoRuX0000< KMNUMnLSTYMCAoV5 literal 9957 zcmV&Bq8ICu)5K#^m4o{Y z_Bwp-`sNO#b+~IAYlC*DE#mbB{-?)wv3){*d;(xuB2Lw)Rnv-Q%E#qiDNaq9&QDMj zFocm(fOGh7c&8lF`_u3{zy*W#?uM2lzV^-?z2z0Vy-jVVNFW%wh_D|Y0>g1}!9B2I z5v!PxH&u7t6%R==(ifm1Es%Z|;q<%jp&j-kd@$l^?%#>y@1;17^8~tk_FMKISZn>} z@YaySb&)e%FqUE~{$K)NB_cL)M)7RjwF_4Z5>*R;bMXL%`>;y?H3xcn+af-HW5gdY zIZoAB2MJw`4}O4JgDF-X!=^c+Xh&<>xr!!UhBgx`^{$9v5B&7tSJHt*RKvO9gT z)47=PeIf9J2tYAutRdsB8=n&-CSC(X3Hw(t5EuwrZDm084tHJCPIp~%ZO~@70r}@< z<3P43B}p#QY4x(a?3oG01y_sHQc5sL?Eu&4BZM;3#;s3U_8i>J1w-F=&KJuMg1`k4 z0N6c0{pM@$Pb!`9J1kK(mEgb~W#Javq2sUg>^t;^yS}9vEB*&zhvD;xSg+GSpST8n z-N#obrlKDf1crz6Ijig5Y34T>2DWAuH}{gCk*optALik5}{_JXUcb z?T+?3--`egg=6zGSKazIzCvCQmCYO%@ie!++40fmPqQ82*|1IBx>bEV#5-zhe343~YG{0I>Ux&QG`8+4be_ z?dM$aEX&GrGgU&3dV0c?f&x^{#7Bz{xW~XlS$Grlh1!6{TIM)$x`PXc&&fulhD<}w zuUEaslS=3G6Jzh8V-K{v{NBr;%t1|G{CO@2oEHIT7S5iazwP>6D6FHf4cZ<1TGqY0 z!c|>wjN3T4gDf{IO*OsfM%5*gZV;$d(~-m<$^4^j^yT$&6)20f_G6VBZHJG)<2YGU z!-e7#1Gs@W=h1tgLtpowwHiXb2ao=|W&H=Qo|7o!4tjJZekTDa3&$D^kKVTjtTuxp zKjg4&sQ-_3cl+8*ju?$1BUB z@yBolo>WZqw=aJrapon@L@g1H3s?^vT48+UqmR#{t5IKscPte#j>}>T1^Q>#_%$O-}{l=pB81>_=j2({ZvVnOelQ$ zumWzE=VcpwUFL&9tKB`M9hiakBc~3E^(iiKnr;#L<>UK`fVpR%udTE7Tw}PHN63f- zKz;bx58nAYZ1Q;&P+0k!8veNMc3-Q>GaPWr!f}SY-`@W>c~16SK%bZ*@bB!Nx_+b1 z91k2ht^V$w(;=tpC_dHr(BJga#f3uwo>;^~S#h*|G(w4vwgp1qi8M(?NtaE(A?)*= z@V0g|lVMW9S$U>RF)@b-REcw;c8HWk6E1U{tlki^Ib(=*`1nWj`-mbyzw-K@Y39sc z3xu#ihoijy`IoQowRXnX+q&x(mFSi({)FKeUCgRxxHib}&F(V|+iXWq9RUHDNAlpo z%;O7G2^#s>oC$COEliv~c?lyBPQU;MD~p6DIV)=$hXVr0 zFV$VU_zR>D+1-l-0u{Xn4*%J_ZQn+}2~L^|(8>iWrC41uwKREA=|g;F0$4kg$iKG} zvR70-+WgYnf8hc{am!cAucuEnwoawH5(yw)l_cNhYN*FJ$ny41PkF;y$6mR3A;QO z?60R@M0agd1KhnIM}q#Z#i_bto*;8k#OQt;!$;pFe?wm2f^r09YO$f^=ChD$BR6PbRyQX z)%fcB*Mo)I2ZM;(-g%EdutA_y6!mL*uG)rYo7TK~x39fxNZGicg@y*Lj)xEZ?*GuD zQCb@53A;T3TltCYf<$?}BvZc-x`~Kk8G&;0`1$tZRUbjOa1O2u4`n6x59YA~!5C~$ zPqZDWcs1m3U))L_24Mc+cWF*mfk3TZgfyS^oANczQ?+eF%46MSKXCga*aw(%mM28O z>VF58|L-Fqj;1q00Y7nOaY^E|$u}qp$IXT&mrvRA**3r}xaOeER^zT~IcYmw@g7!d zZ9K&d-a*p(`X}#uTRLp|+m?L-{ZI-^QJ;D5Eo;vF>zbPf`w2oehp+vE&wrP3_f61I zm^9V2Dc76Yw!V3;agN5kAsj$|+jWn@?3)NcJFxm!L2eE)`Q+pC@>7>z`4*5Tq6Qi~ zbuYBM{O<1nxVWpA;qlm%tLHDwx^KmY>RH8)i*(7;uyS<_!wG2pC?f|3sUE?K#rYC_ z>SeI`f3BW=$$Vk5+K-5!x`;P+N72*NS{L^E8ex8d#WQ^DO^iphz(H3{L&IPs`n$S~ ziL;7J;VxEUS25eX?dvz`2F7Sa^hk3aFtGqcIZUu+z@^PqTmK=PJ(eMrz^<_yw;DK$ zYW)5#^T+KUZF&L#jq%RWd;naX_vC|rPF;4@R|p9!j@tES|D*X75A?tO-+gvJ-WiS+ zC96x47nZ&^{+ZP~m#*Ws?__KEsNHLpT}~!jSdb^0nyA z$Ct~B6ytL9hqp7@-v>BA!nDHKi8H3$41k2%-}~&hep9!3FmPmJ4SA`{ulg&}1Y9Us zQ}^uJ>jPaqL*#CM`NWx13gM&wLa0_RK^hx%1Tn;eAd!Q%vg5BiD$l%x;LkVkdCyhb z_zAv`K&SA->z9Or(x{Gyhv5q{R8tGDLcr*@fTedx6cKd<*^X6~C(bCED3Hk~K+L4V z{5*)Z>IaY8Z|*T_=FGeoe4-mxN*F}*&EWje{(E4>Kt5jyVAMmIVqt#O3oM+pFSvQm(w%D_*dtG;>1@X5iiZh%{M9QEfT zAoCfp-x#@%Huz&!-mnhHr|poi*INTb&P62ef#L0a*SqU#p;4m_DVt0sXKd z@tlmifBK7fb^4Vyj;iX3Bdz1hYiY8_u z?%ou3d--6qLu4q;hi@Lcdvx_1x7v@Ms*VS$)Ekzp6eepHQDkAm#?-jx)oUS2hOq2- z^+rky_S$_7&%b=9ucPZgpRUL_l#>fqBS;kP>7ftUe895%TPS-NYku}+!}Gny4hKAo zF0^?vVah}rlydPo3xPfnz~kjY>#vUlgKWTR8>0Nta>69_6dL~3d+7KZ@%;KiZIU>7 zLCF)8NKh_h-n#bzdcx<2LKz5iw0*E~MI;=?CKM-Scx*@N^;g{=uif6Vqwk|kNS2#j z6ffV?WURyqBoB0jvGMXpYg&{55VDm9#2aCATX7_7D0>H1WjSN=;bbvGgWektP}(a> zm%*UVqGlad<4zDj%;rnxj7t_|%q$+4pihli!SUMcPjjBEX>?ZByg+RN@Rl;@B6o|@ zw9!*WgC9?0D?NL#6GO-yo=4vUJ+?Z`(MIPQFMqVAMG1hfN=TOF=zF+GC^oPY_CG&C zsSP=u<%sx=ySEPQ`wleI4B&@MU+j1e>^4S6;0Xn`*7Ay4Won8pWBQb-e6gr+-~T)y z-|@*;e}%b^z|X1(j7kgGcxk+9h$-BKm;xov9>x#|;tkp`M<;d}zZU_<>*t>-t=|zO z^)$44?8mEP_WPrg<%rl`QT=Vai9_b<_)5hb$o^w6@r;g>r{gMp_70N=;p36k!xfeC z%XIboI##jrEifSw72pg1g zl8aA21o{bpntdK1x@QE?@ZlJW@eRlaxebX*Dii8L-IV2gA9#@k`{9sL=!Z6Br2sa2jdY7CFC}27RBf)JctEnWgWbiT-u@xrMF{|M zn*v3M^ZYTZ3M-1h+t!BscmPMVrV#R$>qKDZNwDbjctDe?R63{097TFK7-D_HPWCEO zlhvJ7HT$6_)aEZNoheIF(}N>J9<;3wIo-!;PzWrN&^gW>#&uCE#^+My&jb*8wm;b0)jSwu>? zSe-p)$nIWh;rKMa!|m#>ZD{UkXzpk}c%&kC{-vc*6o=>rvV23K?eK}6Lajy@v^gEH zNaBT?v7VN;7(WK>8?NFssX=eWT;qzecyk*KX;FmZ=ynalxYFP#ang$(hEE*kRXL7o z8-}OTcYn9_G`{p$kpb-ApO$3lqnkK`AE`PqN*Iv;QjH;NP41l8zZA-(;xSVvXLOye zGrKL;D0fimv}yV&lZvXp-1()eyJv{91`9yoX=v#H`!B$jaa?aC#+VVX^c)}7ee@Oe zSWjb{5_65Kr^Kr>8q%W3#%`HKmYX3CSbL4piyDSK@TDKa9(~+>d0290X^uW>c6D#x zw*gVSC4;Mjoy%>l?NMaPwMn_2p57WoO7e{2o38r|$hSnm&XL7t;F1Y(fzy_>U<7sG%A{gE{3-0%^2~#u!>{}p} zP&PODAH=AwfJQO${Y6rVTiTRIpUq1S(aQr=j@=yQt&!{g0X!#VC!n z3)$^$2)wjlJ2lo-ip@Xg>DpuRv4*VS6BTKbCSecZRDXKs-!|_{UB1Xb!$9bRRqgY1 zTRqvcrafWrG<}einQ>p^H)T)STRSX?nd$jyQwkOv%a3pJSbO8jZr#!a2J=_D_T#W; zgkBVZt!j(2sy1d7!z{#3Krq&mi7`mCGYYYZbpXf50tj=vXa){K;=q#bEk98P(<-0k z^8<+djWGu;yAB+|uHX>y0G2Dp{XTPW1Z!`9n>6yaYt!zUgu-!BkwUH!D-~K@!MGBE zM5GnUWqLS)K67?i+A^mXFAysf+NS;G8^H2o?RGRMOiAKxQshIAnZ6kH08;_Oz8DpI@7ho;n|A2y9^Y<4x7I zpXx7}JkM_Gs_!^awJ+Z8Vt>B~ISbj3RYh%jTncd$D;CI2n|8cDd~Ea`L8KuZU5l~t z1&ImbklXD*z{^zV2XRG5y!J+A+L$}9UjR9)(k)xOC>{WC6dM~u@+i>=lM}@SFaG|h zZrPP9eA^&$W!O6zISQASQ@E~(U?9&t21x;`WWo(T=@2_*m8{tor0+t3EBH( zXv&fWH_@=~?rnQN91b{$5x#0n`qksFocB?3o}sAl+ACLgoUHm-rdCb$*_;}`!xhhl zAKpy#9mv-q!1Oa`P2Hcnw|+h13dUYVj2K}>0?2>85a$KOJ$uUQsZ;CXGZX?t2mnB| zB5sbwVUNnB%V&%m30U-Qz=YyS55hECgD9dQ$YenjdGkx|5=y0oe37VBtW@TB9S$K+ zAP~YMIN8x*K5s2tIb~u#kiP?`e0Dbe=j(qOX*?sPtELsELGCxo$K~juJH*}08maDR zNsqDX?1xX(B5+azZQB9X8Q1-b^LculBgnFqS8N{)D9RCF(%lcczdY#k?n4wYn>Z%z zUu2r38^09M3Uz1wb$e9-iP5pC_^ZdNNcw2el{>H+ITpCX<%vc;?gY8eHymAE>#*@NqxspG zb}r;2rcj=8)%-`2=FYqsD^-m!?w3uUZ@U&EDSm*;cOZ+el<`?1KLk$3Vh0huc$#&zg0~&zlaE zKX15n#?!Wr&ULCZ-ObfocHf8aub*N6zdjyB5#&j5XtXr##;ez2kKfh3W8X8Do!@S{ zP{jB5kuY^4+k5bYO?Amcx#L7l%+_$cv5eNVbH-$e$E2{nwywx<5is%UMb9a8DZdG2 zr;~8H)@0rK^+V3GKvdg%5s%tl85ZKechoeZ$WX!ldNmcCULA zXI=87{m6;ujc?XQm z)w8GMDkQQi#4_m=w$}koAS@Ra7yKk56&VA~?XBP%MwVey+fP)!pEvKa-#2}G=-&fw z&yafq;IxtF{mU<2lxAnHz$xVAou6*o068E2F#!ncgu`KwAG67S%C^qQ0fx_*-pM!q z539F`e8EM6<_?yj8+jm+uu4IK`I!-~)%K-j2zf$-LP$5m#MTgL>+pokyhw;0rxIt;J`wBeXmEwhpOmnA*KzYcSwv0T0?w6c!kFz~tx5R)5$N#2AW_Bot0jOO4LS7bdnAA7}CT z;=5VKCWx{y4i);W@dZP^03zqkn*eB>K+eN=KP7kjm$K=)37k?!_{L7ccK6c$0SW;L z8uTQbs5G0m?|WR*)njeif9OjZ_SILQ?_bLHlS-zqZhrZ#%k9Ui2YmB%AZts;Ec@B` zWO~8}$GDIJzyY|SU)7T*eya~JG)Q?fX;1j@!w6J*vm^ZS3)R-=zAaVnNfhz&DG;7* z;hx#r=6Lt@N#fUXl%kom{w=4O2i_USJ*nW40T*`=^7wg@tb&huNo+bHo`&k@7om(rzcPB@@jW11>AMzqdU5G!B(%>aE zw^eg1+8gUCHe87gUF2cL>#TigN&>x~2?P+mYA@0gB*tHy2|swa-nhSE zX*RtN;VeNh5kLO8#$Q^w=U=L^zGO5SUHw-f=p=mcAEu}O>Xuyft zS6ASiB7hDi`e0{Io|l!KWXQUSHzD_Op4CQpKzt}8m4uTM35&a+Sg)V3xDbr-2O%5^ zuIBV9DTuzQ#j&i`et$m{zS*hEu3Tr?`|YE!G=^L}HB&3q{#Qxn7BFq?7Apzuu@UQ0 z7jbOwCAKTnWcJhq-sG+D^gq=?8sX4$PLwk`ton&vtc=9CCt+&6M6f)W%rFIr@P;a;vB^go<|Z;@l{`|o#VxI}SS&T`FV+9@$}tI# z_J#;60jog&l1dl1>yA{mWV%+q9PRV@I2~Q#W>RJ+3DYOa$Yq~dNC2zYn=2)$J9-)S z3saIVyEIAo*x$N|@0nKSIEZX}Pft(l?+9N5~KfMxsy3+ zHk->S$BJtO3?TmO59;8_T6yCd5l5D=HBC{(lVl#@w{(z*OiBWi@(J5($9pH?cUuVv zgyp9u&lBIayi~h*?w7bmevN8+;e1(s?)^P`4?fra{-zDX`*^4zWhK%yXFMeGZ_Q*s zR`@#X09#W%0P#GPEFce~ZdRM0XfI13%h4v;)601LZGgiU^3n6gSM6BPkQtPeolW+g`SUFLGRqMSL#6G#(>Jm@5I)lK(E zTDyu!D8fS46Mk0@;dOSCU|uHSN);-SJhj4>T@kdDh$eXQRA3H$pj za``XPxu*ii`v7%NtoGM=(tpFM*Sy?8Tv)Z${cBBtr0qp_pHM8pLUa-w4Vw$3AOr}GH{35 zFk(RH^W7W(oiIXCPH^Jb41QA^5m>#P2;8a5)Grj%gvHasU7Z zi%CR5ROM$XgmY;&Sf&rzN2kgoX~|-Ku@lQ2)NZ3Ik|Lp*^&&F6 z(MKYnaC3&3?Cdr8| zTg>Po!pOr7q&Z*0l_v>EDF~k68&~skb1E^X^_|2Fara?&clQyr7oEeQ=1$A{LIeGi zedG&E^l;1`r_(tQZ~5H>fExI#U3CQ4?}YNR2y1f?K|?EvDCJQOz&c!nPv13(B$SJH z=m-3!b`nu3Lf-7OnzjRF51kA7bdU?vmH5LCQ0{<)r?WYOC`a^$V&>!k6r`O%o`JI9 zaZ}G~;uG^2VVRu^xgyN5e{JS=K)%oV%@~q}DziZpKCo*R z+(5kBMnbC_$xgtV9&w}4F{McO2Uh7L@8MOrzJv1_{iI`2B2ktkaMThZQx&9?euJnS zJt1ZnmT3XFQS^BEemk+jGC8~`iKTzjNDcxCxx-{%Yg^07e&o|~pgRo}U#UXEzBQiA zNfsn-5i*JVhwI66P%0q-7_vB#6VFw0KV7JnT|)=935Z&#hIqp7=ZwU1!cD&1Fp(@n zxUL*TwDYIQTnN|h@V8q@06NiT6g!F!W$7L0YiCDC$AAZQNs6FAEno^LApvI9uzHSo zJd{`TJ?BLL2*=)xOPgTy6D72K5=l@H9>jp4rZK7nQjWmdu;SZIAPfbe4kE_k_Fxm| z3It)s4b$o$0R4v6?)bcic@?bvcF=&(&oSfZ-C&ScfD!YaIGrofiHLrViY&8Zy*vjLIr9~XFtxnIw!1gVLEeC9*$5LV zLdDH3lQma4f@*DhceVJr2t=T5myPVcT}Q@Mxryhbn^ZbE{&NQ%VPB4zyA9$;4P{V? zJ{@~)#DScCOmTwVVrIf(I$Z~ z33+*W8l_UX6cjx8{C*4GH&8_lv7z%Y!RXO7ymw>u9l&?9Kp01ec$Z>a6h0KY<@iu5hmY0# zX-!Sdh>I*UGgGP2XqM1117_O+qm%vepN`|a2!OI?+#mdBMZx%A4pg8&KnGD$fI@-2 z0m2|OAe^L%L=-Y>>zf~4+Ozl2dGG!6csznh@`02Au4K2{BT!}nKt790?D$DZNl~R0 zGA;rw778D3kj6vP0K^b=Y|w`S4|#pg69BCL_uw+L9FRiLFRf33P3uSKMW#rH#n<=O zOOQwNBLE&0axR*OZ`ytY1Qnv?K^W1Ctbw@DVBkgvgNM!yNDu|vlz;S5B)tg`{MP2EcC~eW+Vl0HOJkz&Wqz383O+e8};5?HA>GT00000NkvXXu0mjfL4#c< diff --git a/dev/initdemo/documents_demo/societe/11/logos/thumbs/comapnycorp1company_small.png b/dev/initdemo/documents_demo/societe/11/logos/thumbs/comapnycorp1company_small.png index 4bdbe89cd8212fcaff4f59ff899c5a67ff83e6f9..7ef1942d2c1870b32d0328268960c4974baa8a97 100644 GIT binary patch literal 22245 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 diff --git a/dev/initdemo/documents_demo/societe/13/logos/companycorp2company.png b/dev/initdemo/documents_demo/societe/13/logos/companycorp2company.png index 18917afb66d01caff5df74e81fd784c0097c9284..3d8faa773c7cd09aa5da85d847e0059d4e0cc49d 100644 GIT binary patch literal 8669 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 literal 9362 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 Q*61BbUQMn+#ytH008h5tQvd(} diff --git a/dev/initdemo/documents_demo/societe/13/logos/thumbs/companycorp2company_mini.png b/dev/initdemo/documents_demo/societe/13/logos/thumbs/companycorp2company_mini.png index 2351788824398334fda6fe5897638e2a69c52ce8..217ae6dbc8bea7b8983f56104fae13657df205ae 100644 GIT binary patch literal 4925 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 literal 6151 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 ZzX5`akyo3-&jJ7d002ovPDHLkV1h=810w(c diff --git a/dev/initdemo/documents_demo/societe/13/logos/thumbs/companycorp2company_small.png b/dev/initdemo/documents_demo/societe/13/logos/thumbs/companycorp2company_small.png index ebedec3d9734de9a711808b58bab21c42225411b..cf5f12beafd0f7c027c657b42694c0be8b0c79af 100644 GIT binary patch literal 14573 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 X_I-G7ZCgkR00000NkvXXu0mjf++sAc literal 18948 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 diff --git a/dev/initdemo/documents_demo/societe/17/logos/bookkeepercompany.png b/dev/initdemo/documents_demo/societe/17/logos/bookkeepercompany.png index 939f5d66763efec45b906339f6f90fd8ae485742..770d3cd13cfa5021ea03e3cf817322d6a9df3fab 100644 GIT binary patch literal 7136 zcmV<68z1C}P)Pe0a>v%*@Qge7C~}sVl#?ii`?Zv@ChR zd!U6cT3y{y`Z+tR48|5ON%p~~KJHuc(&Eo{mtOYBw6x=jyyKFcW@%9fq!_nx0TLKO z5@sL?0Vd*{#h7|M0*J%_)pNvo1l0E;O@<_5yyCs#b!KsndY?MC_C0Io8Rx{tbzatd zef3NkjgFVIXWlwqJ@uF`{PjP5@m6j#VgKr{l)nE#PxzyqH{beu-Hx4CZHX9QpM8iH zNgzhfLX;YT!5CEEqpY0$r^mardu<`aH+`NrG+i@dOWUWfqNKE#^v*@4K6`}lag zI@5pItBawXFu@~JFdRz^?9LNu81{1TM;dC8nKSuZp3z|w4ovJ(dz2y zkAC<|zw&SYH< zF@t(uwPwr)twVi_6Qm-11bxeGFs(A9%(Se|yLEH~+^r zR-(GguiC$O)inneue|z`EbLgbY%Y(pq$J##q`Q+6a)$(RHnL%tS(4<{8?~0xx#>AI z&q2SsvgD^vT(NR^-#z*}j^5Wtqf4hNaoB4EQFTnsX3XlY5C7Vi{Q18=+BB)wm%sQ> zT3ozgJ09n}^RgqC-1C0#xHC_0j@V*eJfh1_SCw|rPRoB1rd=Vo=+Y^_rx$(o7-ur>?B4_`s zL~O^@IVDu*y0U-QEvG;5j&G+QFP{q{228aQIP<}Ger0Fg|Fl#BsX>(5<`0r@y0B;x z6V$7&`NYoqJm~Gzi4qAY0?CpXAS$S(DMUy{3!`LdE}|E?Uv zHA~Mt@vb-ipvkk>&prpSg%?6D@|9Qpc$XHIK2KgiM!gYon1g6QfQU)tg{4zF@AuF* z0cHCTId4Q{$j%K>B$7}OB-EG>%OI|oW4~O)cZg?;d2CH*T6ATs>Bxrh~z3;8wU3<%$ zulcfXc%hf%6;W;VMk>YC1@{HbLj>f5A7#4JsT5E_wL5y%Y)V@-gVpPe5tv+1=048A z@wdL}JNwnMH<$#&ulfK{6;acO9*Agw7$@4X-hT1HK&~`8viFNW^@bOXuKdz(eo>3) zN|+*(P;o##@-iP$bwTqDuTtpZgEMy%INKV`V6kMsJ0eP60GXJ5|pC2JM2ErwdXUK}J^#M)nd&|j;QOCWE0 zY#d`4auJ5{Uqx&u>^0q8mP$peJ*(X>jy`ql2B};SqAmbYu3=9cT+??e2Y20Y>3tsj ziBd63ft=$OmPmDB@iL7lVKohi<7OU(PAZ{SKddTdOwd#dq@8f{I2TuHTfty;F79|= zvbleT5QnWSs;l&)EK#rol9U3oR&ObQJ6?Pq;*5nJI?06!a*G=@kDCZ+eAa{oh8K6Q zh>%pbIJJ7s+}+Ejh$!-|L~MIv&E)RIPi#A4J#HW8gcm`nh^<~d zmX|qM4!15Sg)Y z-?AqbNAl`LlSxSh2QSDy?l%LG!TUz7Sd&Zzmu;-p67EK=%!){@;sG5r!d0;m18P>;uGcjN`lMvS!f7;FM-rN=$QCMgUC)oYrr z;tJyKuB53}&~CPo9QSQS)Hx$IJrP57Us{TrD1C7LV|!y*IM$y;di0ZlYAgn&C@Stt2mH+YxoHh(LXuEsjyMr1rH1q^#nF zJjqgGZeHdfwrh?NS@*H-m>1j)!<#)TVe0|x4uZDt#!X5ucRUd5cBPPVOpcW0-b>Ov z#7NTxA=a3Mh=jMJB@B0mQV~;5>PsO{vh>tFIr4dk&B7KyLLkv4a}|}CPHhDe46_2% z{jP`!7k5jPQVJ<$)y=jdNl0EK-0w0(O(Vt}=k&zB@0C(26|wIps2eF|p&q#a!3;zL ze3G(_`Ih>f7mkUTkb@io&*~x-$6iw)t1ZJN6{UnwT>v&V+YUx?dAV@J3NjzDeavBt zo|y2`_r)iONm)vT$R1Oc(?bz>fl16j6pEB@RIx;Cw^UH=r(&a*$Z%KO$c0p^H&OzV zdntof;8DG?*#_$tP9xnVh_pF{SQkh!*rAe^t~imBiYcq7Cli@8$-?BgsE}L;fo34a zEF)FzoDO2IR{LpSPJeD;m>l<-f!p^*DN!n7WJb+qd+GN3zI$!=N4`tKwiB^!RjLhp z6GUXRe5C6FHF8$+KjRXu58O=Z@e0+aN*(O+F< zbnFmohxfe8Z@TR~1bC-qnb0Pb8<) zdHK>0?R@ALJ>imvf8|G&CWsmD0ui$4d!$a#BeHNu#pfV4dso#o&;(XvTpp7c?gpBE zRa-?lew4KXyC^5_KyJwG_&ijAANYYED8Mn`ZzunK?C|O9i|f85yM^LLPNEc)@+2W6 z3e;3WnXE!jVv>bSWYXZ6Nk%0qYvVpWs3R&-Y#@#U5qeNo?xeoYdQ@mSORf^ zmHI$SWw5Z!>527mZYwe8b3*J(rpstNhROTt0Xet_V(nKmpN^)bd7+DvC>3!~v7nWc ztnK{(<J+#EA97yr8db=Mt~ zboAp#&fI^kjPH@@xM0Mbl_mAcWM`7+gqW4p=bkQi8hfPNg?t*(D`Fg5B*+5ZMQ8N5 z3Z{*pxt5hPjQ76h&OD7_UI*&me%1Mn9G(N_AxUvUpP5tW@a=> zIleGjmYMCa**?png?X>Pozh5Nt;Q;?62%qQ_p5r<`~C}6)zjPipPpHilKI=5)Px|( zt5rEpRM)AIU(a9K&<1eE#G(7vsooQ8*bx8{Mb!45L=+)HK~S*ZgC$&|j$qGb?Ea?^0SbC4-5$}s$BIx2OKYnx4WJ%nxB!SC z@Ugmi7hX|Q|L87&EmvPO&R4$Uj~bs!j2cgxm9#b9egDt}@4cgJ*zk-3&42sdCFu=~ zpTGq}0ov9#UMUX}k9yCz#N1sBbfxb;cD$m+RVN z71TwQ>yWOwwF9+XQLO{#a0Rb7WZDRxegtjXhX~QqD0#$a+FiraSC-YBHv%||I8-kO z_~U|e1|v)-!Zsfy`{Y(!CXF`jzuY;s>9r4E;DTHw>Tu4|nOs#T*=_5u2$PoGxxEUt zh;xWqaEj|lj%nYvvbs2lVf1{pCX8N3>{}9}7(E|Gmubbg9S>$DcL*_utCOz8#c333 zC6(;*3)eIuG!cWKPtrja$WegHw3B^$8@9Ej)p)+OLOZHxREaoCXA;#&TUd$eC-!$H zGmPpi*p34sUge(RB!>HRMqNk5g}S;vBr%L#woGyDEx5cjH4?OGXBA>PmKcpzoTf;D z=6Up)TW-Or%4g|`Q}yluc-f!UWl?@ZF*YFk)RynsoZUI(!s!o-F*_-!#3*Je&Zw#n zE3xvT*>x)H$GPrbXV2R2=Pt~$nikO($}8_2 zH2eCu21CZQ7bh{?dp2RM=khUW+g-+?M^0krZ39?`Iz`)C!nQ>xvgYRFcRMFz)d?Mo zFyf+pp&qMQ^V(^@T>EPVfIlv{w4$QDee&Rz;g3zb>#l$T)~(w!xUI~c7;ITH+O#&6 z`PI{RCK91#g2Pe6hzZ(^?|f$mC0s(2nk7p|%;aO4X2_6CCN-1I?~`RpCWGepdvAVi zBdSBB=q7BT`#jmDThaDb3Q!*dLWmNg(M}>8QS4)jH9SH}wOlhqyf>gsK(*0&{+F*> z^6>6%ubH13E$Q4R&N8;Z2-4)07WRmL1snaQU=XZS<3< z&45X$%E318(C@!=t!r+Y687HYxRd@>`HFWx5GJubn{B6?KS_8Jp#I9K;jjN9U^Eee-rZVJHuq(Jda%9Y;G{k&a62NN88RGGG1Pe@Mtyhe zyT0=6uoAs|QuqGgBfrpGcB-l(QF6?P(cc{TuFro{^GQr9ng)`pVWg~UN~sF4=hoM( z73YR1THsyjY6-5b8LTA+jp?zJ)?+>TN@%5$2w#pFiH#P=tpEz*oc<=%C_s^y3~JBb z2(V=Sg%=9k0eGkq{tDaw?KXDrj(6|<^Vg=BMA9Dk-Dj_N+4R)T(Vs>=(H+?Po|b?7 z{&>%-wN9O9T~`d8bJ;LDb=kn#!wx`+DhpMM&82ZIP4P*MFh+nPZyN7oonRn;bj4|?2gktuK zbvFad`d34f!cXJ9u6_-`IDa9qot``?n)~x={>ec!%z})7dL!Y zL}sJ>4!Dbavc#ElYw8=HAYyRKkoO|;Szs4nft5z2wzjU}za0nY;X~rwbRbM{3(zXa zQq)YVty}XyfNK`5Jm^cyh1z=Xd#<%DLSp%TuYu)P{y!FK2V+>~#y|Wq|muroi-F;p2&^|KzRMMvADPUp?J5NHuQTuKa+f zE~?fp7G6DNc+&cBMD=usJm!q|i>pL--vW*S#uSePi+gOm*1uVSf?T?G%AXPWxfos} z;$9=@FY0Pje^ihHulr$9)}VYRT;bz<^?anzwk@ko)j5@aqkIXGUm?j2b@Nge6S4Tp z>QfVew?S3Es_+g$zu>uG!?K#{6wd=DZX{Sr-z|lIyzKm1M6c=5x8eF_wNvLtm0FGP zMZo7UKFSyB=2cAvsBA0$I53ayj8nsJI}ebj=3Bscx-$ZiAM!k4h#v{|-P@Mn3XGw; z+k2xGV$fW01} z$i^ehcU9R0Ai{o*%sxVt1H_}bM6&a_$B9GO6<%K(_{7rB9vkiP=ri7~5q}ZGgFWWE z!hM5Uhb#oh`eqUE3_aPAP5OTU5Kq1n>w%QtU%T*;{Qx3z3!oGsaMSbCV@-)Ywn!_5 zaP(Ih44NULw}^1Rm~e4(OIg|M&aq&a7*uBgcL71P?m~5DXVPkxEdQs7ysY3Pp%vx3 zZI$V_5mB>r`C`<}2KhJe3?la^dTq_ph9C1hAltt+w%ErO`_*2(t+nR07kzc>fX!n8 zqKQ^4p`}_iW#ysp>IBaz1K?wYUc7D51#wR)iGRQDf=LAKi_Xcc=pg+=vhuOnOB#0+ zdfn9W>NiU|JF8V{bg<4ihELi=?`{&fvU(Z|xq9&70<_r2+iAqIOFhF6KvG0}RpOXz?98(y6S6lCi1>V<;* z5M@EQ!p9Zu+ZQQFhexfN7$mZ51a3g75qJwCch}8Ny@dkm=2yP~VVS~gfio1YM&zNq zmwnMu^s)M!_t-$a>k&Owifx&N zpL=Q<5lZZZOCOQX92Fm1lD91ZF*+&E$41&DLJa4JS}f|O0I2Hu#4{-HN1WPqe}XcB z7!=N6fH5YtKK+_x#%P`p z!~bJqtyBqp7j!VkAmK?0%AjYJSW3BVvsgnWa13(EgQ;053&btuOg%2o6iWv3C*9sTXG(JIUO=?`%15MCZSUeQ<5 zPZV~9iM=*LF_0iNl0yhA{vqEkVPyvXlwqBjg zEvP>FJ3olte*h=-&dL3PJY%i2+kg(NPe{| zh_Nqg-6g(UgU}`h`tNOv^ge6at5*Dji5%9BIzkTR`m2_#*h++}Me~<6{+l9%UfB7o5jCiOPOY5R*ZXB7y;QA)AIDzauRLFDM!BJ;uHnxDN(@3D z*!8m!=LKS}#OgGhOmt2r<=4>C{BFG7pZ7a^IV#R>tX7yb`= W^YUL-L1ys)0000`@W=YPC`mzz6Q);AwB?<~gZq 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 A%m4rY diff --git a/dev/initdemo/documents_demo/societe/17/logos/thumbs/bookkeepercompany_mini.png b/dev/initdemo/documents_demo/societe/17/logos/thumbs/bookkeepercompany_mini.png index 6ac0f3780fb8fe71e6bd918f5a8ef43ed80ef6b2..e3724e1ec123d796db15b91b965e52360f2c73c7 100644 GIT binary patch literal 6963 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 FV1n@Vo>Tw; literal 8453 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 diff --git a/dev/initdemo/documents_demo/societe/17/logos/thumbs/bookkeepercompany_small.png b/dev/initdemo/documents_demo/societe/17/logos/thumbs/bookkeepercompany_small.png index 43e8750d6a1c0e6f214bd03f3c0d828034a3378a..2b9ff77ee88bdea4b0a10056e9b152d2d28d81a2 100644 GIT binary patch literal 7141 zcmVafIDtD@q z?#?{$z&*BQS@kRV>bepfu-WE+fAOc@Cm&n=^zQr%UYm}sU6|L-J06i%jll-M!v)w7 z7~4dEZ45+h9${=~*JFSh18_S>?cYETo!GhC;# zqf^@(WiolHY;OF+?)Hfvf6LGR+CSicZ6WM8eUsCNzwBqe>iD(Se|fid{NjTVE7%(w zVhm6a)3^xHX4pn;Fzr~`+I(#1;rqYyEx+(Pu+X>2fp*ye#gHZ2>ZXk`ZFK3e)SDMN?utzBSZin9b${{#(~I! zezd#0Gr9MUPk)Oq|E8Z>2z%47{Pf4HU-#^vG^G6y!T2CV3|@eUfj0nRjY|+~SdKU~ znV)O{s1%*L^Olc%%dh_SUt$dV-@pE|uU@dY#U}` zYZ3KiiwwZ+e48^7qf}(D)gh(BB3d32ndj4lY$Af_R@c_AyY80_&ue$*e}3g>zi92s zYk%-4XJU8ZCHJjfa@l>W7hn1qD{DKELsq?ENjX;OdKP+BD%F{ai-1ooi~5(+kE}^{&3jl zwm<&;htulnl}GV7=i?VVa^7=a^e_J(PwbDFG>ssgJEAO7q@{=!M6x84BIeo(V0Sm2 zy!qc>ed>X`-%3(CETYXQXPdJ5^h0m)IbVKF{O7O!>^rSra^;_%IU?Ae%ZbM>yZV;% zpa0T-BWJy_A_i#MhW358v9fjFo!6fHpMUuP`rWm|AQFJbsRTCu_g~+!3-zCD7wmaN zdp`Nw+IL}bfcH=@x$KVPFL>EMP4!fR0BFIHV1#H3KxT{xDdvGwq@{?m_o8Z|#Y+%1 zJs@B&Vxwc%KIfi@^ea#O+uwdvSV`@(FF~AzH^wsg;!8fhODo6T%qrkOL$-z`h(QA} z7UY#xE{hiDSXPz))CwyRg)aNqiM_y5KAJ-5HpGDI+vA?9bX z3G(XtTXlJL^%F~llAML{Vx%@KUYKm4vARfLPSXm5$mbBwoXy!TX4Zk z-|Qc@@4M%<(Vx2TAjHt9Ohh>HdzgK*DvB;3{VkHNu^#~V_CcU#+y#vd)M0?gg9RdYYI=Sb(XM%&CIOzzKAe- zb+n1q^(O$05UbVMBc?H8oB?85ga}TYhKK|t0#y5F<+5uY!Q~K$4Ib3?Wjd>16#%Tc zcZ2!PY+|3Z5GyNN0_}?kq!HrIqYquKlTThOLxT3^BDW7o z0u7fBvnvInB9c(_=(AkrGmAofYEv@sl>a?G6b7!lxr@{%x&Vi4GUA zzzx+Ec>mlwuJ0uJu=_FMcqV%5#PKKp`LEumY@NK`Hne`2A8_k;T;kBKVZ1um7>3cp zf(%fC|Jyuzc=;{+1yh@=9j4WJHWe9_0f~XNp>qztO(3)-y zvFSRJriO{_JOAhTyBix- z=fu%9eYf?%o!6ZIf|uW3rkE!PKa8W$c_zo&5EYm@z^EyK z(ST_;DPmZhIc;?=66#AA(i;eIoXS8lrJp35o=9Nhlt{Mf?4=YyLPg6E7cBJ9*%B^T zQ9BqOx3(srMFTbjDv}x^q@l!d&0Qf$WnV;G<1>iJI41&0QjygVQ%0pU)afj?3Slip z9GxJ{G{>4+$5H_`v+^3$P&JnmD@+iQAo_+F`_zdpMV9wP^kEPId=`jHa$?_$2-Fbm zDXKw{(l7>TIpXX&+So;h3bsy1oJ$E{$IMKbSqY2fKn>9|Ws6Bltz=M{K?Lv^v7R`3 z#JWHCI49H_`i5B11mL!-0@5tva6f7s&tAZ7@q&UqiwMmACx8a;xyM-)Ar&`74+~iJ z#gZ%?i0CDV5rOwZWI^G6U`{N;Eg_9w#hp~BlR+XdT7bytc(fTym~cUkVYRlAqRq^P z2yGU}P5-;lQeC)4vo}1R#RHHedBBvXajw|L7SfR-`tXQDP9$)vOG{ChzAqwU3V>08 z0a6zB0>s)EMuG^pF@j8I3sb;tF)|iaFIw)caVGcH8$c*b-wIrj$a;nY~ELl6q_(fCv#jE5sTWB4VT2);3X>)P|UHqA!J7X zraBBZT?(nV0D)U7uwfhaE{ zP-K;}N37?UA&wq%I3OpcJ;S~zXGqR+Dti&9o^Y1vp%_%apaqDgMr)YGb}hGDaLcD= z$R!S>+L4T1XK#%*gr!nOsX&F4axJzYx|I#=X9SViI6@p2$luT0X6q9KS?4G~+?3YYdZu$4$Id%Wt z?^ADnWQeuVkn`pdYt+o+ocd$0dfg9&SNl1{l5jSu2Vv2dDXO&`5wMx77%b6+0T-k? z&KifA*>Xxv4fRIe-e&UXgX}zX_rL0z8-C)=-t5hK7Hq%p3%`(F^By1lI}iTEcYl^A ztjj~stdBhqWkkdw9KmVrVuY9YYKJV4gD86;e^3~{Jk zTdeC+7v4n{0ccze%;u|_D$0|Ouyg;Nl&7A+3aof)87ja>e8fixcntWqz5i}|=;W0} zejzEYr6`e;C%47;XiLBCcAcf@7K3S#CL}w5E^x%%^Of&=HZjWgV zvT|qoK9e)5Gj=&5hVd8MUJ!yZB>iDxR9u0ffBZov_uWF-+`@v0z){pUg^GEJw+^2L}yCsr)a4R3(NAHSRd!nOw9REh<(X)8FqIecb0p=0%?la z^3}qpV zubiaawIe~y6|tM{9|kdH&@M!W_97XOu~iWbs)#ZC6=D42J#Fy{EF(OF82~bq2X0~a z;X84Gh=8cGKc<}%LFU}I7hiG31GXQz{o#!l@08tVXFARrF=u6)-kB`a`*4WaS$*#5 za>uUvy(mk2c=*k=Y;CZ6&wo(1P7(w}Ko|!!P%5xia z^uT}J{J@EaiuLNGygEe$GRqNjMNFB_u-jKeAf>wYWi&kiIcN2rN1XIM-T$?39?(r( z=^p=mcSf=?rh{J|hnLchf5-^fX`-!gCBE zrr4I{(aiTf&GS7*wiF-93FIv2{m!}P&i9u@`RnS_f9{OJkSHoplr<_8z+yD9kxewv zvew}D3S@8#(1>?;QrNb^e;WdRm`F)&gBnK7{Ao_hA#s)kX8f0!Z7?T4nZK+(2XNf< z@jEw|-4s8#eP(X;4d*4@k59`?o$+wP>}PEnZlZSltFe3i$`dV)vf1NiZmd7z#GOis zi3Yv5E<3URp$BJ47{r;wPr7sbIde8eg)$SZySH@8$Mh&VPf8Z?mzwfto*(Aya$cP1LQWg$8|Ff|Hg!C zU;oS0v_c_f_YXhuhG=K!b^f%L{ztaFI{)C>uS|L2n}0ss#6UBe&dx&mi3qJ&TY{*K zY@z`ri9vmQb%-KbAn90z?tU2Y{Zj^esSVRgb#T;%;Jyz`q!i;w3+&T)!dSnLYIFQp z2hsm*fuumPclSAafB&tQsG+$B)=tiEZ2y2Ih4GkSs-Q{O|L~^Q@BPPbPc53JJu7}X zyO^`D!xT-FbQVoqp=0ywb2tCxP#0M2EYyCB)M*&|S^KpxSd$o-`jxB5;J&qjC4;ji z3aV(y^Bw&;;%#?fxt)mMhk5g;pxIE3glbtn@05wa@l?X>Jb+(adr~991$dI~-9%eA zq5XMm&*SH)n&#Kvd78$B224>+z?*BPM4LB0BQ-60bW01CAgYKZpoR{ZguPTiu&oRb z`7wz0_YrN|Ow!wvb3qsmOzV8V zrL*Sy(V`xkR$-zgC9%xVz8cNKr zuKV?d2;*lACy9w3dGM=AA?X}<`UQ80bDfl|L_bGkj+@n%uEd5jE@?BN3)P_?=OEZJ zVa{`I8g61fZ|aJ5(x1*6JI$zBGLnh@v9$JA8}hwq_ij>L#eO=nR-#igt;<(_3Xzuq ztAH*Fb-(*fa5=^KZBzri2X}b~NVd^zit>byHpMo^05BL1!j|MiCTe24+iZTwL@~ zLrunJG-FvJB8sy{^cUwk`spW|&1!#Cth05{-;WjR#}+MIgIS{ty9rwux}U81UaYT| zQbHU^$p)$UN_>nMnq$i~0&2oXt_wthmtaiCY*iA3pT2zQojZm+XMW36$rmm|!b5t; zcCR*AA?)L%lbU)~JonNtm_GetSKpYe>w5I|`tzTEUzmlYA6&*%cIU#qzxec3+P!C1 z+IzGAal~I6p8LAnQWN{4JgJFEf1aRNC;4=)BTP*5VU}#-FCD24y+3#OFE(>~u|mXf zWc`O`Y&UgH`&KC>E7EIEr~`>CeCGEz{-pY3(DG`8uQQaLCbSe!61D=YxNLU%?Y{(= zibt@UddJkwx$f7u=Lg=LmUjz$6cOjfO~j2Eufe1#Uu$~pXTO}T#Gq*EW8ZxH53LZ* zHZ#PV<0ei0(&X2E;)_-^F>7cZinEc-TsI^Mn2~-9C%d-0yHE)sDyATz#lJdNuP5l6|sx_$MJ&U zLC>N*N!JeI`&YMUUtZ(xJtz4umVM@ES|={ryy3**CWhI14U1x!sgJ|VKuv17`7f%( zAc@gj52XFnj54a}v89^VEB4)52;x0kEF7ORlX7!~^#h53o&5n?IU&1FZ)_(*8D>gh z`@;`Tl%{QuYhe?nLwce=z#1oQNln!H28A4IV~CSpG+V5-hcVhf4?X*$l^VnmTIdHe zs=*EUSPTAmsOI&G*)|9gs%7pUH$~3LJ1UscC5e6j;Nriv?=|>d<*aL;1#lYv0oX!0 zTg3{$Ip!FN`gUyow07^=s&Qe+$63ONI_e%C(T=N&sIE*J>%Yh z$j5+AK!MdxWL|4q`watc(4Bil^?V>TxCh7yvK({gx3;a@4RGZjR__j_=XC4c{SEEi zv)-coT`t?OXxu9nzowFj`FhnbYS18?#Kd8~Q6K5CzHTgCr6{!`_kD8ub{iqbR*`KN zp8NItf5LuZWlKvqyS+Ug;cU*GxZzr^`}MDtDp+jhTHA3GCg8#l_voYBm^Ll1_e2rb zo_Jy`B8q4E{FXf!;~52^xbj{KRrFn}y~pB>ICIU+1)8{v%^YU@wRkr6BLRlx*y9B* z=uD5NxBR0R#qMJmE9N&}pzYF(Ztg5@@GSSMb&%g*F>_)z315uaafF^9HXL?301U_b;E<+{^*MRo)V; zy6@J+U#>f~6|pPI`Zip%ymj_mzfzkKJ`IFJ(u?uQwz;!r12p97-wDiRC{5=0x%nb6 z_hsM^hB6V6Z*u@}RNfM-KHJui3Y?>P$ZP#baac1cCKr*GG>&&A` zF*}ROG#B5zhW)={hi(a$L@7qpypE%K1i9~t_IJ&=4@m2sJR$xuqYEli$YlLvJVYgg zPJexEKO4&^d#tYssG6X2((lA^N7??aaLd@6j zsVv8;KdvU*CW%{k#^*NexBXZEzoS)-k5p@BuHKtoo!}{DKjc_}k+ZF@3$a?HeyQZ6IRjgS&42D2bJX`rPXhil=j_RaO!O8> zXl_~A(y@G={jjxd)h!jaDd&ptCWXTtY&5eE7oWH4Y0R-y*<%x`<(8Ko*XT%Y#PNJ_ zHr0>kYsUWh&-CgnV8HB^&A%7q+ZflRBRw9|w`GY9X4F~J<4m+p;QbhL1zwKG&295r zUQP*Z^P69c&}MLnz_A8bAaZ9h%bxc%=2&~mdu(jMHHaN8!(*GXVUjZg|2R3pelh4)E~sz z4dMWS(raG1h9iFm;KKNNV0VR;_`cEvVd!gseEHsQ@D}znvhBN5wrfI@RoW7)LQ``K zXMXr!HN~wPUV8jlXmAngutffL{!iE5K?!M}Bs=cSW->=r5aZ8I_k1DUDBt&-GiRua z-(y0vKqn^OZ*5z-wET+j%%dId6((|Iy5h5$=&N&nzjnv|j9cE=$t5`!(z&J_s}zmh z`V$T!_Ct;p3`WSYY!cZ{{GuUmiNtu;-56*8yX1tkh$vdjG%x-f{2Z!w=^mLEy7MJ)=f$ak06j)n4za z)MLHYXhE`M!{TX;|Msi3b@n?kuHnfbwnPAS{CxcFrgB!L+cs;{SZ$*7PkDdGHvYZv zd%!K%3%s8vfx!c<%iE80{_^Mh%6sf+`Ytm?gEi|HANuAEi%-h(?|}d9+3dSpZuX`= zN#uRr4)Ck?kEZh9C999o?jQKqccHRERc;kzTarjVi5VaXNr`<;oE``MF^IheA%m}p z!vQHNc?}`N)QmZG4rwwt0qio2lX(g-xTCmQ&z2zpI7nV17Tk?6!vsWR*v~tGp+Ebq zs3G8AKiPx@BDTO3Qk?U~OF}w}_*w)P7^a|3aH-}5Q^Ps`#<^rbmsE#z7EMU!S`h=o zc#7##XA8v_4o}l{y`2)u7>g{=lEMpDL2;B^t|1xgG_ifVmFLx|Dg7J z!OC<-ai7D}f^e5hIDP)|d;U@W&MzGCUT+*I9>93t zytek=2$d14p!55aPL9Q0Mq(GDGF=D8_}cPrxjx$0Yx2Y`R3wOUG}zg z)A&}eu6{zQeq5vLdfCtk9S8Rr^e-=vi-e0D)^%NGNlC{w#a&#mOjKVgO9m^NOOuxN zrGP1~u^XZX?T8)7J!#*zBlo0pt!>)TDy4baj+Im8W@n~MP|O8`1AWDO{#fxu-%Evo zo(C_vFFOkN=e5yB=JIzge3%kSTP+r@V+|7Iz; zWx#HG>|38`ID7UtP~Bq_mFmo?6T4;ysiS4dn2EwjEmOrrJN3A)?35N`+j!bQq)3#> z$Q6yjLJ^OtY6K5DB(z;0Q&VnO|svtCGL()HS} zHXy<Vf{4L6o_`Kda7MCg4Tnqe-!A2&dH|<9ae>vcNEo*BNDqe{obhet&gp^v%b0I@1(l)FTL{uSDL3lSssW)a?gTSX%o{ECLhR7o_ZiVY042N zQ=fBFZV(1$xSkhaU@$lyqQFKDM~Ym=yjvOqObh`bTo`5~9?Mh|ElZc(Lp`a>f%^mf z*`W8>r2g*xv;Cuo&JXhWCh5=u&CwYwEQq2J0I_T`q&+Rmcwo;Pzkk{1@BbRK32go0 z_YZp6Z1ZSA)c$3-PO5SIp>gNV*?_o5I8z0p2P_3l#deG!a<)8xjxZ#MGNE3GZbOt6 zsiLxSQ7Cx5Z@jW#uxsx^6!H|PlY?luCqPR;Ts(2S`{GaEb(Z_u<10SWFuD210;;(= z91~*@*$z85GmGoGsWY}Woi}%rlS&!z&O8u>@dC7&SWy~IwCD66*wfOxb;GreU#M4R z$4pEDQLUCDC-xqdIB$KgZ~SoD4g6cfu&5y6hA9@&-Oh%nVS=-QDl-nq@jY5v5LY>(zf~aUoAi2OU$%)uSW+FRM=Sn8h-hq*UaD*y542U8dwTS_s zqH0jr@}7M#IgcIN^ukSU7)C;QyFM};h?Gud-(aG+5n9(tWg8ZzQ`zh!vPOtg0-~)@2_k1J zqL5SxoramSH@I%f=a?uAo2iY73Ze+d`kdDio0!Bz!^j~)G+g`~;?u$E;* zwX7)XI^*ZIzcg@QU#sg6PEf854I-9g8E>S`Kqqul)6#A_H34SbpurU{W?~YEGH|qH z8*;r=zHY`jZ|VRnG!hS?&O?Eysy{LitAVlVY(b~#W+ zDLrlatNE_Im&-^nI0BvoqLS7EubS5=^RCk!R?nSC_IzgQATHCdkkH!Z}@;@e_|%f*1g8*{cu+ zvAspdZEWmCH$M90E=?9G>kWuB?2l$d`i=2XtO9IlF)M;7F~mo17=YOTg9TCUA*~Ly zX*h6vbm+5OC5VP_LcFlQr}5qO&n+(Y_s)za1+7VYGI6#q+rCK7&eiOg0wybxfkMkI z+4{we2o0EKGseSlH@_UDr=9)M)XT5#42p2I42Y$sz}O(!@1m-Ybehc!2_nlyq%g8# zz_70bmVT_Z6e%;(5w%Uj3W&O8GC+}9nzdS6wpc{!jI!^(y!Lv3;6yV)RHRC0T{;jT zL<|cei$;Cp2JW&mbp?50>yW*gwv$fQMu3ng#2M7gAKbU_o#&s*Px|0BPnLp6)&hTM zzVRT0T)t?tie_Z11d%dRMkrE*7cfohOc)!B#^feGv@KW%O{^e_=*B=x4$IOKB9z)h zqKgGh++wcM1ADffSLo|&*1lND0z%*nAS^4l3EbKe+1E*nJPJCI6TaPW&?=?0U7J;g!f=O$*X3RyZlytnMco9FACu6OR)wF;q z9ArCemosNUED_iamY~urupo+y!&&F}jllVL4maD~9b26-rQm9${Q+2xn4ST-s)@8v1Gnrt78)o39x`jV8j%V)M{U%PK3tXjj)94 zM<6EniC7@jok{>v`Z*bhB7l*pgz-|hf{95WCfP*a=b@53RS{Fbwg@tZ?Bar>Gt07$ z-^yMIBFmNJX+64Iw6U0#DiAr42vk-Eh-g6DFwEdeSVZ^AT1tkL(IuHIFA%_)C;eCu z6)C&0SSFgrPdSKop((YAn13JQ_!dNio{X5_NK7pgW~oV(d}5$?H8!Be;IfEWyr2y6 zn9z=tE&UjPmA$wjjjK8bTvMS{5s2!p=mI9jmjWUwK=T@ZtxAZX+MivVBA*jCN^N54 z$-Nz%FcD28JMNIs^rMl1LnCy`y{xtBf|MC0_z_|;V^S7&8a3)QWwmYCMx%LEaTVFBcH3+fEeSY3A%A{xOH5EWp- zM{byp;DwJco> z4-EjO1<^}+jt_ZLDGzS9FQkwXR5mnf*8p}@3L?{@(d<4@%go z;8EYLZR8A^e8Xa4HM@pd377;CIh<@Et6{P1!$hSxZjn&utSqhh(G4Am8IaZ!)}YQ% zAeN}P>4P@h)-AV*bhl_=0VceF6i5JKgs`?AHe*QR&`uwS(dwd80S~QKf@r1_Vsqpq ziw;iC3iNbKy#kpa0z?q$pdv$NgKVZ9VNDbB5-txxEH?#cllF@8aL4GTGkvT#B6T)k zj}$~{S42i!1tQ5naLs^O(u~imoA|DWMVBD@05OGsj0v)jrHpB6GPVwcOX``P%0ZL{ zg)&jwG$DA!NPRWQHy{#JBdfV!9Rg2{j$;mnvkqo*J_JPRhM?*cO1f^=`5SX@Zogj1 z${Yk6A#=1K$|Q487F{d_}M1tu#24tRXrvSQWulfnG z?ByWpIE+@CzKK(03ZzTb8}9g zM?>@K)fbC}rtIur%xAX0vS#qDy^AB?)q=rx6&{UC@}(Q5Wh}`c>c9js0Zp_^Vw+}6 zgseJye%%M!zUqcqSXnUDf>?yODS!?O0GMD2NH}V<)-@eKkO~m3XzYbrPH@Rs3ZTz+ zWU{3l#xXOEu*ehBU^)s12Aurix1C(~-i^Uo=RDNj-fp}WqEQ|me)wVU!mEE{&D#&% z_o*;n{4LjWXTdOMOKl~^IQ1YJFgY_RuP@cmw5@Ue!f%aR@Zs(7y#XRtD;Pt9C=Y`G zHJ-!(0mSlf2q5xw%Q8_#1Raj_yN8_I zTYH@1v7<=S_PWQ01C@9!Tegg(Jc7?(^0TwMw;9XX`8W}4!MX+w#A6Z|>JTPG&g(E< z@z{}M%m;vC^JoL1u0?ADslKp@WofyuOauetb};QEr!bMTXhAF(5V=^PtrU)>d;m@l z!7|n|F%d)olmA&Q!BA09HV9a?(U}EN%9%d|S5?7(=WQo{U^`y=>Q`37Y>0}=l++f^ zn=$?nY8={i^ymaXm!1z-eTITaaB1EEB6Lzf!)l$huq4{VNS#ZV$Yp;7Ao|6WlSa`3 z-UI-+fjq_I*nz4rk<<{AQ~{#g(sjZX;Snk3N4)}NsJRu{Gc?kF+{x|R>J)q46^25M zr3Zqq){N8|U3l-5DLtt9+_uAqThfJw`FXEUe@Z}1L7mA&A_Y(@nV1A3l_dbEE}zLF zmWc-Qgm?x_f-4{b0y!x|5rGPM!e%Xq@-zja;55hz6%i8-A~)Z)-6sS?t0N8>^P-UGGDs%6OG);kv0pR#aX9YL7pcMQ2oWj0W z5%&U10?LoB&K6KXpLr>nhA{_B9F=eL8(lr!*r+Y=f>c%)7UXjFsLn%y2z3__ff!Vf zWL0%WHQAbyESM9<+`Xg#z7Jh51u>8I)9JL6&lgY^Z@$wepbQU0hXoOB3Yf%|l$NwT zE5NLfuteHF*6kDyY%!}L1Q7r^8GzVaODiUi4b>W+TGTef&pJ1w&vP)5TkwqRn@d-% z?`J!6S|%LX5{A$EI}R@B-?aAfV(&ZCGt*}7ZEXMWPGMpRh(Xt$rryo#=7xSgo1L>@ zYyErX9uZ?^L4<54{%6(P!8dnYh1QB2gsA<^ORG5LG=WAC4 zjHc2sF%d*H34(#Zfd?2ZKQ&O3TZ$;u(;+tgmT3_2P*j z+l42?_Hj+KVat2YV87!ZcnPcjkqA(+DJ1|a&^9jyUdjpMM;2Bu`6U8+L1O7Jyqx(D z-#D)cQ-7r`Q|vwF!{KYP8Q};%iIL#gc$83B!lp1s}Q(+vT)h zbe#bK(=ZWK5$4Fd3!d9gCWh(E5ep_`arX7`9Bgpo!AcOB&JDu8!p7zXVPY{kstM&x ztOC(Yn!06}yn#L^fNScxen0p6#;#&CJdGmA^3im8UYyS|^uI?MmM_N;L-&gb<&mGd zm-)*c*^-B;`gTmh!9*;Cg8|7_hl=q-xY%m{AKC9iFnPa3!r{x;)gnRQk|RTwH_L`aPh5f zw*EPoj~vL;=hQboHSX#ge#aj_y}uGfrc=cX_6~4oi`ifRhC;N0=7TPi033rzEs+B} zKJ2ANfT=WFHn^|dGwUD@T$;_kUnZB=JcNn!c+IvG@`~OqS3I=2>tnol_{K}? z8wLhuHuX(<^NO`=>E}ja%a%h;{dK`?f5&Unyc5T>>DDW|Gw_n~Fd~TIIx!9`dN49OSY7XTm!C9dxqUY%rKdI$P&BgM&_p^x=DMc?IY-#fL?}1`yzNy)k-ix^|vrCVe?h0?syY`x%eU5PJ)+=?z+Aozx2 zDt-TTPrS(UgD9+8+BVJ26|Th|bH<5ry_+D(8kJ0o%$wKTx8|m6(y5k~tGxQAY~9hf zU#P$06Wh{RkZ2HK0#x@{f4b*8_kTR-J$@l=Z}u17^Ml5le*bxbIFQc?h(#=l_<{?5 z?tyWglg92Oheonk;pO~d!@XW5O+(oB7Ot@|rf5nUz?^34ew8P)GW?^jV@1LbZ!W4>|rDo7#eb zT;TT}pJx}A2pp<4HVOG%Tjo}Rh%awr$-{f`nR-8+34ErxvycUflS1d8kNR7CT=N2twiD-W`+N<^%5pg`H$vnN4JQ+Qp{Hy9r`Y--v$tq52It|AwoSMLOtn z8iGcr5C6pfWgFaa`FR{G!g!wqP%DzW3l#aW5Vmwvpyq%hG5HC;Z7MaiI#dpP@sm6A zP?5V5Kso9bgU_@4RnM&N!7%=_vM$nKPbg*t?$q}X?M^7O4^KoMec$`s{J^1I_hZr8 zhaFm(I>SYKV)Ctjv?-r$fa>=J8NWU#6#Kx|20vfy4R9_T9F@2c8w89EiyK)=jTkAY zB4f258>@N@dTc5x^J>|7vBPUtuKya22(JQjzJugi2>bW=R@S^FYc|Tl#n99@{tnFW zmvBjjlD(TC=#q}k^=o;5@slt1U{SdOmjoEpa{8f9tFi66qNDRQaV9_Zy-ml`Zr?@W ziDUm9oH)K2z`W#T8}Au^+w$K_0x?$)Gmvk@VI}n4Pv@F~{e9s;FIIf8G;*ie^2ma_ z?Yu-$MD;SwrajA7}ZRz&)>&txD(l)T0^X6{35j(a=H~}XO z%kgSt$9l(`IMMNN2{e zO_)lo-*wu{#p4FDEw%p^_FPM}qrhglq%z>rcgYU@x*LALYX!&R;SlRhW z($KI{HBYv&iFTKZUX5o3oRUj7FZeFh{6S3U%^=6k@J}D?>}Y$$OqYlYU-u6o)@zu< zukyodu;-8MSm?H`?r7`8dk;Uv{rl10H}KulH#!%$U2My&ytehcjGuZPb{Rj(;(QAI z+=t!j8>^SJww?r&Q*ztbSae;oh}B|uYmwsVW%E1G&-L*{sXa#~bxU(B|^)K;hq z&t`E59|e4a(z&m5@rCWoY3#566GT$JBs4<-R@ezjh2B?iZ$?F#NtlFxtH?VoN%0DF z)whe5dI<{jaCypZrv|S8&!1ZDq*-5C`bU6KP$q>gebq7_)r{PO>A702U1yQWtBlTF z-Lc?2$qd7Vl{Zbg6_Z!(?hR3RwAu1IHSsYa2FW2wUYwtl$2!bULSQIiuySv+Y^|J3 z*jlln0G=;)3>EZVh*Pm4LLrm2_ufn_;yT^-`C8)rQOK#U`MIaBuI?&(EGWQ);YZQ%T72kc z@k4+2qZYI!Ppo?ez}<*^yGg)#t@E}1#@uaIpe3u;JpsS=DoFVw)hKg5;_FfFMfkGvMEG=uVf@&U+1*-%!+TUWz?Pp^x+xKR?uF;) zgUrX-)|1z@cEEmKTiGs(b*x$1F8O%R>K;Tbm1W>r{KJ}S&cibV4bZf|sw{&vzBHJa zpHOu4S&4pZO}=dneFMOmNq(%!n<-6sIF~iPZB^5Fr;B+|=lNClG^5c^PZmE`-cJat zHV9G*lsSKh`ll?LKj~NH$JXN8*7Eop4*uF9{aEz^=nlcxRr6ChN}S_vWggg2b#7qF z=5qCE@f7eFou^*gE8Aci?XOG9Kb3jrJT}RmCgrKmtIoaIq17PGNB({5b9g!GZxa02 zFD-g>)AMYqH~rr4f!S;2a0md~z-M0ljpshbw3qh3fGB>}Yzl#icb9q)cxdx`xW&g= zr2%KZsXwU5JLO6Dz<*3Vi1XZ%$KM!&Jm%*4u)Q8S4_}bFWx>6BYI3*Me)58ac-Q1t z@FgZZ@^GKI;#;rscM+o?b}~EuPB3&4Wq@V)z84(-dmfbALTj$MWM<&`pT$GSR^X49 zH{1t0I^nxkgjLw$;(I2yL0irxqrn(W+c^evshXI__C#79^)e znuRa4HKV2UXj|ip$9<)~WqeMm>?{Sj@~BVBdSP^GKUyKq#CpZ7JNj|qRaKsDb;swi z7-Gd)tUY%f#<#t4$MW+goQdF!Nv6>G*r@A=P8ZJ#x-4TyV`EW2n@{KN9JLTqy10hRBbH54OfcGdT7Oj7q9_XSiT9+%|dN? z&Zf`}mj2S`x(q>Y{Q>~_+*taDPH*p6y?%~73&i8kyUEaG8*3lgjKsHf z7Pvv`mCeg%-MM8sUfKMA68PP-_Ltj!I#y71xWJN7+OdPRPlBDlYEJd_&Bqa(6(pZ2 z@Fiw`vBF)0?eYI$w|}5mbaQwsN<&fILw{R{C0qWa`R1espWm<5`;x&r zbTjRJQ*0y=eh3bSdU&nMaefhcc`a1`{UfP&vNCAzXJG541T}VmQ^i~HQywn^>Y4l^ zvi(xBE@J3jrU4My>A<3ul*g$u^`{`l+b-eF1fPK~4p;gpe#r3_D^2uTK=ZN_-EP{w z4#4!6`>aF+n2z$?R*wIw>L=xKvoTCRGTG*+(o8Nfl}*aeJMf#{q4R6kJ+Wb@6(s_e z8Pk^?-+fyciFd?!#g9`^(R0)fKDd+;*h(liEzmD|Z8pt^U8W3frOj zcQ5H&|L9Nv4wYYqe)j{D-;dvWx)$Gt{wP-Z77Uah{6A{ULSnp!7=R=nxR$cR*T+v$ znWr3ao3`&t=A42we@9^-OjtKw33(Qhtz3fl5>5u({{oRZ!cjGaf9n7M002ovPDHLk FV1g~K$_4-c diff --git a/dev/initdemo/documents_demo/societe/19/logos/magicfoodstore.png b/dev/initdemo/documents_demo/societe/19/logos/magicfoodstore.png index ec54049d984d8b6f2e7a9cf04fb4b5e8eb0befd9..d78d9e9d5d617826ca8f322add667f409c8100e7 100644 GIT binary patch literal 3284 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 b&wAkB8Xx$VkQ3qG00000NkvXXu0mjfPm2LF diff --git a/dev/initdemo/documents_demo/societe/19/logos/thumbs/magicfoodstore_small.png b/dev/initdemo/documents_demo/societe/19/logos/thumbs/magicfoodstore_small.png index 9b766a7be3b2acaafab7ded5c7dd94cc360808cc..57aadc08d340d8d6d1ea224d013698b2e4e2993a 100644 GIT binary patch literal 7281 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 QO8@`>07*qoM6N<$f|scU$N&HU diff --git a/htdocs/theme/eldy/img/menus_black/company_over.png b/htdocs/theme/eldy/img/menus_black/company_over.png index ca172c460ace873c61891c80fec10981c428c47f..54f61141f69d3b3b21937b72ec22b21b49ca1ad2 100644 GIT binary patch delta 211 zcmV;^04)Ei1MdNlB!9L^L_t(|0qxn*4TB&QM&XXo5gdh4Itn9ngpP7YU<5{B1Ny%k zukjKCCWquaNzC_vVD!~{e{A5vgP$LG@EV&+fwmR!RrNqky=UY5KxqYhQOT*SjJK0H z27Vv-rp&1g;Mr|h^WZf;$^w0-A5!BF+UR}8@uu=YzYF-PvP@IG1D~Di$;Z!H^YiiG ztFnWNj}N~du-kwK58gj@AA!&QeDL7GUktnj@Vl?O8YKvC{9L#p@P8$AusSg{pa=i} N002ovPDHLkV1i2+XBYqg delta 400 zcmV;B0dM~A0jdL#B!2;OQb$4nuFf3k00006VoOIv00000008+zyMF)x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru-U}5CF*}QSJca-O0V+vEK~z}7?U>zdgHQ~GKUaNE zHh>M94az2Egl>?G&=EQcY>;d~Hy{(7zVJ|`;FOyt{K%I4fPXBTBkSB_-)oXssy(q_ z3-AFxzz6up*z>)AU}iaxC!{u#8n^bnhm@H$K$eht269R5l(fkb^ESY4QrdKO0^XhY z2k2e@# z&8%>8wn^wE^?y2`8@%}MI(>dkZE9dh;&R~ak3ISVKAm`(v;$q~{K1JABRXGs9qbx3 zy7Qqnb6pQgMv&Iu@PH@opv@Y=e*=4i{aJwfQV;+D00{s|MNUMnLSTZ8AgR#+ diff --git a/htdocs/theme/eldy/img/menus_black/ecm.png b/htdocs/theme/eldy/img/menus_black/ecm.png index 4c179311bb66e5ce2c08e2afee991fe2a1616987..4d8295ca0dd7afcffe5daecdfff25f5adf5d9dbe 100644 GIT binary patch delta 689 zcmV;i0#5zO2gn7GBYy&qNklxZzmZQHhO+qP}nwr$(?rnS@R z?zft1_EgvBdFs=hGykc6&+ndS4u>P$iV7bUJ}P`vc=u5$u@W!CO?av#PQsz2471^> zV6?&=657lB zt?1|1@Khlz#cO3V3K@I#a8T_OLQ>pAFSVBx(`EkJ(9193sX91~XUY^LRXc&`VeW|n z@;p#>%V9m9Ie*c^r|?vBT*7^22LjYi5{$=vC-Nfz&2d!Co$2Ch_%XO;SSHW%VwudG zlD%`%yQ`D0;j7}ZVWB*`Y*{;B!zaQy!(4fG&ayV%hZoddoKR-U{DfsK{Skg74k=S) ze#o+BUWKO$qNnsVut%97^F5X|_9#463JbAK#78P@Q-4Ow?l#LBcpAPgHYj;zu4lv5 z%%-}YhL4Q}SScFIe4v^Ql-WwlYPug@P-U@143}ATHR~s{C6-n9_6K$h=80HHr_McP zXP#vRy$zoqGelaM%@AGH*@mu2;?tWEsskpWoSb{gxr3Z1`B?{~_RBjdDiy|{jhrhR z=P`cL2YGb*_N1isMZp+2-`Mi7-2>qwc_8Ff4W X&oZj4_%kvY00000NkvXXu0mjfb!|#~ delta 948 zcmV;l155nK1<41HBYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64Kf54GD3I&00T)$L_t(o!|j>fYZPY`#($6G zqM}u)NYQ8-KU#`VL6p{r5R0_ERYcTMLam^dUK9kuOaB8~FMkRJh2FHi(zX;zKegWY zZT&jaejF(sI&QP`~d^yVy#!$x;@b~g#+z+vZod1mIvGiS~_Gb`JS))>bqjxqQ# z_%Zkfhon|XUrD-_d1u?hlE8A{Pr!+6&2o%!4R(2oqz}X813-I9vV6oj53~Y1fc})z z>HI#^aqA4-4u9+cii!LK=t#|#vUk|wfe(P6fq_JR2`orx28PH54TlFN10MrtfxgJ= zz;>XejJ_|GXMy)qnq|P(!1lVp1G9i#Kqt@>c@kI$Oit*QhHhz$pVFpG*c9_6&9-vq zZpzU)+JKF~yNT(8z)stT6S_5_n;%o(N}37u0=sSR41e8BU@Pz*@M35S@%yM8LsJ#d ztAS5}=9nr1`+(1F-w4elU<0r^r2}{Z+ymNd-;?xCXx~blrkFbIlU(qUI)G17u3Q8< zY~K$}b7)p3b}gj4bL6Tx=8Pe9$;j>etH28>SMJ!pFKKbytc!bf{l_{H% z2`_00u*CLfz$swSh<9Gn+rV02T8zJmC46u+I6pO(>JnIs?Gus)M?=m31grqY$N06V z`7_a{lhB1a!)I%iwjWB`8>IsQ)Nh4IHcmbk#55w$H`pt!SUmgYN-O+rC}vMWE_WAGQZ1^*;mtLDck( zdM&$6Irr}^1OE^>Z~J<^zdGlFw|zMQUo8Z#+P+AGqNzs5xde3CF4Dlz*q_M56#oNP W4yp%D*15$10000cK3(E&_j0*$U2(**+AmAaJhq#7$Kai_TKSC) z$DP)BJeHfsQ+4vV_~pE03Z zf3DN(Y_5JZ_dyc(Bjx<2)tw9fx2}!(T6Z{t`&E1Y@i_&{L_W0MWl&fwcq7uN^$;j% NJzf1=);T3K0RZ?9p4I>W delta 659 zcmV;E0&M-31E2+v8Gi-<008K=(YgQt00DDSM?wIu&K&6g000JJOGiWi000000Qp0^ ze*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ3l$AA2p@zFQvd)0AW1|)R9M69 zncH!rKoCVwyYz1|*x3lI3`_{lV6_=21e}3Fz!9u6FwTI@0Dot|M$r4yRE^tU^OmSm zSIvi{QP<&4&u|+=RoQCXvEjJE-{5cXD~E^#5y?fQ8vJKfy~qGkpa3))VMva1q)s+M{VPQ9#UUIU*rs{%Z=?2mcjZ7IDfr7Mlla=LWEA3H9tH~enEEnyGb zyYFgMtwkg?r5}6b$vSc^>TQZIetYc+j?KGY+n5!bb$^wrS^@vIY>A6a!HdX~h~%4s zkF4t-;FpMmEh!&>AMsJCs^wPTPi})Yjl$d2!>elJ2t9nUi4Ci&C*a*aK8Q$iA^2)k z8|bt?Nup~Hu%<(EyMARJU tNmaA849{++JkJJRvtr2YCGv&hKiZ!jkNHbVehdHr002ovPDHLkV1idSC_4ZE diff --git a/htdocs/theme/eldy/img/menus_black/externalsite.png b/htdocs/theme/eldy/img/menus_black/externalsite.png index 27077673074c3313d2379887f8f612a9b085c177..b04fe8d6f6242bf0515e72421d46180cf76e5b8d 100644 GIT binary patch delta 435 zcmV;k0Zjg|1k3}FBYy#tNkl52naAB z0uc1~L;$lW0SkbpLKQKgl+AjbapidKUXMV1_j0`Vj&pB6pNq_S?+5;BL$!5h568@#~}^20f|OwSilk-P>p&l&H11ARR&AIaT9d4JBJuZF&&K0nTYUU&pA zbxQX$s16;Hx29xPp<`$G-avDTUz7VKv;YlpK>DT?fD`!_;odpdRQ~1@lvn0mpr`fy!h_Yb%FrHE zg|?uA_!Z5kzJmBwXd5bvUy}EMoF(oPzzt|$=CAZTo-8MRC1kZ9T7O>#Z}0|h@CI-2 d25;~N{{^6O7Gdqky+!~4002ovPDHLkV1nj?(xLzW delta 536 zcmX@Zyn$tcayHx9-(XnxC4Qs@Rnw7;XQ7`HvHaAWvsKrJ~{9&@ElVmYtHmMVm^o?7S@x>_lS&8_;yx;Itfi&yPd3Oe=K z-*82it?^5?3p`2eD_nM7jYuxFw%p~lX5+4y|5MZ+%l7>1oStx(e4Kjm5W?Jw3f$`RYwY!DPZHY?}d(rk4TkuUz4|Gu3xZ}dBNvgO0xlDREyP5^=J@VUvoF>uKjbf%A8ei%xFXlD z;ikOJ!t=TN7@pMyl&60#T{QL6vCHKjejlh$nUc*o{eY9w{_NMz37isLCesi2FeTic z_inpV(Zn6koA-JhsbgOi^?KjABlopjQzRp{#O-GM7Vn{)WD|Lz<1 zJMYMa{OGJ?YCmhKv2;u1@ktK%(>y-B(@B_9Y`12y$Af%sm5TCdm;c{BUV7^kBK*bHz62Z|LGxdplZo{xf9@ zJ?lJqI&;8t+lF-~wx;&J{55mex;2J(bN)x2J#ac7WYnMf1MM>_&OB<0^Da5NBrj=x z{G@;;=1#Bf2I6vuI{+ke7lPIL6Wd9!?|gn{|Ys% mOA-B-p$hT?)H{E&s+kT82)=PMv8e$CDubu1pUXO@geCwH{i{j< diff --git a/htdocs/theme/eldy/img/menus_black/ftp.png b/htdocs/theme/eldy/img/menus_black/ftp.png index d8d235f3a1afee5da6e82c01ea81d21ca5e6186c..3132f4977d1ffdeb4c599d51230c14da88fff047 100644 GIT binary patch delta 604 zcmV-i0;B!R2J{4wBYy%rNklZQHhO+qP}nwu8Ej+Nfcp zHfq?QJe%xICMTQ!pU11+}ZZw9{=p6ZM9PP~qJnWb0xrtnkYfwFj2_(ro$&40Yi(yM%9_@QuHS^kV; zwlUn6S-^ZzXlxY?E8h^lD_m2S|3Gv7A-9=#?3^R!D#KI9oz+3*8^BkEi<O%op9qC0dksV23gv48%j1kQ z(pdhZLv1)jS${!$zc%HwojK;i%8xeESpJpp2=+o5*h`O{gqjBBOP~{MpnOAE`4I+X zIiR{iX?y>LutV(WV=^)Vs`CurvpR&8A7W5e4IV0NHupKBcfx*pe28QJX2r!X+uPx#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64Kfnq=JzQ800PWOL_t(o!|j;AYg9oH$3G*{ zpeQy`#6XNjL1NGpHZ~>@EJQ*70I?G6jG*`fL_#bSwFoH$jenhu;*Y{6g%Iro8#QVy zBJl`BQHc;pip#y^YqQF-zPo!l@6J4U3(K+dZe~9_J3Bk?nIzKMR*>SB!DsLpe2Q9w zKQOaSU?73s8%d{=PGV-QKsRs{=mR=|*5A)1^;JYK=}!l`fG9y9@%2je7@J+dh%ZZO zE9?#7T7dZkYkw{z^!RSzL10r(f4-_=11tjhYQY2NfyTh*qSMbOSbPi6;)auwCdXU1oMb(z9CU`Fu?GW8UwP znKc7Vo@^TE2S$VccE^Q{A73ZkZruI{__*^Emu(J9`eJ5#1NkFK_sr}gaL1ExED7&z zW3|F&78nO+V#4N{nGM8byVYiP2-qLUe=Zr`%+>O`V@F^Oj572^E}8TTYx>l z>p-UoIDZ$ji!aK-M=`QC;Ccf1QQ&OgEk8pI13kdDU_Qm@ga>y*(r^;b_n29`Qy8k? z5{reGG;3yOTxQwo&9_(v{xfi~Se_3(zuxsig*Wg8Pc|2%-lWQT-pn=wM-teblJxX{!bdTOvk_>nuq>#% z=bO#!vdaqnOUO3Sa)8g*IonhfenQg28op`OH0BF6e$%R7wvjXi+)Be2vxRzjuom#q zaxaH3b;GU!R!W*l9ef&E_K7=#&)_ro48Cmp1#sB~S07*qoM6N<$f_J`p A2><{9 diff --git a/htdocs/theme/eldy/img/menus_black/ftp_over.png b/htdocs/theme/eldy/img/menus_black/ftp_over.png index a50a6814b6c13453ab6dda65a4e5463692689a5c..f8cca29d214366a3762af31d34109e3a07651ec0 100644 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC|z{{xvMfsYM7JU|VC zB|(0{3fxv};f(059b*4bci=HlyAr*{oF0)Q+F%V$5*jL82|9|H9 zuMbl0u65hc-~8wMJInoIDf-LaOj>nq--c)Bjl0?BJ&*ltG~e=fgjda(?GCTbELK{_ z&e317Ks>T0bHj;G2@$Cub-fR7u3?$AkzFk^sP=-pro)E%Kgs((o~w!X@zZ4f`DFK| zXJ@J>3ObyvUQ_a^)pY-lb@o5wu5J0c@Y}XS?_Tb{+iYKHt+DZrh5Y_k3e~UVtKLof zsdepk&6TYod*xStJAc0B@4TzFRe$=cA2{#r?Ee}X|8nte>B9jGiy0Us!}v2=ca^b& Og38m?&t;ucLK6VVTaUT` delta 598 zcmV-c0;&Dx0^|gc8Gi-<008K=(YgQt00DDSM?wIu&K&6g000JJOGiWi000000Qp0^ ze*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ3l$AA6?}qXiU0rs2WC1@333H-I$%0b2T=*^z*GlR1%GAyA% zQay>iq~GBlpoD1s`wm59%nE4zW2s|>aZ%a0nQUf}%>_^cU(R^>!jo4osh`uZWw8GO zbP&)T?<8#`?T=)8@WfN(^fxnWqK5t3F=F;V4C|tH z_w)$`V|j7IPSm(RTOYu8U>97vJZRWKgOh9UX?T>>JIVOiNLoAnzj?=txjXC!umxh8 zZz9A27G|~r!iKm%xm23jB2qzO*h}gnUAc1OG{CcW?tjVi0zrm<#$I+xoiBsw8^hL- z8N&uxjZ~Cl*h$)?$Yy0`ZCGE=g)5g;#E3_U`$;*L`G>&$r{Zg<)8GY4w}hx-&C8X| z){|Xx%JN`4=yYO++k|Vnfq2BU{h?}iKkNAf^uUkA>!x7u%$_ukjs3TAO{zLaHdmGT zOMPk0B~P10&|I$i1N_;owXgD@;9dXv*h(@Igazs^5SK@cmbB}jc9*e{F|^&n1oHZ2M6DC2%FFe)ey}jo@K!} z+`x08y=aVJ`gpL>c;vDxNFt4A^>Nq85p{ey+%R%L7!R<{xPRobT}UX6XOZ3>qXV|# ztk4*g`rx^w@r{x8lgr|x1R7)78z;VFBc`GER~|D6mZ;+!;263iqDyaT#jpm))baIj z@B_0^52+CN7h~h12)bbFhmWt0uZ=z5G3t%JsQrl+A6&oqdyl1#uZite)bZ7@(TY00 zGS*m8$5+I1D}U*^1u@);IzAr;Sy9L5 zMjtEc_?+l&MIE0Fovf(iv!JaNb$mv&wxW(thh|pP@oCV|iaI_eYFkmqM?p0s`GoNR zi;QBZ=%V!SqmBo_q9G%Sql`cvBu7Bge@0kPghxCiMkc23NQ-!giBR5uQa{Iw_u^jw X<<4Qg^c1Hp00000NkvXXu0mjf;8fRj delta 587 zcmV-R0<`_c1LFjcBYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64Kf*ZG%le400HAkL_t(o!|j(s2S*4&%xs*E4bFqd4!b)uzj^zAGrO}UiGH;K`q(1;L)lXI(6ES$`l4%mc51C+<=+Xu<-QZH-Pl zFFFu_Z|>R|P-&|_3Osk^3FqyWcs5HK`MYeUrTntPy+NkkB$03Q>s#ez4;QHikXPw diff --git a/htdocs/theme/eldy/img/menus_black/generic1_over.png b/htdocs/theme/eldy/img/menus_black/generic1_over.png index 77acb2ee99ea720fd094893e20addfac7a9cd142..e78c61ecb6e928a22287639a9ad9fcfdf1de7274 100644 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC|z{{xvMfsYM7JU|VC zB|(0{3<3@c4GRu@_@sj_i zr|tAQb;o?q<{wk%d}loWFnQCN?4wD%?8T>Q*5vR7Ejo5bA?MCj#Vg|fBz9Lf3kbN0 ze_z8Pu!#LamdWF(c`ucADb+7ySX%aKzRpGKJ6E$#seG+Jnsdzf@S4wE|F!~s^8dg6 z|M)wp0b$Fh$!xJQme*2#;1FGSW2&TifBZ8Me?h7L<};q&0D0Ea)z4*}Q$iB}R_JQy delta 475 zcmZ3%^on_cWIY=L1H+4L7k2?E#^NA%Cx&(BWL^R}Y)RhkEb1(6)c|uX{NG zW*X8{cxUlW65Qly?Bt%%((@q4!EAx_hWdkF728u5hHdSf%=T4huE2?7^WQ$+{#AL^ zsi4!$+}thU z$1kl5>-i6uz0+2mv?R#on_8w~RoHBsuw_mR>-X<@b(!s+yOE^YZ|8ukyCQBeRL@>$ zmY!ymT4B8|BWv~@*)rxFmnSLSvJHNr?UJ+a>?q>h;CJUimkfWL&OKh12NIgW<}2mp z#kC&%ym!v5aNqu)D=$5iy@!hGPKJEA%R960q^a?mPSdAnmt}5Au{c`%cPjJKoOgYj zxu?HnKdD;Je71V!nQI+yd*`3Z=;oR8cV2;KUFZK(B|qxf{Igazs^5SK@cmbB}jc9*e{F|^&n1oHZ2M6DC2%FFe)ey}jo@K!} z+`x08y=aVJ`gpL>c;vDxNFt4A^>Nq85p{ey+%R%L7!R<{xPRobT}UX6XOZ3>qXV|# ztk4*g`rx^w@r{x8lgr|x1R7)78z;VFBc`GER~|D6mZ;+!;263iqDyaT#jpm))baIj z@B_0^52+CN7h~h12)bbFhmWt0uZ=z5G3t%JsQrl+A6&oqdyl1#uZite)bZ7@(TY00 zGS*m8$5+I1D}U*^1u@);IzAr;Sy9L5 zMjtEc_?+l&MIE0Fovf(iv!JaNb$mv&wxW(thh|pP@oCV|iaI_eYFkmqM?p0s`GoNR zi;QBZ=%V!SqmBo_q9G%Sql`cvBu7Bge@0kPghxCiMkc23NQ-!giBR5uQa{Iw_u^jw X<<4Qg^c1Hp00000NkvXXu0mjf;8fRj delta 587 zcmV-R0<`_c1LFjcBYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64Kg2`SBsPY00HAkL_t(o!|j(s2S*4&%xs*E4bFqd4!b)uzj^zAGrO}UiGH;K`q(1;L)lXI(6ES$`l4%mc51C+<=+Xu<-QZH-Pl zFFFu_Z|>R|P-&|_3Osk^3FqyWcs5HK`MYeUrTntPy+NkkB$03Q>s#ez4;QHik@sj_i zr|tAQb;o?q<{wk%d}loWFnQCN?4wD%?8T>Q*5vR7Ejo5bA?MCj#Vg|fBz9Lf3kbN0 ze_z8Pu!#LamdWF(c`ucADb+7ySX%aKzRpGKJ6E$#seG+Jnsdzf@S4wE|F!~s^8dg6 z|M)wp0b$Fh$!xJQme*2#;1FGSW2&TifBZ8Me?h7L<};q&0D0Ea)z4*}Q$iB}R_JQy delta 475 zcmZ3%^on_cWIY=L1H+4L7k2?E#^NA%Cx&(BWL^R}Y)RhkEb1(6)c|uX{NG zW*X8{cxUlW65Qly?Bt%%((@q4!EAx_hWdkF728u5hHdSf%=T4huE2?7^WQ$+{#AL^ zsi4!$+}thU z$1kl5>-i6uz0+2mv?R#on_8w~RoHBsuw_mR>-X<@b(!s+yOE^YZ|8ukyCQBeRL@>$ zmY!ymT4B8|BWv~@*)rxFmnSLSvJHNr?UJ+a>?q>h;CJUimkfWL&OKh12NIgW<}2mp z#kC&%ym!v5aNqu)D=$5iy@!hGPKJEA%R960q^a?mPSdAnmt}5Au{c`%cPjJKoOgYj zxu?HnKdD;Je71V!nQI+yd*`3Z=;oR8cV2;KUFZK(B|qxf{Igazs^5SK@cmbB}jc9*e{F|^&n1oHZ2M6DC2%FFe)ey}jo@K!} z+`x08y=aVJ`gpL>c;vDxNFt4A^>Nq85p{ey+%R%L7!R<{xPRobT}UX6XOZ3>qXV|# ztk4*g`rx^w@r{x8lgr|x1R7)78z;VFBc`GER~|D6mZ;+!;263iqDyaT#jpm))baIj z@B_0^52+CN7h~h12)bbFhmWt0uZ=z5G3t%JsQrl+A6&oqdyl1#uZite)bZ7@(TY00 zGS*m8$5+I1D}U*^1u@);IzAr;Sy9L5 zMjtEc_?+l&MIE0Fovf(iv!JaNb$mv&wxW(thh|pP@oCV|iaI_eYFkmqM?p0s`GoNR zi;QBZ=%V!SqmBo_q9G%Sql`cvBu7Bge@0kPghxCiMkc23NQ-!giBR5uQa{Iw_u^jw X<<4Qg^c1Hp00000NkvXXu0mjf;8fRj delta 587 zcmV-R0<`_c1LFjcBYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64KgWH?H&yP00HAkL_t(o!|j(s2S*4&%xs*E4bFqd4!b)uzj^zAGrO}UiGH;K`q(1;L)lXI(6ES$`l4%mc51C+<=+Xu<-QZH-Pl zFFFu_Z|>R|P-&|_3Osk^3FqyWcs5HK`MYeUrTntPy+NkkB$03Q>s#ez4;QHikyhz diff --git a/htdocs/theme/eldy/img/menus_black/generic3_over.png b/htdocs/theme/eldy/img/menus_black/generic3_over.png index 03e9eecd9339e6de11467b38b2947e1ceb41729b..e78c61ecb6e928a22287639a9ad9fcfdf1de7274 100644 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC|z{{xvMfsYM7JU|VC zB|(0{3<3@c4GRu@_@sj_i zr|tAQb;o?q<{wk%d}loWFnQCN?4wD%?8T>Q*5vR7Ejo5bA?MCj#Vg|fBz9Lf3kbN0 ze_z8Pu!#LamdWF(c`ucADb+7ySX%aKzRpGKJ6E$#seG+Jnsdzf@S4wE|F!~s^8dg6 z|M)wp0b$Fh$!xJQme*2#;1FGSW2&TifBZ8Me?h7L<};q&0D0Ea)z4*}Q$iB}R_JQy delta 475 zcmZ3%^on_cWIY=L1H+4L7k2?E#^NA%Cx&(BWL^R}Y)RhkEb1(6)c|uX{NG zW*X8{cxUlW65Qly?Bt%%((@q4!EAx_hWdkF728u5hHdSf%=T4huE2?7^WQ$+{#AL^ zsi4!$+}thU z$1kl5>-i6uz0+2mv?R#on_8w~RoHBsuw_mR>-X<@b(!s+yOE^YZ|8ukyCQBeRL@>$ zmY!ymT4B8|BWv~@*)rxFmnSLSvJHNr?UJ+a>?q>h;CJUimkfWL&OKh12NIgW<}2mp z#kC&%ym!v5aNqu)D=$5iy@!hGPKJEA%R960q^a?mPSdAnmt}5Au{c`%cPjJKoOgYj zxu?HnKdD;Je71V!nQI+yd*`3Z=;oR8cV2;KUFZK(B|qxf{Igazs^5SK@cmbB}jc9*e{F|^&n1oHZ2M6DC2%FFe)ey}jo@K!} z+`x08y=aVJ`gpL>c;vDxNFt4A^>Nq85p{ey+%R%L7!R<{xPRobT}UX6XOZ3>qXV|# ztk4*g`rx^w@r{x8lgr|x1R7)78z;VFBc`GER~|D6mZ;+!;263iqDyaT#jpm))baIj z@B_0^52+CN7h~h12)bbFhmWt0uZ=z5G3t%JsQrl+A6&oqdyl1#uZite)bZ7@(TY00 zGS*m8$5+I1D}U*^1u@);IzAr;Sy9L5 zMjtEc_?+l&MIE0Fovf(iv!JaNb$mv&wxW(thh|pP@oCV|iaI_eYFkmqM?p0s`GoNR zi;QBZ=%V!SqmBo_q9G%Sql`cvBu7Bge@0kPghxCiMkc23NQ-!giBR5uQa{Iw_u^jw X<<4Qg^c1Hp00000NkvXXu0mjf;8fRj delta 587 zcmV-R0<`_c1LFjcBYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64Kgu6freWE00HAkL_t(o!|j(s2S*4&%xs*E4bFqd4!b)uzj^zAGrO}UiGH;K`q(1;L)lXI(6ES$`l4%mc51C+<=+Xu<-QZH-Pl zFFFu_Z|>R|P-&|_3Osk^3FqyWcs5HK`MYeUrTntPy+NkkB$03Q>s#ez4;QHik@sj_i zr|tAQb;o?q<{wk%d}loWFnQCN?4wD%?8T>Q*5vR7Ejo5bA?MCj#Vg|fBz9Lf3kbN0 ze_z8Pu!#LamdWF(c`ucADb+7ySX%aKzRpGKJ6E$#seG+Jnsdzf@S4wE|F!~s^8dg6 z|M)wp0b$Fh$!xJQme*2#;1FGSW2&TifBZ8Me?h7L<};q&0D0Ea)z4*}Q$iB}R_JQy delta 475 zcmZ3%^on_cWIY=L1H+4L7k2?E#^NA%Cx&(BWL^R}Y)RhkELA4BOf{neD62T!9nE=D&Ts{j2h- zQ$eShx%K$|hd=!&r7t>BG~jmb`c;2Jf6e@Tu*-wl#3411*`L$b{{REa0`^014zA29 zlE}%Pn|<&_gY1S=k4`e=b2HbAGY5#bZjZbu?K+=p{wlM>v8R09Zq?jLy0(6z+0}}z zj$c|A*7F}Qd#9~BX-SaFH?>T~s<7EMVauEt*6-i*>N49scOyx)-_8M7cSYP{sGhyh zEIrLAwZeK`M%L^*vSrLUE>BXtWgGlL+a+h;*-^y1!SBw4E*btfoqN1247w4kA z+N3t=bY}O>;`}E0eW>Z`uI0l&9*^g@ zBnk`)H#GZZVm}YLyB%kJf**`#r!r_;jwyvFN#(mJ=hFd`FX%)ST~$(ranz*Jy@4e z`{_N%nuOrKn1BBkq}LwZARTxHJ_{ytZ?{il&3sTZ%x{}KU?RAodM5y-RF2(F;b(!@ zf_rRKLg|{rU@YhlO88*Uv_fmbnyu{ZuU~(9w<^7aF+5g$@L18CdyAxQ3%%<@@SdW# zn9|q#3*QRdR>TLXwQh^}@P*>fLH}W;r#6M34lWC(Q-80mbZh8e9HPH7{r#0*+Z6sF zI3s96y|>b>p?_Y8{z>$gQF?Dv_#=w^)MqH&nlSw{=+CcpQ}{iKywoQt-I_4{ljzT+ z^*`%;9&3#vC-q@Uwmx*ND0(>8|z?n8On`?<+_~ zy&V6q19E|wVV(|W0aY1L&P&Vv5=t*&b1{+>bbl2zrXB;tGt{T%vswgH19g3HzX-|8 z+8Bl&+36_~D1#=@v(lDSlmoHi@|myBeZR2YR96QSHC-LCe+yCD!mHVam$xd?$fn}r zxFKlf1nVn0)YSpW4YM1PMB&`GNeaq<`k;{b09T{tr50<7gPcCZmq10@Hy{Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2!17C8s^%=YO300ezWL_t(o!|j>xYgcs?$6xQ# zWrfpHqT$x2p(}M+VV2edvj+(l6ck2~34u=&>JKRLflmUV$bX0o!H9fRAY$4N6%2A( zE^U+>>S&NQn>Lr?Ht^k(bK~RP_q*@iCNtrC;KS#8&*%Jj-*eCBe9paJ+2%&2o4A3g z3cd=y3cd_Unl5R*q_x)?L}L57Q7PK4IDq9q7vLCw1M7?E7O>kC_A=Z1fTlwF1symy zwgS(D(=K2WuzwabSYf;SDxDO(qnRU{+##88AO?BBLK{uO12fM&S8my&qTs+y`tM0mpAZYeeW^QifY4 z%}RjP$A9l7!2P)(rS!h-_ato#*^FMX-8u}sq^Xg=DSc>rv!qSHlcSBS?M0Hd0E8i z9(+sA$pPE_lAag`@UemicpT^ez5!lH_zwcZz<Nh4ho=x~o zrPAi+T!cDfZn#d7uStqVs^3rweBQy8aXKF__`x#Z2TPX98;vFDX^&%nqSK~7=DM8zsZu%L1Q3PI z>wlE0h>eVirX{D` zG~0cWj>X%~MAiAMO_>KM(LYvl!v^gIRwma=qs!c1X49Pox`Cc($_8xriXaf}epuWcxzdmN=AV0O==)bGE;bR0Gu5{wF722izIa&E^dFPDu~P z}lISmBUcB&L<9gCGCxr0XQeACL9h*x;>8QhDd=*G$Su3>3=-% zC(vWN+jeKxj)eWEl86rhdqzB@ayM{N(iLFP_8*y1+ZTb!Ky%Ck1*=V7?zTvo*^*i! zCC-NLi;`L+MFIAQ-{Eg!mD+=Ngv}AbZrg2=YU2&()+9O?k~s^)aY+ke57m}&(H_C7 zjr{MheM!<}V6yE?Ww8|iUkf~xIAcE(-&u&4gx--Hl(0230x=CZ5^36;t7eC6pQ&iC zXk!)*YU2RuzJ}i^A4%SnhT=&Svj4y6DkU|tDFQN)l UZZ}6DnE(I)07*qoM6N<$g0PcgeELxIPccS_rV z1f4to*UfHqSREDm_x?R`3G>pX1L6N3*Hld7w-NN8_#}Uo+Qc>dWj~#NPCO^|D8%H~ zG?o8vl>UATX4lnZiBwo0`akrnpE@TOcG@QyD?zZ%5p_HWc*-0Mj#gbc&N$4zJDJh}vw|lmi zaMAneb0X{`Ud}z$9nWTA#hUoA?ZYecE4E5$UskOD*Vb&z_|Q&i|F6$k4>s55{4f8o zb6;bnl*e-UZ?C?8_>&dC{$a&e?OXd2tgK_IKAwNva&phEPmlN?l#2O0i%MTA^=N@b z(u&Hd@urP;KRQemlUXOD`ZiNSEZHq&-Qw-jijT#gKe~)DMLmlzVE+1_ziawtUHcr> z!W__3^8R~|jbG*iuQNdgKYkP$8(-O%mnAYcQorY%kDi9v;qArSsva( zc*e6cfTd?ydX}`r%y_Tk1K#mC!Jpty@R>nG6%qAB)ZH3{lHFdlkePQUfCj(unWc2`M1=s`l3?L}^;ShKL6@W@9 zolUdqikeKFh&f%S{^xOZi#3VcZ2)}@#)p9kM1}N_~=Ri z@F?<@EZZa^p8<>s3$CJ|J;*lk^emHA38L_umM5YKz<+nOw@2BK1Mp{qaUW!JtNcd8 zcp}oLQ7hJQ06u2q{bc5Wh&+HV>iJh@_RlOYyS08f$h)~DKo11$vv|nRv`+@C@UIn8 ziKY0J!L#@{63q6GK6QG~n4|kGLDk$Tb&09MY@Ro%+{S{8zUA%&-WeSB`2~0zJmJpZ zD@Cun;D6uhShLyadoI8=+t_Gt4zk5jwiz;XIj7j>A+tY!XLoU#SiArqGL#hV1b*IO z!3(!(ZH}#O-u0E;CZ~JNro_41ERmxAZ}6S0wMEag1wQ%lMv4%02^g>RMCRDYH)FwO z!k#g+#Ym#Kh&jd>qg{Yh2h-tJm6j=%8&d4ESAUE+0Dm%Nsr)HcCKS5UsgFeCt>{EnEe!D`lU;fL(0M zM0Bq*-O;{{Hv#MtrJI*i8sb#35;nm1O6H`DRK2M6kzk8p-AHCv+TBvJV$*5a2+sB< z9XvCoc!*4Mw9RMa&gKM*<-dunQrM=JPQ_Zh?)*>c1b>1*!Jpvw#uL=(^0yEKr#b)t N002ovPDHLkV1njZf$;zU diff --git a/htdocs/theme/eldy/img/menus_black/holiday.png b/htdocs/theme/eldy/img/menus_black/holiday.png index de788526bc1e458293e2c957066e54695c1d44f3..24d9e49894802d350a8e0f4d6cdbe99c06ab6ba3 100644 GIT binary patch delta 816 zcmV-01JC?~2*w7GBYy)8Nkl4@%Jho<5cHtP#V1y3C{Lc4$!%zIipLB{k_$643x~4WSF5 z&%6U;My90^9JGwHd9a?~BpYBFYJnv3Zlr-OolHO9^IegDJ*d&75gFH`C!)xKcLJ@< uASna1@(;e4lGxWQ=Os0+s;a8$#r^|PGxr&^@F?*B000077jg delta 1007 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2!17C8iN#ivsM00V?cL_t(o!|j+$PZLoXhM$>& z(gFg4fEP4)A)+Lj8ob1~FuHK*MiX}?#$Vun@IUw;bYh&}19${H1ZFn_d>3#YxB{F3hD0Qe_`qA> zDewe%tXT|pUIW*F?Qub*ssx_` zI)Q$m-7-T*V4Mo(>00AGz(v3Vp2Y#tP$l>ra1Xc->;(3R#C0GmXKmE{4zLQWg_wn7 zth}QIX^RV@TJUSYv^1C}qY!u)=n$DU;4JV4m;f$|Y=5AQ)~-X5*cjOC0cn zz(JA73x7;eWAnflU_8Pk_scB)Y!>)o;1)0-+bzif8-Xd{0dO~B?xQNcW|IIP$6;Rp zpB0nWwCb*|-DSd{qj9f{StY*muYfV&L`YfdsLn}gN7_Vi(J(JRsb~t0uj3+)0L2qx6R)7{@R#M97mr6+|u%%*dR+sfW!0 zzm2e4bMQxG>qEc+tIP2t?xXysq?o^?>w|C!aP!i;t!2mGp3q}i=ni;gc&0>>ggNC+su!n>8m%-@R2E8`-t5)^mYY}Okc z9reQEd@FETQ6e1@-u#$A*7I&~-z!BsF)d%oX@~v+pH)ODTEJ@!u-tFcGNX)=-Ku;d zC)4txGVGY5L(p5=r(G#slO*FQyiOU>Y-r6;Kg#A^wPYEi>vxT@;Mvu9gF!NQP8lR! z4@%Jho<5cHtP#V1y3C{Lc4$!%zIipLB{k_$643x~4WSF5 z&%6U;My90^9JGwHd9a?~BpYBFYJnv3Zlr-OolHO9^IegDJ*d&75gFH`C!)xKcLJ@< uASna1@(;e4lGxWQ=Os0+s;a8$#r^|PGxr&^@F?*B000077jg delta 1007 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2!17C8iN#ivsM00V?cL_t(o!|j+$PZLoXhM$>& z(gFg4fEP4)A)+Lj8ob1~FuHK*MiX}?#$Vun@IUw;bYh&}19${H1ZFn_d>3#YxB{F3hD0Qe_`qA> zDewe%tXT|pUIW*F?Qub*ssx_` zI)Q$m-7-T*V4Mo(>00AGz(v3Vp2Y#tP$l>ra1Xc->;(3R#C0GmXKmE{4zLQWg_wn7 zth}QIX^RV@TJUSYv^1C}qY!u)=n$DU;4JV4m;f$|Y=5AQ)~-X5*cjOC0cn zz(JA73x7;eWAnflU_8Pk_scB)Y!>)o;1)0-+bzif8-Xd{0dO~B?xQNcW|IIP$6;Rp zpB0nWwCb*|-DSd{qj9f{StY*muYfV&L`YfdsLn}gN7_Vi(J(JRsb~t0uj3+)0L2qx6R)7{@R#M97mr6+|u%%*dR+sfW!0 zzm2e4bMQxG>qEc+tIP2t?xXysq?o^?>w|C!aP!i;t!2mGp3q}i=ni;gc&0>>ggNC+su!n>8m%-@R2E8`-t5)^mYY}Okc z9reQEd@FETQ6e1@-u#$A*7I&~-z!BsF)d%oX@~v+pH)ODTEJ@!u-tFcGNX)=-Ku;d zC)4txGVGY5L(p5=r(G#slO*FQyiOU>Y-r6;Kg#A^wPYEi>vxT@;Mvu9gF!NQP8lR! zhSE1-dT_%EAc$KO28 z9fT9yypH4CzJWHHl`nu+4%|Y23A_UJV7@>(Z2R)OR(KoYz<()pD_rL0Vw8fw$zsM0 z&tPEwH=zVRc`%GgY?aEI^PDn`Auv{;E^cqwB$>|l|QqZ3l&@r;`EY^%}EJVo^_N);qJPYK-Xl^b= zC5Vz7nDu4XNmk_{p?A7$Dym9zEPIbe$YmhHIj9sHud4B^h&4K{#duV;;?Q{rlrz#&| z__Pq=Bdxsk8$aPK!1o?b;ZtAOFGqL-+%T?4EPi1Np_B)iV&x0_DHQ*E#K^Ht418>? zkYeT6#yf@2d`yOqtn$y|w(`c9PjvT`zpxLYyjHmv$8b6j_xAR;u?H#GPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=804V`yBb~qi00K-&L_t(o!|j%5uFo1K+hcrZNX&inSvefQosE87gKtzw961-^($+97FwCC@4n z^XZ~@v-7sc1AJS+MPOe#^%-c{eqNg1cJKhkfh0R}d|JTlQhw=Z6=CQds|)_t1Xu`s zOGkkRz_xU%pMT$dNr~;5qQV!2H_*<3-V59Tj-*rVfagw2nzj8RHvB>#=#9W_;B=1C z{p_Kn3ES^u!7mv$k|u%6z=jggU0Vy>lXSxN&luU}Fz_UDHhpdTWQ;uD4V#$bprjkI zV!l&DEjugemF;JhgpH&_z%^i3O~rT~IA{A~X?RKNfqyCB%mCV#Z@?+r^M&ChO#qjG zbp!0b-q@ZDhL^MzxDFg>NCWxQ_RU;)NymZnz*xgN;0w0j=4G2HV9hd$O)N`7Qsoz5 zXM>@+|UjcsGfzkB(L(aWp zJ%^S`m4DB|&-|-o_w1Fc-B!Z(t(<#z16S%$KD3AK6bQHM8qs1ti2z?}jsITxvha(` zfUi{fPD%Jq0r<{J*yL=cW0L*^_-$_DhTT-4QZ{14wux)mHHNCUN$Scrv6QbR+r)ye zrAXBQUzzehhE{poZAo8&Ej4b~?;%b>pZg?@q%Mbrky5he^#77Zdk!PNZO>H(-&7mw b|6%_E1SpLFMGe1k00000NkvXXu0mjfsxn2l diff --git a/htdocs/theme/eldy/img/menus_black/home_over.png b/htdocs/theme/eldy/img/menus_black/home_over.png index 505d18ab403a14820316e0e9e51ba20c6cec9784..f19ae6ec4b6a2e307825282a8e45ecd90b5984cf 100644 GIT binary patch delta 287 zcmV+)0pR}H1Gxf_BYyz^Nkln5TB8+4Uj<83_fSP2YE(B&mbR! z%Hs988chhr&|9uK{Kxa^d`<%>UFY=1Uhjm^fZ8yC-qrwq~b z3d}@17(oh{!EK7i1Y#>vYz6*y@DxERF%j{^uU(EO;x)X{_*7YRf??~{#uo^FjkWm3 z;}b-}0;1v%DObE_-dLjqg#QeSw|I-U_(JjJxAW!Wx3hSQ=UBYOyEfw$CT5QJN5(to lVc3Ga$u_89w-_>OcLzyOXmk4zS+@WH002ovPDHLkV1gkBgmVA@ delta 449 zcmV;y0Y3h@0@?$RBYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64KoLpAR>bR00CM_L_t(o!|j>dZG$irhQCww zy^N3z!Ukc4jKBu%2+anJkWt76bOX8p8=Srvi69aV#9XZUNPoYCEMGp*x!71#l~C=C zfGxsLF%db4Na|&-DL(HOE&A=MniWwTy)(ui;4-*%-bq#M>pRp6`#;XG?=yX{G4xA2fqxt6n{8UYumPM+qP}nwr!hfZ5wIgvH7K{D0eEFC!@5}r0zPvBbr#PDbV%e?AFU8ki zteI8$h4}o7HL)r`7oUEyMpor#;$w)*$f|qE#-{;ZMeJ^1Reyde;_(6TF3s8`zqocv z$o_g(A6FJ9b*##d#XB6-ISaOE<~obA3GC^DMasH+{4z8tP~C?cdbNbW>tP5u76>DM4ky_b;orfV%9q9UCzBKR^|KRGFB#VXEH7)QH#huO2|gQ}Me^0W6UMnyrx%R^^-N1w&Cy-;YgAac6ga%$59DBE_uAH^LlD z)z@K2r##j8H{Dqjk1f3ckZ)4x7^d0*a_ j_vL+gUmD(*_vL>AY%~%X0XMvc00000NkvXXu0mjf2;&t_ delta 764 zcmVPx#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64KoVpkzPIk00NUqL_t(o!|mA5i%nr1$MN@v zX*MWjfksS}EXah-P&SO+SZVU3nKVgO5`~QoO3h|U6voJpq<_@>0WyjODbZv}<5xs7 zn*6x#9mdDzx%G6qm+Q>Ax9B`|I-Tb^=lQ}QL4{)Tx_>I7wEbu>oVuSHNGZ{Aj1HM$D{yxxa`%@a7q;{Ym zSda!k?Jw}(fPeR4U*1*%wc3>EmH>JUsi|y-@9s&n}B~jCE zNz22{%>|BzeVnoG0e!Z=Bw`iol`1Ea4Yo%m?FV)Mo1>;xz#uRqf%*yz*dDGDt8w^n z179UISC|W?SE-x)O{`+psd6%8fQc$E;vS$K7!FH`kwhjb0oOv?Q(%{*^;KeJo^8H| z+*_&u?|%i>0Jm(Pv0boz9Jm;+`3M}fJ!HE890Q&JJ(AW{h*fi*Z~Dt8|2+Zk237-i zY+p$XrJIr-0R`LNqWXfQL0})SUDBlO`-vw{-BM+MZw1n{p+wS7za8f zwWLXvsqm840xN*$!09yWnlK@q3jOvhNyYO-sfv$Sau;riiInX94%k}#xu()26RGcQ4)#(Eyj^V8E<6#li u$nwV_sr)bQ9G~NJe2&lYIX=h#NBCc#zdd7n+N^f~0000ru*92}3+4d-f|EI3EgnJl&U%Tt@u6OEXkFrm4{ts#4h*>h@=Yk6T z78bSQKMc$40&ZwBL|s$Ssa09$yd>q8sI>f(oxL@u4qS5&_0Orjrk$Cm!8-MN-DO6R zRMi8GTkn@R2$>>%9_AI~{=XFD>+Fjcu>!V=*le1wni5x!M!yL6JY1eSr>a$`)<*uxmpT7WfR0+&@A zSM>R*!XJT!F-DgZ-~sp!1^-j2-veh!Pkk4bvrw|4q;&NdgpJMCEwOjhYvXY9FZY%qAM zOYDwU!S)t9v5;Q9XTEUo&dzQ;fJIGP+OSsGL&_fGzF?hoY`fkeC20pd10TS`W{#@7 zS=|ZPN=k>=wZHoO&gyoaU@qNcRdKO0M$)VKd>y!>Uw_sFW#Ys`8XVpM&%4agU_jxf z%h3Z?Qf7Vp1gtJ}*W4Lg#SnIzdT=ZJIr}aTmS$707*qo IM6N<$f=kcf!2kdN diff --git a/htdocs/theme/eldy/img/menus_black/members.png b/htdocs/theme/eldy/img/menus_black/members.png index 1421309370058deffdf66e7c323035127988ffa0..4010af188cdec0d57f944d566711cec4a8bd4bea 100644 GIT binary patch delta 731 zcmV<10wn$J2=WDxBYy(9Nkl;T?Pyj@!N=E*EWv5Fai<9Eak$;Sq!wv*yT7EgaR2+enkR6T~a$6x5&uz>#O-e82Z^H|N+mHfc z!G2Sg_KUOoSmcX%DgRi}i@9D}R;b54vEZ7LE$pTIHn?k$oVg21PFf+(U!i1UdMQ5; zuKU7FOwO%|^MAV-a!b5^!6t>HaPenE=AsL6{(K*qqmU^O-{(uhX&*8&bK1dX?uh{h z#5!S(=Xxto7=z&$NrU-(Jm)sLb5CnSCP|=v!ls7<2Dy}sv=tIVMJ3liP~|7VE`tqF z1j<|F(m^85H95V0!Dfdo7Sb?3&X5@_KMgI;?BTV1SASTq=*nz1HH!?h3AHRG^s78Z z0$8C!j`>~|*&*Wm4i@=l{+6!=ixq8|jj!aS%no~I`CEQG%vHo^wxyDj`iMI^TjX;) zmB&a9(-rNRjmo);c-))8BHPThd_|b5$j)pD&Rx_LcMVapV_nO)hY1EFM0NnzTnrHV zt6Sugx_^`(rKrtZ5+!Gn#NmwGR^|EQdx#6=_|3aR676w N002ovPDHLkV1nCNW7Yrw delta 1114 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 B?9u=L delta 1369 zcmV-f1*ZD62kQ!uBYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64Ko(}kOFZ400iqvL_t(o!|j<%Y?VbE#eaVl zL0*+Yfl}TrQ3Rnjlsg~kLTE=)+=7-Mwj!i9;(n16_Ip%Pu72?@9&#)OF0 z7DWhB(4c^|@@OgLSuFA_CdbXW$(PI5-rM$i4W^U)(|hkXbLPy6i7a=}6Jo zOS&$ADZnP+Qhy&}9Z-^nTj;oM<|E>6;7ed+Kj!2-uuxJY|a4 zh)KYX0;c4|qN$Cf)`&O@j3@y1)}rcsL{tE816}=$v%tqiB`>KBxBxs0?CT@(AKZRI z(RDr|>VY+qnj)eGSPs+x85Lz^lNVKC0FSX)BUO zej{)SSbryJUqnm??gyp=!+~kQFyJC^*c<#1uv5|@pU|%X`y{>L_HVjPU&}?{MM)=f zkzWZs<*&a2-vYl#I@Lqo4g=-`OMqGSIBO;Cj);$dvI6YSU6S6)mGcvTmx0y5UBCrT|Z}3oT7_^eHe}Qe8wW1)7XEqYuP?w|q~Ov@=)Q zJbwaguwv9YDu6p3-Ic>YgKb5v_e&kH3}}(`uFr#7r(J0eSRGEqU6Pt3q87Lp$VtA% zYBLkqDyhLMQV9&n@+{{Z$0c2Mo#!m88CTf`tci$5;44WR602O9Vx#{^JRcPi&)A-P zpHI$LyYe*ubi%WG2)F{YOS$Q*u75w?ZT15DB^@x{!o;%!#%oVv8E=R^RJrkH zCfYPgI+$zbAGOqtvph}l64zuM;oaqDg9o|TozAyCz5{p&sC4AQ0yquS`{Z5>f|o~^=UV-EJpjRiU#SB=>u>3?KI zOg5jEeA8xufzNy690OV`$g9c3vmB4>f)z<&|X@Uny@C>d51zqSV@6mALvik%iX`G-vQ4Vz`}Zrd&w8*pwQp$}4f5w@IX@*&i+tMdwN28sUSG6kbzb6`8|uj1O; diff --git a/htdocs/theme/eldy/img/menus_black/money_over.png b/htdocs/theme/eldy/img/menus_black/money_over.png index fba1c91e05b51765ed8c8c0352840b3db978f614..6ed4fe78532c9a9ec3ba1e104ec4eb6a6c8565a3 100644 GIT binary patch literal 600 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6sn`IY5ZC|z{{xvc0@oe*F9D5~ zFA4GsW-xG2C^+!p|Aqwu53+0%E*zN<-B9DD*PRw{!Y3tMUfFrdd(h?4d>*Zn4fs`->3iYD-!u5R$i)DwlL`^lgjy}-*r}WO?Cgq z;Sj@^ly>}ya*U0sQSSDgIh`T)_KyPYz38yWTslwqjj5W#tGmyxu_UUP&RQm@Fm2k| z`JQV(Zw**;+ttbCJn?I9D;kd+NuSN}axtZz32bcbw{A*S_`?SO2 z=a28K{P@f#-XL;S2`k3u|KKsz<+oD2s}o;Yw*`NPmZ5YNJ-h7RI=DEC(8YGuR70>|2RS3O8{T?3Z5hX z2fzyeKexw@(h_7{L3B613#RMo=JDmd+1 zRqZ3~M5F@n7QpF1#|~buZAbnXKx-urz=E?dbJ_>qw|}PA0C>K_{Fc1GZYCSH%f{+_ z%e70fh30qcmsy?X?`CSpUd8#=@Hgiu)CABQ7j1Zbnbb)i!SB+sJ@B8B=_@u)-_=Yt z=3y^)?bsfWnxoY?lxP^GIqw|4J^@fMpH3A+z{et;@g>TnfW2thE+@a+D3udXX4J@k zHd9|(%6|}CFp(!kSsJj%y#8SV;Jv3_-e=%%0PlEy0^nRkIuWV)QDVW*MWhyyjtjaI z_InNB5zik0ct+=)*0ER6rXXz=11MvuWBXa!gk3nc2mZU^eV&-noU$0Bu;#_{Sm;Y$ z`)2eya}4fUIHp#ye>nvFaiTP_80V?Wniooox_<&NAM4nhHP5kY0I!CcRG#Se&}d>I z8&|R1rY3xK~X-3X24Hl}JaqA?~WX5<3;DTVI!`G_X za^V&|Wn;mmG8*3E!=(44Wn6%*!HXW zkfF=wA+lSn+d7n?|HGQy;f&EmX|tm|VkWman3=P(+YjA+mcyUOw{-jk{m(gdnwEMM P00000NkvXXu0mjfHfO>y diff --git a/htdocs/theme/eldy/img/menus_black/pointofsale.png b/htdocs/theme/eldy/img/menus_black/pointofsale.png index 2d428154491b52a5a058e344c440d1f6ee2eae2b..21740c2d335650e4d4afb1a5750da1fca21882c5 100644 GIT binary patch delta 409 zcmV;K0cQTa1hNB=BYy#TNkl7ckVHsfDG5#0$~0904UxgbWMqd~ z$|`Bt1c87+G32l?>ChmcKtMnsAP^7`2-h=SoWo}Ke%{ykK7JVU+~3SOH{knz-?H%m zHr~eDcpGoyZM==Q@i@ca!Yk9UM*Ic*8L}W9Uxi;oHl*V#@P7j>#zu=a)}`am;2S)~ zhDRH#((xzo1x?0AlQvS)@kj6p4aP=;HddtL58wk_#)eB9N$L0^yhEL_QKyY%>39d; zzyl{Dk2aR1Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64Ko{pA%4sN00F&8L_t(o!|j;8O2beb#eaXP zpa_0Ibr7whi@1oR2);odKyVQUA3|{Q0s0QUfZ#JYxTxUZCVwa@6x2nRCaK3Ig%YTk z+-t6d90>G-{PW}F^z`1CB!*QZ46!Qs3ciA`;4AnFzJjmdGpe}`Ftcf(1uQ#`I+N7O zb%rFT12_g^Psc`{Yu7y7y)F=WO2TBRu>lgG16)XI7L49Gunnl}A8a>;j~!;j>5Q)s z@R0}jCL{I1oI*n5*+qKzQe>j6=hl*?d~RS-nU)|9=TS@wmCjt6qET4~Wo$nLSCm z{?D;_1eSn@%=hgc_-~xQC;_+uEM}ZffJoA5;mk|=b9giB0(0rxwKVVJzq$LhA9gim zsec2%+V}aVQ`?x?W(n}KeJ)=D@9FCg*Q#7E$^G8-UM00%dj1)h3eYrh9`J!nVl$fr nMoTSt=^o8_RXI!=>Ziotu`&#$ZJ)tZ00000NkvXXu0mjf_|W#a diff --git a/htdocs/theme/eldy/img/menus_black/pointofsale_over.png b/htdocs/theme/eldy/img/menus_black/pointofsale_over.png index 4549e2c4611487ebf624e1817b13fb589f07d3ce..ce906378a8b7cb8aff7f3e45a9db6e24d2041938 100644 GIT binary patch delta 232 zcmVHU=8P63#%2$EK{}`u8K1rI zV)zXqp7@_5p7@GNXSD;*b3UVW0Q~OyFvAr4Y9AGknUFdpBVq7@)TtC1pFQ!!V-k`N zT_fNhU%oT_JN|}V)|D?iBrU!*nD%_{?NWB4oS$YwBtmTLR0000x9WSt~y@QTh+Q`36qqA@Kv+4H%o6WJM;ACVioD&0~gDs+siBL zm#}3gr=7jAZRbPzhU;5zsxdt0{PlB!NLnwuuuE&!n~K$O8)`R)`%7#|(sHSPDfeSS zJ?FjPr~7S|s7;=kd;4}|xVq>0?P588=fiamU+*n{#htw|z`cg)`+@57XWqBpdX~#} zfve(;6}yH?=we&_l`{|CKPy_3n|AfWf^8fAim#6M8!5$;HTj`W5>d&M$};kqi#&*D6~+9TeuCu6{1-oD!M< D`n<0a diff --git a/htdocs/theme/eldy/img/menus_black/products.png b/htdocs/theme/eldy/img/menus_black/products.png index e4edc0f31e20b854836b40bd1e9954adca61dc3a..08ec9b254774951e26cfa83d415791ad8b5253cc 100644 GIT binary patch delta 403 zcmV;E0c`$}1gry)BYy#NNklJQ1PgOg)>UA=HO8LKk zO8HX0lrQDG-R>dWk+xG$ehfp>D0TTwFffKA#{-yvDs}lK2!Bje^}d1i8%V%Pls91g z_c=^nz<~PibJ{j%I6bZ!Snq)Z*j3p!JFxHA$Y$G+(r=sG%L^${`7-(Rr_FoLlfQ;X z(rwc6syc;J(rdYl{BY42z$NL}$r(oE4A{x{!H{;HoP&s*K3m>`z>TV&H0t#)KR^`- zTzEOp{BasCUw`>Wn)^OLTK<15^V^)F{IcaMtjvXFZ6_~KpBCqhdJPibPhMc; z;wR7W%Ns_T^4_*dQQm^IA&*LiUCYVGOw8Z&LW(N?Me-+4=J4egAf!(xXAVMIu;phk xAw4-c(}Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64KpD`EvJ3}00EInL_t(o!|j-{PQx$|hCic7 z3~amtREUL{r4l>511!7%5(5jcF);8Xs7o1`c>-WSVyKwdkbfu(ZQbNpJa|ae^qkPR z@=1}bi+uj{=W@A=5fNgwH6peIpWqXGf=}>sEej1`j5z?VmD^85C~qZ-V=E6;K65~Z8%jX1m2dcc%E&&0&~QR?}1Hq=|mSPfbWi*(&)((Joo^< zzzbUy4<0;t@GY?EG0k}g<}@#Uv%0hAG-nUY+4vc`TVM3Z^+8916ny{y002ovPDHLk FV1ihpUTgpW delta 347 zcmV-h0i^!t0rmorB!2;OQb$4nuFf3k00006VoOIv00000008+zyMF)x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru-U}5CGbA)eQ}F-*0QN~lK~z}7?U>;Wf%v`N!?|p%%cX%Jq0PfNC9zeC~w25>ld5zNP zsTWq&Car#wD#tCsS4tbf3tsTE!atXSFHtJ{sK5DDgR7&}f19P0=+#4sUL8Q~@DslA zr6M03afxl~LR5aT(xxM6p9P@H1UXIo+*IcUztWFXV`fc({Vryv$O~TZg8wsk&!7?8 tKIRy9QgwcC3>sr}-a2kz&@i$#y#Pz4?ZD+izyAOL002ovPDHLkV1g*>>BF{%}Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64KpXLP6A5+00CV|L_t(o!|j-{N&`U@MbFa& zL5nESS}<4&f=$3CVCg4W+xr=Ub$Y?ZQpCz&FQ|o0z|AJtW`Bi60(rA!V{-mXa^)>mJ&i|ZS3>sY@H ztQX@4$NC?`@KsLBiBmKFHTP&nAunu|-hATJjHjH; zbB7OgUQSKE2USCPGTmDR4*?yIe$rslqF+`q-^%c&B(eP5niyc6HH--~;5+uWm@jq8@pwN`ED z|DTqq8``AI|JqZ5t>++n?vMqZG)~fyMk>Lm1;_oEp^PuWz+7bpJ@O1Ta JS?83{1OPG5UvvNf delta 353 zcmaFM_=jnNNGZx^prw85kJYlDyqrfHV;NblzPLq&N#aB8wRqxP?KOkzv*x z37{Z*iKnkC`#o+^USqAx|LeX1h5mTDIEF+VemngvZwV*xJ&{eK9I_pA1DaG5 z*rz0D#_Y{xpW?v&IMtIQX@>6y_S(rg5tAzGPal6Xq4vU=4Ob!(4=Pq1J9@_w#ywFE;JgPAGYtUHSt1Nchhd~J`d6b}0Uvb$dT-^}fn wWonvA>-@go;CW{|>)Z1^y;X5wN%hBkrObU7o^r0Z2@DAaPgg&ebxsLQ0DNbbHvj+t diff --git a/htdocs/theme/eldy/img/menus_black/shop.png b/htdocs/theme/eldy/img/menus_black/shop.png index fd1fe4b5785494ee9735591d9e7ff79c2e46278e..5db29cb0e3a311859bf2a4d9964dd1473fbc8128 100644 GIT binary patch delta 474 zcmV<00VV#+1@i-tBYy$9NklD2l>34uEBikmOl2vo+B)HMR!^ zz?eb_6K~>8yoopQ5==bK9=yRf`JiV$*T&=cpblRh)WPT0_!CA=|_3 zEX`hYc%Ox5Xe#a@GN||lR2lytH_-Uwc^n#~3TJJ9hehLYhTsVbjQCBuGt>5b1@2%` zc{T~)c2m#u?(pL$U{zS0c4v5Z`0+7V z5|*ajHsj8mPW%+)grzlhr*+~ZkQHWY?6!5{!;le{)YzS5$Gek>H}NL^2TO@&49i2S Qw*UYD07*qoM6N<$f{qL6@c;k- delta 692 zcmV;l0!#h#1Iq=FBYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64KpoGo9k5o00K)%L_t(o!|j+oh!ar|$A6;+ z3&VMwm6&*fc=&-L9%7k7u23w_((0@%#cR&OLTj5V?8L%euz#|PV54B;`Gty{f?^OX z#GG8f#F)R$1j1o9yL)d#B0KPS?0d75-~QjsWLcBMxY`!R*mC$BK8MfYbNC!ShaVYu zGrM7CpUg}?>b^EPOn6K3V&-sF;8-7*SHPU4`Y6Ib0gm=8{q%XFXYDm`R?^zYq>Y&^ z0W&}oSOLyRDt}2T0Y`vGzBdCb4JB_R4IHlQJD>(ENBAwfPYo!?iM^Q-SNS=h0DJ_l zM+mV9JO_RO=Oa#W!pu(jIFz;Ww}3amd<@@{?t8z_{ygy1eY&Fx989Wwtb#SOXTZ9o zO3eCr0PL1DyJ3A6xb2tgz*n!4?)4=}?}HVrnH9YdtA7a&^dZnRvlAQEj|1OaI`oc>|S3KqiNss^Wdv}2Sz@nrVae{7(*xT!c7s3iY-;>nn z<8uwT3!DZv4Zq#fC4}wq=Fo^}9N)}r1t`Z28U^1BsC+jyb^y~6E;XQHW{3TO-lm2B z9Z>nMm4AV&1ALl2J_~8#_k~p6%yt2dkTD0PO-P%Pv}$I}1P^>b(&{L{cT&XdjEeHZ zfj6`1(4D5|oqx^SaAwMPGElzg^Opp@yaaqs10P!Xw$H5uvD;~sFJz#6JH`J;D)`9^ z;CK4`1DJ|=&(<{X?F`_%R!C&bLy;ZY`yO7w{*eKA$9ZC)jtJ|Kf9B4xhu1 avHb;NgQ3-yz0x260000P(eV4j0flxG@rV*V%h1_eoBh`M zth7C|#Z%CHZ$bLi;0fRTEe!TXJjhb}COPjQKYQn@G)0w}|8t&;m-hHgw4HbT$ic_f zk)E?>-ul`)@81-gYs+thD!Ki7QFpB%VPEWP=L<*Ne?K^&wg1X&uHL_^>to*ZGM9(W ldb&s7Xx68T|H_rw85mA&=k#!H3oZtQho`Hb%Q~loCIBg8d({8{ delta 495 zcmVKj3!p0n{wzRtNfMs4`h{c| zas6ocL4eK)V}Fg4RwNN&o!B)&q{1_RDWg8@ZzG!x%oY0>tY-yqNa*RVcMlmIc#vaF zu-yQ-1NdNO#mpMO5x^IKR{)n?`h3t`w))MR^KGG4%x2kmI^V-bSE!NmbxYkWM>c!j z>Q8c&r-%Zq$VaD6`tr<25viXToCWaiYK56^#lQ>rXK2DWH-@6gnEPTzM0k^lez delta 174 zcmc~h%{W1&o-N7S-G$*l2rk&Wd@=(A180FpWHAE+UnvMP?o19e0t&L1c>21sKVsqM zViuo&>1!@fD8kdlF~s6@a)LzG1AECGayJ>oblQw2J!q&ZVN}biE@Y89(d2w*USs1y z#{PZGJUl$?D_=VC2gOzhOy|yc`jjo^<k^lez delta 174 zcmc~h%{W1&o-N7S-G$*l2rk&Wd@=(A180FpWHAE+UnvMP?o19e0t&L1c>21sKVsqM zVpdSk4@d$EMR>Y6hFF|VPLRlYU@y5t?k0nnPMguB2MtvvjA~icg)CAhnw;;D(DlpR&cgoEoFA@qgjA>C*1PX7>#K_%D*=bza@V#;`0* VJT+%m_42~3V6!f3r1{=^XffkCiUgwkR=gAX zh_ya=XW^;N3zX+eE(N0eK0H^nShILCoN<^p9OaSaf6EWX6Gc}r549D`AJ>?@2IX|i zC&eK=*3`_U_rtdIk32j)kjM>p~NodDAS;oaBt{*Z z{fZXznoDOo2leN9k`sGy%w!o7TkQ$89Of+(%7^5a5r2{$Td`j}PHSG1RFCN2q(~yH z#|}xKi2OB>WW^wi#yo74^oYpcVM!J&!fG4CP3LAJOGK0>nJ@=SY>YxeVKSD8^O?e0 zo+Q9H%yUp%oEs{wPeaDAloy2tV7iMM$YHZL0U5$kz85Aa$R^nBk3{;Al_w1_NPx#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64Kp*hl-4!?00aC=fbi<*~$3V&AdK~zv_@J)RPNKk5M z(5h7nVuD2!TW$PlDNSN%teC{Qe3>i9<30DD6Hk%`vSGOA&YqdO_Uyf9uYIm;GhbT+ z^SCX5UjV-VegXVx2wu{~k~$={pAO)a_mGnG03YbjEl{u2M*Y>(tG8MmO-~r%(q^nD*Hj?fF zzKGAX{u*E+C4&WK`a$4e%6}2iBk8I#O69r;x>HhT0Dtd{DNX|)w*79wq&LZIX zB0(B6^vw|vV7sL4@jOw*wzuF}aSpH|Bi1F7wgR64zu5k{aGjU58Q7c?&kF^%X7x=2i~x~zXz5}>@8WpiU_nNmo4r~GrR9Tx7z(|Jv zaY?sj0DtcSZc5n?0oMUfWW<|@@>-l8NIDDH0$d8T0v`cy1LMG3HIntT?e`LKHUb+{ zHYb5Cw!aITy&17KRc!KZ*vbt220WE9u%BY%Rcnt*I$`@0NjC!d5!NUm1M>cS~9^Ya3S5EdhM8j_KF7e+>RU9+!>(gabB6 z0yqThvweI>WHM?;Pg$Q?yJ~JIt8qW4PN@1|FaJG zDPXtlsTve}RMJ=Rs^oZTkmEU$Gwo_~tVTUQ3G~+jo&q@uES0o0pe{NGn-Xd$R u{)d&+6q~cc`G;+f%qgFr%{H(9*7+N8%9Z14ZKv=60000?(qL0zk`T$>lD3j+`>;z&zO?+OUz7h%e7w{F3z;k zUf+93X4?I06?^X6texR@<84c>eZ@&h_Jz#ywN=MV=O4LytkTxJ;)>$?drCCeMUxOR_^{=hi&Q%hMKEcRk8?oNxOm zuw#*2w%Fq@=bS31{gT!ER}}7a{&CR#ITAAuar}?#S7Lsub)w;t3RC#O|AF2IVml0i z4#lo8(6VI>sM>LD_xwM5+?oVieNLQ7eI

    D%`O{;z#!W4)w_Ew(rvK>M}R3NR~OD xUHZSga!$Sd^F48K5%#ZSA6~mO-|&JU1H<3-eCY`jo@;}G-_zC4Wt~$(69D$=tB(Kx delta 711 zcmV;&0yzD;1JnhO8Gi-<008K=(YgQt00DDSM?wIu&K&6g000JJOGiWi000000Qp0^ ze*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ3l$A94MfAK9{>OXR7pfZR9M69 zS>bV=Fbw{j%m1)J*dX4ZZv;m024w_BcpH>%zzFUJbOX8poqs_65#^3J7FfpaC3pBv z_YPx=Pe%GA^b8T&2NB@ zpLDmmZ&{xA_J379`OV43PP9wdcZ=*@0o-%n!rsGL1^7W>{3y7REdm~ZW2H`*SD$>K zXDMNTqa?Rl=30x-k%CPCL+0=&c&F&UM>8)hj<-@x(F=7Jv-;1~AeE)o2!&^<9D zslYeNhfpj=5`*x^eLR`2U-;LxvV6W0N(Dn&wStxT|{56O?;;cBf)?-;F59ffQja0<~m#11t3?B z2Q~1bwap1*8UgrN`dN=fzGz;{;DLd+0G@&+KZ(c{|CB21HZk#=bxTh5_&)hlao&IocNsNx zKC{o7SpM2-KCb{iDFZtz7Bs+biNNPrH$X7JbN%Bs_of=)hg{%01~jpc`>JdsjK4=s zByRQH`SMq=cB#oW{tWO4$ZrAD^!)p$3fq)u7(hh|HyW^gQxyQD7K6H1vRKFwS zU5hS#-ZroJW_>3uj<)L@K$RS@HSURYc?BuaB{lYWE>rzG=qynsU0zZ4uZKi=Bs{w8 hEdP55E_sR_;|uT(e|TOM$VmVI002ovPDHLkV1h~TPr(2H delta 181 zcmV;m080PF0mcE48Gi%-0030pDYyUt0F6mRK~yMHg^$4w!!QWN9NObPcpqP22cV=% zs`X@9eyG8}d;majgi&}D8V9nqYhZohVW(Ci5sVRjV`UR0>Kr^~XU_y-2nKPZ@U|If z2C}sBY7=491;_BPj$(m^w!Jpiy3Lu+fuUGD$QupC%U+As|1LAdpwJr);6#zdK7#n) jMDN*vYCSN58}s`Cj1_s8wW8|p00000NkvXXu0mjfcHK{Q diff --git a/htdocs/theme/eldy/img/nav-overlay.png b/htdocs/theme/eldy/img/nav-overlay.png index 82d159c6ec05c44f543ae14152981a15cd8d8c4d..c82eba13bfb4e7b880fa30f64889eac67d9adb72 100644 GIT binary patch delta 45 zcmd1Jnc$)!?CIhdQo)!k@h(B6r|JLy|K*TwaAUHrZGXJh`L?VPvG z&*fO7$CaPUvAW*=9J=1+$9e+a^R^&kF4v%@?emcc& z*n1z?7eHI;AHg8-Yx^U7KbOAkt#>{kOB`RvoB?1;JkL>?0c}2oZN@Da@3!~b1c5E_ z4uHHrCGUrGJtWPi?V6d-B$37_1E6zCLAAe6G(ipa&wr<|VA}-a2_PDv@9oR?i9ver zlWtpz?_7Lvv1aB|Ad8F*ukODD&j3mT;9S?ins1lC&$b`X(+cANc(XVTAo#p5cmp{! zJ0B=tGxG_I0V8-?YJ0FRh0ZisBd86xZAfh`buL7)bh#jbz6w!G%@uG1btu0-#+sRr z!SLYNZ-0+(scjCc&xdRRvt0@6c^j~W+G-qwF+c~9{Cp?}fGgR)4ligf7<3fh<<*uy=LaEMnrOT$|d=L7g!)|m`rwXD~DsDGXNffa1?Km}Wvh2;Fac^K!@Vvm9X=*a#8 zKtnQ=Z}?t7RRWKJIe`>drLdXyQd=rAo)t-TaeBIs}vS&!L|>#3R2lXd7h7AFa~4kGC<$J zC_wMT7g$vimcl-{E!=`_*PJ#;24g4&W9jlkD{KRFWZs?l-bW>{=I4>ZCX&*E1Xd9# zu)Q{)V|K5vB3T~M)PGO1blJVj0Ds+&^9|o5Xd6;qDQsoCgSILiCvm#K_S!t)YEvW& zj3<_4}eu=5!0NMThj4$J|!=`p}|0cptw*aOB;Tu`hlaBPZo zc{cNgTmwqM7qrjY-o6u<+XwHc-}A=N06&fR~*KH^9Rwy2ENd};r)Er zMllSx`2td4do~}y+JJe$IDcPw3yPD-eLjr8Zs#s+0EB`d3Uc({GsG{7>t?2l_hmag z#V5j-S3*1>RNdN^ur*3`5*W!6#*^FPfRGlN{D<&GoOhs$TVZRI${$}*`6))Sgs~{@ zpcIuLd_lmkM7+2yqf~;GW+W>-j74$BVtz0J!WVE5(5fmVY6UEUSu`B41fI|X5WWBa t00`f40001hV8Ryw007|&0001gH3O{*3=TB}jIICx002ovPDHLkV1kil3s?XE delta 1775 zcmVVL$G67rr~N?T^?_ln4;LGJd};BYMb29{ zaVeJa@|!C6;eTP|;mLvZ7+Xa0J-0<1E;$eM2+<74nZWa~SFr87l=UINwHEN*(noxE zf=ZpZJg6HdiVI*rg(F0wC_RStJgY~P_EW3GxF2Xd*GRC(8RTNmOZJNFpH~OiVrh$i z7tL?H+{c7W1>;OEWPv%)LyFh0ZaTz`T_psYyVXBf%I7=vu?e%QFOHxX!>k3vwr#Gro?D z@)mzvGk>-UjA}gbW!tlRF%v6hi{1=7&TSu^j%8;a#p=AwOVH>7ct+XW4Qa1rpVXAs z;x8i%XJ#jHGnI2?TU92->^07;Cb7=t)l6*tiq5?pJ7Mex^lQ*5QAQTW)oHsIuRUnK zyU+Je5`cL#m1~r383kQju^0VbGY{L}cZ}l}kAH2OOtM&xV`6|NTc;XV1f#Rn>Q>&}My6?8(dG z_5gav0=O5^;}m05Y2-6FOU z&{=cYiDmN^zYl`z(pZGzQCI9`++O37VSiBxmYZ$!ZV}S49cjm!#dvfrA~EOZWpxjC z#zRgRIhji@B{{eF4MtsNv6uI#eD*^OS+HWM<=@Q1ZIV*nB;=oqL%9EZkvhQZ@_MgT z9opy~Ze9UgowlvY<}H4uA-mr!D!wn+cOEtq+qp8c4%@xT&mq}&7GrcS)?w@pG=Hs{&*s#tyl7hrC=s_wGr?yTvaz z|6;Enq@J+qv0b5%Ji_Lh^Sm0agSZd3lNz~Z&%BIp3Cp}o+PnbX;^*W{dL>xL5oNK8 zZG~b!xbZAu8O>B{m!BiyC^(E66o30*JWel<J>`4)U5mFjU9q=dJxgF=%iwnZ zRw^fy1HNTeE?y7g?7Zv;w5rFuW7`%#nZWAYC%kTk)s>4Kvu(9fIgy-!u?xjYj91Oe z^F7>TRyftYJCt7yCb79_PePGm4BG8l9v_# zF$NdpuDx6QAb-}97p&<2czw1JDzop{tkRqW{)+#v1`q| zJYTRTf&BQ#oA~m&J+!+k$TeY|%cd^as_(W%W!n{~y><~gl8%CXlm|B#JN8(sF!rBc zrUHFWYTrNDuFJ|p`|e7_p?`Om47(e)7)qIsznDidi`nt78%bvz@*}7*=H%ivFy1XM zckw&MDH-4X@z9=JTbPM;Cd2yo7c&~6ytq|jdxd#kJ=h`KSN9-~9EwK@+biD)MM=}s9~mX z{B%X3SEKN)QKLqU8Z`>v8Z~Ovs8ORv;aj6djT$v-6uvcT)TmLTMhyhMp8+13x2TY0 R$G`vp002ovPDHLkV1m4uirN4G diff --git a/htdocs/theme/eldy/img/object_account.png b/htdocs/theme/eldy/img/object_account.png index 46be8b6fe0f6c733bc1130255b140d9d0da85c9f..7d5f96a97c4d42fcb9acecc8e8998b95d7078304 100644 GIT binary patch delta 297 zcmV+^0oMM-1Gxf_8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0002)NklNMueNoh#D2jR$#nr_{QC(bIR2LUtTou=oDvF|a07&luIN#mg9S(e!0B!6xU!!VAcwbmGOtI#yf z{tf1N=FI9;BK4~(r7&QcCL{`UT}KBg<*jB}hAM<0iQv64MqSr*CE`}oG)1kdisc9k zeeayd1H7+FFzPis{m7&Je!kTtNw9Yn36+x8cE(tEsYLE7i@Os(Yxs19y(^JSt&Jf` v2uW97a*uGUz#_=vKq}SnN0v7~%fI;pr3seW+8mox00000NkvXXu0mjf_&I~S delta 438 zcmdnVbd-65WIZzj1B1r2yN`jCUWsc&iE~kEVo7FxoQop{YWCa*3XT zk%57!f}xp}k%5(ose-nFp@Bh?WX3X}PWBQ{Usv{<9PC13yqYJqyn#ZT1s;*b3=CW! zK$y{KjmZq4AWOQVuOkD)#(wTUiL5|=bwIsOi0l9V|F2!Uwig7BojZ5#+P!WfkY6x^!?PP{Ku(*di(?4K_1tqOg$^kQumsFlB+#Mioie#$7RRsu@fj0j z-UjbK>|^TWZeYhXQAncMJ1MjAUF0ZR*P*`%Q^yQUpLANxfWo_6}b|}Yhk8y^h zHsiaZmp!*Uw(Xsx-F)y(edxBEW%m{{9+f+z!!ix3l)gzgg$yN6o7q}c?^WkOAI2 tC*al#W_J$hjw=Q^ISQ-{rW5AuVf>mcoZqxAM2!ImJYD@<);T3K0RVG39!3BF delta 141 zcmXS4#W+Ewo+aJU*O7r?V?XzwL{I++!CXH>nhJ$FDbgoACvZ3hSDy*U-yi<#V6OdKLqG7jW7UviVTXv$)E rt>SvvU}K{P!zBi@xfvh++cSL47S8{+al?9`xeT7{u6{1-oD!M<;BYaJ diff --git a/htdocs/theme/eldy/img/object_action.png b/htdocs/theme/eldy/img/object_action.png index 0b02fada4147e31e71f53a800b91839be9b66f07..6abe6c3388531bfcbef1edcad15ed15ca39ed9fa 100644 GIT binary patch delta 256 zcmV+b0ssDx1e^kpB!A;cL_t(|0b(#RGGYJ$H#awiva&M4^78Whii(Qum6er%I>{IZ zVHk#@9sy=14pCK|Iz}QJy-Tmxjhis#78T$p)yTt7q%U0izuLIj5ivPxwN~Ry(`3dO zhQZvhxSE^4$m2Ik&&~Cm=h>oDKwmBYW=MdgfiWwvDws~wgUUEW5jH1?H%;#S- zl)wv$T=u{KZcz~6H9h|Y!~fem;F*mB6Z?2K&%da{ND#U40YGO7>QVEO^r&JvLSi}M zbM&G7IrIhSLui4~S5Al;9=sfN$ye9L<`6MCYSC#NNBaRmYJvaDllf!-0000VK~yNub&@e_8$l3--`jO# zDFoa^NThJ1E+A=Drf^|=$`y8R3~}jypkIz&Upa;0sAe5=n*-UIT!&_E&ip z6C6#a(+duV!+#xP%y*Kl5|9Lv+Yx*yH2^4Sxn8f|Y>_;zitrdFKDFF4GA)v)20$8t zs^~8qUGa=b4at3M4vj{mdjKy;)iv}gkd<)7k=4eOYlX>-q;pBjI0oT=1#dr&YANa5*6a1(&1Ullfa6m9 zyu;P`0yy#BU)#lEfz@ht({8tC0QN|}+|Vq>FL#n<*+o$lu+BNm=X2C*wVOtx@d?1K sBm-bKnthY>LDHG`{<J`;oB#j- diff --git a/htdocs/theme/eldy/img/object_address.png b/htdocs/theme/eldy/img/object_address.png index 201577281f048ad530a5ffc90ae5ddcde1ea09cb..83683a14a0ea91957bd5ce80b5e27151a94f47cf 100644 GIT binary patch delta 203 zcmV;+05t#R0_FjbBYyy`Nkly46FnsAfcHxfP|HR1J(gZIVX1#kZ=;t z0o)|rWCLaH#U%6DZrf?6mZ6kVcg{Os!P(s}rZ6N=Ov(u0agL0Z}plWdk}vvjJrS(g|RM zG6Aqb7$A{1XxV@ckc4-Yja>Hv5+YJ0`@Zk)|9@v@%2$@ z0LdF-ORexYj_a=L>JU3B;5xtXV9(=v7=~AQoFqwQjCqhVOn+`dCPxK|qG)({P4YdR zp2ALGE3ikfcQ7w)7Bd)KmkYXlh6VCG&(bvAN~~?$@4Wvl08Isq2;jB;X^|v}ah)@+ z9mlh%$R1C!ctyM?5*&-e(u4)Hue<$G&s^7JZ>#vWQZ%@KGQTKGXtoR!PC{xWt~$(69Aw| BA=Ll? delta 202 zcmb=p%{W1#o{5=(fl*ZP>lFqD2KEw9Usv|4?3|3!T1F0c?gE843p^r=85p>QK$!8; z-MT+OL6&q!Uq=Rpjs4tz5?O(Ko&cW^S3^U?o}Qlf@1Otw|6j7WbSX$(NswPKkjvnp zweky)@8s#?7{YNq`Nx3|4G)=_nGbWex%}s;mk??Az<+qPC{MeT!;}B^JgdVDbS^Y3 u3Qd>@)LWlWapdBX20t6#xziY?u`=vwRtdV}SzG`#j=|H_&t;ucLK6VF0!T6d diff --git a/htdocs/theme/eldy/img/object_bill.png b/htdocs/theme/eldy/img/object_bill.png index b4022e77740bb96770f8fee065c58284e3518c45..37a0ed334958ef4211c5025c0de288f393d7ed94 100644 GIT binary patch delta 251 zcmVg~0p{)(iCKg|64 zn;-h|mDbugj(CB-p@_9sRab3{xuQe_joHI6T+!b9G}TfRrF4nhDJ`mj$&b`L9rKOyV zrIdudoP@@lgx=oX_wVn{#lS-p;+wwWa_6|D2qR*1ffyl!W*9_vh!{*4EC9 zjD(DgjB|5yYinylLPE~Y&YYZ_+MUN`00001bW%=J06^y0W&i*Hb4f%&R0!8i%G(lx zFbqY}P;50eUUMd+MnJ`Q2ekkHc|Jf3`)$oR0Dy=n5MT&Z_1tNgP}`q|Y-H1R-;vMP zTRw@#(xa3}q?=si9_dMZU0nw*nVD^Mn$jJMbmpC}_lLN8qSbn{?P*Ltv(C*IJ+l$1yMIw>4$Vw!35{bO~GIIafa$lN;EWdQ$%YLPOi{^wc zBC`L?7k&Fk@BKIqJfPQ&rHR5Vt!7b( z=~Xxs&CqL#%|JpBQ5d^wUQ;U>6atTC+FP+47j*Pa!G8{FTvYx+IrOTQ__hF0jywyT zC0U~N)!7vzjO{g&#qgU}vum{Eh?e*}MkN&aL)~Mhc?X)rP#jWXc1HjJ002ovPDHLk FV1m^yabf@f delta 379 zcmV->0fhdL0*eEX8Gi!+001bK-QxfN00(qQO+^RR3KJ6$C-DalQ2+n{32;bRa{vGe z@Bjb`@Bu=sG?)MY00d`2O+f$vv5yP&b`L9rKOyV zrIdudoP@@lgx=oX_wVn{#lS-p;+wwWa_6|D2qR*1ffyl!W*9_vh!{*4EC9 zjD(DgjB|5yYinylLPE~Y&YYZ_+MUN`00001bW%=J06^y0W&i*HbV)=(R0!8i%G(lx zFbqY}P;E6fh;)-tqg)N%LHYmB^8s4fZ)?s007OKA0j5w@t6qbVnYH`ski=ErUH|#> z{&>nO(pb9X5{T4FE!RL#;+x_!al_1Pi*inPI>$5beRDX5)f1)LY&X)F#nL*rT8~U( Z06(yq36LU!1SJ3f002ovPDHLkV1nveyA1#U diff --git a/htdocs/theme/eldy/img/object_billd.png b/htdocs/theme/eldy/img/object_billd.png index 2080958f0fb04a7ddb9fe953bd9294e3666d43b8..c981cf1772e241b5716d33a9d7ae8a6bbb5b5f68 100644 GIT binary patch delta 266 zcmV+l0rmdX0-6Gl8Gix*0059Gx`qG%00wkYPE!C{09pWA_K?GO0002bNklh4KmNT`Qu| zZzcegg1;s(=ctj^U%lpv${xLyKpNa9EvlC)IR#{i-%*8K<}Ye?<7)l@Zp=#B+d+%g Q00000NkvXXt^-0~g4U{V=Kufz delta 325 zcmV-L0lNO00@VVL8Gi!+001bK-QxfN0F6*gR7F}^T2fL{*3Qn>&b`L9rKOyVrIdud zoP@@lgx=oX_wVn{#D-63~x^$X#Wm(lxbo=$XX8Rm` z5s}yDyeZ{Wt(@nHqxZfn3vTE!MS^0dl-xb^JkNI;?tKtJPgEspQxIsgCw32;bRa{vGe z@Bjb`@Bu=sG?)MY00d`2O+f$vv5yP&b`L9rKOyV zrIdudoP@@lgx=oX_wVn{#lS-p;+wwWa_6|D2qR*1ffyl!W*9_vh!{*4EC9 zjD(DgjB|5yYinylLPE~Y&YYZ_+MUN`00001bW%=J06^y0W&i*Hcu7P-R0!8i%G(lx zFbqY}P;8+#UU()WMnT1(sDSeSpC?Xf$Njc)0s!_Gj4(%~(0PzxA|dHNGA5of9lCya zds-1`A5VToDvkG&11&au;ai|Xc6D`~xuhvwo&ISK$M{S;R~P%RI>gm_v-MOeU1(#n d+%t&*d;y| zMo&LA&cS?HO+&=Ee$2mi%)55a$D7c|g4x)a*VdDXf_F$R9Ga7ci2V^a00001bW%=J z06^y0W&i*HhDk(0RCoa_i$wwgPzVLzvs*W|?rgpPVO-hW-TDD%#lS!~NWP(n`sld* zHB9B81yg1lD`uEoMq=FAE;?b+LP6eADR|CO1iWCnW5yi(s5sV z!p98JBoy&J8(_`)Q=5+(SAwOE%6{rfM(b;v6n}H-22iq!XH#JWkJwu2*t3u}Z z2(T?==>fRY)$Zp?_lDm4N3MYAVYy+g(Qz_l6<+ z!_ZICIQp>xHv%7>!@AUfkS5^?d@B=4{3G}lxxXF++Oh+gwij(rEZ`+=bs((^fS3T6S5Q+&*Eepw~!2eLW z`A%WvG{Dlz7xBr|+usa95NnDetQPbJIJZ%)Yi$rH=!%x+C=Cq1!&H13c>?EXULa}( zgLY;W3dI>A&NB&ul1H|^5ZE_nGdZNb9wL=oaO=X`HDR)|IY+VdKfvAKy&M!S1|Pr&w#%|4))Gwk?b7mmy^TI?wVfpqk158oQR+25qhX@pgPVy* e@5yib&R_oq)n>TqDGo0H0000dx>0MWx>aatS(r}>27v=}T-gTrFASS(J9 z#o}~0Jj`J44<4#|1_J#@RL`Xc!nl1=&zdjL(Ut*SGXPAj7IdNmuC%T6=m><4$ucH1 zLV(cLXWa1!K%nh4y~Q0abVnP8qF4#(akOo^zZG*V^SYf&sVyqzyv(&6YyPU3ZZ*Z! i->WKqZgGCS{u6%&)n>Stj&5B50000=K~#7FVxT%`Zf@2Fa7G6h2txrF$2}g( zpsFBMQFM|5jevv>QFjPP-J?t?U7<`Jq6idV2dIC1@z9pS&-i@bw&%V4GhAZv>!^aO zl#_}UDP&N<3=^56h%C~u?~y?pJ8ZBHTra4pwTPND zS_INsSoi}M*N_E>3owF>a6mYfSlNrcjR@LVSY8X)AO@l!_J1lEjYSM5UB2#}VHmz) z(o4J<`|u$1swsDX|v2BWB9wX5sPhYVYQm}2$w;xq4!G%{r=G5&V zd1BY9u6I-{d2r?+_J)1?=_xHkT1lPM9;j20LM)37&&6YrSvMcsDcm80*vEp3d!<>` zKV|qzs_S^OBQH2NXEDAQCb8vGBi_Vo4OceDhpUfKZGx?T0VVb~Z>955dH?_b07*qo IM6N<$g6>3rAd|`3 z$z&4wd_Lsycu+7HL{6s@rPFDo)9Hp&0r21#d>DMk@R0(6z<;YyD3k*r24iq4z~ypv zA08ftd_MoDSSWqut$I1(8Usg7xmr&5cta5d8f3@gqy6Qe|gJ;;2|GDj@c%*X!*@qfw{b zZvP2hu^@@l0e=dGV!XY*y$N|xLFsfC7Z>m7bo$`^`}Z5*$@CC-JYE;dH#D2gp87b6go9rm&|n+?ByG0pou15{GQ UzfPom4*&oF07*qoM6N<$f^&J&PXGV_ delta 539 zcmV+$0_6R}1G5B>BYyx1a7bBm000XU000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ-xk*GpRCwCNlf91;Q541RJl^EZ5JN#8 zOeT|1NU;U6Fig~f!it1$rN9siV~oU@XktZeBVil=09&xJpnsy=LJM{)36umlVx7)87W6uHL4**1nm?4DxLd0Sa z1YbLyPWM_sp-^~HEEXR~DItzyP*oK?&x33>3(Ms)1pwV^BUqMYd7h`FQmMD9s(wJk z6J6KOUDs7O=YKyFBly0*nM@`>IOm*FN?q4|n$PF0>2!KoE|>j8z~OMXQ>)e9IgWE0 z$8m-+_Du-!rqO7;S}YbH69I$}zt`(MF-`NHs;b(4zo({Y<_3eovr46+B?5#H&}=qg zx7$G!MWAUKIF19YRtx6yIo!kn>-YPETrNi_rBn!U&VM;S84ibi+qO$Lxq+xwt7pgK zF(akCO9*+XD2iLJ*FUdTD?hP`h{(s|@%`Cs)@6*H>AL=Kv)NpXMx#fb=lxD}5Qbq| zN{Q)o8rJLe`!Ebwh**_UVh{w$0K+gol}e?@Q54DTc6$+q;a|frzSy>%cO2*Y)qUl^ df8)Oa02DWz$xfZ+63qYr002ovPDHLkV1f^X?-u|7 diff --git a/htdocs/theme/eldy/img/object_calendar.png b/htdocs/theme/eldy/img/object_calendar.png index 8cda1f3f2202f020c2aa7f0438b72e06f559c83e..1ba9f5e3855ee5eaf121eeb178ff3fea87579520 100644 GIT binary patch delta 94 zcmX@kSTI2%f`f^Hf#HbIZw?@3?&;zfQo)!!!|XMyBTLX1dHslOIg*84&!*=pb~tn? xSgniO+jUhXNF??scY@kO))!qG+xirk7$js}kLYP?Hv)}d@O1TaS?83{1OS($9;*NV delta 182 zcmXRo&NxA$o`so#fnjG{VGfXDEDmyaVpw-h<|U9L6yOu$`v3p`Wy_XLoAu)A)vG}E z{IV_1RT4@drAglIE({&4vK~MVXMsm#F#`kF2M}g-T4OQ;D9B#o>FdgVn~6z)O@8r& zD@%YvdY&$hAsp9}1DKfEMA^l~*xe-zM7h{_6wm4D@T@b?x*@^gBkAPe6_Y3uBCv>& YK`4^%>U1SmaiCTPPgg&ebxsLQ0K~8~r~m)} diff --git a/htdocs/theme/eldy/img/object_calendarday.png b/htdocs/theme/eldy/img/object_calendarday.png index 5678cdd2411bf87a5a55920770749aaab067ca5b..d6484bb1a316008c5cddd6b9d0da1ea50ef67ad0 100644 GIT binary patch delta 101 zcmcc5SUy1_o`Z>jf#HbIZw?@3=jq}YQo)!!!|XMyBTLX1d7gD~d%LD?%(-c_NHmtU z`DbeMgBMyt4u+f>?Fk99T2^+*yv}%N?bEO!Pg0P9;Ypz5n)S0J9e^e=c)I$ztaD0e F0s!r)Bj^AC delta 206 zcmXTF&p1J%o`so#fnjG{VGfWIFL8}1aY-#sF3Kz@$;{7VNKVY*%FE_TD@sj0DcUas zRKi~3>FdgVm0f^Ami4iOi2_iFv%n*=n1O-o0|+xZtudJa6l6(v^mSxl*x1kgCy^D% z7YgtRasB`Q|FUJvrpf7W##|?002ovPDHLkV1k|VBh3H+ delta 213 zcmb>Y#5h5vo-N7S-Gu=Remd{22QoMdJR*x37`Q%wFr(8NlNmrk_7YEDSM~>N>|7Ss z$t-J(fI{`2E{-7*my_q1y=G;0G|0Wy{T~8eU0od^d3u^|a$-V4!2UAcRgZ6NogEc5 zgKeXMfq{d{y4c;zT76kV1VvcZwfRe)U`RK(v&KDii(Lr!)f3qU=?fd$}U}Pv?W}BeDxb*{2D}$%2pUXO@ GgeCxh2_cgJ delta 181 zcmbfd$}U}Pv?W}BeDxb*{2D}$%2pUXO@ GgeCxh2_cgJ delta 181 zcmbjfP;yFf#HbIZw?@(@9E+gQo)!!!|XMyBTLX1d7gD~d%LD?%(-c_Nc61! p?Iw0cQQpkg>mIQxxSsA{VBkx&{==B??LSZ}gQu&X%Q~loCIGl79e)4- delta 171 zcmd1U!#F{ro`so#fnjG{VGfXDEDmyaVpw-h<|U9L6yOu$`v3p`Wy_XLoAu)A)vG}E z{IV_1RT4@drAglIE({&4vK~MVXMsm#F#`kF2M}g-T4OQ;D9B#o>FdgVn~6z)(Zcig zcMhPCvZsq<2*>s0048QO(R6X)bax5WrBYlhjYl}Nq?sEPn-wG&7%X%6EN?hlKLo00 N@O1TaS?83{1OSxHGWY-h diff --git a/htdocs/theme/eldy/img/object_category-expanded.png b/htdocs/theme/eldy/img/object_category-expanded.png index 8168f76fa26b3e8f5002b4e21966d23e5f026cdc..e363b10ca6abd978b7329d5a19d366c413833326 100644 GIT binary patch delta 159 zcmZ3^w4QN-L_G^L0|Ud`G=oP#N;JSH#P$FG{}D-f-@gBN@%r7FOE-YR`;VP1+|eEb zWHFWm`2{mLJiCzwYh3%*x delta 280 zcmZ3_xSVN%L_G&H0|SG`w7ZXilx~S@M2T}zYGO%dex5=|W^O7&ZfcR9f{8+2ewm(v zk%57wf}y3Ai3JcTXd4(B7&OG(R|RThFY)wsWxvVIBFw?K;N`PzKq1ZokH}&M25un` zX1sK_?hjCqCEd~2k%3`jKlh(RRv=#@px!6M_5c6>5lMM3UcWnY=>`z(KXw)<_3itQ z*p+4$Ko(<3kY6x^!?PP{K#q^6i(^Q|t=L{ip#usW%)%XC{@d$uS#9H>rU;E2$QAP#wcCk@$9 lFCHfs9koLpx{DYY?DaS6be?6d0-DU=>FVdQ&MASh2>|&^Flqn* delta 265 zcmbQqIFo6DWIZzj1B1r2yN`jCZi#C|iE~kEVo7Fxo?NMQuIx9tS%f*5{hqha0t#^!ctjR6FmMZj zFyp1Wb$@_@Ea{HEjtmSN`?>!lvI6-M0Y3F1uK)l4k4VaU@%r7FOE-XM-ij^XzWPWgMxxuT3U*Wi<6U+v$M0KqM~|wdhYTq`VCaU zSQ6wH%;50sMjDXg;_2cTQo)$)z~tnX(50#q%jmLuSt#-LrP|@o`RV|Zemfff{}rNse*xlm4UgH zfw6+NfuVsxby=l10|NtliKnkC`&DLEae2P8m#jAdg*Xd5B8wRqxITa|qthCb89+gn zbVpxD28NCO+)6-KwXU?3ZOP2-(1tljZ7Z(?2XJ=2DG9@Z1 z%E`&8rKLq~>E0%wTE>zfzhDN3XE)M-95+uF#}JO|$q5b&haC)#22WFDSk%8fRgyvT z*``lY8w!pxcC2z?HprdKaWQpb8H1O3L*}g8Gix*0059Gx`qG%00wkYPE!Dc0F(f=YtcsR0003VNklu}CBmi>yRqk;vNFJQiwRtdN`>Her+6|NK2qHZ~~j zmGLWAnbAJ^U@OlrvZSX9o;cfngCdWK3pfj@Jp$L zkeE3!rFO05x>6?KTF`LuKuR!>s4mwvfeA2H?CE5DJQ&xXQbYiZ0JHHB=*aAc{`;4o rLo%;T_9vxp95=2H0KZZy)%E)V0xXyenNa_(00000NkvXXu0mjff-RdA delta 477 zcmaFK^oDtYWIZzj1B1r2yN`hsOS+@4BLl<6e(pbstU&&{0G|-omML4Ef?AxST7sgc z1SR)GWlu>4qT(sp#dET&=M)z&Ee4X+ON(3PwDhcPnX=Z>tEH!BYtNLmJyW*!%-K3+ z%GN1Ba?aj4K(rKyjxC+Dcj;0fI<|D}-lc2nfz-LRYmco3l3S0h-Fj~8+H+fhR#j#m9{Sgrke@#J%tldMiLh(DQ|u{_pyI?sx8FAGxQAE)g*)3Eqy_LLPF zxs#c;wLMYIcMVJS+uLIq`ew_~t2!^APEYOKeq*8S&waVPyMJ3++)_DNJ~OaJVAZRI zz0GSr_O&a$oyfbAR_T>pz* z>p4{G^#-P8L!U39n@emqTO5S8+n=zk6>NJ=-~w9TgeFXE=zrY3_Y<3^)#G8hbg4~IkadOdWzU1*xdCKnfPIMI=;%~7Rx8FZ>xEZ*<;`wX;N zEi{`=)M_;dA%Adv{f_6P1+f;(6@9CTgh zv|X#5Mq744u3#|eBls&poJRlAdwI!;l(H`uJo5Q`4|F6+dO~Sm;_>*d%@Uf=XS|%( zS07-SlxXcGMx)WU>2&&2B9Zu!N~Qid;6J!fDA2N=K~002ovPDHLkV1n&g@!$Xe delta 642 zcmV-|0)73I1eyhqBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru-wGKP9ue+G!~p;R0w+mCK~yNug_6H(6JZ#~KlkR07ZdXX%QZ1U8cA&n zBCUuixRefEbg4*}4o-FPFL3g&aH)bgG=sZcgl;y7kV3J&MSq%XX>9baCMEA(?!DI` zq*M@n=I8VMexHZ0!GEUFIMNNLiRVhN;PLWZZr&^y;$Kj^?P|w4rku|Kl6JGrtJ(*S z+O9UoOY`&d*A^ESUlxnSCrYVUtJQk@`u#^9+^(>_;~?dLw&&rwl3I2LV{2>I+T45* zR;$%FrBdms>wmgvt;u9EXdPo|=@Cxz_&i0vkfq*mFtG?178b6=XwVW~A%O-G~ zHYPx)(~&}mUOJt=8Uz7h7!pMhp68LtS~I=?Xil;;W~aDRV)SgBM#2_aU_&d!ihl1inRot?q9t30$}z<`7W z`D~85(;R{Qem`opTD7UEsb^BkqG_6Ft@)`Yh<*Re*9(qZa1@nF<(6rh(@H5{h*2lv zaSPdZDSO?SW1^VE{}qr(Kt4ZmG*(wvw=K)Mp_IBVgvctT3;-bn$z+mLDueGwl*{)q zQx;N=o@1=7t!cwB&|0Il{v(oM7>q?u`!VF^ZzUc6BTiMG-N6P~U!M c0PNJ@H=iT?p!Mv|2><{907*qoM6N<$f^$$TCIA2c diff --git a/htdocs/theme/eldy/img/object_contract.png b/htdocs/theme/eldy/img/object_contract.png index a75f954555ed53222249ca6921a7df634949d1ef..8f29561ecd6ae41bdd8c6eb1f6bfc897e15aa252 100644 GIT binary patch delta 239 zcmV11!t%5m4q_u{C8};2bGiYJH&Fa(5&4$Waol}KV zN|>Fgn(~F}IVB-N0A?CO3w2J^h3cbQ7o=3GE7jc$)rFdJLsq5pv5J()hwAYSZfAd} pj;@#&$#9HYYk9x_s$tES`U1jzZPps9-CY0x002ovPDHLkV1ihWY-a!f delta 343 zcmV-d0jU0f0_Osd8Gi!+001bK-QxfN00(qQO+^RQ0|gfvIS3eP_y7O^32;bRa{vGe z@Bjb`@Bu=sG?)MY00d`2O+f$vv5yP=sl$4Z=jEudtwR3ZGef?7| z00001bW%=J06^y0W&i*HXh}ptR0!8i$6FGDFbn{|5TH$=6d21(i=qMUe?(`{KK5?` z059Mn5xL`J9Z*ZSBPV@tAI@U!^R*=<>(-=3wMD31I{lbJ%}_6V_qA%M#%cC7ZP%B4 p^Ho)?btC@Gi&6+F<*!))@CBdq1@8e&V#ojh002ovPDHLkV1ijNq=Wzf diff --git a/htdocs/theme/eldy/img/object_cron.png b/htdocs/theme/eldy/img/object_cron.png index 6186d18da70caa5acaa255752415d8136edcdc98..c9a4ecdb58972a772ff70e59cb26d29389232db0 100644 GIT binary patch delta 367 zcmV-#0g(Q&1BnBWBYy!D*`A#5;*ir6+pqO&O|j%sFI7yWlGE_4@lWH|PL~&6bh;Xyjei(>K`jU^7ltBx-f?& zv~rfox{!yzzi53#oKJoPmZFE?*UFl?26-cf-4PC$VU~YfGh>EF6T?T zA`Y>N@trBy@ZI7nM>(u+!&jq^@wJT!*DeP6#CaEM*38~|kR?MNMiPk$SQ1OD?I4)JHxWpNyGv+0IWK9JfivkXH zDnKt?7+AENrqbv3je}&kfkh!_?pZhXU@)Q4LwVK?=*#!3(I48Bc;C@)d8}G;ErMVs zoS&0*%9w-!2Y(yT0Ur~MI(o{>ry^lVKi1Gs)teejPbU8OCHrBYh;6*hiOXU7kQ9Lg zZN4ax-_kE+O$&5)qERHyH1NSYA%e6FS4dyAo<7arn9VmYKm(HyP1DW$h;=;N6*2Bx z@^n51xzF~l=;Aey(U72_?mVCo&mMwvCa*z50RKQQi4ldk$eA(zXt%|0&w#3f%{aj z^^4_SF8FfAS5H@NSn0=&`da{-3o_ZNsL^M7<;IT6(3sOEiz4PZSp)y+KN)HDXJ2 zky>Sr{6-gKRp}wE*Z>YOVvw;s3lXJL*ne&#C}0`&FoX^G_ST!dh{!dCSK12%WXU3; zKo!2plCX=tj{5ElbdOe}t}7db_0e#Qd=0_1+K|ra8D7TnTf(XT?{&Y=Rx(sgyFCocwJ^qv!crhytFz1G2Lyj zjh2Fb(0>K!1)YUa*aa99O&=a^D{KJO9w!Wk4Y>Gh*=rHa?RcQM0j6P(py+V|a&AXh z3LZ!C(sm!Ny;+StycMAO*Hq7N=8sV*vB3SR%yK-j+=UkoyYbX!C&Uali1vP_S6kEX_A|fgxaNa_SR!E4R zliq}&hhB<&D0+~jhc+WZE!4?nbez>Y>z%oG?!7bpH&L{F>wmzO^8JVNQ>j!6 z|0AsNfbnl1M{tAS-sO=_RdYNUexFW`5n|i^4yJb+tM=6`^;Sjoz7yoEc{KDoKN=U# z5~kTVPd|f(T?}?~O=!x+`_`5{Jg_ekr0T$}@Pq-nKP^ zSLTkwxt@jr#6&mgYDZj(!jM$}lQ|Q`2f0nU3cTFevZ4QfaL& zH`fZ13z8g08kd1oN=7LB6V2s~$UbU^-Q))Ekr0_?5SYb8LKL@W;L0gr2HTt4;g2jq zRb}!v8D8H4Rs+khR2@g1sT=017FcQ(XNygR*o((i@e1Oe7u# zOK3XQd4C8}1RV|iSn*E~9}A8x0ZpZ2-Z6`{d7+Qw^}HQ(m9T9C8BtYM7#F`pXeYt@ zdBlVmtj$N@@O>vqNiZ}8igIAZ<%P%Ne%jERc5ZtQKD~@3nvT)aJny%}Vb8>UJ1JNO;I0bs%#A{?e!aX71$}prVXrqE6~>5 jOCHcg?5}&p{T5&VA1p)pv386j00000NkvXXu0mjfrWkXs diff --git a/htdocs/theme/eldy/img/object_dir.png b/htdocs/theme/eldy/img/object_dir.png index 6f364389133c425747e0eaf8eb2920013a815572..55ed813ee0b3fb1a1a75e6162776cb994cc73554 100644 GIT binary patch delta 170 zcmZ3>w3~5)WIYoD1H%NZU2Q;$tt7}VnBhMNnny_20!0cuT^vIy7<@sF71RXMJ_Sp{rgVPbV<&pNse-chOMqnSau%d#RM z!@$4-NLZPgS{WHDXd4(B7{q>E$pX~MUgGKN%6@}MLfBGrWwgRVpb%$)M`SSr1Gf+e zGhVt|_XjA*lJ4m1$iT3%pZiZDE08Z;AK(+>`v3p`sHmu=OBMhBzxMyy(*OUL9y@jn zDEs~U_u~=_yMZjmk|4ie28U-i(tsRaPZ!6Kid(7YBKa5;IanPl8Y=z^^LMjN&fKr1 zG4X|XLwIxwPhhZP=#~;TyUTWtKGW`8Iv5_L)4jT{?zYj7RNbhfyQ7i~zsvi(J`#J$ ZyiAz!#K~X1`9PByJYD@<);T3K0RU7yWT^lE diff --git a/htdocs/theme/eldy/img/object_email.png b/htdocs/theme/eldy/img/object_email.png index d5cd141733d3b07e6d6348aaf0afecac51346718..e69140c1894e3f549defc6e8a8faf0a9e5c0fa2b 100644 GIT binary patch delta 229 zcmVY8c*^5D#K3UYsXit7M2N=U&T*hEhUx=4>>Tog~ff zHJMV1B{nwpqfMca%~54=_p(oQOi!90Ab$UzrSE?Llo+(B*fAEIb<*l*_c+PY)b@-U f+B_{jddJNMuaN{mWYlK400000NkvXXu0mjfTBdln literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUDwQKjTT?3Nu?}5Pcd-vWye-1?7--Ez+F!&Dy z$?j5{fhJ3p1o;Jn_*emhh!VpspsIRL7sn8e>$d%oe9VR%&X;qRs5wbZ*mURrqNS5F z|2BR}>G8SIzawP+Lx=nW@~jelSAV zrHU)zs%iUU;}VNMzscPu^2exxFYuw%>Z}a=wE>#fgTLv`y!3t| Zf6-~4uQJ`9B|xVzc)I$ztaD0e0sslJwVVI| diff --git a/htdocs/theme/eldy/img/object_generic.png b/htdocs/theme/eldy/img/object_generic.png index ccfd2d2f5b2cc8a689ef175cbece501f8084084b..f9da9783d0eb582ed674e92f19d5a52b99f6a08c 100644 GIT binary patch delta 222 zcmV<403rYB0`CEk8Gix*0059Gx`qG%00wkYPE!C{09pWA_K?GO0001_Nkl$Aio-g}!(e^3!=+ctz?)H(M?dsP64G1`YOI%;NyoL4`qiV6!eAv{x6L&~IF zl#nsM)7dEjLAs}-n-~a#s07*qoM6N<$f+zD|9smFU delta 345 zcmaFQ_>yUYWIZzj1B1r2yN`hsdx@v7EBjSuR&gfY)!W%bfI^%F9+AZi3|t>Tn9*sC z$qb+%OS+@4BLl<6e(pbstU!K6fKP~PP*6}*R8(?ua&d8SOG`^nPtTMoQwsp?EV_WalpF4K%+PQo8?ma)Z_xbbZ?~kp0 ze{SphYkS`V+3(+fzjy5Wy>s861JSkb&+mPI4@A%Z1JU>Q|G$6#{~w6{hh;kN1v-MM zB*-uLKf}}Q23|m3nx~6n2*-8b+^SHxYUAwvU96O%e{oke<)$&uCNg=O5 zd0kM4#Z*mSr@$voZg)2|O$vyv-?SoQxz?-HYY*3&F1I=su(ogS_pQf#x9yu=7A+OO ocu7p!zxU-YEYf>yRrMR>RXVxfPby}f2DFmF)78&qol`;+0Av)b&;S4c diff --git a/htdocs/theme/eldy/img/object_globe.png b/htdocs/theme/eldy/img/object_globe.png index aae8bf6eba03015d44032e7fafb2450c05a19dda..4b2f7afa5b72015e0544b82ced79d68064af777d 100644 GIT binary patch delta 303 zcmV+~0nq;L0?GoAB!3Y}L_t(|0d>-|;umlL#nEq?{mD+_z4-Tu;9~aRZai^002ovPDHLkV1mH$ Bl~n)$ delta 339 zcmV-Z0j&PY0`3BkB!4wYL_t(2&vnvEO9D|C#_>bZ&LZu?Xa+?^MOJj1%96+;m7PTD9^sv~ty^Z`uEy9w8@Y@mn~a_j-sZm@qynvrw36DaSMJa7`{-Aa z4Q#1ZTh^^Q%HRkkrvoJozl1?8$PZ@uO=L+2kiu&)r&_3K2D^quoMKKD^Qz|QdhE<_ z_c|&7u!i0 z8*Okh_r3M*|9J7;LqNnTSfTZm_OO;lb{$z9tOXL4hwH{_a+vpoGQB&74&mLu5ETHh zHkjybY0nerx|09A2sZ?Pe{&Ct^{g?dpfjGV#W&3^f|G4|$$z>cEd&M!eXB+WvVv?0 zxa?ta#aJ|Zv~k{IC1uS;_cOJ~(Lv|Jp_r^-dn99t%KB?lapG;Y+mr{ID#tfHCvOV~ zSbk+=SOOP-TCfbvcm--@g*Z~6w#4lHK}1Pomfuwd0CIFBsPrpxBw*=Oy7#_$cicxV zW)d(b)PV-2mVX~cu0E3G_$lqB0v-Z`htb7t9Rw_%D2sVOCxL@2OH zBvuTKka2yygR_F<0N9w_GIWq~^+>5f#=J$lnAXFvhB}HPCNx-pEKL!Dei-FyrTT$D zTLm4wSnp5m?EZwM(D^-s4Mrl)Uve;)ulf-?eAH;69DjXfp<_HI(6C4sjqSX5XJ%!z z#RRyX(qzFOIus_lXLKH4)&Phbp)%Ry3;+$!yFNc=Fga-MpS5XK=X4eZQsYg7HGKwB z!E+9q^$`F*u-KdrnnK;j$<;%Bh{%ZQ+y%=TfN1-~d{g{o2RfOn06=N#7^H+X^dGP_ W*X^M+>kXO!0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2xA4-q9q8yoBZ00J6GL_t(2&uvm)NRx3CJ>T#9 zKG#=k|1@>Wtdt?nCTW3WZRjSYsElY0l2U5SjGB-%jFBZ_#DAU&eGxQ>NC|oOtv6B8YklG>Vd93(S3|hs{5;UAPbTaL?u5b1q2sVoThQ)F59BPfTqT`G^1z_S@Su zRlGA7Ip+5q@DKhXi*p(_6FVE6H3pNt4gk7Z>Ip#4CasPtde6q%0ieAW@ALNdN$BrBy%rdphSe zRX|_)$*1@34qksYX9CIa%&4!UATvOBdV(JTAk^e00Pe6=EIuM_(NN=S37~4Uv81uv zEdc0mW|OB@GG|IAe_tE`gv2Z&OP^;K#J4Y>F5657{C`a*anMn=qWGQcz}R%0zlhNsS#1=j>{wO)Ok&z@^NEhF1x zP}VHOZl4<@BP8LeE+zn7vpQBUB_4KcCcS(xbfw&)rU9^EXX$d=t?BZ0JK`6bZyQ8L zAkAXuUVB%=Qvj75OWGC0S9IG_!pnaPelGq;xzsu}+Mv4H+MaX0f#5sjVypP_p0c cEy*X=KS@8*yQ;0-=l}o!07*qoM6N<$f;nsy`2YX_ diff --git a/htdocs/theme/eldy/img/object_group.png b/htdocs/theme/eldy/img/object_group.png index be0255f7ec2679667491349672d653bfaea6ab89..20baf7fcb2224058f88c670c4553508ab3edb25c 100644 GIT binary patch delta 538 zcmV+#0_FXW1+oN?BYy$;Nkl(wFU%$cC-xd-@m(s zN{(u6yy4;Dhm(_&!K+uVxV0#RsFurRUnymUY0`Oeasqbl+Hp2cVla@y{sa5a3$x&b zi?Og)tJOfjT0#h?1On#65Cj*%8H2I$G1$C$(^+JeS`Z5Qd&Vuknj6sO&X&Kups@XX-b~VTJYMnYbJ`K$M`WppDt>3 z9ET|>KT093tDQ~<;y8hDKI|YfZIcrO!44GOimq`4=#AVRuav9f?G6JB-+HoS$r6a- zxL%ZlYWM;ZvkGSq-fe82=WW@%X;c62zrPhiKHfnq!+*Yg{eEcyM8Vy-+cFe;9LK;I z>&@|Ac!6<_@7S^ZaHU)x{`>FmKj+@PdwHQ{Zf*{ShlfBL1?^57iW1pmxE{GPkJe{9 zj8Bop7AeNex`anQ3Kp2LB2 z48Ydb*2?PYYQNoXKN69wD2i9p>9oJOx#{?i@|~TXyxZ-*Xt&#s>$(P@)9E}{)l0zB z|AA(2Z|`EW*(|KJc}fXYC8dOj@b2B)mz_@MVM>w>27_0_;jq8IzwZEY@BLDv(a2+r zhzKG=jFI8+2Y)v=dQZwpiJ;uMd;7VnoVBpi>2zLI)rp9ZQXf>& zu50oN%-7+_JAt=Q*$F^9l+a}d9WE42n-5o|09_O^6sv-Ioj@@ z)hw0PbO+IGG^R2 zvw6v{(Srnb*EsOBtLPfFt46kfJbsCaJ1-D;W)f#O&roi290}D|;Gfm#^_3Lwsdd^r zB`313I$OiqJCyQT$3rUm0?Ozpia8T7s~JM<#c|v%4}XR|&k8t)rP3cTSN_`lrtit!6&45EJ-8Nq z?8O(>$P+2MF3nG9>BA_4Qz-Y4g0hzGq?7!+8Pzp-h^_=G5eH%+Am#=eu)Eyie2oL2 z1CYrI#D5|{tO~?hK&-Z@%)Y57RQW`b8Sk1BN1?}!K2jgE?SzwoauPty&TzKXp0*y4%02#Yb0uL8nuYMlO&hCEtu=da2&dAOzAYUB25 z+qN^Et{_*i0kI$u%WNz%Ur^&NH5KX_O&}HnVn`;e@!uAzYOo~RxL|9A)%xv~*6WWq z+c&JvG5{r4P`F5f4JHN5PS8oH^H=o+GFkAc0{}UvUN?I6!MFeb002ovPDHLkV1k3k BWB>pF delta 747 zcmVO&9WcgUrOwiH_ z|Cm9ogdCcZ%g01pzfI?B;-)$CMX9*dxj8nR^U-gqWD2Q2hl$ziS1Bl!&e2=a)18PA zKI*`Sdk*)0&*R=}W%Unh&ySK6%C+j&4jil1;_MO?&cJcpd4G^kqbOq!J8vi+64DtJ zLJnl8$6#i57LwGjK;HWrI{S^Flyaf?yd!&E@xW~wr90i16pBj-!?+nH%!^QITv%F1 zi~~^53xf@-8^s}#nyVgIQDe91!`uRleOiRBcK|=<7r=Nw0djKl$#umY?^tA(Sf(rpyQJ zl+~^022-^uOfo8(Ltc_}0RHkTG>?3NoGvqT4Zi^u*MApEHT@u})?+Io*&X&{K}D^k zMN@M*Q6MG)6J-!l^aPZ|3^WeU!42(4xZ7)j=c+tNX4*qqK_&55RdJXdB}j@hbczxp zrLu|0SF}Q{&Hx;-9L^Q@L9%Wdj6=_$oX3L1_!tm{I;@_3Fw>vfoZwCJ88%CE1r_L- zl8a7NS$`q6FQnH4K*f&$7CYL^i#*E5LL3^=k-Z2z#Ezu|ovA)V2E&Gd+${)uge$@m z;igRq5Eewb^k4JdsZ2U$Hz5dfGROJvjz)X?5ZkNIl|i&f zh^t!yGVM~~X1M@JyO(b}c8h^Q)TJ)$bmBRnxQkns*BXY?`z*i4r_BAsAUOBpTtPt* h29~>582Ilq008Og7ft@r>&O5A002ovPDHLkV1mQ$Qq%wd delta 313 zcmX@lc!g<#O1)l*Yeb22QEFmIW`3SRNM>#-Lsn|3o`Ru?LSk8wo`R8qfhmx%GBvg` zFjCMqFf=gG$?yHfz`(#>;_2(kew9U3%t)}AyH@}x#981GSXJ=;@7Z+DoS5KHQVZnk0YuB#bx^?T` zy?c)xJ9h5exl`p1&!0d4|Ns9SeY=l9%>pGse!)O4GGKV194iTw3-okx45_%4{DYs7 zXGey(xHzN0+s)6ve5^|Ob!P43Gw&O}+}!>4RpEchJ?HP-Sr@p7Q^da5XwSPl%51&c w-sGAt^W@Q6rnpQ`&yJ_wDfwSL_iug%l}MNFHt!$JK+_pKUHx3vIVCg!01$YAtpET3 diff --git a/htdocs/theme/eldy/img/object_invoice.png b/htdocs/theme/eldy/img/object_invoice.png index b4022e77740bb96770f8fee065c58284e3518c45..37a0ed334958ef4211c5025c0de288f393d7ed94 100644 GIT binary patch delta 251 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 delta 621 zcmV-z0+Rjq1cn8WB!5jwL_t(2&t;LzOH^?fhM#lJZyX)(m!ycwMMR6DRV78%A}mC- zXcbtrD%$xMv<*aBR1kzIk(-tgfntG1E&>rX^w>;ZGIewurnz}$JZH}DYmtfC3*YkL z`CeXTW@nkU?a(01QEd$kpR%F zlzNp;r`rby2RGjI_sDh+XPHykqV7IEJr zZb3GkwO&7`$#r{7hfS3jkCD!v5dn~>2^VE`a|I-*UqlVI!DDv6mC^I@OaMfjP7WC8L5CFXzgqq3Qx zHk=HkGG^qnKDivY1<)ESfuIk?1wb(NfRCP~x?0BMu1*ThhDA0Zq>|v|pfm@bXEN^@ zkp-t+;yPZQHiv zuX853)+F!2k7saXeK0fu9|>FXePtVTpP4!y`F&^Js>-*pD040R;F*rDzqb`YqB20D z*g~^6MzuYJKVE=8mIGH|0bgYWOJT#iMG4N|e2aYnfmsEUbU408Q_|B2^pW z!N;}3R}d);A<{V!D$*^{tw>Eiy2WSTx%&cihV>U1VjcXsE(N`r4*s&Gh?RPHyC~To zh?o2G7w94KR5rNNEebl5P5K=!bnu<6+aHJ&x-bO`aDOBk6k7kb#cKG?lpvUEVMXTH z8~7`BKyC>ln5iR@Z^M^q!kMVU9I3z*u3%Mcpx5}u@ZP}t71f<{S6}N$xr>j#lhaP1c7W5;d~3ve(=_Tg9m{YNGC`eFbV&cTG0nGU_MM80J&sNxBt5ikpKVy N07*qoLJmY-AwgLbNZ69N!67EK*kWT$3~kIBC&X+CrS0+U*o{#YVKUOIu{{1Bd&Zx|ay7iW z1&##&g5o1-NUmqKcqq>5if66PAal!deP~4$2dgwyU2e7ON$s$qTm z03qrd{M#(vxuUrDWFDr#Mv6j+p%6~7*v<3ER@x{vdit8u|BWTz7H-ejrUQv1ABh(` zf*Y~?8b0~$nEUVu<&!pS&z&~|Mrd&p$)oTX5UR(pz4$yG*cY1EG`!6?tL8&!Fn9iWs{I?}-D=~)C zw`g~)n*-V#i~?_j24Cyz;Gx{ZY9I!wHNZS+BvYV#a(|&0Xonc2Smcg7I+*#c>a$21 z$`PQ=fl{LnMra^iIoBa$W~DPM`=StP9k}D^$-rtPjjaO#f=pVsPJW}TB176ZRZ_r+ z3OtddelN5yP6ig-)a=~{Z)lR*{W%9YZ4cH$d)P?iu)~&6sHza_9oU`0$-wnNAS=lo lk}*tz864Yd4Oljw`wO{bPPfti9%ldm002ovPDHLkV1i%L1E&B0 diff --git a/htdocs/theme/eldy/img/object_movement.png b/htdocs/theme/eldy/img/object_movement.png index aec344a3f8d8c8495fd7a031df3eed6405ea9bdc..6f78ac671f51324239fb0988c28f47f96a31a178 100644 GIT binary patch delta 340 zcmV-a0jvI`1mpsc8Gix*0059Gx`qG%00wkYPE!Dy0D%BEty=7u0003QNkl#ulw;@aMXE5)pZNnt8bSO5yvKXr_jr7dSMMrzFYL^3 zQWPb0Z}p2T8;Qwe6xm}GszL|?)V52i)hdM=cN~Ti1dKV1aRwNp2-=hq2rLLpK}{+N zMieF}(kV&^!6jVRt#in*$xwvARrH?e5O~I*fh+qH$-PVIuN4l#HHZVfKN&(xZNcJ{HkPu9uL7+~c3V=-z zAjqVIFr+a`G0^0OgHt$ftBhg{O$@E2PpyJ{gC{#PeM%YsRyp4x=@VK+xzjTclceu* z?93HK@%`+iXX5Fh`%>)9#;2maHD6#$f9QioK1-<>j~q*S-$!3v=r51^Z`77nzs^K_ z+i@g&t9(wZu+fk0_9)C;d+8p{)6L4`!IOmtf!vew*2d)WMbWq&J%VqZo$U*+{V5%; zE$4db^Xc$Zto!cp+QEH$i*LOJWj*=5)b%5Csp5My(()V+4wl?^-c(8KKRq9A?e;xP zmIIk!Xk}qod$BmT=fLa5f1WqL*RMX`@Ly-)^w8hgd}9~P`6~n4cKjNW7c24TbmZBD GKKCCbya@RK diff --git a/htdocs/theme/eldy/img/object_mrp.png b/htdocs/theme/eldy/img/object_mrp.png index 38b59646d710dfac4f94e01bbf41bb6b1779c0c6..65294b4ace690832d654ff04bef23db02ec07600 100644 GIT binary patch delta 365 zcmV-z0h0ct1pNY#8Gi!+001bK-QxfN0Hsh&R7C&)06{Ss(6@qfWkZdCW82H0-qohk z$cTY!J$PU)(Z8Yc?%eI|&&tA((#(j-wQq-eVeRG5_4VQD| zMo&LA&cS?HO+&=Ee$2mi%)55a$D7c|g4x)a*VdDXf_F$R9Ga7ci2V^a00001bW%=J z06^y0W&i*HhDk(0RCoa_i$wwgPzVLzvs*W|?rgpPVO-hW-TDD%#lS!~NWP(n`sld* zHB9B81yg1lD`uEoMq=FAE;?b+LP6eADR|CO1iWCnW5yi(s5sV z!p98JBoy&J8(_`)Q=5+(SAwOE%6{rfM(b;v6n}H-22iq!XH#JWkJwu2*t3u}Z z2(T?==>fRY)$Zp?_lDm4N3MYAVYy+g(Qz_l6<+ z!_ZICIQp>xHv%7>!@AUfkS5^?d@B=4{3G}lxxXF++Oh+gwij(rEZ`+=bs((^fS3T6S5Q+&*Eepw~!2eLW z`A%WvG{Dlz7xBr|+usa95NnDetQPbJIJZ%)Yi$rH=!%x+C=Cq1!&H13c>?EXULa}( zgLY;W3dI>A&NB&ul1H|^5ZE_nGdZNb9wL=oaO=X`HDR)|IY+tCtZS7t{QHXAeU+ zH^jtbH92zlUhNy#lj|1b%VU7T?*x;UriEDq4^`~9&qXZU(doAR^4*W0bq|UXlb0Kw z#qn$^1Bf*Yi+>G@^4(89_c}GzNDvF;MD$DT70jpK_&a_2m4AgGa2Ch09L5AFP!lL1 zN-3kOWR?m2icO>=1RmaQ z`_nQlj#&6MLX3=5umqX4Us@QqY*IL4nz7)YLeii<1JZu}w+Z!0NG(40W zw;}WD2JxE`tv+>p^kXGTXc1G%pBqZQ9EadF-<2ElufzB0Y=*Vhq`;+6%SfPryZ}(t z(u0Pjh;0>2HE;#N3p_%smr^V^KKZ+-_sha{c=uQ3Sl;y+A(mok!5exwZC5z`!eLX% z4Zdi6njk_9PbpymfOmaf*k|*8%VA5ml)U>PQ_2Vf00D$BybWRn_>cz|6(m8M=2{E@ O0000FUZBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru-3lKMB^9pBi3k7y0%}P_K~yNug_21~RAB(e|KHnY=8dz2GnyM|R)!Rq z(E?^sk!TQPhopo;&}g}N$qsqxVq~WdT}0?IPzFW>j&|t~VSh=|4h=GqHd#31Yi8cO zH*fjAuS<(c(C_{`{1<{Xv=2N+eCP-e8ANOM9=SXkAg1Z?)MA#t8a=@P;Bfy0$SUdb z6yn$0u>0J2pl)N?cE=_TZE6^%^TafY@%T{N0)W5b-rjLck91;Z&sh29hN^3! zkgw10_t>1VMSsS*YFTbHpD!jdX}#ajtqEb@`G)|2>5)zVAa(WSL*cO6XIoAzk@(g* zHTkZ6_T}fJ%bCI;IJPj#PC70X2>|TB^vKU#dPXhr)YsHTd$XD@q?hu;k}NI=Afj!% zVpc1>EiDVGMbl1d%Y{#*zI{}PRE5t*D#D|RBDsQZw$VWyWrjM$A_M{1>)Gl$uEbpWnh>EtDNlVE zAG=Xn*?&UR4F|n)pt6{py2#1u`8O$z#|Q3(68i{=3SH!oj_5f#m zhht=JY`<$bH%>!T{gyLTiQNjQC2^SS4LI0BK(EtDd07*qoM6N<$f*6xfcK`qY diff --git a/htdocs/theme/eldy/img/object_opensurvey.png b/htdocs/theme/eldy/img/object_opensurvey.png index b5de3223bd4944e9ba35075c3c6a0052731a12d2..b2257c3e5128bb3bca8d77ac091436122c0b4fc6 100644 GIT binary patch delta 698 zcmV;r0!97j1=0nOB!8JnL_t(|0Yy>+j3j9kt~hsb2WQ*%tueOkS=+X4+qQRWdTgs% zYE-*>?E3bv;g>u+c~om#Dwg7cq{tu|y>2(WZ2tR7 zD&9ZoFa3TsUi#-oB4ql5=wF`=mquU9#I>5I&1!bA*eseAMSL~$?~PRabU9S=zL$XD z2XP306pQeOu}FSC1J8v*EH5}Ljkz@iIl59tUYp{rhAEp$j^NkJep39CI81pShq-hT z7G$MhepV9ljDIv_JYbag;ZmTquJ{ld7}XTY=CaVK&w?=XRkXAqD-|npG6JLH&*Cb*=_6kgW5h*1-4F+dsY0Bmi#VJpJ#lg~O()}4|?mpJ%Bw=fQ8rr&B(caUA zqRUMmPI4|$?p&>oY-GD`^7J~Qkx9kQwkX+rhg}Bu;)QWwXL2c2VrB*KR8-8 zku>-XMk^_FdhGPN+yHFO`BFMl84X*T9z$s9Y9n_hV@u9wSg-sT+w#7bR+C(lRiG)W zQ=D>Na|Fv@zAvq$-^Q8B7+71ika1OY6SJPYjg8r#VFRJ1Bo_qa*1$)#lqgo`*{9)m4; zzZ3cs$B3TKUxZ*+F;=U^3!cHEKJ*P2JDpC2!!u=_;%;)#&L*qq^bm4eX{+5l#cH)G gaC)GqqqBp04Mt!ciIoIRZ2$lO07*qoM6N<$f+T`THvj+t delta 719 zcmV;=0xF@vp>uek z-!C>!%i)Vy@i)G0M94q$P^FJYg>Ek%84ikN#Ovmr48;o^-MLtc;=VXh%}CKWtpFdk z#K1Q58-EmNq^KN>$33DV;(2ebfz4&5DM1KG>;W_TbXpHK{!rQ^3N_vMzFAu>%l-E3&WN(Y5-iTw>TImi9}<%ApjfnLW76>=sMNTOFy* zx{Yfd&Mkxezv~GS*u7$5hn-ERn^d66kVJGGFGxskbTq-~H?utNl_9hRZDMm976d^O zSmEj5YJd?|c}@rs1$l<|duX2LC205qt^Zi3egj5e9f?I1YCiw~002ovPDHLkV1fWM BVR8Tf diff --git a/htdocs/theme/eldy/img/object_order.png b/htdocs/theme/eldy/img/object_order.png index 20a1ddb6131aaa940f8ca6e16b1ab2051d95535e..f3a1691e2e8d66556e966c6aedfb15e35f06b4ee 100644 GIT binary patch delta 236 zcmV&@q$okn<^a4 mTX`Jgt~p)rPc4y|uN*wXMdzwZ^@@#>U3ZrHszCoX)kS&VRkF&b_tH#=X|HoYuy@ z*3QP>#-rnBl&b{Z>#^>kf@7~t$=jZS5@AvQL|M&0z_xJz*|3nH4B>(^b z0(4SNQ~vfruItGXbeH`p!XFjF_n@G#}Du4?lWtx6xPbN)xyTK5kR z=Q_I^2rl)MG4_2NgSp2Cy{?PmnSwi?PNs-XW$t*Tbni3*TzQ66{(L}w|60{NcW|c( rQ&$GygGPW+;O)%qrN=?oq(v+M?#Jyq_Hz|W00000NkvXXu0mjf2Dok< delta 323 zcmV-J0lfZ#0@DJJ8Gi!+001bK-QxfN0FzKmR7L;)|K8r-t*y1r&d#;9wVb7#=jZ3f z#?GaswTzsEl% zXp9Q$wR)baxICA7CEg2dJT=FqiU%=ejJe9KlZs6EK3~L?CqwEh*h8@(4AJ#Ql6 z(Bt;J^x2-!hPxE}oSA#p_sN~P&(C-DIa(No?NJo9@j3_sm&pK`fVe=1I7|ysv+-1Lk`v;1fo4ZC6{U-nb002ov JPDHLkV1hramr(!! delta 553 zcmV+^0@nS}0>K23BYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=G5-v5)pJ!kSD zS+&{-L5pA`*kxuOD?yNLEQI|7OBOu#doXW-nr-AbM8S|mH+_f+$Hb*764dl(KQGFWm(>oGy{N?(vuitWvxYw z@&5qMxho_;lH36RNln|fx9Yk+>9T<_#ylgrqZ}lQq9{I$$Ky^E41h-fz#NhU;Kpz` z^ql}Cz0Ys0fqzm;kE^N*-uq4)yv^Jx=~qf=x2mcm?>#~YodCW_`bH7}ej8)XthJq* z0ljb9*TuVp9==b}IF~T`_XpDIQ;IwI)dv#r(SbuAAzG{pS-urz3$0Us;NIEjc z9Jg(It=H>)&OV`}CZ%*c##nKaV+aA>`+btH)_F^~cwLe6Js0 z?-kLJb1>xTs%>i6BW+dJrsTmY&E2M4Qo&a#Z#zZXS%j9em&42jq~@g74? z<+;{~WqsQDIZe|p{z)M0xx2it2jUwM3=UgcTR#c3;~ql-&wu_=A^-+s0qy=hF+wps z$~(ym;qPApbHOw52w+y^pF)oXnhm=_#$OlmdX|fq{XFcpiQ%Vlb>X zkz=I-U`u~K9RQQ#Wmp=Y+#nwEfnw d2%t`L@&Oaa+_0mrbTPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=G5->DyhOY_$00H?)L_t(I%Z-vTYZXBhh0mGY zkVLKWgrG&R5$xXVEU^)>u@L+RmNteovG6BY2sWmOM(oAPUwdfY=C{ zz|I_t%zG@4Af9Gtmc93$^X*03wg7;pX)ZYDRsq0Ti~kh?pl#dhlJ)^0=lmqb*jZ~) zRTTi}ygKjw*`aBgOC&#%+ynqgLrUpJ-}eW_oo0iI=6CNsj4|dJ$xRiJtn0e|u(7c* zuPD$+X%96|^vkTrfTHuxgx8%Y58V~jbn)*^&}0+A!jTmT9aLih>b9RQJ>9(j57Tz$%i3?W1hEN v<0W#=tpT`A@`0p#0QMz4?Yiz)+qU=%*8vobUmP9000000NkvXXu0mjf%lH@$ diff --git a/htdocs/theme/eldy/img/object_phoning_mobile.png b/htdocs/theme/eldy/img/object_phoning_mobile.png index c94fd72ae14fdf3d710071304d1bcdf8e8e51c36..2a4e0c80eb2d8dfe71e151a95767fec72c7547a3 100644 GIT binary patch delta 278 zcmV+x0qOp;1F-^-B!BoxL_t(|0nL*kh=foWgx4Y{Xs~z0-ZhFGoW-t9FbH>;jV9wR z+Rk9McfpPruesIU=A2+ze7=i2Fd*~K{~mcd`#Q*>R delta 409 zcmV;K0cQTO0Tld)>TP!xv0 zlp=Ub90DS~jbjKc<}n-up~Yv&DJU3+O^@f!8|0tDT3y=U_0P+wJ1QZntB(TmrlRU(NfED2j9oVHgT{ zKan140;bpNIXl&a%bp)5;`F;23zmi2mlQ9R}H{F{+F zEdWGOM3N-5T7NA@qY;zI1b`$-h~xOGy%f-FHj^azzOU74rJ^Y0d7dO`u~?kF;7p+1 zZYu}^0rGucolZx9f*_DF=C+0Lcubz>7-N{v=VVz1K%VDJr_-~p^(k05{&ZDUNMgU= zb2uCTsHzHU?Wy+LWnswQr||3&fa5xsSBNEzb^ZZTRuZ#F3X{K@00000NkvXXu0mjf Dp?bBK diff --git a/htdocs/theme/eldy/img/object_printer.png b/htdocs/theme/eldy/img/object_printer.png index 8722632547c5b7179d68c6e3e670131c72c80bd3..6e4c48802d0731626411d92803a8ea003de7bb43 100644 GIT binary patch delta 165 zcmV;W09ya30=5B=8Gi-<0036bj#mHx0DVbBK~#7FV;KCv$jB%Ghz}6J3B(xG0L1?Z z;0C%HqyWSY1h4`w%}hW%6^OsVZ6%DqL-jBr8x#SOBmv(B;(1VZII=L>bDi zCo+Hu2RtEz8n9uK4ZXLp08>ov@Mjkb!_}{2CJ(&LlE|&)l;~71b9$mi(bemJ>%ae()d{`Huw+S(#p53K zpX)<6bi15oxME-SSk2h4ZZ)@2=OeG9S{ol7?Oj~0{lH=Flr48w-u&$|d!`1z-hpe~ znr40$tAF>FVdQ&MBb@0G~u|+5i9m diff --git a/htdocs/theme/eldy/img/object_product.png b/htdocs/theme/eldy/img/object_product.png index 79910e5e214f7cda81bc1e7a1e9e2d45a05eb813..b41166b94553f240312c0cecef6b1581688fec4b 100644 GIT binary patch delta 359 zcmV-t0hs=;1cC#QB!9F}OjJbx002QT8PKkkZVE$+d5daY2WBVeRG5_4VQDiFj4Km`usBZ`;RCobx$0eddQ5b;1@5ps8&lM=R`~J5!+#bd4v9t>yy!FoJ^(&`OKZSfX910a{^;j4F|C=DZT&z002ovPDHLk FV1l2wx|09^ delta 534 zcmV+x0_pvN1Fr;-B!35VNliru)dB$)2qQjDH-P{E010qNS#tmY3h)2`3h)6!tTdPa z000DMK}|sb0I`n?{9y$E00A0MOjJbx000F80|f;G3kU@f3I`Dl2N)3w7!(Q~6AUUM z5J52+NG=>tKQ&iAEn7)BSxrM>OgmmsMr>9-$+d6L zyMoELZ_K-P&VRmq(7%G)%b(1@cFw_k&c%Gt$b!Ey%m?%dVXjn~$b+1Q!e+MnLtrsd?f=jXlY>BH^q&+zcp_4VNsF1dyP z0004WQchCMHZ(8*bEWKTY;3H7 zz+4i<<07*qoM6N<$f)9)G0RR91 diff --git a/htdocs/theme/eldy/img/object_project.png b/htdocs/theme/eldy/img/object_project.png index fd84ab427dbd736dfd5be112faf87c9d7d2896d8..f735f2795911daf773f6ae89a17801ea5143957d 100644 GIT binary patch delta 410 zcmV;L0cHN42dM*)8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0004ANklZqXWO=I+swaaCeAOryCwhM?Ke~)b~LmT+WV;g zpe;Sbu^BFnWh#E?8f5%H4_8R9b!aZPsxQ<_s|I;!f?B2V27dxcha-w3>0ei%zR?FG z`UP2JgzBC^n|M-}*B5trlY=m8$FiwnRCVDw0RT9&kP1S^W;L28Vd zS1mH~axrwX#j@=r9-?>qvfh+QS)(*kqSJyBtyqrU@AVZsa6c9>YY3+E zUt@5UAp*x!?BLin%-(%<6Qb3#`fN4_dOV)?`63pJSD~=*_!*NOYo1bxLr*6QTc z>fzDuk-iJ71Zw&H0Tqz>S8t6B4Dvq%x0^w-A)0U!;1dt#N54xQ%`I@d9JYg}@Be9n}>^li==7sJYrL{=T} zuX$A5u)4BsV|B|e&z7rU-B%+g-j1GpD`v_a_m=nm{T~CmKE_XYk~!;c_RM!V3+`tv z{+_$!NACK+bt@lMuKm>1x4moXzP7pNdL|#3Fyr9lSx2YMJuz+m>6V4J+E?D6vf%jK z73U_byE|{$g~l}xTUI`3S^KDe?W30UUt2c3YTNavbLW?iJ%6UGe>8dTiz)lw&)xQP z(TcOn*56pN;mV55S9k9|yJYvH4Z9z;ANV`t;LllSe(yeTd*7k^3y!{CeEj{Y15cM< z_`Uqb(Sb8> z&Ruw`bn`y7~0y)i3{V{`mjo$=fII|Gs$f_3gXw@7{fR_4enp z-~Zlx|Nr5`&+p%VfBgOb@85s_|NjR@tE;QBFk{R?AZu<(kY6xRaL@vV(|`8(03ABp z)5S4_<9hOpW+n-RkaPzDA#;PpTa6{oY%Scd`K$h`d4?-*NF6C%uX8eYzKyA^>J^?N zTm5@=RiO>SVrDJI!sIl@qt>@>Jv+;7$WnAT?fg93;!`c_rahApR=93sZEdZsbm#o_QGZ{Qx{an^LB{Ts5chDL% diff --git a/htdocs/theme/eldy/img/object_projectpub.png b/htdocs/theme/eldy/img/object_projectpub.png index 1444573cf05c248eaad1c94fa6ad2cedcd7a78d8..ebf6b0f22442739480d10e022fc8e1e69ccaefb3 100644 GIT binary patch delta 455 zcmV;&0XY7l2i60S8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0004tNkljj87nniH8GN(JR28!v6$!Y)&{_$j^3Djhw)~y{UQKN- zRL?i)qkGjoCx7)KBy6

    D%`O{;z#!W4)w_Ew(rvK>M}R3NR~OD xUHZSga!$Sd^F48K5%#ZSA6~mO-|&JU1H<3-eCY`jo@;}G-_zC4Wt~$(69D$=tB(Kx delta 711 zcmV;&0yzD;1JnhO8Gi-<008K=(YgQt00DDSM?wIu&K&6g000JJOGiWi000000Qp0^ ze*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ3l$A94MfAK9{>OXR7pfZR9M69 zS>bV=Fbw{j%m1)J*dX4ZZv;m024w_BcpH>%zzFUJbOX8poqs_65#^3J7FfpaC3pBv z_YPx=Pe%GA^b8T&2NB@ zpLDmmZ&{xA_J379`OV43PP9wdcZ=*@0o-%n!rsGL1^7W>{3y7REdm~ZW2H`*SD$>K zXDMNTqa?Rl=30x-k%CPCL+0=&c&F&UM>8)hj<-@x(F=7Jv-;1~AeE)o2!&^<9D zslYeNhfpj=5`*x^eLR`2U-;LxvV6W0N(Dn&wStxT|{56O?;;cBf)?-;F59ffQja0<~m#11t3?B z2Q~1bwap1*8UgrN`dN=fzGz;{;DLd+0G@&+KZ(c{|CB21HZk#=bxTh5_&)hlao&IocNsNx zKC{o7SpM2-KCb{iDFZtz7Bs+biNNPrH$X7JbN%Bs_of=)hg{%01~jpc`>JdsjK4=s zByRQH`SMq=cB#oW{tWO4$ZrAD^!)p$3fq)u7(hh|HyXBiTK!e>rGNJ{;gJ-%jfm7b({Ni;R=Bh zZcH~Biq18^4^&yZ&(QPR%QUY{PDKU*iw<{TnGfkg$$NJEE?umdKI;Vst03?J? A-v9sr diff --git a/htdocs/theme/eldy/img/unlock.png b/htdocs/theme/eldy/img/unlock.png index afefaa94d47dbe2e173bbcb9d464e02dd2bfc771..e82ca40775feba6d8d63a244ab17b42b5847d0e2 100644 GIT binary patch delta 646 zcmV;10(t$e1)l|wB!6Z}L_t(|0aT7dpd?2a$A8sbqik&3wryLN=$=!~@hP@*iF1sN z=QvsK%Z*#dA1{B&APlkAVvKP!rLF<)S9!iyz0t5zN|HGK<)s&1cBs$DVlN(Wjqt&RxGO zU*4&$TQ>;g08&a9V41P@f@ZsO>hSQe_vuF;yPV{Bo$jukTfBZEcU;ch4J(i~H=p%Pwcl?Y#4mn{K-4 z{=f{NXvu{4S{+;;I1y~}TZa8p;hJ0)6MKMeCENs53A zXnEPO)g9Ef`yaUPwz>IousX3_IdZN)r*h=22QQdXRNKijJ6yMX`Ol4kFTWZH!*CSP z0CL+MH+^~AV~;-Jpo68o;W{7FZi{00D`v*GKfimATz@y?ZZ+Sf(eTqiDdqo5bV`Nu zHr=*TrtD(6n<7ZaTQPo~P*)itkX78xHA?uFxP>$f-M1IvGDIAF%BkblFoWG*R`11 zps7y5RDTni8T2%4;(}%4l1tr^5m6W0>5_IeaSW*fZNT{>pMgq>6&e8XZ`8Y=Za;MK zPxfZhF(jc&w_)kDp%+6b0#^y)D<>R{^)Ep3Z`6;zZ$H+zf_DXW3u~|#u=cOz@2}B$ gYFPk&+k2Q(0Xg4Yow~=YApigX07*qoM6N<$f~jgpWB>pF delta 662 zcmV;H0%`r91+E2!13>!dHc@}{(+U+6e6Wkw3n6=Ne@LL zL4<;Wm8vJPcTe7J!J9qw;-%D+mv}8gKry;WjR(PICE)JT*fdGw?(D>!-PvtsX7|l| zKR+MUk0L|_=bS$?=0o5sQxs^Z{{(mfpf`S9M=7bE2&!|*vy}CYot-~@`t8HHxr;#%oC6L3tD8UHV&tkx^KZ3MDhIpmcI%&Mnm)R5 z^}_M{pMM?r+CP~zHn*rjq_SQzJDI#l0=oG|8NJPJiLEPw+{T5 z{+$rV;k0jz2>}bBy-MkwpkAv|^>LE`MNTow2#cJ7nGpfAn*V&D)jUuGMgZDbhZH@? zfpmb0d&Ipy`{9h;0rXO+_$YxgPy!SnTC4}f2$yDRA|L_?h=9cwQ=tnC0Ra97ypvp+@eeP(xBvhE07*qoM6N<$f;k*RxBvhE diff --git a/htdocs/theme/eldy/img/uparrow.png b/htdocs/theme/eldy/img/uparrow.png index 5d54c6a4c91bb97934aa53b8116985016417559b..14a7b767b9903c712f24cc66443961ac1c02c24a 100644 GIT binary patch delta 119 zcmX@a*ugkKqJV>mfq~&~XR$VrVk-&q3ugEag60v@wLlSDPZ!6K3dZCg|NsAwa$;D~ z#^|wEouwfw;7a1GmSud59IKoeUd?RR=?#{366ARh>|V4ZA-tXQM2LINA0~z)r{{79 T&fvTOG>E~|)z4*}Q$iB}VIV2P delta 178 zcmeBRJj6IbqMnJFfq{X)mFGQ>VlVOZb!ETC&B|wLroZCd6rd1ifk$L90|VCw5N32* zV=@CM$dc~p>&U>cv7h@-A}dHyfKQ0)+O=!nzkmP#|9__rr?o&q=8_=4;Q#*_uAkxs zs%6miba4#fxSpJmkdToez{{JOAds5CDx}S)pu})4iA6|h%{m7sku@wXEr&QJ#4%iC WWxKxNI?rjKP6kg`KbLh*2~7YbyEef9 diff --git a/htdocs/theme/eldy/img/upload.png b/htdocs/theme/eldy/img/upload.png index 862fb593232ab42fffc8c17029f166f81cd39268..0aa0e26da51583205a5238dfe95ba60a3fdda2be 100644 GIT binary patch delta 219 zcmV<103`pY0_*{h8Gi-<0036bj#mHx0JBL%K~#7F<jJKv$w>eJ002ovPDHLkV1huXTXO&a delta 280 zcmV+z0q6eg0jL6y8Gi%-008{QM%(}Z00Lr5M??VshmXv^00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-#n2MHY>xOGLV0002FNklxF-}536ouh0#1N4JLWnjL zEP}8MU@uzuIy#m>g|VXtS_lOdVF@I3#vQ1IjD^0(OrEvglYdNR&i!vPb29u})r=ej z!QMdaH{{Mrh_rB9hMp572%c0g?HifbqLs;teK$wyHqrDLjDJpZLsxKLLUQaZc(-)T zu|Q^8nxLs=R`?HmCYPOnN#ea!oRT+wL~CB{ifLjrbaXTlZ%f^}lu)cUz3-eJqnuLh e^#A;Od;#2oa1q*Hgr1QA0000uv)jXY*L!nka5vj}T*ADJ(?6DY)4 z;1OBOz`!j8!i<;h*8KqrvZOouIx;Y9?C1WI$O`0N3h)VW1=1WG90CFYii(<=nub7N zX=&-?N!BLbm^R>Tj#9ZJLg=` zoO4l2w;tOH0(-X}ySMdP_SSoI_5#7NV|$OC+k5QV-edRnp4+?k+LXQ5=IjOXfZ*J7 zpxCkJQ_h`xe(u__bJxzDyLRu~wdd#V9Xki4?>)ZgU?7)rz>qo3rEa-RUoUAnsv0J=i2VOQ{mj0bpH12u6UF!GDm<=FX%Kzx^dq8DplQ0Hm*nEL z>J1K4wPkX=boD2F**Lqj>UGe$?xV(Ea%*3-eg8G%{-JZF_CLt-DOd^W~vyKfwG_UXVyyKnZTP zp>pkgy0QCQz1hVi`>v-1#RFYzsbc2<=yP>v7MC|qdWw-6U4I|wS|7=`HlHg*)l-fW zKk4ScI8d4uz9_Kqw47vWm{uRAJw$h#f}1M8ucHA di~Rtj0?XFx^boyqtv3Jw002ovPDHLkV1nL2em(#I literal 708 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F?i!z}Ot%6XGh$%ONGeDJd=@D=Hu+ zr>Q0@ZJ?*AZsuVbQ08H0UKgYv=Is~~8eS6RUL5U{kdTm`p6;F8GqNhM_28=yJO$U?T4@JIdXBwk()bDJ==Zy+1}Gn_MLgY@9gt~ zOQ&33+Vkl2+9$`hK0dSI@!1WJ&jZn>>ldyZJpbb0g%?LJy*hUJ^|33jPhNX-`udx* zH(s5&`S$#+cjs@vyL9LMrMvI1+iO#Adu zxZ!*2_Q!kb=HLGLIcb5=MSbS2Ya@l({Fx#&epbijN4)rWW26kZ!%Q%Qg;;NqA6`Wm<_`Yr4MFRnw3CBQy#%fGWvu01qW`MGds00000 LNkvXXu0mjfGK`qi diff --git a/htdocs/theme/eldy/img/warning_white.png b/htdocs/theme/eldy/img/warning_white.png index 56ea847427b79039889f88536148d81ac20a4f9e..1df801fcfa56eb5bacb2126f07ac2edcaa2e6f7c 100644 GIT binary patch delta 205 zcmV;;05bo)0_g#eB!93;L_t(|0nN_=2Et$%hw;q}KqxA@!PpJ9%hXY-00U5WXq}{X zg{CMJ5GYztd@q@|)xMG*exDEgd7YnC6h-&$8$&7PpN>R08IkRXj|HR@zRggKaJw1zdX{x9$JZ^wL@D*T#R7b5U#`1LWUgcnsQ`lI)B#(R5;7cl1&c5Kp2MKlCC94XyOJ<+@M{#32QFl zXXzyB0M5WANLXNHMdGoUMl;$*OT?4B$t=F_nfYc$`W1i&cz@pzMZn@yNdR0-g0d19 zSn?zS+%lq&SHd!)U5aR1R5D96&rM>c?@D~&lxXaj#2f+N?yFdms-%&mdd^-ANkdbc zd73V8v+l(n4d4oN^F$k~;hwPuSZ7HFq*F6Vqi;*vz#*eJZM2v@(26AvFrhqSz;S@4 nq?LIo3jSM1(i&M(Pk+Y)-zmYwDgE0yw36#QR45 zdvp8emRp(IPtQNR*?KecbElxdV$G=m&<5RKhOgXu@N(zBWPkHKz0>TjFVQAr%CTwr zv%&Yj`?>BXZhzECDXGj!1yJz9{ciIW=iPOe(_Cq1+r`Jj$3<64Qc^08B-0Q7;N=hf zf{7>uadH4GI0tG^I@i)8&Tyrc69Qn!v3M9EczVTB;p5sLf8m#pf7BO=DUCe|02aIt z^xku?v)y~H*?*wI#o|zt>kJNH0eMn5bMzTipMKTO$KT+vmtoC`0a#P{Pu;!e1!uZq z9S1|5CN2erf|NO8nlwns1X7UWF;9<}5B_X)m#2NPmQtDH2e78_?|b(3*PiukmKF{R zIKT>(ARJnNM;o7v439z>0W};-zB*jH!;?Q4BtqCY0Ds#3{m-)JUFSJXrXY11xQvKF z2o52R%-AI$!%$&K^@@kXn6FKv+dch#L1HTY=5qdy_U?;!{NUBQPm|(NDeWoCOejgH zD9OpmQ(j46pIsaRx3$GrI6J8kD3z_6ScOX!IHyDaOck`CWWtzV zv6mr^FvlbU?Xm52?|Z_qg|iU=rT>+?c;LijRMI(+#S~WI^WS?u#KEQH2q^{23>nLY zB}Vep*>R(XULN0W1OT&Md;i_StqBo14t>BOCx0bJ7?flz(q;*lm{{hlgp`nQ2%mro zqdatsdFWajXCna4o3{tISS7&a02RxWtjT0`jNBfOv!69GTnr^fekiDfIADT{k$&55F9~ofW{62k*II*h|S(??2k>*4TohRo3>CZo`+Q{5*FStVvo zS$}abw~HEoz2v>WCcvOkUUP~gbqxhaaF`>ZK?9GHlo~EDr9+FDlp&rHF88Y@rXyBfJ*(7k^wxf356bJob1d+1F6eL5JCN&&cuwaz~st==fw9H`{am1Jj zZCoM_&eN1`^M0L4phjIO+l(xm;ZmNR|?4kTIZ1NrQPT2~9i|tHu8Q*m#tA z)`7#l*#H>3MZ=QPW28{7oL>==QGYQcrOyI6K1~VY(xHK&qEAMb6_sL_DHXoDfumfk z1TYhTR|Ro_rJ9LQ!6r5Gf=zyg9IZJeCr85F- z%d3%38_QI7^T;rG%(0CXJQXDj$q7^&YXm~5F!Y5p#-q^Zatsj2mZw?6&VOP;8|Dmh zjh8L@goL!wk1>|VBc@mi4ol;8Wnn=r$E8cg3N4yAazhQP%=pCF1(s(6Ak5ug}Cg60t5<|(xOfssN+x&5s_eMFr=w!2&mJeMJOq^5a8@zn#`DiX5Rh!mt2n6PfV!b!A8RzIGe?I$F81eJqL}~;lvnuNvC7}S>FOs(nzItLuE->`)Ko)Iib{=a?bJ@vOU_=C8m`i7rfa*#IgKwqOY0<)C zqEXAx!6&9g4OdmrViz5tMvtMiw!m0+%&;_-MOV{NQk?lCCO6Couzzh@f8R(=#G^rt zruH@1wG-$H-6f=_j?u^oUh zM;N8SJ#Y0XlYe5_H~<*yWViUy6>hxtixpx#4caS2tZN{xejh$&N<^acySTJ5R zXGjnN-goAo`Jnn;wue1D61AfyEl}!F78D#SPr!<8zJLF$55Lk+gG}L1!dWtRf8(_m zT7QUtnZBuE)M|H z_#qB8jOIjWQRd~RgV$a9W7~(G_I|R@lsdR8^-t{Da~bc#-nqm7?=|L)hoP{ebi611 zarl+_k5XOgm#v6g!B5e-VuMq_@aXgPqW-jz06S?G^hG(xdkxj n551s26nevJb8W88wYh!`19%d6D7E3k00000NkvXXu0mjf$|Fa4 delta 2423 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 diff --git a/htdocs/theme/eldy/img/weather/weather-clear.png b/htdocs/theme/eldy/img/weather/weather-clear.png index 8b5c71297be93d30ea29eadc000fd86d8df8b06d..ed1d48065f3fb3aee5b7d47cef6f0d869b6ccca7 100644 GIT binary patch literal 7439 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 diff --git a/htdocs/theme/eldy/img/weather/weather-few-clouds-night.png b/htdocs/theme/eldy/img/weather/weather-few-clouds-night.png index 1bf2322a35b7a183d45674e33f4ee95d1a8e96d7..e2bbfee2b0eda9415480c99a1d7bd65b81200e16 100644 GIT binary patch delta 2201 zcmV;K2xj+~5~LB3BYy~MNklz5R`r|zkH>h>(){^9my zh0dV(_PMVcrCkOwd^1F-LC&I@kXTz<0Eq{Hrc-i0YQHWa)z=8Mp zUu!*m{>L>Ap8|nKp^*rDlI>GZ{{I&+7VcI7aDw2$51M&GUHH@i$Ov&%NHOJQiW+Zw zfAhZ|v?lB=4&WgEhv)wAzs5vNkkQ2kuAR(hq%FliO@>`zUcH$NVK>h1qme18H01eyUJK7s=rWd_A0DHBBqJ_OOq1g=jm2lN z9JkMafMph_Qk@%~DTcq7ax($&vWQ6%1WiH=34bFDIW>GjQXs4`@SHv4=R$0lv! z{DeK7{U|pLK;QrX+Z!C=Ae(HmhtCu#ikLbUg+mjf@u+Z~8KTllh9+_C^N%oJ3DFn| z>s{cymbNwf(a~er<{i~ty^hESa(XUsgf(bP%i-@=qHI79;(EG8@FHc}GfI$-= z5jYYYjvR?(grLd>Lt;|)@u{Eql{c904z|p$IrpO8FPY!GRs#Z05sTU2XTv|&N8%_{ zenrg>3>ubGAiHkfSeR@iIX8YM>o?SOufa}@snJeZX)A>qh-Fd+^1Gd%Xyf4+GDhJev1sbV zSPF77JRl&#l%Kfn!LO6rQ|eT>F6}soQY_%E0I(pp>(*A2r>7rIe}q4;&qQ&U`F{-ou-wwYZ8u9O$np-cXih{nU@=bprE2f^wST3k3>1j)c^>9<@Q-9dR zr^zBd5h1FSFK`GvKmg-%G6K2rLw~0bB38e|G4Ty`!tFD{I6s?J%kH#r0AhK5Yw4h0 z4~@6g*>Wbgp5HVC+8{H^hr)J^A2v|f`Zi{<|5#xS)-QrWj1=L)x5=zi~8-QLpdTtP3WgnzBcV6L+0 zkL2g{iV(?+T+%bDs+uOUh1wQ97ybF?PR@jreb#7E!Qta@2qYc`K?ICZRPFrPcn;;( ziY<$GNc<4-INeyw*F`Gx)TlUjJDeTqAE+-(uTOcZUd-d=epMe*9w#`*{#Mwb($Yyy zGHctJ@wL_>^VWXgb*KNLF@GQ6qsrtB1&RWPAz_F_(i|_Xc`X`bRCUiw*xdj{*Y}B;`Bd`qJ0@Z80Tkq~H`8T`oA0FOR;oe}9o8OO)28*=ZSp zaFW)9x07?0+nPaG>yLjemOkSTwC$ zHp<6#-JPm$S8|y$z<(Qtc_V5_&o$*C=gX>a!WYxD+@{;!i}$9o2|cO3D5+WBdL1z` zTV|vJ*>)i?aI5l+Gy=M;aF%TnG7J_cpac*ERH@OhM)+c)H+Qif6}nKm;x)I#G83Hx zn{8=yo{bHDb&s%QfL}G@Sa{9mEU94{GbT1B6>f6=gj5)14!8!h}m^KI;;6S*mEJh9_ z3WK7~_q(5Ffq%BB5F^N0;~SiHYgEMoF&(!pra6vcNDs>ttMrNS`B{FDJ}3AN=h$JB z6oEh**>Sma!=Es38&d?)g185Tx za{$9h_UMtY!x)9eLtZjVSu9pu+j8v05BIG5DTmjUGFpNpj7>4D< z*hbP}ojoiPS;nfb24KVuJsmp`S5@W&0)@b0al(NE;F5_@VaYL2ep2d3l`yVExa2qA zYsU^W003by2;2KV^uk{pVhF;05ivRd8w02_z>eLL$0fLn+oN-LPCf4j_{}^UDEg2j bNs<<~AQJfLxceV000000NkvXXu0mjfl&~^- delta 2318 zcmV+p3Gw!%5ttH?BYyw^b5ch_0Itp)=>Px#32;bRa{vGvuK)lWuK`{fksJU300(qQ zO+^RT2NVey7AE{Yy#N3J0%A)?L;(MXkIcUS00^8(L_t(&-tCx4jAm6ChMzOs@t zYwD&N8U(t5Mw>wqH7vxKpb!^`3lb7R5{)ZyAu%y(h$|A^k$)H$ZcNk=bzw|MbYX~* z7=wTUO?Ow*UDWv3@X!C9&N(isx}h;Zw_WI_-kaRyCgjzrXY9qs{RW?SApdO*9J^X}+{}`8E1M(}Ma0e6` z=+a@t6cr>AMV|)ibdf093^7;~bDU;`eULwr?L`Wtxu=FE#6uDzNwL()>9fI0EU-w1 zrGzA9kwqjCE#%$!Zcl1J+2bY3%+SOqAV8q$!_0v6Cju*$72$U&jBhZeEI||GDn&6%;0n}xHrAxg~-by#z_#=2{9xLG2~S6 z34ck6NEoBcfDM{#^E!?-n#B1Ddn&v6zf6JPdarb(ICLsqHL*fzP zQKi8MN5Oy;O$oy|9V8R95j5y;eyMtQ>3@aZ57ilsB>7-B6rLW7?utHBnh3_!v@9ax zQdGM(x}keZ`;%i>3}Da%NCb`qha*QK86qgN%7B=ZZG5UH?*6rTy}xcY&6%Hd?=tti zrvd^`5sT^I_V9jvO&o>FFX@Ws%EPLzM`OONE}T6s!VnLO#gHH=ut-9NSPUMJlYb(1 zH5rg|crCp#^@eYz!Nl^D0^#5yi_}OY1_x144{lWt#UJ-(bQU5t+9@k-sZf2fNJ?M6 z-oCYohhxA9g^$FdsS;x;$jR`4fCz&{<2v&%liHK&WVj;jD2P(*&R>0jz?^JVtt}@{ zr+-Rs;{NJX6o;8#b4oc~)MP_WF@H%z)QL!MTm0+Mfma|HkYkx;9E*p-Lt)4W88XC? z;8Vpg{d|<=v0tm!Mc-zKBEpb6M<()J0t@9=!@r4Ie6Ojvm13eO=y@t%^ZT-7s+o-C zoSKlHwzOFZ*MvU#`8qyz4&W0JqOceQ4uQ8@R3iq|0J(bPBtpdMF0K`?sDBe~n<2*e z*|b`8r*`&?VsUo;;JjZAjkn%jcP6)=mfug`+NPie0k<>>Am%Rox zGRnH^rL3|Arob!knMc6VszlahGyLiRUn%#1p01Co|Z;HhqqXuMM8$bo?niH69km0P_st(VyruJt{N4( zP`c#R*To`Z?W@+B(&#)J8FWcWk%3Xa2Cz>3`kX{zgK8CP9%?0B+|u)PN<$(vc7%OV=EnFJ^_OtZz8S7?ah8r;|MI z$08W_>*+sRCyE+}*bqa}ml2+~Sj&mT6jP*ZbJjaoUft-N>#NkaOT}q(O1FbEJXlPc zU2kpO+ceW>L9?!W1icnGNMO;rA)vQ2>}Hu1y^$n zSm!ida#n#RAu(5Bc!MpvBy2E3q4AKrtCYoJ#e3PY6K@OSAmT8v$`Fe{6YY9$K><{V zFpNmi7=H#t%+W;BW`!**a(C0L|AT-LmwGzBsN1qDnG*;U0*l=#B6nd6gNMSBV>s`* z0*OK*aafA;b1v(6?k*bO#Dy7-cO85$5I#@#eD`SQ?shJ*2mJx@?lO9xvG0uGuDBz% okA3W8AN$zHKK8MX4+sAS|Hkvm*nDnA00000Ne4wvM6N<$f+<=~5C8xG diff --git a/htdocs/theme/eldy/img/weather/weather-few-clouds.png b/htdocs/theme/eldy/img/weather/weather-few-clouds.png index 2818985f4779629bbe1860f15512b771351a3898..3f188e6220d0f25a6fc4ec55cf3c13c70ec105aa 100644 GIT binary patch literal 5730 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 M07*qoM6N<$f^50evj6}9 literal 5360 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 X>>>ee_X$r`00000NkvXXu0mjf%OhY5 diff --git a/htdocs/theme/eldy/img/weather/weather-many-clouds.png b/htdocs/theme/eldy/img/weather/weather-many-clouds.png index 53e1db6fb323d2b42bdf4dc321be165e2efe87b5..de4cae7e8e1fc1b48958374ac1dc3d3834f7d633 100644 GIT binary patch literal 4399 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 literal 4502 zcmV;H5ozv;P)Px#32;bRa{vGvuK)lWuK`{fksJU300(qQO+^RT2N4q#FY_ZWEdT%j24YJ`L;(K) z{{a7>y{D4^01*~RL_t(|+U;3uj9lkgKHs^_Idh-co%JQLosI1{7vB?7C$%66tptq= zm8?)ARR}ehfF;BaNGc?RlnRA^NJuE+4~o=3LBf$hB1NDgoJLTa#1^rW*7n-%?%Lk_ z?#%97&YUyn^6@#@H&+Iwh<$a&`c`x5tVrl97yLBqJHg zNJcV}|KFmuHuNj6{6yDOKP`seym>Q!bLz%@hBA|#+qNwlmgN_NqCW8CfmA8=vkSn? z%#50wpWhbv{;$Pxe74i=dQke`b8hY*9ovb*F#O>Dy?dt*A3hubh@UM0KKS6GwY=Qj zYgzVJ+wJ!6!B|f;)=*rj*m0aRilW=LZNKKa?pr%|?p*A2I#Hw1P#B+{IB`P%)B^Ag z{S9OLKkwLOn(8lmz1}Ztomy0vUN%jWpGp%6t@vMpF!?U-|C41|-@>DZf*?3Q?vCAh z>eSQe{}}-L_wQHFJoAk5JkL0P{=EM1!w>b3y4LLMta|U#rKgI8!r%LTzer7O%hH+g zhLg)F$F_-x5l4{*6F4ow^9_Je>G%8ZVe_w!k2PBDcE>GOiv41-IEcg0?)ttCg7w~) zzVz#<{o@#X=+Gernwb+56DH!*E|p4k&vSQJrfoj|{PVL53k%KHUVAP1r1=*vUNlUl zaxl;uA0JCBtCU>5I+wQF-_x+g!n3?-T4pZiq{>v{F9jh8mT78y!F(cP8>y5Cd0Ycq z6hh)NK@h$k1pVnWjgPikt=kBXB{0PGec$PIgFn4??cc83Ka$~x536HGk6L^8?yZ;0 zTM&dufi?&X(Xo)wgtcq!-V%M%kjdcHr<+qP{lg31wcfJ?9Q65}nhz?6kjtd*u3fLLT3 zzLW7L##suv;e_AspV(-(Z2)z+R4k^kij{$BaXeVG?ZzMduK+l6<_zJt#>U1pKXZ;# zDV9nH>b2VEK6~=ymqGc7G)XLgQRVKm@#&|Y{@V2$*B`uk<;q{>^Z6@BjvVP-y?Rx@ z{`%|cz4!j3vbeN%684;d@t=zZ120Ju7-psL?5gYKx^we$w;JP(4w&V{Ni4oMVK@>W zFJ%INBuzA)b3>gbsfvdEyAQSq&AO{_cQmJS`41|jc!@+0n-d)W9k2&Cl z7hbUT?c28#l-i4l0Tvj8oCN)U30e0LDU6M{4p0}b@GJMEa>4S-%H>O!F26cEJM-q|sR2pLaX$ zC>n$wsB9ub>kKW4Yvhrwa3oc82mvNCuB8ADXsyUNbbkVX$qSVs+n;MObhP7;J=%mW zDurG)n1Bt97|+NGI*mO=Kj<5)>r07UtyCUG8G97Sc;#{>AETb4aH>{o-KdmHjeH@` zzDtZ68b}EcZ!}ztkZP>x6``$8Bm{Vq&lwsjK{7*ac6vRZlr?I#x*~hPFxBaH^xEpG z!9?ZZ;#6D=3)!v+wh&JdWzcv5fe#r5GNw>aNOEQbs<%5GMFwIFfXm4`s4y%V1VOhq z+O3)CnZN$x@l%P7M0T(M?$H7&-NzR%=TaGJFNSBHCat-U7z(tRajA@W5FVnj^tKUW z0?50ibg5isbEK=)n&Ny>UPQ2y=K#c*o14=c8*T0_xxvXfOosHbVltyK1l=^n7}A~l zks*?U0WzP9K4b(9r%36vEgc47wBFj7nx3BilRbO(|L5)#yR{7ulu#JOgIbix8_$v^VK%_p+V_nbz$_MuMh^7$dp*6G1QQ9FT&6qD4ge@J0>~f?r_ceO z%h|cVdHPp><<61GNm0)3cBKJHKn7|fnyD4B4i13F(z}2y#>VQujWRqxzSw+&jh#BWuf|{2?=#gov(7%A4Xve2TY8d%2J=QL`N*>P4J~djJUx za`PU;C-c18GM>UYrs)Vfs@1BourM!rkd@3!re!l{kSV~oAV4sY&CJZ=UO^EEruTt> z7;!EyS-)1R<;a|v0pYu7H7FzG7A@nldII?^xD zQKD_TF!`Hm*%f zj309>@hrS-iI;&IptG;wYQLYB?5 znogi{*iR9RB;|eVZIO90E(Z8bRHZl=VCmSPY(7ex74>~2*Up|l~2b97Ui%~fY7SF3qkH(h-0o@{q}%mJCvSr|yOqN%7D!hOjCN&?^oT*fID^Z-)7AIQ2! z7QYUs(c4;+3Di|3K`6&#Fi#`-M%S+2_%1^EJFxBc+}*ox)*d_FGd?2L6Hh!5xn5y* zb#?Xqa1cgNU<@89gI*?$jFN<#keZBtsx*vup=E;2r5uF=CNV0(E{?|Yxm-aQQh9ks zq4GMb=`@;*GKH#H4$}Ng=}{)Lt=8HP0``_!P9kt7z0Kcctn>$TURH4y78a-8`sQ1I zxY6ssk)M3v{MoO3x%JNRQQKtJghjtUOS; zfbgKu2pYtV%HI=WtB;QUS|AXAsAIDYr#o{tjL^;vgA zwx5ha<^j@N5~7vm1XLU57={WxE?|IdA1Q~aFbVt1n5W1X>#J+J|rjDf^7 z-qI2Tpgtgzh8|~jClj(dZjj5MH(4e6g6l}aTG zu>r>jBe_)^#aStqGr(M;5ksFM=CjW}tMMWu3i`o~x%q{E<-r2=QoN9z!D+B&Qp~f5 z#}T$vEEqh>vMP`T9OF7UHXxw5$G$vEbV>|IVx=;Y>`bBg(4b+Hw3$EH?y?ypkOEFB zNma&VvK8;X-^09sI!Xb`4vz#j8z=2}6(`Z+rvV^MISxZKFl=|by@~P0FCZ~hY{yaD zoRrEEA3ud1u9t&B9u3Qyq8z=%DuDx3k#WxQnKdIqVStrmFF<8!9Q{Zz*kdq3iZ>;c z{64`D!xJ)!`6DZp1TbR=RN+69^k>o~co{2`j4=j7%UNDp`iDkie1$J)KM{bp-+tRT zaNt0Kw=K(lF!&H{w)YQiVKzaAwcbTLHd2eibdG+o^97?XPEU)$ph2kT%YPrnb zm|l${c4wN3Wo1g}Dw)}kxZU(Rg>gw`_%=qU%WDXRQp_7Xd*Je=-IW{yu!Y819x#Ua zBkMnSL%P7tm!1*=Y~ksB9C(JOzhRga(ElGt{ z&%GJJ`@JxVYY!fH;5lsK@qA61QfbDdG(wV%Lm~}NhGHnjunonz*{Dsmf5pU(_nn^8@M9;F5 z3?uQN7%PEo%At$&X1>@;j%miOp@;&Og>_Pb$aM*noIh;GB^atuEIs6UUSs#}-J~uY0I`#GBf}J z0FX_XW=Y0~WNfUl00!V~bpKnR-gPAW^vC+!ApQ)k@aD$4fB%8}i< z)v6bYg?qse4e#^MW36(fJP#TM=nOpzst9FQ@HV#(n%4?Q3@~sG z-bO_E+IDg_%BGhf_vE}h=9^Izgd1Q{5wY)p2`X#T{V#vyZATqV%!3Ua0IS14;bDry%=%xdmhEdy3 z$HyBg2ohDTddWi5*Aw-;xwNvPD)~YJVOXesqWQ;*WOebbW{5=EHM~;Eh|y`*Fkhj> zwiefPZM>j7n*8=`P#ykOkOh;yM=gyrwckbM|^RGty)yxzEAq;@2{N+^s0yY8!R>w#@hlGvsZj3<| zBL2PtD^*}QD3(DK1}cLKU^jMlI$bGayE|>e`1cU_GF_62!+!$@4~D{+2aa*nmrXDVTTHq@TEc{fDG>}wv)DWnZed44Ould+#7t2#jIdP1$Mnu=f)8Say zZFOJy32${{V}IAqrj;cdjz1>wO+sBM2vwCB$}}A7SfhIA2feJX^(i0e7=c|fH2A2Nq6heI4<(n&9Q z<4^QPM+Hs?R0akI=_GCP`RdDp#tU9^;mU=JAN9yU<$qC2w(#!={D7u4GP1f-YN<8G zav09zi{WKG$3e$PYlQg=LZt9Li z;eX(BJdIul9UTOaUZ}1zmGEHF?i3X*k*-RF*)n7`R`13w7hiqVoJ;J8iby&;o12S9 z8jYQ^8piY*A{aa|dV0S4fuMWC46YhgqeS(T72`5#P*IiH=w2Nbj$~(d=I)y>T$owi z2nEKhnpxRN?W{C9X_GQk0fx?|g{Q;O%zx9als&7aTB8aZD?X@%Fgs7EIo;^J>1kwM znYnrP!meJ7R1mALJnF{oT`L=#HyIhIHtEe*E=fFH~9Q-otUg3!d&4>L?~1Vk{(@+4hDg31eP&QuYUOZ&5U+Z1|dlx@f5;z zFu#VuHpAb4YIdOj5002ov JPDHLkV1k{z$@2gJ delta 1601 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 literal 7300 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 literal 6327 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 diff --git a/htdocs/theme/eldy/img/weather/weather-showers-scattered-day.png b/htdocs/theme/eldy/img/weather/weather-showers-scattered-day.png index 96a574f6805096bbdbb723bf5025c3fc0453ed41..ae098117351df526fee6029e0a03bad1359ac36e 100644 GIT binary patch literal 6317 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 literal 6533 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 z zbry*UFp5~m02+tEG7$noyEm!SwXh?;>1A z_Uze%@Rx4u(K-f__t0nt+yQdb zGUqUuysl;;ItwU@34pgKpZLTlaNW91C}qfw(UQOkJsV%pPb4jW*0$zc+Juhb18-W5=D5i-e{5@DJw=2BXUHI`05A|`2?lR zQ&Z=szK`%T$mUI(;I6xW$;l)W1tFa>sIY^|Pp*(J^b#jNRUqE@#$W!8)pyVDj7>aubYW$E@22(iARw-*oJmB`v)DXBxLwB`Hy_rLm84Odv+ zu-ZKL9JHMv?)#rdrf&VUZ~mD+^kH!+-F0{T!KeP@cunv8^}h-LAO*2}`OB}@%M5cQFEWooNokx!tzZU)~;CLdmif`Txqd;e)Ust2D;tzxzE6*#ep}GM8}Tdb+>=< zkJDY-KMHRqshhLc-}|4wx?MXoh1yN*a%D&O#&f&Xn%CESt1aGG#f5USpUGkz5*$5g>4`G z%3!8<;O{Q?|1$2ld&hk@e`MqP-*W(LyJP#;Zn*urYao03$~V(1cF3M)Wo8N96;k^3 z&%PavNB6d`41MvD3H2L)@|=d;FYI_z09I}-raIOa-u?(Ee#wILuaw~}%DOxM%hrvz z-TGf4y}RdUt|T~(i&JyKfgc?>1l1qE@MgO6XP%y~&%C$*Z?}wo{2TYKy7f=*f2;Z* z`@;i!{_S5M(@^-ww_H{^fA6Zxsbsr1tdq$VT|c)z;FeEb|C#G{^xX_^Q7ovX4?X$f zS@2#sbUEErKJnW$W!_Audj5qYVdLx+{Ji9jfB&sdui5!;KKhpX|3tQ6C(4)gSpW6^ zBKN+}{q;;{CZ!M8cI6 r-Bd@Oc;dj5-=D$i#6v%TcY*wG4Rx2hF+$e>00000NkvXXu0mjf#BYrL diff --git a/htdocs/theme/eldy/img/weather/weather-showers-scattered-night.png b/htdocs/theme/eldy/img/weather/weather-showers-scattered-night.png index 2cf3dd242e0d9fbddf1a575ecb198d4c11fe2bdc..ad0283a08db6c9ea96cae7dc4e6705e128b0e9ed 100644 GIT binary patch literal 5171 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 diff --git a/htdocs/theme/eldy/img/weather/weather-showers-scattered.png b/htdocs/theme/eldy/img/weather/weather-showers-scattered.png index f66251cb03495dc346670749c4e2b94b0dc71e89..9d4abf532037ee2c824c9a7da6689f631c51fc56 100644 GIT binary patch literal 4937 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 Hu0mjfn)^)Q literal 5210 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 UTPU)(wEzGB07*qoM6N<$f{Nzu#Q*>R diff --git a/htdocs/theme/eldy/img/weather/weather-showers.png b/htdocs/theme/eldy/img/weather/weather-showers.png index 8e7eb470bdde0b795d8e0edcbbb8ad4c3285b1b7..38cd41f03b512a5199eadd727722dfb41c233914 100644 GIT binary patch literal 5138 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 A)Bpeg literal 5373 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 IM6N<$g78RZ!~g&Q literal 5857 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 VXn=*I4|D(k002ovPDHLkV1hQR51{}6 literal 7257 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 diff --git a/htdocs/theme/eldy/img/weather/weather-snow-scattered-night.png b/htdocs/theme/eldy/img/weather/weather-snow-scattered-night.png index e77c698d6edeacfd185285cf1dc37628d1455f8e..d8b0ccaa7ff12a3b92460a113a497ab758135e84 100644 GIT binary patch literal 5583 zcmV;=6)@_FP)VZok*fn%|HX1i=s56E}^u_IC~dXRvLz+mQz!d@%7J|M4H` zM<0E3(ecM0pUvfR-ptHQP1nxnJ@0u3^}8+*+8XaORo{Pm0dR)z-n~2i$xnWA>C&uF!6ZYc%ElktyZvS&z`aA>FK-2#>W1qUa$Y_<(FSRqWNtH z#BUV<7%#8J-uAY)t(`xA{_7VkSn$V#gM$f-#TeiB4d1z9v6zWQqueu{PKSQxk8j_; z{fm)Ei~rDGzZ9R z1Cz<5nLBr`IdtgI-dk_I^_ACLbIreNEy5!(KVysjs*L~UH@}&^{r1~GBClVCQHp&7 z-T7XvR*mRw8jS{k0D?)U(|k9TO2xSGjAM+#W!~!5tH1v7kAM8bFM837-m3L0fbbj1 z0F1xxy6e(k_`(;ywr<_JKZM#CE(YLrGdVelQHJIi!F}kT$z%Y7HMjtY->x4fm^<&h z^E0o1{p(*jXU?3T353WmJLdQA-`^)sy{A|#{$aD(gw}`~-oyYr3;>2cckx@spclr? zfdREzjXvf81|XWnix)rV{qKMOOEo6W^L|r80OQ$s^o1{c;bk)T8F$ODZH$?-i(p*`FzEx=~;ylL2 z@g%X)Bh1#F%`U))gm5Sg?U-~i|i$!DYcFXJUABYVN4dn}k{JJ~txbt&6 zckV1>0CbfOkj7k*)AKan>1Uj4%a$!O^zGZX&mfc-i$J=ymMmFf2qUzFKCbcc@w?vm z#y6fX0H>MzOJ~5dp7ks%rH(5tl~m2GOAQZ~I=(-&YURo^bNT$q=bm$J`P<+Awz=WP z8x1r@ybc^VU^LdSd6l?;z<1a{dh3C~=hV~`ETFF^evE}3E=0%_j1kbRd)zzU`Oekv ze)qfYA+mmM0A|OTkhKvtr7$ZGvZ1&(mX){HEnB+u()H`t|Ao2-<%viv9!qF$l=+ul zdZ}5vZk_qYH@*P~P#mKP35?_!Xal-{VR+GC5RLIX3&8sO`wcpQ2r`y101QH|P$-y3 z9(jbdJ@s9rsrTz@|6BmLnw{(M#~-&UUHf%!iE?mG##i)vMX^vgebM5@P;Ph@g%@6E{`Ft~6=lajVj8dV8(=V;-_RPC@Ch)C1B6~E z03i2S7kwa2u3Whi0QkLF%z=IE<;MeX_St8fGtM|8skU4XT`UhYI%=_aBBL0cOPM)2 zH939ckw;#h&1TM)(8ZL7%Ato1o3ri!6BaC;u3`stYg0HPj8~}cHcd5$Ax2TpV7Nex0*nj^&j+xC*k_*D*i(JxkWHLcjEsyJSfFwkheUpw>;}8z!^5d{g+lRM zZ7el7FqmRi8X_OlR1PV!d0^azJTY0buA;Dhvn(KLDJN3E>3* zMq_J?FkTQ!FEppUH_+SWv)>C@=V9A;_YYeP;;DHAW#SnYhwrv~Y$>p+1 zRpb4i7=U;z)|bg<*Yx!zQ}TO64%0%dAkJw`=!Z(}gD9rR_`u5Wpv6O5O-ny`Clg7d z93dunJ^1lHU}z5CF-n5993zNX7=SiVANS@IOJy@Qdf4pPu@evp0|y8pfcL2<00y>j zACT$e0*HeGvh@?!0rFlnm(7*XFg3$Yqy2pr)Rof%j75Af3|(nak~SI^w0(Ui#?{Yw zg+j#WLjC#2TuE~v5ZH{?Rrs8C`suxJ7}mOh=^EelHZ7OSo0JSk;i0xWAz~;65ci?K z3B04CA5Bt$+&~GWNZBgkunobQDJsH4) zUexQ_XoGgAW7#;d%>9@iOqNq}ltx5&XzxXa101J&VnjRu?d)7BcKK!8AV0D@4WpY;@yDx3F;`jOaozjOVfY$mlw^+El| z0#K<`eL3Ej2K2EDRKA}=@sZ-dz~Fga#M^LS|NiQ$U;WzYdcE3cseS5GpZdP+;Jy6iFAsL?*ilLL^(WKm z)JbxB6gq*ZqbLT_!p#O2(Mu%aq)6GwJ^I2KF706;8}wB(fC*xW*Xi$QeX@tdhwu=) z+Kk0$(K*_y2mzc`U5=nWkYQLU02&4`$S}xCy;ctn9^7y1^_o>p(U(f4SERFD*wG&S~xpM2Rw>$-es9qxY$w)B%#1l_`L62#a%cZLo4$Ba29u}hN3_~C(c$~2v zz{dd651a0$CHj0mNoApiD0W?=Pxk~w$M8wR5RC7{q%#2RTj$&mOzs6;g|HzQLEEQ~ zA&6!mjj)YI-Fgx-WsxIPNUhhNgp)tHd-twSKla#TpSt+si$^$_QY+s-Fo%J_~=9Lc*i^ZryPbZy67US0)y1jr_^^+saQO<(QHHy9y(OhgZrq{ z!Kz>JNIVk|(3nkfJWgoiJPeiY>+iR!%>(9$dTg4C5#mrR>7Hkp#|_sUvs}3KGA_XD zl0E_SQ{+4@eHv8xJT*BHOsHaQwwjdE4kY&$iRuvcMf9SkAaIuo^v5-%F&hB)&fO{| zGm922{4;66+IT!+Xj1~Fg|S_u@q{0GjQo$0?txuTx8=o{?bhvqLc;b$vTL|YwV|Pb z`xoBR#iye-;X)Y>5MgsLSe_H;?<=+`*60iasobHAy>PK#Do)#|*9-Z4?&68@iR-@? z04k|Ko)l32*u>=26FPvbk&)KDhl7?L0wvTj0&!9a%~#Zz4eK*J&FO3R-8~s3Zt24_ ze3GwSp<|rEhSrO7LWO($c7}7`&Eb>Z%*9~CSoTpal_|@a6Zm1ZiZB`+Al`dgB?3}HfLrkwp=b>WW}SMd%@#o5OfN)C2dIATH*+3+-V%Ljcnefg%aUu?FWC*1+@3 z$8bQ!1g`O^sp*aBbms6ax7-}`0HEm=wmJ9QvpZ8$)rnj#yD$+?tdi2YKVjQ&1&eU; zP)>g~G?dGo+HB7l=XGKeV~JxnBZUlwvDtFQ2D%t)8N;SA6oW{0gaBh)y#eTG31X@i zrcJ^z5r?IK&L+BldvMQiMOidCJyZEV3Fa;dqTd6+HPIqC4pZQFjQ zSTQM)E2v%{00e4(J=C%>jCIC?vb;2_nzIx?;okssHDnM50+QeLG7SI;DL@63dZUg< z-C3Wptmibt)d&y@gZYi>TUSW254_*hvs$_=Vui?`V= zh9i(PHZDNBDKGRkfRR=)p0#Kgd6A?vhB&nLtzLmN8QTfhrJ;xksr z=T59tt9u2=p7lo_QM2ZUw7>eRzcN=}eYN+*rY+@lYuCJg-rPBt@no0ZV^C2!w)+N0 zVbXE$4xG1O1O-aB76@aJF=QCAiutS-IE8olezrdJn9_Z;&J_W*h+_hcYLYZbbMs-q z`M(Vt2j|aU@DKT1_D%9s%28hFE#NJU zsD~Dy6Kn)y*;wy1N2SLXcT$wdBBDi2>@?!Yt4o?a%e24H#a8_ z4Gmr@uNFk7gEDBpC;qA&zE+P&oDM zGi|+6jVk*mN#|O-tqry1z2wl)z~wUX{d#U6yXw)^s)augu~4-EKpO~CCCcuOz-)*) zJ?%gb0HbFZjqjvCSBkqbn&zJE8lW~>Z68h1cgH}O*4E3Lntng2=f2(ke18*sWu#ax zW#ftDX(~KU675##Gn+uI0j|&uZbRH9H zaw_aDR8cpxZ~uW!@_L1HxLCk;{%v?@aH}@3ztwK+wdUt+&w1$^Y&qTUNz`J^RwE{b z=kEroa=Dn>v}tQqe`fGcKkby9HeB7lednQ_d-pZxl!_7kt)Z4lry|u_-MjRn3qPWm zT(*7N&MR-Z?e=jwDx&hcrP%LWdBtVVme*gTboyHTPm@QcrYrmT+Xa$ffY>A7Lb|Zr z_FI+A|5tAgz|~|y6uu9!li#sz+ctjNwr$(CZJUL)ZQJF=H&yde!DKhi+f#L(F}H8` z?K|CPDk{pS*x1g%rtU%heb&BVAkTUS@-_>VvO`24*`kN*$^$wSh;fYN(ZWX7J>BS%*AxPb!)+OVNB75WBR-C73kF2%F}Wo2c?)2B}l zUa(+6HBnSl)CHA>p=cly5)#Zs6$~Cc*zUxM z6NQK|R$aSxEseTeth`nj(h1TEAT4arUot?OWBBml9?Y5x!sp^Xefl`Q^wLWK z3pp!RtVk;_FYh91fQ3+1C0khW8y1o*Zr83|MJG?5oU?A-I&0C^kYeuArAq_I$Ir9) zOh=^|%;2^13Lgjy*mzW%t)WAQwm)#-fH!K7J2YdCGoXO+o!!e0;n{G&fjT!&tF>&z?P-edf%Wn8k}1=OKpHr8rY) zMfwp{fxO*~*~>&aH}u)FXJy;BZ!hfKySIU;CwA`K8G+G<@;wJp2e_cZ^1*`#BX;cA z5rZ+b-rnBg>eZ{+bLPx3Yfd$&M*cG^)`Dc%p`@fl)CXMXU^8>(%w#mgj?(OR>(q_9Xf8YdARSfUKgMEvZHz)8{y z_JC3B?sUKR9(*5u24iK~K@ZrA&sK986l(SkAS5JYI6~_T`VxMbnVHr?-#~mBk%rd3 z{r20RGULC#_~MJNvm);!<;C*cQ{i;h1;)T9@Ku-(U4#OrPMzv?@7}$hctPoyF=OoY z&I9BD{l#X-o-OICq@!<`@uv*@78{p$aNGA31W94g37&#`VW+w@d^BgjynXxj>tu+> z>>seC9)g{lbi(4fd-v|-!-o$aBQ3>BrStzVnh)#?gP|Xc75{f2GElL1wPx#32;bRa{vH0T>t<#T>%+@MqK~^00(qQO+^RT3LOvu0N+P3FaQ7m24YJ`L;(K) z{{a7>y{D4^02Y`@L_t(|+U;8jkX6;0zRTNtdHs5M-82o&E?ZcX&>)M9BcKGWictq+ zBwDc~>XeR4q|`W7I$B1psWCBHqbX~~ZK~9`l{$lKi-A#878P0Ars;-W=x%!Nx8HZ~ zeBbXq52ubY0V5aKw_P&7GmLD&D!0iYPx zEz2@K`|LCStFOLV^yQadR?nF;r?{k~#2g$POrSSid+oLDI8Oou3(wmeI-G#$e=WxM z@89ox0x6SHFU}Xdccf4FH*c_St8PKm72+hamNz zK@NkuI2p{p_10TOaB}}%R#x^Cs52Q+Oi`LzS67#I@Zdo*D;>7Za~`P~Gz9{q{DRis z->(%E6qqw+%(&(L`|p3St*tGO?>XfFph|TM{BvDh zT_LakRRK8t^wYH~ue?%!_uY2`wY9Ztz+e?6Mw?cIQ;o^AQf)HM-|UDC1c|??>b$3( zrwPz>C~^7*xu@nCIdbF-nA(LP!TfXR^$Z8oH{N)Y?)7@SmX$F>p*$}fRO!BbP1E4? zu4-y(B2&W5?%lf?#;5^gT*Z1a!6O+J1`+GE@#Dvf<7;hgRUq+P`3E{eY7w7T+C%fY z8Yb~PKpwy|-@XsH`s%CoNF?GzSSp9jP74YaDq(cWLb zUhD1c6$Stf?OTXP_@cTiyCzTsgPKBc$RsF-(6)Uu< z)23<9Jo5}eAY){jCLzr789FzrHyNXi(_f(RdF2o(T>%IZ=Cd>df*~dcP1Ck--_E&B z+*^*JThXl(0zl>L>^pbv)RDS|aBVDXuLR7;a6U0wR<^Ku%$Rdvv!ig&bZlD(C>$d3 zpGV!$7^*ZBHQKs$>nKUl0ysvIC;+9zDMi{cnNrR&*Zw6jI&k0sHHDHVNPGu@ptU@j729k&Ubciwp#!jy>#4XO?%BI;&oX{is$J03I;GP|Z`-mQ^H(R36tb#OXU zsR0}Vf~g(sni>ygIA3l^6zRV7(o0J6lq$g>(*%Z$Q^Hhh(Gt!_U}!oV^VL^h5fGI< zat;DWfK|=FXt8bW+O><|YX*##QOUC z29R}KT3j4i0!QbC?N+GF3&e>@pu1i@>oP3NgD46@LK;<__ednYIGN`dGE24QZ!$#b z@_CUuXb=tAw{IVhxlT{j3k;Ps0|LhLFz$JdI|^KN)m0`OP4(QlbMK5s%g-5%4fa8n zIvVXc564V*Pj~ak%8}z?qaLr8{^MS^72%XR zO@Y9;b%95KfijU%ngO*$#z7mE*XJ0CCdyZIc6Lg#G-AXE3dHzxoIADKS6CQE$cml~ z!ovA^`C$?lheQr`cj;b_$B+A`W$mnnNGHU=*4>oW0zsAz0OTG*p+i%!MFT_=+%5p% z*#w`_Fdvx96K#P>Y1P%$lpa-|j*l8bho+Jt-V-gEGG&Tr&9-gZ7(s-VhK2@JD5+=? z$Mg1a1K{&|gOTFmDZyYM47nQ+7$(X%K2~0#kZZ3t5hW{N-qFFhli^D<;Y$Av>0|f|8K%|el zg1}H)c%2~g9y@_(2auWL%>z6J^sc11q#S}X(S&MGC@3nOg&~vKuVb{yTY3hlCsQe1 ziWE_4i>UK?n1Z39EWr` zbb@NVVC>kjye{ewMhOtLh9*Hjz~XB+fUuMUJ{AxjFqQ!`osJD|6_>~%{64Q%02_qb z>S&IxW}-AXxg(PUb-zyHLI5oUH6>V%NZq5QO^f4!K~|F?hUPj)cRc+I+NgFOU{AgBcq0MjGqSU}_)97F#=jo4gQU#~~PVWYgfTwZpJJiyK% ztksv5m39?{3!|o+k(nNoBZYY@o7HV$+~#!<>?5Jj3==-W5H(cwx&oX+H=z+ezgJ5$ zUnj8c3XccRc>?071u!ZN$BE4g#RkU;Xk}3MSUd)E%P<5A5YSozK~v&=nU5yf+S&ru zH@xq?TU%Wm2{$7@NFEb_SS)Ts@HTuvkW|piyI~E^%%);6&!^{iRBdj+Rp36Erlycs zFybX}N0hc?5Oc9Rjxa0vKf#54v)Nfo&~kGK%#EYrY8U3GWXnp+lpm1y&zw1nj#Tcc z2JxUEsxlF#??6;V9NUhSOV_+(M?Kz0LI8A07wxGi7<34$wbm=Z*S9+ z$%KxaA{Y)AO)M&oOyUvAOMyS&Pt2V=FSc>x2Kz7o&N}NX$FNeVj_%&C@Zvr&Hxe%| zViwPr8R#m{X4hPDc#VvbYhI^$kTEt&R?=ZP3bQ)z2`JLDWE#(BRjJE)gmLjfrlFV? zz+{a3E(LHZmF64@X!-}IzrRmMB1>;#6o$jmaA9~B9N}W*8Ox~YFpcd#pEq7#U;jq{ zn46!ybeS`5{J2C%M`vAgYs>cD-o614UWkc9)O4yFyEq`)sjCrGWnQC1LLpX(9-W?8 zqzdLJA()ny2C)Qz#Je%iO>zv?$+%h{;JHeo$ehfh5-ndjux zEIpBk8(`Q#$TofcKoALD6e02*r1KpgeDHyDST(qO`Enfz2182_p|7Sq8a*?WPI=lp zIudwckS`+9A=o4Bne0=dWP;_fKM~oJTY0qHB&L4TY2(a znVX8;oKt~FO*+h-`{1AQkv{kL^*X)CSksv_Q)y+6q(zQtfMKIVhk(l9w8tTu?ZhLg zTmVE3Avqn$MXIYu{}8@ls?X<_2l@d_hRnK5D+z#D#(y$-#4?wK=-}1eyxoCRnPI79 zM@d_GeUhvG|N0ubThzEdg&>GFDY#UO;d>l>U(wTu7N}tyWkzb{8C@-==&59~thBV` z+}@tv+FSq(cj3W-BmtD&-P_l{i>YujmDCbRsn8hiBo}8?AQJ{UQfU69X}CRs7p6(D z5aIKAw17BD)(KMNNW4~w4x2;}Lqaa+1hC>Cl&?^X^SX>tRi-6EfEbupxZ$>=-uhkCBfJjMP+>j@k zqT~x?(9isvah>+-7BKwn<8`U>Bs0W+iYeR4ss&D}r?O|xNvEl#=0=H(I7;#KWR`$2 z3^NaLopUf0L{7qWgBZbM{UUUT*11`^s!Gv|z(ZvA>^a7ftHP|boY-K0;=qB9KOF4p zdL3Gj0m4$#iZrD7p|=NNmN+>Qbxyd+$;mEpTeu3u0k>G}cAq^fMy%6tY&ERE-R_O?7bA5}!dt;Hs zmV+L}_u)&(Z@&4avuN?6_+TvYDeU)?hK9YH8k?H>;N;4Xujg?_=KhG)I`mI@b9SY= zIoX^}dMjKDDj?CiNtAoOnX(W&u2NG@);^e0B_Vzp3{tUl}M2e z3Cnm_23;33JLFt5Se4oi+3p=badKkY*3Hg0*3fHf-?Qh`e80D)rG0m2d)toAgPjeT zOt!c@S~dmfdsI$9yAB_s>VpP(=ct)q{GCM;oc1^^Ro^@<8Pq5VYeyJOv zimW4eoy;pIC+EuJi(6OzBP+{oI?RQd#b@Ox(pDZ{&JX1ZxGqjqrO50$S`a1lENIMN zES9K0TCvPUNaMfOy_sKCHR@-jCB^>;Nrjcl!`>Z6223OiqGXnYP~tdO)tuNff2c}v za4;qgRcd_KXK*f;5iu<$8*K#1eJqIl-VXL<0Z_ z8Rr;kjF=gRp+MW)ynp{~M+JacVj`U~J3G2duyQjG;bjG+Q3iEt2SaU$=P2^BKLxJU zR68asBtR8N%3PGG@Ln>N;XNiYIm=$+GeoT^VG^mn5|@+|V>P)~=2T`O;h5m6>=0dP zk4l{hA^`x+Iucul5sLsYD>Y4dr-eM?H^*Ezy7=OYwKJD2)|0Wg2hl&ksED~O5M)7m zfr5g(OTpxW{H7^XscJ!$jQEGr;>$GwAkB+33+GS?tX6~ARq89LbXGB@GDZo>20DLB zHJMWp<~D+w%2+mh3V$mNq^4O|yh-4EH{SbC`iXrL{Dl#%C@)5?y#P6P4b*NTj>Ue2 z8W2Y(QA`|=6STlY`rK~_1;Ic7ckLZ`-T|`}(bAF{ERvd?on3E1ok3r~gpb(Q-`DT( z9OhSzjP$^m(WA!gZ*J)TB;DYgk=n+5Ax24dqJYx58(LF>yk;4ay1~}A19gykjCDA) zfaJVfSdhO51hi$WRLcqP5BT|wztk&=LMB3`H=Rj&;oKN_7H4x{N9G9%QpP?hdmIKk%4E0?Po9h z@v1eD`t=B>w_&Hr_Wprb8^2x9B}fX*496>k;;~;ck2O>@g5)e~Z2u3!1C((b7BAbGToE z`_myg{?0?M;P2eVb3C&c_x=@q2G;*sXcggF;h%ax7CmNR+58{y?eRH`xv!_EJK(-g zM|J3X{`u#>)g2-vI0`l6TTVy+52*g%W3|>g@;R>O^Znz-jdOl=Q4MzL@vMl^3YM1#fQHk zXE@eICC2#g9BQ>Cs87VemwBpN=bJF$*U2wq#m3ZO7EnBvvkAIY`LF8}PuwhW0W7Vb+ z{-Y9(s}aj{oG;}13hw{2@jcK2^FCavqLm#vAGXM~=AM7+0IXTFW&#MZ;CNrQYXA-E891wANM(Q@D|vqY`RDr~VIO=%2x;&Hc=*p=fBp4A*YU-%^|cOL z=66E+h1gKF6|1*gPFq0r1qhoU^#nZn4miUhX*#I@fcV&~S+izNojUbz5T=R{?kbUH z)`8GQI4~2x4YU&2IM?3<0EELleB4~Z&<7uo*tKidT!6Ui#TQ>}Mcu)b*WG*$AnDli z=e+jXYt(=(n8&7beEjjpFMxlU0TcP{O*h@tI~)KQC$a|^>1G8~b0K$(U{BzGBL2P# zDcR_gQM4?D^y;xr7gJ+QG;DhK5*w)}<6fr#%=5?4 zu5AE=D_hp>x8HsacB*f<=bn3F!vO%drkPJZ`Q#S-^+p)#A7x?(Kt6)~%6&+7$dL2Y zQ%^NO^?RV!X>5jSfE4=xAZf@Pr{DP$2lPMPxK$7Sr4QgHw{G2Px#{t{2&vYvgu%1V zKHHo(Z{9-KZao%EICeE2a&j>XU?4YGP14r>8K$2n9K0@ zaIkO;x(SFEeL78rjt)Q^#yo7Adw$9nFJ3$Xk~0D3!N(qZtnDua0DqM-IP6gX-d;zl zItNbc->~tZ1EFs|HZIn?dj(ga*W-MBMMZ_p)iiXXUxdEW1t5Yx0sRa-`yxY{nj4O7 zWEC15<5h?zjbD86MPljFrHQxSe*37N{-j0$sJR0MKL_D&!hubIw1YTuN7-3mXgjVq zBSzb9`k6$hUDFfqL|=`589MK8P|U0L$}6w5VD36>l70?bUe_ak*fm_t5330m#`8aGsm+c~_Qu`ljinQ%d-aaJ&0000Cz=}Jv}`NWo2b- zj*gCl&i#y}C^j}WW>8gCW&HH%(|;{3EhaV~;O6EQ5fl{EGch&}VP|KT{`>DQyM(xe z4ht&_56Jvqzka`a@ZkQcbLY;_`TY6w9SseQA3;Gu$j1K1>M%yefenEF|Nq0)yn6MD zVa=K~%)fs9;`#UQ9~;ndf0>w=1UWf5)m2nfJmlo$-1zu-<$+q5{{H>T$imEwFq@I_ zKM?%5ckkY&`}gn97Zw&i>)_z<4H#Je5uQiTm|_Sv&|caFfV#RmgOQODoF5ex#RLS5 zKnF9td-sm{@#Du*($do2;^N{u*REZ=382L)pySAyrZliPrggI3ILzc@=KJwuW@ct) zW@ct)W@csxa}0^?kYQ;^Uv=r}Js-1tx|z&qr0(kKYH7iMOAz_9qbM52a35Vf)j<## zfOHK!(X&&hPW=k=yyT*bF4|YAR5Cov7j$#Y>s7l3n71|nfwFn*H5!c`_<#s!sX^PZ zb7!RxhSmN152V0B*X#8=o^kpa&(ogn11KG^zl>o%oE4{47>1lsoCgaWgXEsTpnE+% zJ?Hs;u)5pr9t8khWgR6Dc%P+dnq#h9qg@RQ*KU0PUi{)0YeaHz&DynhM}+_P__5>1 z;IJx{%ZsCGv@|z)b8K{M|JISMcg*s%<|$u?g+i33nest(&y()a;aqx_0R*{sc55U4 zXv-}>Nn#%WWJ!{wNGV~3nw*^STCJwnY_@c%RE$@yT-#l~d`XV^ugZekpy>~O@Pm@m z7hG}06(1}XOKS)-{*pM+r)FnG=uF^y-Ez57KyG^i4xFd6h%V<4AcO^Y&CfHu&+?q0 zXs0I@gi||r?tE%vXy`8!6BA}^Y+M0|Mfk3vwHFN!57#FrCwBsrzXyRo4be?5yX-RO zxVbGfAn5DsD}k1qLC=*iB7lmkG)c)xp*NzXgG!}rq|s?Znx|Q+x^b+a@^rFTDynj+ zWB`N~0CUX44=gjB+~_>ZH%(1Xud3IF&IrOV6HNirmWeGu*I&1O-Q@1wd%k$!!2WOj z;upWz_K8n?V)i2+`ADvAqZUBPi$jgZmM{nk$Zs7&7EGZ?TBljAkeG50^vOY;;Tfna z&YNyG)&c@PV=4dxZPP*F-vo-OVD-RA%0#QztbSy%P%L9yG*GKiADp}kPa!@v~TKS_BhUgMElPcI=o!8lgl_ zht(+Ze9uom_OVaIOP4N5#>U2S=$W}OY2)ATeh&yh^Wj=;;Bw@6i5B3`4}8gKy}(E& zu@QG{ejAL}0u)H3qDom+%4J3;yg<$e&3G@J9iDA^eR zNLsBpU%q^)dBrPUaYJR$yF!Xh&t0fh{bxR}&tMVmp2rMBXuv(L3yh32Uw+b<_4$B*Ao^$6zXni(AG0Ch@u z7=&8P5%Z8&xFvnXIUNH8tfDe_A-WL4ks?4~6+ovmhVD2Z_ztW9prkpzq=OVmZkVjc ztROzX^_U7C#}o^ptmCg*weo+GIKBv}R!ovigxNztw1@8jg0|I&I<#bX$?(00>O<#2 zKp+06KmBd~@sEFM-0jZgAN$zHt`!LXVGnztI(c#?s}0t+_C(QIBojprx#sFTt~7}G z4kLx0%vqq%%^BazpI)$yM#mp>9ohi(PqpISfaR0(C#W`Yl1N1%7&h|0U6*T0ha>@S ztXV{v00x0C!r75PWVtq0WEmvD>LKFoGORMXXV1R3mP_TKo}TD*JeLJ&WDqcVb^&cEt4aH!rlV9QID|hhlPLP)Bpq@a zBM2$~&CzbRm|76BoY7+%X>G6Y(4`Q&b&kW7KrK2UcBCe!2{J(R1ZK);ZG11nmlTL)R3HO$2d%gn+;q8|6$y4pAhxrCFeu(*%bABtlgJ$uvQ8faD|vz|wXH z$!^yntGEmXaqR^R6PBRN*ttYMjK)yU+NX?%*-H@C;Q~5NtPsmeKSXl>;~)R{1Mh$T z`}3=u1>X3^H<~~H`On?a(Xp|E2M_-F$dRLcSl|SJ*tl}#$~tJuMJ1OpD;N;a&@{>D zIKYzaF)2MaH>>96=Os2|gE$Jh60jo1Kx=Hyi_l_B;0GLo_4tfzBQW&bu9IbCj8zv4 z0G!h)o@ppjn!$ad#YUS#o3j-5B+mnk9|`<$X{}Z}ghy8eV0wC*hn3m6xy2hdZg||1 zM&rNneFoIMIEmHF%&d}l^;9DoD$daelt7d|J_8F#XW0+5+Z{bWI|~qUmd}j&tpot$ zM9vAF)eB-`>F+N%TPSqHUFTH}SV~)VL{Wvhf)wMPMALbGOHf^Ugn=YTv5vjL1+%j! z|B9#cR{=miHk>_|2rmZZ{16EPdr-p@?g;{_tR@|Etto7x+E8Q|9l+@}>pk<wMCFLcOi7Z;29lZO0Z%$4&-i327oe+TF4Z!rItPuFp4X# zIhp2_7S|VDy8mGLllZ-|`Sq`VooF&?a3C^hS-TS-Jv=)09XOJ=I~|3c2WJ!7W3wXL zO&Sg3N#(#&mL-j1X1Hm>y8_b%f{J?{lEeU9H35P{nxNqL(88#>Q9D2vPx zZn^neMhvh4yi_B8X-jslkIMeC}8B{CPwSXi7@Dou_H07)7Xxp}JQ_p|? z^9{}l{?g&$%kiu4IWEd}LA$NBikkxQgb|doiRhs(6fotsxum~bLo1H14DxF6)K?Kc ziaysBQOtC1)tRLSW1$leGAr~oXc)rjPrVGXy7(rvTPP7bn zyGIv6gO&stp9N%yu~8SnbY}@yB?tu8)pW|3QWVdy5R%UBsBBM-zDtP(2QOD89h*Eg-|Aww+%=xZ z>cNx(u)-R^85)0b*JOX*fkE3V)$(CH`_uH)^mnzo1?{Xe&s2B4 z_x%b{xzz9Z;b6Dh89FsHi&Tk*K*0bg*8`xnYQ^#voS8a-`UAtmM!oJ~qqVC!Kc95E z@z9l*U-F9H-l(yC$F9eWPaMfh#j>B7>_n#%ch5Wf^otiQT6BAquW$ICUUGPJ{GZU8 zNuZkM004Erlw_%oN&+ewQwWQ#^Upo&|L{}))0@a4%=s=a1}y!MUqet&|%>CB6UP!OZy!7F^GsExT%FZlUboyZ7~_dk;Ro zdGbUW)Tv=fK-QkX#dT6;d9kcFXZQ&tM~-+Uv!{^-%8<>(%oM7YgV{s8Zp5dXLPvBV)oH0<8JTlw)hl$;=_dgI0omB%R_Ja`a~ z&&!_}H*TEs#*G^j^4t0NY|JN5o~RO(@W1+P`$K0CWOy?_sryFm{Z=|aPzaBn4l0gKx5erXyLgU%2wxT!)%CgL|-4I9OG zY_O`i7|@_W18eFO9L0bdHEIZw5C@HL_|gG1GU^X&HEGf$cAGYB92z!k=u)|IWn=Ln z_3PJHr%jud@8H3M)u~8v5)C9v;*Zr43%}UPL&(*VMPZQBVd5$sC2WD-MTBS-AMf?eti@j;nrn0wg-C9ek ztM<~ROAG&DXj!5pbiyCKK!TDYMT!W;P_`%~ayxL~fH@atDjKk+f+YTEM-&Wt~N_;53lA;KIHl}5V@aIa%-Fq4n~jZQRi;>0vqs?34~ z3*s=5)h7g2m`>2icNpJ^xM*ulL6u{#UcC~L?M*sj#E2{%I&^Shg0d2*R;`-K9AMO` zQzr|e)Gj~V{mT-_@5JY^Fib2dxQf}aV@E}To6em(yRBcpKIhe|SJxdse!K@8n!H@3 z_xBmzgNDbsefzcv`gyT5&Sv)P**T9LJJuhy96x@10UB-lzvYa{O(C2ujPqW5_wL;@ zZ{ECu65L>o^a~d*EJzTg0~c7HJbrS`dL0EWYiw|hjsFBM5wI{Q40Iy3We}Rs&95!rNJVO0HXMVgb8ZwrE1lJY3z>8s!Z`7z! zF=QYrW>onNyTgW^~4U`sU4>TZ#{%QC95q%;`wI`~{X#PrR!= zb4ezyQ5C>bV^5wu*;oPtEaTzBWzSK7HC~};G7gQg`^%bcE&hNGR`Ie}bgr8OC8tiE z(l*u_*&!8KAum)2ImusO;!DP1Cjl3pna;76AVMepg#EnAm`_5PT{O-5?24>W98>_= zBRk=q&m>0XqJdqX;^^r3DqXsC#i2jOj@^ryn|Ws2f{O zBW7G3>;F?4v_w_az0smYGpyz^MULn-(j(rN2Vwx(+M8^N50RkVvL7hTRV9c}k&kh8 zb&X9hqA~Hc7w@QeB<;K~b?Vg1HH|XF2pvHxx`-T+7rGz@uxdPIC~e_4-<&^x{*#0x zN|h?5uvbsP7WEhg+Hm&l**iOcjY%;|X z27CF;bLY;T1!-BY^%CCT*s9Px#32;bRa{vGvuK)lWuK`{fksJU300(qQO+^RT3IY@gG!k_4TL1t624YJ`L;(K) z{{a7>y{D4^02EkBL_t(|+U;9;a2!>7@7KqiJtJv!%a&zZr!CvEY%qtpiX^OSbF3jO z-r7I7sbJ1!Q``g!ic~5bj=E&qRuG*=z3U%#F;H#alC z-!Js`_MWi&7qLQfzNP!*J1E;n}k`0?cHufJ~opA^7tx824H z3JQFoP$(ivl3x(4U^tvt-_TIMHWG=H?ccxuqrSfWFJrM-@6Me&wa-5L?1w9W)vH$v zwY9Y@kw{oemo61OD8XQ`2m)Af&g#`yd%fOyhG}@qO3RkXimX!qnwA?ndbIQ1J$v^4 z!`Rr^;f98W%vD!iHMv`BM#307Edr2F^uV$v=wi^G@ZNjxNt&jqrfGUWoB?w$fPdH5 z)YPn7uwcOz;c%!5uZV_WFj#_MnHJ{&UQkq1Q+uN*N=2QWotq)B-Pvq51z}k(^V5zN zKS7x;B#b+E0;sRA7gnuWH8H}6AATsJu)@MZVQ6Sbl4ZG~s;cTwOG`_awYIjl!2;Go z^Q%-gxI%2r@_YE3`RROdth@ME#8 ztSkgtpha6Z*Ny(3!Ry5tuM3x6eGGNq?W)hfX5DsaYcSy{G zLDz!loCHHv1WueQN%A6CKtDh-OU+$D;JKmex{1C_hB8eUyv&IJ9(m*u0P zO_R=Dx|v1%IMyrWa+(AI7>Eu!T*??384;q#bh$Yd_J#MRaKp>tSmRt|D0-{ ziVXi%Kwv}T(xt!jdVPyaOG*U`znqq1BZ-9Q@%pT~`nn5cS@D2bM#2H}oY`D9D`Zef z5YQZsqOEm2H%yZYg}HcQ3n7d9W`BQwV9%aC{_gG`0fH#Pdu5D?YDGl_xyZqtJ9q7q zWhoBO&0T!)#hmdu6F^>Go)2cZ1m;-!Twh-+tH9@!QKrUer7;P!u0a_=bsDv_U$7KvTncq z_WyARmBEvRqG4PH2Kn$zVgh`TfqpBiWi1A|ph7Yn)VS7(c`!-s88ivTy;Lm#C+ElX zC>Gi=Evs1&0q2T9)9(+Iaj=9S(LX0vMBg@^I96g=N+_Z@0TU#rt=}v7ydFm9w${O$N8ya-K(xRGz!|sk z03FHb3w@B)kN_rUW=u!BbS9HuQ(L>SyQ?cUJUsF>tTH=3p0uLTejhBOAe~Bw5lyO# zi%Y@~_So?7(7_`e9c{pvXl?D1^aU53tIviVGM<~`! zl1S~yJPQ$#esbiwvj*pY9bXaL$wQq0uj0{IbnEeB$9}ta-`+2y z(VoHC1i*g%>)-gn&=r?lwDzAAkD>CV68Cp2r)6!;p=uC<2GobNxmNuUj#rVn z_7q2OC}?Z@J$UBPAeGKoAd&F`nT$+K7@w?MR4rq|prvZH=6!rQmAb zT+Se17BN2K@4KL73*Dlwp{Qd3(Cef9vAsh>BOrOq+`M`7jDnD^yYA=0@bIV+DU39R zRJEE+8u6Jx%#HIz91+d^T_V$!ZKff8+_voJ^kb9KXjJ+^WrPhte;tI{xeW;9{pS#E zv|Nry6fomxUb4sKV^Req0VFV{7hwW2kR<|63cpYgBg=7u4T(%7SV8{^<{cSi8fGx) zS3}{jeExZB^+k)SbWF~sfuQIyFiKZ@`;lk;K7T2Yd^!=~>y@^nb!v(Qy#4muLPLGM5e|p@ zSrVmveE|mJ=)leWNQWla?nWjU*9pxDGr*V~K{)u~Nd3s}5tfD&o8mbKS`-o%XI$rk zG)SOyO?1%va4QS%Q@4y;fa`*EA~D+{=sswrC%(SkzE9yY-CMVAHK$C5;_*12tbozt z`ue)RDlaR$oTj`OOw^$H(b0rJ1{?~i!~oYE+Eez&5IX4|X@ks}{2fVDhK*y*0Gi=3 zo`8^u^J1pxGLA}wI(Wfl;-u4)<`x3iIAO$;36{X<9|=A{xI!+*a}q|6+;=gi>mG_s zV(^wAH#jem7~X@s4sJlGWL=zLS6mFmwG_G!#c`_y9&zQka;1a`8Rf^>OuBd5wr$pwW$}+c z{+P6DE24!}7&Ng)?5i;CqutPLQXxvjc zhSMVJ2LU64!pg(Dlz>u_u>V_`f z#!Yj{{P_{WB-3}ppyTIuJNG^JnaRi1DHmWkcakB)Nw{n)L&8tz_Ux0>f(jbog3kEl zB8-G6hC|^cxDie!(=D>_-xmv-O7!&gZ;=!^5>kVg(n1CX8H0>RQ&QSc)nGO5@x@Vl zf*H;tgEZXGoDHp1cPc7rI$4K z#^7WAfInDPQvBC>;m}WUO{2S@>?S%ccXS|sOsbteN==RVAH1UFis zCnuyzu1idscsbcQRm%qB@l@8*u%H9|OoU_z7EO32sbwt0czU0oh^_v+G z)EWr-kK^9Xcr5;}C$-hmymF=R7gulasD59*C@F>6Y^HQ%GyzvpOJRaCq+B9HS_>Cc zroc>W2=NDmD`h1mBIXBe$?@?VCQ7B3U9$G^a9AyCJ;^ZF&jGKMl4Eqm^& z6&Ds26|F<~`kf@Q^5b1S`++r4NL4p=gHl#s&d?=95|Pp?kK#?OIj8wgu+;yHBzy>c zzKBTHhP{m7(uTS^tVF-l7mE$$G(DsG<&1nX0@%B6A60GLkA4(edEtcvVMS@nS5@i8 z8?RdjMXeeb9Q@UL@4w$&S6eOn13|Xyn{P6m@j-K-wND& zdExNZO`Bd$L*Z1+%F0S%#qwnrOzoo4s0K4N zupleZ%+p=Fb7rR^EaE%}vkPsyach?&v>^I!z!-hlXg$cc)uxqOZn-5&-J{)pM?j~) zfbcRfwg|`2iP~UUJ0H(~2BvBc9y~bZ8J4vfw#=H)NBQ&}YrK;;IyxGd-rt>f-Wh)Q z;fIT75D2fQ%>t;vJo{&B1J{t8*`7f=(^T%c=bi?vGsd5K>L~?l{|DZB>n&}DZw5xE z_jSh|cgSnjthuA?_-3Rq$<)e8UYloV2q& z`Q(!g_W)i|oRxryDr`83oyz)w6$&w}c4%l_?-o1MS z$V+?s6QK9$r=PN(o*wJkYpz?Lrqvk3Lr^Y2s7IU|NA3swRe*b^2`qfAl8KQ zP7t4PKExn!z~!9CzVQto__l2e$q6|`W(vO(8qTV zKKP)D@hX51?N2=M#D6h^(`o_GVjK)FtE;QK5d?jMu(lmw)?-M{) zTwJUzTC}JX!ny*Nv9G`WTEzuYStvM^3Wm$ke;+1 z!M6cju!a-v{kuYdYgx$hWYi?yrDOC&?QgyHR`tafUu;Aqndjbn`Q?|ZQ9Y;B0>Ioh zY%?u@i5g(49Y==!c^XVW^3sVfJ&r=t*0k)8K~QaAB7_8KKeo3iUogMVcu0eFENefH z_RqosvL|X+fO6Somt6_$*-A+f+)IaLD#$H_IVpGFefRwD(+;N0la#yex{KX+-+fD< zp#ogagy!Lsq37|(AD8h}N&RcDy;gBrKb1Xj-~dGhmsw&$B5+6bqY|^ts9(XPV>7*f z@4fe~oQcJvk73?6Jor#QBR}c;SV1gs(Wh z0yi*`Nx<}f2jtHpL`?@YA1e8N#&HFDJ~+MKS6_X#_nBv&(Xnew>wyV;n#<`r;{;G% zUfzI&V3??!vv~31e?;OFgSjrloc%B?;8}#1e+GaVv!MTFs5=~&7=a7ubHK~oVZb}@ zyhGpn?T6-nj}@6309HU%)qGs9qwfi4No3+U`~k-<)PXr-e(qfWgwt1870~>5IMyQ} z*$(DE!#Sb#&@Ar`{^0-55dQxUrMJ7m%(w8>a)99L$hJOt^wCFCXDV}Zk_g>@|NRW+ qPkDagx#ylUg|p>sIa_|n z-DiC4V;>uO;~U>--|v3+yT{otZq4A$n>TBtqoZPCVnX6sx6x9mR9jP1)4FZjwmvRq z$9lssjCFN)tuYKUt!YyDelUOH#POe8cG=}$%jI%MSFBj!JpS>IU%ITkLBoW&djXJA z*2hdvPHI2>=}(O)iqdekZ<_OXxE z(L`HYn>IH$XN-@J_w@GmKD4W=Yt7!hdk?Kyvu1a5bMq!Jpa)Y7bRnZiSe7NjD7qe= z=wUXSJ?GS^Q*Yn7bLX*SG8y7sw4}@H|2?}4f_cX_hUyisc!dr}Gk8oR%7H{Xc<4~l zGR@TS<0k^(AllnI9hBsnNV{2=RW81L=#v161I2`AK5uBF*5KFMD@2caIp2;+9 z1*pTW>rMgyx9TW?z*vwchz!Gs6!2$*QEzuV0PlV8dj*VX9T^#UR9|1;{bpunXAMKw z5{X26DwXbyWK=}d#@4P``;fr*TVNofY^RainqeB6uB)zBoK-yx;k0_L*)60RQ*DOl zc?JLoeJp?;E-Wl)Q&ZD=u~^VcrLu^}W8T2Ph}+-a6#>|@S#T#b@#Qan*%rFke((Rg z_g4_rWk?D-<9ohX%;j|3vZZMnE&#FdSCK&rf{@N4Rk#K~(G&~RUo;g;jcI@}bv?m6 z%w62Sf8Q&*yL&F1m>8Gi;}e?idu;%)O9(yP*WcGMd1mrpHoJHw-py>>xY57&z3*Mu zggZk6OelC<=*DO!lNp4OrivhfLryB{x}FP)ClgXNL>A;G&4Vz|5KYbXd@h8@X$c4$ zfDn>nm+3+maY3JlB;}GpV{X z5{YCN#S%bbeHx3kxi|2o{n*xOYHr@Rd-v`S9yxrt8!-L=`_AB-5=x0`qRr3GX-FZF z%jK=E?jGGVjNlvJ_?Fk*-RVQKqW=DVc}vnp{QB3wX#jdpTDx}jhm(n9BgRwI1iEst zSS(AG4$4SGhLLp~N6}vrD+76BnPfl;U4c=HdI%@Wjw{P$hcckVm1_&Nl=??fH{!9F zP~VoC8gQ-?K`3WVojm#O;o+f+V)2+;EEFZqCGqK*nP#W#G(f;dU~2>H$)e$2Kts%a(qtaOx#`aJ9bKyc7hDbgBGCLVd@=&@Gl zipr`u_8C}yuNB*ZFib#q+OVjNnToA5Q&UstoH%~`7gt<$#eb$I$LDUYdYFYmDMUGQ zp!U45C<;p^rlPi86*1;7L2zB>yZ}HF-{DL}{Y`ZE#O)aFs_YpRM--qc%1jRqgGh!E z2V)?|DUH!|t^+m@D5Mi6E*l!YFCx6tvaJ|cDICYuVT%wL8$hT*HSUHN-Ka2+gQji$ z$3On@tV=Jus_@d6z8X^t(O19v)f)uDc*ZlHq%ADw!q%3S)#-G4L{StoNcBoy8Z?ek z1uigBYUGW|`GR|@ z4lIBOSQdkACKzQzumgcmYYQ-#`w>Si(v_@$8CE`*a{}Lu63IAl5BM9S6BgV}UC<c383!pKSn0Lv z*1c%O$`y~td1elWtbJo+$G;tm8Rubi=_~*q^{7Y5*SzL6&YCsr&cEc+OJC62*ZY|E zwzh{iG&C#+;&uoSp!ER5XEf1B(dy2mF%C0~7RJ?cSk|K*@~nXDO+KmKuf$t9P#C@bT~j~~DE^yxE=*kHb`wQc3l@L&hZ86CE5ODVP{Oq0 zRjXdu-Q9H`1}}CR(-o%}70KLACKG(;djSnasnSZ0Bl6iSPmXX%U>#Zq z0Aww{!G=1$HS{|Djiq-B_Ij$2bxTqqolXkn3-mxR80vi;KvouRV3{gG?2f*^-tGC^ z!sU2dSPB3mC%L**2cUN3tzjc!@R33VVPZ0389E*b2%D zYTZ{=!Q@F1&voNH-z7M;LlhQL<2hGniBlBU8R5!lk7L=jB@Wjb9AJkXwN7edLk6V| zo|Hmq5YxxtiIO&9{iW52&>+PoHznIdulG{qc`~ zgqUT*bVFkn(Vjx|nv2EaLaAIVpH8ELdSFo+264LG8zZ;UFUP&-^Py0z+oRTwplX9O$SV=1-QG7TA2 z9KYiDl9MJ5WCX98Luw61990Wx5h`)49cnoTEELH^qOnjY9BRlk%~_TnE(L(?+;h*> z{_*#}`W@}9#s2=jd60GiKbNh?&tPjT%urMYAT?UjQHl$)a@ zNoF#Y98m=Xwx3R=Q`4q)Bkg<#`IfQSX5yJFl3GzPY{r< zN_dH(!xZ8Xo6ND%rOv<@eZ75;M^MaMzVLoSyNUM9XFgNQ;hs<^mZw40CScG3Bn@o1 z=(^q+P;D00HzBtL-cgP5OvA!T`C)Y9@i?QU7=y}!>v5USFb;Dnpn;aEnuszr$5e+b zyeq0Jwom{vsOqKm$m4rDl@wm(_e<`HHPm;3%C|fg zv!{f1Gwrv({f!tOKVuh4<>q86H3-$uV8J|)%;ON0>gw!xZDT{`@qkt+=u^p*2tj|} z^SB{e?L??J$n!!ak_Mw!`+Y!NZg3f+;ZQV26yiztU|)Q9G@MM;DU;Du)!^9JF{T&B zoK-@jO1@*PqjHKjOp7I%0DuO(vj8*aeL}m1?a5DmvKSf~1#*T^hlR;mUF+(!%%+B> z^-ax+kEuDRvh7`BLdz^`4@T_pn~G>jhCo z7iB1zrJ)1R_oq_HQ$XR8>8a^I2<>*XHKU{2W1sd+I~}*1bTiiKmP?&w*K32YwWAD~ ztN&|sq^qNSaB!eMjbGdMI^gRC7hQay8z7Zk=WusN+r2WVy-?<7HDofK`wt#^J{*jO z1_lSFW~TQe^-9||t>4ww-u9qt$H#x$+1|eV;!7_(7a&eamCQnRY}~l%{wR?>*X%p+ zgX!t%IqY5f|8~s*N{%21!#%sRd$t+dHczpWyV$mUif!ArZQHhO^Xt6byx7kE@73$^ zl)9>>rchElP+AoeEspGClBpy%pZy$ z0e?R~5!SY?rY+RIU1uGA{=8SOUJc_LBP)JZA8YKSPuGeMuGEK*pRjA%GF)Zf9)@E~ zoG?Mpbp`nQRF`AcojZ3@&z?OKebvg9y1spSYp!3rUg!Fa8^@iRd`LEEQK zpG168dm0pA3-yK$Lyck7^}>Y<)i!S2Sd1|ypUX91EDOre8U)e`FnaXp43ww&#*G`N zqAU%^(?Q;K>(=$+Uu5$oOP2W2{X`buP+Jm?gCQL|+GCUy{1T}vng{yA{MV@EI zA8kea4AiJmLo8mrI5!L?HXef^cPJWeXk*w<0^^wxUSYIkH0PWYCIn$(?c29cELyZE z{>hUk>#-k|o`ix0Q{XMxQHXB%@Zqs(Vt7iSc$OW)T4L#FOeufXCcL)rj2Sbc&YL%{ zXoL1}CuP=qC zo!P&C|4lyd7R;PE(^dfXm5LQBI#j7r#ajFDFGAYY`-{w%o9Vj%3c9*_~@t@_0bOf(4JF zz=ynVhjgYl-hY8wVH_!L6=MwEGmT@*{rvpU)=vgj(Z1oba&Bw*%v1!R7q1K$Fu;=4 zC4pGPT&6NC=VqLnST2px(kMuO|Nebl`SRthuzGYxRmKLC5uN+%liE(>)&sV0-)>#9 zWJz=WX=ZpQ7;A_V$(j3Ad-dw&D1HS(Lqk1AjvSdGGBVN|fpS85Afs0qgP*Mc(a77ODDb+xSd`AmbzKhtXWe_)K4J{;AOF~cIccra}vX> z7Ze2wApc9j<1v@bNOg(;MDr|%4Oqo`!8_0s!sD`RCE;8u9smkN8QA~u+KyVpJfijm|8%zqz&AcyGqC^P~ z!}Ktx46RQ=w3)Ge?b@{w{_~(P5qOa=v7itOEq_Rng14#^PI3D8@9!zT7ewNmxOjc60UW)$@1k*db$qF-U#R3v}X71p!G$ zZyy3lI^488L98}~OF^{jL#mQN&lXC-lu%GgFyjcW=|l;eRR%=yFQ9qz<~}`o^oT<) zmYxuoG*w{y`0=?bRjQ;Qq#5K68C&Z%c!?{KUoZY8;068!s~AMqxN`M3E}vffPoUZ} m7ylScFu?>9OfbO&6J7#*#BHSJbzbfO0000Px#32;bRa{vGvuK)lWuK`{fksJU300(qQO+^RT2?!DqClhR+82|tP24YJ`L;(K) z{{a7>y{D4^02RAQL_t(|+U;5ia8*^BzUSWi_9ffPzCi*ZfrJRiBG3p5XwjCU4KAhS zT3w85sZ%xcA+AmVf>J|D1D$@iJb<%Xk?tXXrM?-bMw~bmX=>%-BG$$vg^61f{4V9IZ3)0fkX2JsU z2u#5|(>0Buovv!yw}osiDJ}h3hR2h2^5n^Xf*_k|8dUAHs-Jm1vz`|L+;`u7A{cey z)(PSi9pzXUQHj$_h5uyTw zB7j(ar2xtS}fB0!r$ zG#2LrL34r)zy?7uowq?t;@q$df&zyBU>)UNZ|{VhoZM2Ma{r7VIFfNF0; zL*qLwEzR4$`s%CNx88co|JrM>Y3D5pY~8vw6U3}7nKv;um$Pg2>TA`Ml$0|V`1s?Gg#!l;2;?r0KKkhQ z4xzFrF;Y_um2nfsFD5b4C}~RvgE}z?f~g@FNDNvh=3yyBE-*nR#;NK6L$qXqW;W?) z$70baM+52$W+j`=p2NWsg2eblERD_QhI~2wnAVhO+5xDfOE1E!qZJb0(1{OVV~iRI>I$Kgg=VPPT1jk5_uRuw(g-`9UUHz(U~ zx7kyuy@)?z%5JwZ1Kh}o=^qC?5X-GXmShkP+oiTPi(s{wxiAu12XAH*zmF>_A0Z(? zdcjad25+IU(9gmMcuymhTUt00Nu69)cIU~qHZPdoABjey!Qr5eyu|A5>r0D-BW?hA zDR9gUcMP05b?R7aTU&z{J~nxBMR@-FIm+3vLncoT3=jK2A@^P6@2E0IcRVwMAh0+j z4=vz1XIQ7UW)rm)sXdsm5;J2=5El{@i{PpefI!#O-(ogn94-ZVLiUir%aMMV0|G&! zNealY+HF@g9dFJ6u8>z*F;CItNo8{sRkZTwULTH&8eB+&pcgDbs(L2HzL6jt1B@zM$Pi{Tn92yRp5R%|_EE0)| zpoJOO!VKy0NRjBKx9!@s>sD`X-(jCGfUd*Z>#x85Cj}wheDn3f;E-RC+T%!iz39Z6PKqSnZGY!3C1&p7!!~O2(fr9 z37CfFr9^(g=cFo-)rb(T1+>W!v;+=mJ@Aq5a>p~>+( z0gMVLkZ|Qmj}a=9i4l;WekX%DzgHENLMiV{q|2(z$LIM3`WY_7tARiU48er}v_Zx& zCr2l0z+Fn@dVnj7%vm*k`rnmJDO-(vW&lZ6ZA(k*28%`d3avw9EC6vm!5joeW77SId%+b@<4Kp}lHs_50?kk)A@W@&vpL&tcb2E5xU-Pt z?wK;B%!jb4kJ%C0yLT@Ljq9OMNa^+VO8o<;q|VN+c)&kwv)HT-gc<>9DxaA9DJl`K zfC!oyuEU%z7sF%>`2iaq9_CE*oB?fs=7b-lC2k?i@O2tTHm+o8=uc}314J1KiVIEQ zf>d!&H6efmM(OC!VFh%JW)pNHF>Vp4jKVp+w03rO@5G=TUw-+eHfAw|%?biO(dYMP zR+N{o$<58VguAMyiG&A3K0o&}m(xiTgL$qs?%UY;p=YoHg%fH)Mi`1jSit9_%#oO5 z7>8_=&|f$Fo3w10H`ny2`AcKh7N{ex!tH(36(D#!qX5=h5{(Ig{ULhFW5Mt`eHoZOF5 zG@|H*43p-iigC>eVH#s0tXi|OG8bBGHV5rjj&T931BBw@Vxg<22LVS1rX5Q<#0N@-+3~0;fEg51HrJA zpO?1??lH^oXCjzO8f+SbD+HM2b5x07ZtkkW{hl+gsRS!W(V2)!6w-R&-g+m<7=!$TrQ(OoB&?=LeWs{Dju8zF~vH*%iJnV+SB!;9h zN5W;;*sdd23ZhMFiW|w9Liq<}$woq@NZ91P3Uk+-b?ao?wymtAquV?j3a8l}j$%qL zk=+HrSO7_oBPToS?^E2a)!>K`Qx3a>sk%n-c_g0me9Z!5 zjXd#x-aESCh8x&~2^Gxcl1S5fProSSWSitvcWQNNTFN?DMKv^;o}HbIk)vj$&)7yY zbF;<1qdqt^s70_WhVW?Lk;o0edaS?#37{lu7!;a}no%GS3DpOo5W$4-47=2(l8MD~ zM`xFc#7mDv!a`v|zJOh9%oo=Q=Ztj+GK-6g3Y}Pp9E|{_ z_U%7Vp9>*{qmjnkEYBntzy-*BD||e=?pVXm!JsywsJN)N&szr{4b7QZJ>Qe*xxBrj zV_SA+=Hvr^IJgHw?4>PQiRoE0X3SiM5Sdp~TfYfAK?9gOG-vkAWoc=t_XmUF;L+Op zml~Ry8nE1VR8FlZ!%6kq-CpmhSTr6#hHc%$+l%sQGwvdri#|b$V6hPoUOm`FXi-JoC&mzXo{f*e?Y8n!f7# z>(gN{>p)7;gyN#Ey1KfD_U`?vGA%V_8W;|EGFUGn&VST5)%g}JxX4;mRB$vm+tZ4r zvU<*s$CCw_mK~ROQ0Kz$j=)#{xxc@E34~DzCJ!Q%S+VNejNeT#OFNF&2FZW#z4u-- z7G>JoZ@;b3IG=z1IioXy=bwK*9p4%J6z2$gR;^mq4x!CJ`%rp%dM)P4!Wh3m^LeQ2 zKmGL6jd+%gL!NB(DTG@#Va^t~pz>Yxia(a&l`B_DFTM0q)w9n&n|Im@vxQ`VWaeWK z*Z@Mjt*x#91s~rGzwV=bK0H$Zc(joz5eUw~@iLCuS8Uw4QHG_6)z#JW@U8&;Y_OsN zoJyC#e4QA#98Bdt{q)o2J9g|Sfv>MaU4k(-W051QS+k}Wo2GRT^mYiTk(kGL7My6a z^CEz}ygYTvlqp5ir%(6LZ)nsHf_{N|8JPTc5axxM?!&Qo4-QhBA%x$+CHCXF3))sSx%y8wv$(Dyo6s2|wCV4#4@yv)o@J6y(z&`Qq(MBCJt`RVtHF4s^d@z&>P09*T$b3p4QxXQo=5=II7 zKL89kiG7P#4jnq=yz#~xtvJ(M@GUSFUw--JnOMWDfi9q0xNQV$@~uziMc% z0={hN>gwXwfbe#4V`JmLAg_11EPs7#=28+}UvV7U-d-Gz`8g8%|}o)3omF$pnNg1Voy1`TIHYy0t8 zjlO*OayDZoS!I`8a>?SIJ9loyqvJnT0QiV2ZRygb zSGTvf?}pX%A~Y*iRaGVc>G#I~%JOKt8O(Pek@-0U;OXw}{w-o~;K?VSbR0W&jL^Cp zZec~*YJr7hLHqZh-C97ySrIrlH<#A!{m2MUkU)iVP-uOzfB*h>F>ZjEr)Qw;*bf3h zWOd6)qA+_6OcfA=K=ML>)fcF}h{@g54xvuP#8srt=H}*pBtJzkJ3p*r@P8Zs)mL97 zE9eG5{!TbY1z<-^H=L6w0IhrkjTR!|C_wnyh~G|xs}Ah6^g;l1GD%=H8RmNkv3v(I zF$Q<>;*4P;p11Pk<17W?EdFQxsVw}w5MN-}@d@25q_2mNVwNL`iR1kJL&SMA8479- zv`t&; z1CT6D)`p*xnWgTT?wRSiw)y{S+qUfut`%4_xPi581=hCt857^VW6yLCT2+;2t7{!t zd*6t(pZ7%azb@gQBz*|*1RzB=Pr~pvLLExwz!b_D&_KBea))0R&rvma3m${E19W>4-SG`nUiu#fKmoppa1f!3|(cXYlk;K0g5Q9{@n#0^A58#?Z!UU_+5GQXvu5L@7#$6+#e4 zDfM1SO^J(6p3`wgiq%<6!WTOJDlZ0+9XN0nlrKHiiI0N}w7i zAVY%IJd6lss;Mx9CsDznDj=B%JzyKyRHZ3GQ=ugyo3DLO54Zm{4~r_hp0~Qziq)sz zSX!L@z_DY8!yo_nM?ZZ3``!fgCP+eQDFzL3)q?V*xOpx zqwSU+%KD5eae@g9dAny_-i)iv*2c|5rN%VEk}8W|`{`&l?Vt6ah1KLqt7}bD2!JGs zGzuf__4{*`SYH3W_r3GImtA&Q6Y&3Z0A<*p!;oNAY>WwOsO~`63moiha(sEx-zsDO z*<{D{hvTuM64v%2)=|ns)@#vSpQN*VRWIMV+x7&MeH*)N5LrLQ>)`77g@`tCZr%ZVUX}3q~!nd-kC$65n z!o1+%;?lZMKHlcW2*x^+B#|hJM8rszroNx1Ad=UHl3qX6cyn|67a#h-Tkp5Bve?Wr z4V%r?9*~WUjF@J#DL@L~_#1Tg>{)sC(&^yr*IZbOn#1bGPKt?cFjC#xeY|mL#M1Pw z+|c!Jxa$UYv_WLBZW}2dU#3#3Wh$Xyz!{{P{ReB!5uhoXzd#y3sV-i0I%W{i*bF*X-5YMoPS9j+)5 z0R`_>0X5c=Wx0r$L0_?dSNr``)|wlxT1|AcUiZ!gGMGOzJNxEGKjQAscl;T8*ux%X zY;kJ6*dUJMppqoJE7j^Ps+G#U&z?JX$Ab27p64cxk|_5%0Aoks*fM42_y43?p377t~wpY#xN6L{W^h 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 literal 7563 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 diff --git a/htdocs/theme/eldy/thumb.png b/htdocs/theme/eldy/thumb.png index 5c385e6a6ea1ce1f09f6215951af1ff64b68cbb6..47ddbfe36d1e7ab7b13cf3b3bf158dd0754c0bbd 100644 GIT binary patch literal 11825 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 literal 13620 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 delta 569 zcmV-90>=Hf1knVLBYy%INkl#R7epa{~XD1zWB+?>;(Ar20V3)<9jiK0asgboDAm{tWwYrC{p4-^^s2ob_NMd``YHW{ewThiKY!H$;6Z$&Y7N`uit;`H z006)k$ivh%)vc;JEPjx7LCa;aADaLG0G;GX>Xzyb>be&Vv+t$7sYVBsi#RVXU=aWS z#;R^9Gc|fi{9!hOU&tzTKQ<*FiHGnGCIHZpA8~-ZtZ>gV^0U^CN*rEm>QiE?@6v;*=R)7Uy?O(2OFxsAba9Ap6_s79Fv^H3*@xS-;m)N z?o%VG`$zJYtq!n7J0ints*b7d6nRE#+keWVMjh;E^HYX)L$~m(8h;|$ z*8$+RI3#%*A5do`E84J4_mqCZWM^)e?<$MvG4B8XcO}7j(Qc~x5XZ5C zV2m0A0N^)rNNd+|NjE-Yx_eaBX-muhn$O3Q?^F%Q7ytn9w^)<*weq<(KWnf5QraS- z4ZXDIure?P006*UoG{Ekv#@l@%KqO?Cu99Cvmr9 z)qued-B@3-6BBsN;2B@gnCwF~+K*G|=8%q7S=Oy+yJ$9AgOtr{I{E;OVjOwZ`f#fN O0000%4ON;6emUo?$A^d-%%@Ly;-mEHl1 X2_^L&E{C1~015yANkvXXu0mjf<@j>A diff --git a/htdocs/theme/md/img/bg-titre-rubrique.png b/htdocs/theme/md/img/bg-titre-rubrique.png index 17b35d88823569c82695eb73b99f620d98e2a667..d5d80f2ba9f8a1b5421e639900e78f32d3dccdce 100644 GIT binary patch delta 197 zcmV;$06PEn0+IrdBp_N)OjJex|NnTBqI;F4ftjg*nW&k#$$ginnYqb>o2!v&HGkEu z#?!9H)UL?XdkPf70001UNklXEEFj;YcDA#f?F`Y*cIGp(Y<-`A>+d6gpZN@f zIjQr>AO2_e-8dhBU->=*mrG9vZ5o;!1)~4}_#rHicGhqx00000NkvXXu0mjfYZ+Uu delta 297 zcmV+^0oMMK0`>xsBt;2uNLh0L01FcU01FcV0GgZ_00007bV*G`2iFAw5;`tbZpw-P z003H0OjJd9lA?Q+rG1yDfSIU)nW=-DtC_gTnYqc4L^XfYt;W@^$JDOK)c^ngFI!a^ z00001VoOIv9qR*ekpKVyqDe$SR9M69*trq{ArM7TTE}tUL50Ep|4p4o0=dDZ%G*g- zN2dsJ?>=(>O;QH$$B**7R0#ZurT$gwO-@BCpOa~NT*c>7hM00000NkvXXu0mjfC6$jO diff --git a/htdocs/theme/md/img/button_bg.png b/htdocs/theme/md/img/button_bg.png index 7e8a806b28f24f4661ca3c603d5cfabdefcac77d..d10c158f0bdde772960894e5a9ef236d29ced02b 100644 GIT binary patch delta 55 zcmX@k7&<}4P{z~6F{FYq`PbPm@;s6={yBcE=jden-}o?|gN?zlT3nzxX6^_g*Xd5B8wRqxITa|qthCb89+gn zbVpxD28NCO+72CFL+nU67 zGLNURZ5xx=_-)&KxJIK+?z6eqYIp6@chuzRi$!b2Km=h#7=*;JC7H^y-;ArE?gUm% zoV9G;Pm>qFNd7f=fTYrjEb|5>P|H6)YTsrQp zj}Gt-xN3TE-+*EU2cs3XbQrCv*I(jP1OI&m@&lVT?nZsJsRJ05SSy7w8WFHdf2VHC zaj*)AfDIvQW-MUUs=_;iwr3cW0$K7L-d4am4Jc?Vr+Jej*y81Jzl~WeiRF~leFu#O zFp%=eq%6O2Ab$%MEaZu2-d$wgSBPgxR9u3X5*$DdF|~Sd(7diTf2f$ zZ=MtqxZWp_E(cMNaR>sJ@TA-EjmC-qj9wg0dlvt|23QC<7BW@LU6yCFYpy~p$XLWy z1X|vN%`2f8L#TmDQhQ&>md1dA*xJ#Hqgn6b?N<*?fPWK0wu&W7Gi-P39cbS}L|QAd zPl6iCfLNqCbOs;oE2zyHAeRGtpq91X9_&(6PZ-50r2r6-R$(R3dKkc#o|~PXvQ7#! zzocxtDo8ru0O<;r&0NMdS3T7##4(023dv+L=eZM!4IARv`YQ7i<&pd09Qi4}@YV%ZYX9+(2)vu4h6!rktsv9XaTird## zfgODFV$A?VMHk$Qq550`yC-wz2<3YmhzKa9x(=;0eF%USk>(8!1CUIHR0Bb_mS3NL zo^9`cg+b`t#5|BL3F9H-_S?AS=y^Y|eRegwJb(BR0C6nz#27^{vWN&) zMo@X4Yv^Rxb1nfOwygrNR$7m)dqs>Os7MVi{(qoaqO`J&f!Y87p@me)5h@sS00000 MNe4wvM6N<$f(LwS=>Px# delta 950 zcmV;n14;av2EhlA8Gi!+008r9oCyE`0xM8VR7L;){{R3H000pH01*HH5dZ)Y000pH z01*HH5dZ)Yn;!t19{{E<1-Cm0!(=pRYG9~UIOyu}>bQ~W?epvH^zHBV?(p~UvQF^v`0(=h@xzYs)VuNX`0{29^08m@_4)P6 ziS^N}_4oSr`1<#?9{0Bh_r`$t>D>4D`}leq_`(7B#(x0#$%**OaroA?`1$+!!8!TT zp!xdz`py9R{Qdm)?)~0H{o*hE{{H@S4*q}@{)h$sjW7O?2>z2K{*y2Mo&f%y0sfyA z{-Fx~q5%G-HvXkW{-*-|rv?723jVMp{;?7MvJ3vT82-3R{x7O%VGY{FaFU{{?uCj)e!#HQU2IT{@Vcl+$H|s0RG{o{^AGz z;&=Y%8vf@&{^!a5?_&S||6Z%!KmY&$4|GyaQvd@62n!Gs78e;nV2_{QgjzU40003t zNklW1%(@L4OUA!o*G!f5K1lE3AzriJ>%VMRJXu zAvQt*7!lzPc5i0K_riJt7kTKn!sjvr!n1cUJ?gu?*Be(qd^`sUaQ$y{|LJ~R4?qN- zFO8dfr}=WX01=?gFXmy`TLvP)Sb7L zKaN-ChjodN631NI`WM5|=KSD9g(k7YSq@=m{&Uuc42B5$rv3hHwWJUml)g*g*zWtg zK*+h0z?ZM1H5u*l!2%Mfajjr{=SB%2(J%ApVKJQFj(O;T#4X-9tz}Y5s1Zn`w*Ua} YA7jKf&GIo&KQx!KomlM`DhUB@XJAl2uS4jpZ9ieHtUL(!6&jR=lK%Pr5 zh@G-nUVeYT#-PDS0AXZ^B1Kq%&D|XuQA}gR3e!sDHzKHeaVe;^#2WKO`0>R|!EXfkUZ&Oy0k z@Zx}ok;oEneZytLM_IH-@NL%crXHmQ04Gl6;)!Fy4hD=>s?7heM0ui(+Uv75zrg-s zC*ZttMysR%5Ckf*)=>%!Kh5nS(xrX)G#e}P9DdB{e19^2Hxkak53m0UV2S`D&g9l1 z9*#a{5~VC@BAkEWv3&dW3X{_vhP@0gf;QR}0HRP2Mf~qiaX%+2*V$NKW_hVgxmM=8 zuNRnVwK2wc1^$o5>ScVRq83j$=J@+-_3`Hm04Ei_@%07*qoM6N<$f-FEt+yDRo delta 710 zcmV;%0y+J{1>OaaB!8tzL_t(I%Waa+Zd+9lhre^qz1N9-V>^jyv7>~Ls#PmgXcwp( zHoO1}UVsH+#gZL7LdBYAV8;d_wW5`}K&YU$5&~K(aQ(0DS%JFKVS#U#W%u>O7NXTKa~dO}yG1cbd^h0)HPDrM+**2VZtu`ulfo z+{^$1{;eXxSKX6?KlY}U!G3*aG9vkM9Ipb%0oPXs@IIo=1DytX-fy%6P)C0qx z{RtvddYi8?8tk&UbDhVlpCRD|c>cf{ZL*4ih%=>ih=(_K*13EoCQ!n=w=QuuK0?(t zSR@`Vf;QS!08ywHBAz@G(s_w>O-4tjJpAzxp~17?_9(5w7~>WA>KDWrtPli-(TfH4 zaK^?PJ%93KL|BX1=ysV*VJ;4(wfxTwNK0|PC{R1wYedV2gTGF=*t@`P|A^^X9j_Z` zt-MmoRSm2Jf>X|U1_u*Vu!6WcPaX|ucRCCY`Y1PJt2xi(xO-O3fgziwnX{twA`h7k zcL{@n>~x>w(Fv^vz8$OmD?68OH(RTBDu8R3T0h_Y@bj-9Ji7POEy<6wMr3KnTEG3) s>t!5o-(Fkm+zrC;4{K%S-1!Fl15X1~N$F|MEC2ui07*qoM6N<$f-%@uEC2ui diff --git a/htdocs/theme/md/img/call.png b/htdocs/theme/md/img/call.png index ddfc1b7bd905e5d43d62734cff1a7d2138687db4..46327ada13ec3a23c5fe4afe6c3e1b4c89bf936e 100644 GIT binary patch delta 239 zcmViW8Buh(kUZ6^DAh-{)(w1o=6_ac0O007CxF$gv5`y2oO002ovPDHLkV1g7fX|(_V delta 267 zcmV+m0rdWZ0-gep9De}_pfIQa0000004WQchCbpK z#m02Lb?91p3Gd%`QP2JyRxsXJwcg>h<&G10Wm}%^pig z3N2>l=bi_z(azFRFrF9NNK!}e(FRFNK~l_S&(hq(rG6@iW8Buh(kUZ6^DAh-{)(w1o=6_ac0O007CxF$gv5`y2oO002ovPDHLkV1f$KXP*E7 delta 291 zcmZo>+Q&3OrJl3EBeIx*fm;ZK886+f`@_J%z+U3%>&kwGg@aE~ykPF}89*V40G|+7 zAf29`URGAt*Vngv`SNYsww*nD_W%F?t~K37Ksm;eAirP+hi5m^K%69RcNccC#E#cM z&U{Z7#}JO|zWrypn;Zm=E|1#PzxsPX*7}?ELe*v_>p2_Ky+6!3b#DLtXzdqs>&_gX zZSLZ-cdMvwmD}^`ef(Q|v*Y7FD{rtqaU>?|LFR;}o1*4H8!OoQtZzwtF}6O#xpt1p zovt40B!2@*L_t(|0e#EEyWD&L#qs=O?^|QGb-U}fwr$(iZ*pzq+P25G zI+MwblQXJyp67dZ9|{0<@G^bn?we+E>lH(8y)1My+oi{~q<_r3GsUJUw>LmdPMfIV z(doR&UrED=P1SUWvI-#^FDY1*RCvQl-1yMOo9tdgFckS6R(~*K6ZmC1fK-aZvo;HE z)GzQe3r@rQf|VK>oB1cqkL3g~{Zn|}VaAzf4By!^YWOFVLAO8-^8b|X`*R?E~gNx-6 z)q(D)hL__J)PJ=1Bf`o!a*ZxowfWR{XsqeWLqXtC(>I0T&l(1!5~>{>Ue0oO-!cqO zIEkazi+_e6E4%YhloZr-4dMM<60|vsrdd3hWbvt?3w~C^k!!!e_vPIaiVkp+2D{UP zCskdz(dEY7UO#RXHG>c%Or32wbhDEFfBlK?@LhS=1b?prv9yS!pu*|#qorpEor4o- zY3;$x$Kz1mtUeI8zu{i2R-@hF)?FS!UIe3L8`!A8-yGY3H%SGhm lH6!`><{Uk72Z9H3CIh1!XdqF$qhA03002ovPDHLkV1gV%5WD~Y delta 564 zcmV-40?Ylp1kD7HB!3i1L_t(2&wb0=Pf~FJ!142!we{c{&px#E*0bxOOr6zwC~v7v zAJW-qOtK%xYbGvZkSSjA*1=mqpo9!mP=mwqz>x#r9@=DS^SgZ?KN29-Hp?wtHn-?} z=MtUPzjs(&qN!(6ENz5pvT9C>#gmeMD=4k5Z%Ke80n+f)T7SeWl_^}9yC!qv&zA7hK5%||H6UsIR&6#6mfc2up`(M>qX70BdGq6Y~)^DE5y6g*$&*&b-5XuHGAi+Y!H)LntLQLmyEA*~vuRD-lu zh4A|@(8E rJ%LOp{0iax2b=w0_^cnq#(pZ zfP-!c3Mwj?fo(#QNXA7R8wy-m*7>{h`QS&Z%DrG_4rqZ5uz!~H0&oS%&wzjha5uAM zDf9rkem@6p0JDteoPejKi2FD%HNb+H< z%S49ct2o|eBEzrklXEly*-7d~p;F`n`UZ)6RE)$>F_Id{$;cR#h5YAw1D4}SfbfRN R6aWAK07*qoLw}fy9PfVKxfS7;jy)>zdfG<-Zg#^(3Zn~Y&bn7_{fDq;RCYse5#AXu=aD!U9r z(r{5bHcgSrAmIzdLuV1aq5{=aoTA+?iuRE7?|MZnVHPllsYLstBYzu##49?(Qp)@y zx;15Y?yq(cU0~vVwct{nUKE9KB4nJ%AV=FJN4tVQ%@ZRLq$>k!J_7&%002ovPDHLk FV1iieQ9}R# delta 300 zcmV+{0n`560lWf`8Gi%-008{QM%(}Z00Lr5M??VshmXv^00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-#n2MHb#1Lq6*0002ZNkl);C3qG+9y1$eeG6qLpmc=sbH)#g4KfQ`rQT2x@%L|ad7VlOr;BzqL?p#s0_Xvd8Gi-<0019IEztk~0Ix|zK~#7FW1tAQxw$a|@pT~nkB(hkU6J`W zKx*L{fs$NMiGNV~9S}P~@q3sY)DSLY8@XVnLKT9jQQ5G%v@Q2DDk zHKO1O@z9b034?q}bAW3N#K}005BU(qqmF RrpW*R002ovPDHLkV1joASXBT3 delta 296 zcmV+@0oVTM0k{H?8Gi%-006Z?6u8U8^~Z+I|nh!pVXXz^WDK|A_&)GLK_v u&n4cy3HMgkmm$==kOw#ZER?6QuJ!{>j4kTO#l(jI0000edP^U00000NkvXXu0mjf&Vq2a delta 383 zcmV-_0f7Fg0*?cb8Gi%-008{QM%(}Z00Lr5M??VshmXv^00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-#q4hYU6vlss2wjE5?(LdD zioQU*h3Y_PIG1~wD002ovPDHLkV1ii&sh|J= diff --git a/htdocs/theme/md/img/liste_titre.png b/htdocs/theme/md/img/liste_titre.png index a58ee63e1b6af52557ef53ae424a77bf940d478a..a2d547726297d50adab43390d65d640e503bbed5 100644 GIT binary patch delta 156 zcmV;N0Av5e0k{E>B!7QNL_t(|0b)6L{63(}xk>;S24Mh7LU;f3PJmfD?bj;~z|2~f zS=FwHu;QsQiz6FpX3BQut&%cRTIPSpBP%^8FPAE#3hMo7nX-WQ6nEruh$M!Rl)dE* zU33ZXdy0hP?P_j7uT#uh7eT2FU8Hoj9)bgO?Io#OfJ1~%TonN*Ur8U9;JaG@0000< KMNUMnLSTY?ZA3Ky delta 168 zcmV;Z09XIG0mK22B!7!ZL_t&-(`C@h4FfR<1kjm*?Z2j+QbzhnY}kXrj5_OQ0GCvGN9JtFN@UB7yTfLpYo0HT^sS|G` WHc2A%6P%v_0000#-LrP|@o`R7=esT$rGB7YzFtoHXu(UEU zSI{;vG%zT!>8fO4U|=ut^mS#w&B7wcD^P88VJlFGv%n*=n1O-o0|+xZtudJa6l6(v z^mSxl*x1kgCy^D%Z}W6<45_%4+J8}yMUkW4ne#@yfB2!$4ZS)=Qb+De%i7;-VNtfb z&)v|mMNUa@@}1ZPOEj&P@8#xS&TjbQ{qFb1A7|ygs>^yP*EH2OBd71p9^ovjDV4Kd zIs8k$aO?X7$*wD6iI;B#Nu6J^%xOV>=Cv-7sC{8a*j^?tJ;RiC^T4KaHN2i#s~_<< YJa9Jll;P{140IENr>mdKI;Vst0D6RHC;$Ke diff --git a/htdocs/theme/md/img/listlight.png b/htdocs/theme/md/img/listlight.png index c894f28ce3854e247fab671fb9f017aa84e9fa6a..b77eb70b2ea813a6e3d125b140201c284fb4d6b1 100644 GIT binary patch delta 83 zcmdnUm^MMumyLmeA?#dVIFQoyba4!+U`&=cl^`-@`gDJWM3rxhN*`EeNgZi9lIC*A mr^3KEthvoof;Z8Ci(&Wox_wI~`0fB|WbkzLb6Mw<&;$TlJscJQ delta 159 zcmYe>$T&f=o`r#d;m>imJ3xvl$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s6l5>) z^mS!_z`@ETEV6oz)C-`Hlc$Sgh{pN5=Qi>-7znT&Jh(_C-uXLCw47Q_C@Cs^ zSf>6~PJ6Q>&!(dR@xN#Gemc6Pd7gORaogz*QzZA>tv$MM_E0V$@EAirP+hO)_LEr2{RPZ!6K3dZCGd0zg delta 149 zcma!D#yCNuo`Z#ff#EN=ArFvZO7eDhVff$Pe`Y_B$64SJSBjdv-A;P9$cGOf{H;>?2vYf&`T;J6{88omh13gahe~pH91pP< z7lkt$<@;bV#-NgTPGA|9<6$PsFTn(v^%%o&B4+tnm@hl7pnr|rDK2jw;En8f3o*;D zL37NISywS5_U3EhYB;B32x^LF2exB_@U58T=ivbM3(!2ICb|N;$k{a^q2TwwSrIER zCT98BAzQH!*Tgq2e4_?h#oYXRyupZ&)7XPUIE5$juW3jp^hbHX8;Du{9o`5~KV-T9 zM*vT7S`bt~6MsPUkbvAv$GQ2Ov=*R;oaJ6L^3A`Neeq|Leeq`#Uz$ytO}hEC`81m} zn>3qr^J(*GHkpuSb0>>8e=`$*wAMyPl#@B-mk-oKO;kY%h4&D5a2n6D`7%-o tWy4t_oH==eN5YA_=}jt?Pv!IOBcn5>RJm@)wg3PC00>D%PDHLkV1l-q!wLWZ delta 546 zcmV+-0^R+n1G)r|BYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=80Ur(KODd@V00Fv5L_t(o!|jQgSZP0byDzW=znlk2M2#a9qg*8pntg7K?ExZ3Ra7YwH^o0 za4BMQ+uVN89C%3x$;o?8-sD~qPef={>!5|rk#CfBhUj}v%X>vrk)Kl}6yreDVB8gu z2QnH|rrO}VfTztYum&s}5;e7JU=P^Wz^s$s1y)0r@jI}n!B``|0qoRiA3gwMHZ}hW z6zfF(%l3vn1b>piddS3cLFO=(O;2gLG z3ROsDL@^1>13lVaw7p?VWlo0_DPP;AmIV#YZ@s{<)_(^SdZUYIN7vQ=383xPBu<9PBt#{PV-JSPBvkXf39QZpG-Rj zxo8~(CV=h`iQfSirmO5#@t~IA_oAsEh*%(;*OkozA3+9sHNFN$fi5j0RKBw>0&l+Z krIyJ(_ZyVy$hR5!AHhKvxC=E9UH||907*qoM6N<$f&jSbrvLx| diff --git a/htdocs/theme/md/img/menus/generic1_over.png b/htdocs/theme/md/img/menus/generic1_over.png index adfa8c1599b9c2b74e15d0b86e5cba6dfbe8587a..29023816e67f5ed82461cba81163576e64ca27d4 100644 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC{tgQo&7+=1E!OM?7@ z83Y^@8WtS*@c%+Wfx&|b8v+`Cx;OzPCwsa$hEy=VJ;hpdz(9mKaOS?$<0b!3PuuBr z>W=xI%|E8j`ObL$Ve+Ok*+-Lj*^5urtjXaET6FA=Le8D5idV${N$jp}77%a~|GtJp zU=jO;ER)Am^Ij_LQmS9Zu(a&ee4UHdcdllgQu$hcH0PM{;WeMT{%r+&#QuN$oz#G^ u<Ig1=|6(#O6(oyMSmz3MhF_#VB)nxgU$o-9zRr@XbIV&bx4W_xNE>XL-S_Ra%w??yC*P*Ki{_f z<*(m!-)qUBjdv-A;P9$cGOf{H;>?2vYf&`T;J6{88omh13gahe~pH91pP< z7lkt$<@;bV#-NgTPGA|9<6$PsFTn(v^%%o&B4+tnm@hl7pnr|rDK2jw;En8f3o*;D zL37NISywS5_U3EhYB;B32x^LF2exB_@U58T=ivbM3(!2ICb|N;$k{a^q2TwwSrIER zCT98BAzQH!*Tgq2e4_?h#oYXRyupZ&)7XPUIE5$juW3jp^hbHX8;Du{9o`5~KV-T9 zM*vT7S`bt~6MsPUkbvAv$GQ2Ov=*R;oaJ6L^3A`Neeq|Leeq`#Uz$ytO}hEC`81m} zn>3qr^J(*GHkpuSb0>>8e=`$*wAMyPl#@B-mk-oKO;kY%h4&D5a2n6D`7%-o tWy4t_oH==eN5YA_=}jt?Pv!IOBcn5>RJm@)wg3PC00>D%PDHLkV1l-q!wLWZ delta 546 zcmV+-0^R+n1G)r|BYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=80Us6hC$j$l00Fv5L_t(o!|jQgSZP0byDzW=znlk2M2#a9qg*8pntg7K?ExZ3Ra7YwH^o0 za4BMQ+uVN89C%3x$;o?8-sD~qPef={>!5|rk#CfBhUj}v%X>vrk)Kl}6yreDVB8gu z2QnH|rrO}VfTztYum&s}5;e7JU=P^Wz^s$s1y)0r@jI}n!B``|0qoRiA3gwMHZ}hW z6zfF(%l3vn1b>piddS3cLFO=(O;2gLG z3ROsDL@^1>13lVaw7p?VWlo0_DPP;AmIV#YZ@s{<)_(^SdZUYIN7vQ=383xPBu<9PBt#{PV-JSPBvkXf39QZpG-Rj zxo8~(CV=h`iQfSirmO5#@t~IA_oAsEh*%(;*OkozA3+9sHNFN$fi5j0RKBw>0&l+Z krIyJ(_ZyVy$hR5!AHhKvxC=E9UH||907*qoM6N<$f`QxWcmMzZ diff --git a/htdocs/theme/md/img/menus/generic2_over.png b/htdocs/theme/md/img/menus/generic2_over.png index c8e58fc222091713ae13ff57f13fef53b96a4511..62eed5564b6c35bb3b3ac7a042c1e5223fb5112e 100644 GIT binary patch delta 408 zcmV;J0cZZC1hE5F|mJB0tm$qiCHIkoS7o?l(wxb;U-)YqwT%KIWEJj|k6 zO1QxZ!uZ~zypMI{rKna)D2kgT$``SQBy$TNfoAyvc3_b*Qh%tL0o0Nk*hi^+5qm~s zJ+ECpg#ywt5M^lQ5F1D(vA}NOM8xq#3ckFSt6|KB0>6H9PM&+HnjzGhW9-X-gb0LI z*5$XCKorYM)?)LRAUVWYv0qhM z#+C2j48b~4<$u@o%fI8f@*nHJrd9q8_x8p0%0Ji_*Dr5hT&=u8@lKfM%@){KH_y9y zzVY&1vyqBGI&UMDM8U|-^W8SjUl{I~T_gXaz7yVl?LWh3VzA`v%4nc%DeKl=NmQ!<`LYUdDid%0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=80UbDk&Ws2E00E>)L_t(o!|j>dO~Wu0hQ9z( zctC0e0}#XjWCOYZY*5&s8_*398)SsCLD?YPpnV2J5lH2Jcz-#SB7};aI5+Ae9ksO@ z`?LM~x9bKXLR({l7KewgE4E6iw+qDjeyZ6h_?~8@83P@I=O(}$7;C4-xjQE!HrW%A zL`3G|Hc}B8h)CClC$O-}1n8G6<42v%)a1*i@B`qoqIEb^89H;Dd7G^=0j??<^;6gI zkxJ)4J27(%eSZy{YdglXY^wR8TG}{M7HdYj$N-KFMs}LXpLKTibL`S8hiYkwh(wn5 zYMN&vGSzmBp0VAe`kE79q@$GPT+qvz>#5E=wiV>vVUIK~GG#XzXG&Kb7b0N4X=j_P z-cS6g(!;OWd48ok8nT2hR)N2=KZ!U)h3v z^_usZ&kz4^HmRbEu(nM~DsmpL`BrQGuEK-agX?=6fIZ+4*e((LR_}8@T*EJ8S8oG$ zfK3O^^P;nQukxgfk^e11m0qYnDZ@WH^QnMe`no96c;Nra^zds2{|&v)_8-t+bS(e? O002ovP6b4+LSTZ=9_N7o diff --git a/htdocs/theme/md/img/menus/generic3.png b/htdocs/theme/md/img/menus/generic3.png index 00769352daef5a513aa7b39eed513a461d15cb9a..ef13122ace583000ba6af4096c8ca1122ca3333f 100644 GIT binary patch delta 399 zcmV;A0dW4h1gHa$BYy#JNklBjdv-A;P9$cGOf{H;>?2vYf&`T;J6{88omh13gahe~pH91pP< z7lkt$<@;bV#-NgTPGA|9<6$PsFTn(v^%%o&B4+tnm@hl7pnr|rDK2jw;En8f3o*;D zL37NISywS5_U3EhYB;B32x^LF2exB_@U58T=ivbM3(!2ICb|N;$k{a^q2TwwSrIER zCT98BAzQH!*Tgq2e4_?h#oYXRyupZ&)7XPUIE5$juW3jp^hbHX8;Du{9o`5~KV-T9 zM*vT7S`bt~6MsPUkbvAv$GQ2Ov=*R;oaJ6L^3A`Neeq|Leeq`#Uz$ytO}hEC`81m} zn>3qr^J(*GHkpuSb0>>8e=`$*wAMyPl#@B-mk-oKO;kY%h4&D5a2n6D`7%-o tWy4t_oH==eN5YA_=}jt?Pv!IOBcn5>RJm@)wg3PC00>D%PDHLkV1l-q!wLWZ delta 546 zcmV+-0^R+n1G)r|BYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=80UsIsk^a;G00Fv5L_t(o!|jQgSZP0byDzW=znlk2M2#a9qg*8pntg7K?ExZ3Ra7YwH^o0 za4BMQ+uVN89C%3x$;o?8-sD~qPef={>!5|rk#CfBhUj}v%X>vrk)Kl}6yreDVB8gu z2QnH|rrO}VfTztYum&s}5;e7JU=P^Wz^s$s1y)0r@jI}n!B``|0qoRiA3gwMHZ}hW z6zfF(%l3vn1b>piddS3cLFO=(O;2gLG z3ROsDL@^1>13lVaw7p?VWlo0_DPP;AmIV#YZ@s{<)_(^SdZUYIN7vQ=383xPBu<9PBt#{PV-JSPBvkXf39QZpG-Rj zxo8~(CV=h`iQfSirmO5#@t~IA_oAsEh*%(;*OkozA3+9sHNFN$fi5j0RKBw>0&l+Z krIyJ(_ZyVy$hR5!AHhKvxC=E9UH||907*qoM6N<$f|n`l4gdfE diff --git a/htdocs/theme/md/img/menus/generic3_over.png b/htdocs/theme/md/img/menus/generic3_over.png index 0672d20bce4bb1776f71dc8038e32a8382f5ae87..29023816e67f5ed82461cba81163576e64ca27d4 100644 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC{tgQo&7+=1E!OM?7@ z83Y^@8WtS*@c%+Wfx&|b8v+`Cx;OzPCwsa$hEy=VJ;hpdz(9mKaOS?$<0b!3PuuBr z>W=xI%|E8j`ObL$Ve+Ok*+-Lj*^5urtjXaET6FA=Le8D5idV${N$jp}77%a~|GtJp zU=jO;ER)Am^Ij_LQmS9Zu(a&ee4UHdcdllgQu$hcH0PM{;WeMT{%r+&#QuN$oz#G^ u<wDNhpl!awzwOcj zY6{X5cozt7$+^J$g6#lXV)G`)T|l_I-f`xGr|jaIAq{V?==ScI9QV|DK{-_%V_*ETNg4Z2+HxZOB>*8Kh??H9k>_Zr%k-CJulaplj{-4mF@pKsg# z^4IUV@3my_Jw!w8Joo2J$eb!w7r^P`F+b|OiQXQ7So z%;o3#YBjdv-A;P9$cGOf{H;>?2vYf&`T;J6{88omh13gahe~pH91pP< z7lkt$<@;bV#-NgTPGA|9<6$PsFTn(v^%%o&B4+tnm@hl7pnr|rDK2jw;En8f3o*;D zL37NISywS5_U3EhYB;B32x^LF2exB_@U58T=ivbM3(!2ICb|N;$k{a^q2TwwSrIER zCT98BAzQH!*Tgq2e4_?h#oYXRyupZ&)7XPUIE5$juW3jp^hbHX8;Du{9o`5~KV-T9 zM*vT7S`bt~6MsPUkbvAv$GQ2Ov=*R;oaJ6L^3A`Neeq|Leeq`#Uz$ytO}hEC`81m} zn>3qr^J(*GHkpuSb0>>8e=`$*wAMyPl#@B-mk-oKO;kY%h4&D5a2n6D`7%-o tWy4t_oH==eN5YA_=}jt?Pv!IOBcn5>RJm@)wg3PC00>D%PDHLkV1l-q!wLWZ delta 546 zcmV+-0^R+n1G)r|BYyw^b5ch_0Itp)=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=80Uscvly=+z00Fv5L_t(o!|jQgSZP0byDzW=znlk2M2#a9qg*8pntg7K?ExZ3Ra7YwH^o0 za4BMQ+uVN89C%3x$;o?8-sD~qPef={>!5|rk#CfBhUj}v%X>vrk)Kl}6yreDVB8gu z2QnH|rrO}VfTztYum&s}5;e7JU=P^Wz^s$s1y)0r@jI}n!B``|0qoRiA3gwMHZ}hW z6zfF(%l3vn1b>piddS3cLFO=(O;2gLG z3ROsDL@^1>13lVaw7p?VWlo0_DPP;AmIV#YZ@s{<)_(^SdZUYIN7vQ=383xPBu<9PBt#{PV-JSPBvkXf39QZpG-Rj zxo8~(CV=h`iQfSirmO5#@t~IA_oAsEh*%(;*OkozA3+9sHNFN$fi5j0RKBw>0&l+Z krIyJ(_ZyVy$hR5!AHhKvxC=E9UH||907*qoM6N<$f*8>1KL7v# diff --git a/htdocs/theme/md/img/menus/generic4_over.png b/htdocs/theme/md/img/menus/generic4_over.png index 6a4d7b1acce5db322cde66f1e2fad71876449e3f..29023816e67f5ed82461cba81163576e64ca27d4 100644 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC{tgQo&7+=1E!OM?7@ z83Y^@8WtS*@c%+Wfx&|b8v+`Cx;OzPCwsa$hEy=VJ;hpdz(9mKaOS?$<0b!3PuuBr z>W=xI%|E8j`ObL$Ve+Ok*+-Lj*^5urtjXaET6FA=Le8D5idV${N$jp}77%a~|GtJp zU=jO;ER)Am^Ij_LQmS9Zu(a&ee4UHdcdllgQu$hcH0PM{;WeMT{%r+&#QuN$oz#G^ u<wDNhpl!awzwOcj zY6{X5cozt7$+^J$g6#lXV)G`)T|l_I-f`xGr|jaIAq{V?==ScI9QV|DK{-_%V_*ETNg4Z2+HxZOB>*8Kh??H9k>_Zr%k-CJulaplj{-4mF@pKsg# z^4IUV@3my_Jw!w8Joo2J$eb!w7r^P`F+b|OiQXQ7So z%;o3#YgS>Td)ONux(4Q z23zp18NrjtcVHPL2IgJV;-VqVT9JrL$ z|5F?L0UZ4p?Y(@Ihx$YK4d^ee*MDN?T>nO9XzU*q5!M_y`w7%cC2{uvaB@>f7re-Q qz@Dt$nSKNMXBX?m+GRyVM8p$7zEJ)KKm5-C00002{ve~S78oL=lC^Z``*CC1aW@o_JCJXg@`~@P=CbNjI|G1piZ$Mny2jij)?9q@8ITcO66li3$9BHMmyMnpwXMwg&h@<%68K}rt&{Ef1 zi%cOJrUSl*h#KUk#%6bTZ@omT_wr259p49!O69L=GAW|>NJS;YJM#d=jz(+X*yYoE e<^Vzb6+Y;*ND=-nkKFwL0000)F=f>(FtY2Y zJBV&2iXegjgaC8{+jbATfyC}%$ZSI)PcY1(+A-F5ocG}m4BrpTc`G4=5W-K;MISTU zx4;nHO&&k>|E9h8)*7t!{N&&a>yG|+KMShP- z1Yj3CI6xEa<&HCJudI$eR8t730VWu)Y?9d+BaBvlbCOCx6Z<$s11%gOyB3;gppIIZ zzKJ7XQS`&sP%JunMLzDn<7|@)^#F6*H%ITc$A=I?2;bAHInb7oA^ZRU002ovPDHLk FV1g<_gWdoD delta 417 zcmV;S0bc&Y0INZE9<0003&Nkl!Ab&A6o$X6p@_JtAP8Co z;bX+~20^=ekQTi~i{2t_9X&*}ZQUXi8I_bA{}zcjdG9#Q+e=fCscbIyOD zM2QkVptd>+l@%jBsGXdCpu89)P^cpx=&t58F@lhm2c1WzN}E6XgOXqi2vU}*j={WcF3OGd{f)KwnIc6BvYbyRQ9y+Xr}^#1asyrHWjTnS zb)H25=La&nTYsDOw=(_+ZmfoK?TJ7~npz1aI`s3%SJbTWI+uPL&28TM=?R>csRp7+ zl^QUMwPnbhu~9n9ba(Qc3Geg(*jvPU^nqO<;4S~CIN*ai5e=ectjdf}BBr?|`Zrre zT%s{eyQ%+f@p6~xlb1_B7Q6iRb&|YacQwqMe5m`x^cp2fY$?6~M6EAdzlQQ200000 LNkvXXu0mjf1tqw% diff --git a/htdocs/theme/md/img/menus/ticket.png b/htdocs/theme/md/img/menus/ticket.png index 98a482c47011e3a76ddd3a985879869a241c23e3..57fc2aedb5b0c1d1a9ac6fcafc3ebdc1d67ec978 100644 GIT binary patch delta 82 zcmV-Y0ImPg0dSBcOgBkHK~#7FV;EZCKY5@YuYn{wpq>r}jv5H1?Li9hV0&sC*gojJ o{GZwe{-&*$M-8OB_!?3G0J_|TEIG!(VgLXD07*qoM6N<$f?vBKj{pDw delta 180 zcmXT8$T&fzo-N7S-G$*l2rk&Wd@=(A180FpWHAE+UnvMP?o19e0t&L1c>21sKVsqM zVloY0*?Iyf6zA#U7-DfcIYA=mfqmryxtly{Z^}Wz8{c?% zc=#&5$R?zu*m(GgS50{0wBjxM%a>2tVqWS^jnV(VaNBfgcVV-427mtl|6eb3HbWw+ a)r8@ztgoF`sv^)S3=E#GelF{r5}E+|7(Yb- diff --git a/htdocs/theme/md/img/menutab-r.png b/htdocs/theme/md/img/menutab-r.png index 95c2324b6125c5da3759c9af2eeb4c5fb2dbabb6..73ba42abbe81220a3a3d8e7ec152038c7f5c7f36 100644 GIT binary patch delta 179 zcmV;k08IbJ0mK228Gi-<0092i;WGdL0EW^gQxyQD7K6H1vRKFwS zU5hS#-ZroJW_>3uj<)L@K$RS@HSURYc?BuaB{lYWE>rzG=qynsU0zZ4uZKi=Bs{w8 hEdP55E_sR_;|uT(e|TOM$VmVI002ovPDHLkV1h~TPr(2H delta 181 zcmV;m080PF0mcE48Gi%-0030pDYyUt0F6mRK~yMHg^$4w!!QWN9NObPcpqP22cV=% zs`X@9eyG8}d;majgi&}D8V9nqYhZohVW(Ci5sVRjV`UR0>Kr^~XU_y-2nKPZ@U|If z2C}sBY7=491;_BPj$(m^w!Jpiy3Lu+fuUGD$QupC%U+As|1LAdpwJr);6#zdK7#n) jMDN*vYCSN58}s`Cj1_s8wW8|p00000NkvXXu0mjfcHK{Q diff --git a/htdocs/theme/md/img/nav-overlay.png b/htdocs/theme/md/img/nav-overlay.png index 82d159c6ec05c44f543ae14152981a15cd8d8c4d..c82eba13bfb4e7b880fa30f64889eac67d9adb72 100644 GIT binary patch delta 45 zcmd1Jnc$)!?CIhdQo)!k@h(B6r|JLy|K*TwaAUHrZGXJh`L?VPvG z&*fO7$CaPUvAW*=9J=1+$9e+a^R^&kF4v%@?emcc& z*n1z?7eHI;AHg8-Yx^U7KbOAkt#>{kOB`RvoB?1;JkL>?0c}2oZN@Da@3!~b1c5E_ z4uHHrCGUrGJtWPi?V6d-B$37_1E6zCLAAe6G(ipa&wr<|VA}-a2_PDv@9oR?i9ver zlWtpz?_7Lvv1aB|Ad8F*ukODD&j3mT;9S?ins1lC&$b`X(+cANc(XVTAo#p5cmp{! zJ0B=tGxG_I0V8-?YJ0FRh0ZisBd86xZAfh`buL7)bh#jbz6w!G%@uG1btu0-#+sRr z!SLYNZ-0+(scjCc&xdRRvt0@6c^j~W+G-qwF+c~9{Cp?}fGgR)4ligf7<3fh<<*uy=LaEMnrOT$|d=L7g!)|m`rwXD~DsDGXNffa1?Km}Wvh2;Fac^K!@Vvm9X=*a#8 zKtnQ=Z}?t7RRWKJIe`>drLdXyQd=rAo)t-TaeBIs}vS&!L|>#3R2lXd7h7AFa~4kGC<$J zC_wMT7g$vimcl-{E!=`_*PJ#;24g4&W9jlkD{KRFWZs?l-bW>{=I4>ZCX&*E1Xd9# zu)Q{)V|K5vB3T~M)PGO1blJVj0Ds+&^9|o5Xd6;qDQsoCgSILiCvm#K_S!t)YEvW& zj3<_4}eu=5!0NMThj4$J|!=`p}|0cptw*aOB;Tu`hlaBPZo zc{cNgTmwqM7qrjY-o6u<+XwHc-}A=N06&fR~*KH^9Rwy2ENd};r)Er zMllSx`2td4do~}y+JJe$IDcPw3yPD-eLjr8Zs#s+0EB`d3Uc({GsG{7>t?2l_hmag z#V5j-S3*1>RNdN^ur*3`5*W!6#*^FPfRGlN{D<&GoOhs$TVZRI${$}*`6))Sgs~{@ zpcIuLd_lmkM7+2yqf~;GW+W>-j74$BVtz0J!WVE5(5fmVY6UEUSu`B41fI|X5WWBa t00`f40001hV8Ryw007|&0001gH3O{*3=TB}jIICx002ovPDHLkV1kil3s?XE delta 1775 zcmVVL$G67rr~N?T^?_ln4;LGJd};BYMb29{ zaVeJa@|!C6;eTP|;mLvZ7+Xa0J-0<1E;$eM2+<74nZWa~SFr87l=UINwHEN*(noxE zf=ZpZJg6HdiVI*rg(F0wC_RStJgY~P_EW3GxF2Xd*GRC(8RTNmOZJNFpH~OiVrh$i z7tL?H+{c7W1>;OEWPv%)LyFh0ZaTz`T_psYyVXBf%I7=vu?e%QFOHxX!>k3vwr#Gro?D z@)mzvGk>-UjA}gbW!tlRF%v6hi{1=7&TSu^j%8;a#p=AwOVH>7ct+XW4Qa1rpVXAs z;x8i%XJ#jHGnI2?TU92->^07;Cb7=t)l6*tiq5?pJ7Mex^lQ*5QAQTW)oHsIuRUnK zyU+Je5`cL#m1~r383kQju^0VbGY{L}cZ}l}kAH2OOtM&xV`6|NTc;XV1f#Rn>Q>&}My6?8(dG z_5gav0=O5^;}m05Y2-6FOU z&{=cYiDmN^zYl`z(pZGzQCI9`++O37VSiBxmYZ$!ZV}S49cjm!#dvfrA~EOZWpxjC z#zRgRIhji@B{{eF4MtsNv6uI#eD*^OS+HWM<=@Q1ZIV*nB;=oqL%9EZkvhQZ@_MgT z9opy~Ze9UgowlvY<}H4uA-mr!D!wn+cOEtq+qp8c4%@xT&mq}&7GrcS)?w@pG=Hs{&*s#tyl7hrC=s_wGr?yTvaz z|6;Enq@J+qv0b5%Ji_Lh^Sm0agSZd3lNz~Z&%BIp3Cp}o+PnbX;^*W{dL>xL5oNK8 zZG~b!xbZAu8O>B{m!BiyC^(E66o30*JWel<J>`4)U5mFjU9q=dJxgF=%iwnZ zRw^fy1HNTeE?y7g?7Zv;w5rFuW7`%#nZWAYC%kTk)s>4Kvu(9fIgy-!u?xjYj91Oe z^F7>TRyftYJCt7yCb79_PePGm4BG8l9v_# zF$NdpuDx6QAb-}97p&<2czw1JDzop{tkRqW{)+#v1`q| zJYTRTf&BQ#oA~m&J+!+k$TeY|%cd^as_(W%W!n{~y><~gl8%CXlm|B#JN8(sF!rBc zrUHFWYTrNDuFJ|p`|e7_p?`Om47(e)7)qIsznDidi`nt78%bvz@*}7*=H%ivFy1XM zckw&MDH-4X@z9=JTbPM;Cd2yo7c&~6ytq|jdxd#kJ=h`KSN9-~9EwK@+biD)MM=}s9~mX z{B%X3SEKN)QKLqU8Z`>v8Z~Ovs8ORv;aj6djT$v-6uvcT)TmLTMhyhMp8+13x2TY0 R$G`vp002ovPDHLkV1m4uirN4G diff --git a/htdocs/theme/md/img/object_barcode.png b/htdocs/theme/md/img/object_barcode.png index 6f1931ab96cab03c827544dd17a96ad2e785d713..4cf844f214b11335ab8dc184ca02aa99e745f88d 100644 GIT binary patch delta 102 zcmcc3STR8&frE*GfnkEyt~MaWRubeF%ue<$G&s^7JZ>#vWQZ%@KGQTKGXtoR!PC{xWt~$(69Aw| BA=Ll? delta 202 zcmb=p%{W1#o{5=(fl*ZP>lFqD2KEw9Usv|4?3|3!T1F0c?gE843p^r=85p>QK$!8; z-MT+OL6&q!Uq=Rpjs4tz5?O(Ko&cW^S3^U?o}Qlf@1Otw|6j7WbSX$(NswPKkjvnp zweky)@8s#?7{YNq`Nx3|4G)=_nGbWex%}s;mk??Az<+qPC{MeT!;}B^JgdVDbS^Y3 u3Qd>@)LWlWapdBX20t6#xziY?u`=vwRtdV}SzG`#j=|H_&t;ucLK6VF0!T6d diff --git a/htdocs/theme/md/img/object_billa.png b/htdocs/theme/md/img/object_billa.png index 1485aea5aef4ce0989882853204133a9507accb7..4a3b6278bbe4b0e44575185d6ff43d438719a0ac 100644 GIT binary patch delta 144 zcmV;B0B`^30igkq8Gi-<0036bj#mHx0BA`>K~#7FW1tmK2jUtaZoq;QNHORk5dX)5 zKLGJRuz^H^|2XggAWkC1u>VK^-5>^J!zghP1G-`47<2)M9gy$>h&W+`2xIyigaeRc yPy;qhJ+F;=?I8(<+#|gh!Nk=-tinJG00121sKVXy;kTLtu_1YLHRO#vB7@~1LIYEKRz$vq|Er3mI#|!2*)*B-BDL?qz`|4@Hn*YjXjHls9{2QTb2-WS?YFw{x-(f?}q{~tByU3@GyCh(e? zYz`DPeZXJ1CvVZ_(hUj~EuklCLtftrn8d~MCoSTngAD_N|4*xUhD;7opeqC002ovPDHLkV1o5! BG(rFX delta 219 zcmZ3&_=a(UWIYQ51H+%=Zg+qbQ21sKVXy;kdX|zeJu+pRO{*D7@~1LIYEKRz$vq|Er3mI#|!2*)*B-BDL?qzaB&o#(C{Y delta 222 zcmZ3&_?~fsWIYQ51H+%=Zg+qbQ21sKVXy;kh9+0`;`YM)Zppj7@~1LIYEKRz$vq|Er3mI#|!2*)*B-BDL?qz| zMo&LA&cS?HO+&=Ee$2mi%)55a$D7c|g4x)a*VdDXf_F$R9Ga7ci2V^a00001bW%=J z06^y0W&i*HhDk(0RCoa_i$wwgPzVLzvs*W|?rgpPVO-hW-TDD%#lS!~NWP(n`sld* zHB9B81yg1lD`uEoMq=FAE;?b+LP6eADR|CO1iWCnW5yi(s5sV z!p98JBoy&J8(_`)Q=5+(SAwOE%6{rfM(b;v6n}H-22iq!XH#JWkJwu2*t3u}Z z2(T?==>fRY)$Zp?_lDm4N3MYAVYy+g(Qz_l6<+ z!_ZICIQp>xHv%7>!@AUfkS5^?d@B=4{3G}lxxXF++Oh+gwij(rEZ`+=bs((^fS3T6S5Q+&*Eepw~!2eLW z`A%WvG{Dlz7xBr|+usa95NnDetQPbJIJZ%)Yi$rH=!%x+C=Cq1!&H13c>?EXULa}( zgLY;W3dI>A&NB&ul1H|^5ZE_nGdZNb9wL=oaO=X`HDR)|IY+VdKfvAKy&M!S1|Pr&w#%|4))Gwk?b7mmy^TI?wVfpqk158oQR+25qhX@pgPVy* e@5yib&R_oq)n>TqDGo0H0000dx>0MWx>aatS(r}>27v=}T-gTrFASS(J9 z#o}~0Jj`J44<4#|1_J#@RL`Xc!nl1=&zdjL(Ut*SGXPAj7IdNmuC%T6=m><4$ucH1 zLV(cLXWa1!K%nh4y~Q0abVnP8qF4#(akOo^zZG*V^SYf&sVyqzyv(&6YyPU3ZZ*Z! i->WKqZgGCS{u6%&)n>Stj&5B50000=K~#7FVxT%`Zf@2Fa7G6h2txrF$2}g( zpsFBMQFM|5jevv>QFjPP-J?t?U7<`Jq6idV2dIC1@z9pS&-i@bw&%V4GhAZv>!^aO zl#_}UDP&N<3=^56h%C~u?~y?pJ8ZBHTra4pwTPND zS_INsSoi}M*N_E>3owF>a6mYfSlNrcjR@LVSY8X)AO@l!_J1lEjYSM5UB2#}VHmz) z(o4J<`|u$1swsDX|v2BWB9wX5sPhYVYQm}2$w;xq4!G%{r=G5&V zd1BY9u6I-{d2r?+_J)1?=_xHkT1lPM9;j20LM)37&&6YrSvMcsDcm80*vEp3d!<>` zKV|qzs_S^OBQH2NXEDAQCb8vGBi_Vo4OceDhpUfKZGx?T0VVb~Z>955dH?_b07*qo IM6N<$g6>3rlFzsbEZAp!$RVkjM$+IV_qAg7Xh#30qcZNV2e2 ze|w{NMD2}I63^1b-3kr-;WIAWcdaaMsh2sD_%)78&qol`;+00GS?!vFvP delta 202 zcmZo;yv;a4vYv&3f#J__w>vv&9dD<9%q3^WHAE+w=f7ZGR&GI0Tg5} z@$_|Nf567h&1|M{G_(OIl;i2*7@~20?Lp8xfU)XiOwSuQpfu8wb%f8IPl zsxoQyPX*IH1wqd(s?`%Nosd;OH|g-Sx$&ip3``c=3?Ig916s`B>FVdQ&MBb@01K;0 Ar~m)} diff --git a/htdocs/theme/md/img/object_calendarpertype.png b/htdocs/theme/md/img/object_calendarpertype.png index 244da5bedd05d02e58217b515d48708bc4052b1c..5973c17a2096c42c81527ae0829fe29436286f20 100644 GIT binary patch delta 123 zcmcc1*vmLUvV@I+fg$W%UpSBo@pN$vsbEZAp!$RVkjM$+IV_qAg7Xh#30qcZNV=#f z!=v2D;h#A9#f6?3Gc=Va+c6AAe&4q;WjM=VKcD-?CU@a3Eme!^+QV|mIT bgOMS-xaC6ZzfEmG^BFu{{an^LB{Ts5YpN)n delta 204 zcmeBWyvsO2vYv&3f#J__w>vv&9dD<9%q3^WHAE+w=f7ZGR&GI0Tg5} z@$_|Nf567hWo@}kecoN5P@boYV~EE2wG%G#HYf-<%X|39+%lCpc_Qf1@r6qFI@PAF zpXPm8%uaEl&O64ANROk!`xtikQ+MX5ysK!*yRyDy{hU)Qd#Anh zc{=}A=j9`(R*CLRlX~%?B`TkV|Et=!M;HIh|0yb+CaL4hB^J2?Xf=bUtDnm{r-UW| D${kMg diff --git a/htdocs/theme/md/img/object_calendarperuser.png b/htdocs/theme/md/img/object_calendarperuser.png index 244da5bedd05d02e58217b515d48708bc4052b1c..5973c17a2096c42c81527ae0829fe29436286f20 100644 GIT binary patch delta 123 zcmcc1*vmLUvV@I+fg$W%UpSBo@pN$vsbEZAp!$RVkjM$+IV_qAg7Xh#30qcZNV=#f z!=v2D;h#A9#f6?3Gc=Va+c6AAe&4q;WjM=VKcD-?CU@a3Eme!^+QV|mIT bgOMS-xaC6ZzfEmG^BFu{{an^LB{Ts5YpN)n delta 204 zcmeBWyvsO2vYv&3f#J__w>vv&9dD<9%q3^WHAE+w=f7ZGR&GI0Tg5} z@$_|Nf567hWo@}kecoN5P@boYV~EE2wG%G#HYf-<%X|39+%lCpc_Qf1@r6qFI@PAF zpXPm8%uaEl&O64ANROk!`xtikQ+MX5ysK!*yRyDy{hU)Qd#Anh zc{=}A=j9`(R*CLRlX~%?B`TkV|Et=!M;HIh|0yb+CaL4hB^J2?Xf=bUtDnm{r-UW| D${kMg diff --git a/htdocs/theme/md/img/object_category-expanded.png b/htdocs/theme/md/img/object_category-expanded.png index 0e49c902a096b8a10c90061911198af46c60d266..b349609ae2cec709382fbda285e76aaf97e50aa9 100644 GIT binary patch delta 108 zcmX@cSU*8Bjg5hUA?#dVIFNGlba4!+V0?O}k(I$ffaRdJ?b%lU(D`g)b&MyA3TFJd z=y_?wR8NMCHAlUi4ceRz+BYx=3Meo!xj6Q4bOimJ3xvl$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s6l5>) z^mS#w&%-Jt%x=4Tmm5$h+|$J|MC1I?OWs@u6nI=O&c4vPd)K9PUg|=Nenh43^9kW& zvoBE4H(jL>(ynE#ah*9q_N7EjrO@xF9)=IDdfBt5|CxU#!_!U0!)?-&%e65r-_rwk c^4CmaoA*Rb#`tfP2G9-$Pgg&ebxsLQ079@nga7~l diff --git a/htdocs/theme/md/img/object_category.png b/htdocs/theme/md/img/object_category.png index 389277f400496cdd478a2daba2daf816cea10a0f..ccef6e474b645141e0a8d9943aac638b0a30332f 100644 GIT binary patch delta 89 zcmcb{m@`2#n2mvfK}~;77mzacba4!+U`$>hX2E&n|HcPwi%Jfg1SFlPH~PTo#rvZ_ slVM_m8C#E(L#4?)1?SI!t5TF07A%Z8*6}8`1E`(B)78&qol`;+07-Wrz5oCK delta 196 zcmd0~#yCN;o`r#dp+_x*5lAs5dAqwX{BQ3+vmeOgEbxddW?dk$eA(zXt%|0&w#3f%{aj z^^4_SF8FfAS5H@NSn0=&`da{-3o_ZNsL^M7<;IT6(3sOEiz4PZSp)y+KN)HDXJ2 zky>Sr{6-gKRp}wE*Z>YOVvw;s3lXJL*ne&#C}0`&FoX^G_ST!dh{!dCSK12%WXU3; zKo!2plCX=tj{5ElbdOe}t}7db_0e#Qd=0_1+K|ra8D7TnTf(XT?{&Y=Rx(sgyFCocwJ^qv!crhytFz1G2Lyj zjh2Fb(0>K!1)YUa*aa99O&=a^D{KJO9w!Wk4Y>Gh*=rHa?RcQM0j6P(py+V|a&AXh z3LZ!C(sm!Ny;+StycMAO*Hq7N=8sV*vB3SR%yK-j+=UkoyYbX!C&Uali1vP_S6kEX_A|fgxaNa_SR!E4R zliq}&hhB<&D0+~jhc+WZE!4?nbez>Y>z%oG?!7bpH&L{F>wmzO^8JVNQ>j!6 z|0AsNfbnl1M{tAS-sO=_RdYNUexFW`5n|i^4yJb+tM=6`^;Sjoz7yoEc{KDoKN=U# z5~kTVPd|f(T?}?~O=!x+`_`5{Jg_ekr0T$}@Pq-nKP^ zSLTkwxt@jr#6&mgYDZj(!jM$}lQ|Q`2f0nU3cTFevZ4QfaL& zH`fZ13z8g08kd1oN=7LB6V2s~$UbU^-Q))Ekr0_?5SYb8LKL@W;L0gr2HTt4;g2jq zRb}!v8D8H4Rs+khR2@g1sT=017FcQ(XNygR*o((i@e1Oe7u# zOK3XQd4C8}1RV|iSn*E~9}A8x0ZpZ2-Z6`{d7+Qw^}HQ(m9T9C8BtYM7#F`pXeYt@ zdBlVmtj$N@@O>vqNiZ}8igIAZ<%P%Ne%jERc5ZtQKD~@3nvT)aJny%}Vb8>UJ1JNO;I0bs%#A{?e!aX71$}prVXrqE6~>5 jOCHcg?5}&p{T5&VA1p)pv386j00000NkvXXu0mjfrWkXs diff --git a/htdocs/theme/md/img/object_gravatar.png b/htdocs/theme/md/img/object_gravatar.png index 42bccdc4339d08fef9da9378db7b6733322fcfb7..f82840f386142f9ad2fb28c5152a0640db3f862d 100644 GIT binary patch delta 532 zcmV+v0_**n1*`;+BYy$&Nkl&7u!i0 z8*Okh_r3M*|9J7;LqNnTSfTZm_OO;lb{$z9tOXL4hwH{_a+vpoGQB&74&mLu5ETHh zHkjybY0nerx|09A2sZ?Pe{&Ct^{g?dpfjGV#W&3^f|G4|$$z>cEd&M!eXB+WvVv?0 zxa?ta#aJ|Zv~k{IC1uS;_cOJ~(Lv|Jp_r^-dn99t%KB?lapG;Y+mr{ID#tfHCvOV~ zSbk+=SOOP-TCfbvcm--@g*Z~6w#4lHK}1Pomfuwd0CIFBsPrpxBw*=Oy7#_$cicxV zW)d(b)PV-2mVX~cu0E3G_$lqB0v-Z`htb7t9Rw_%D2sVOCxL@2OH zBvuTKka2yygR_F<0N9w_GIWq~^+>5f#=J$lnAXFvhB}HPCNx-pEKL!Dei-FyrTT$D zTLm4wSnp5m?EZwM(D^-s4Mrl)Uve;)ulf-?eAH;69DjXfp<_HI(6C4sjqSX5XJ%!z z#RRyX(qzFOIus_lXLKH4)&Phbp)%Ry3;+$!yFNc=Fga-MpS5XK=X4eZQsYg7HGKwB z!E+9q^$`F*u-KdrnnK;j$<;%Bh{%ZQ+y%=TfN1-~d{g{o2RfOn06=N#7^H+X^dGP_ W*X^M+>kXO!0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2xA4-q9q8yoBZ00J6GL_t(2&uvm)NRx3CJ>T#9 zKG#=k|1@>Wtdt?nCTW3WZRjSYsElY0l2U5SjGB-%jFBZ_#DAU&eGxQ>NC|oOtv6B8YklG>Vd93(S3|hs{5;UAPbTaL?u5b1q2sVoThQ)F59BPfTqT`G^1z_S@Su zRlGA7Ip+5q@DKhXi*p(_6FVE6H3pNt4gk7Z>Ip#4CasPtde6q%0ieAW@ALNdN$BrBy%rdphSe zRX|_)$*1@34qksYX9CIa%&4!UATvOBdV(JTAk^e00Pe6=EIuM_(NN=S37~4Uv81uv zEdc0mW|OB@GG|IAe_tE`gv2Z&OP^;K#J4Y>F5657{C`a*anMn=qWGQcz}R%0zlhNsS#1=j>{wO)Ok&z@^NEhF1x zP}VHOZl4<@BP8LeE+zn7vpQBUB_4KcCcS(xbfw&)rU9^EXX$d=t?BZ0JK`6bZyQ8L zAkAXuUVB%=Qvj75OWGC0S9IG_!pnaPelGq;xzsu}+Mv4H+MaX0f#5sjVypP_p0c cEy*X=KS@8*yQ;0-=l}o!07*qoM6N<$f;nsy`2YX_ diff --git a/htdocs/theme/md/img/object_group.png b/htdocs/theme/md/img/object_group.png index be0255f7ec2679667491349672d653bfaea6ab89..20baf7fcb2224058f88c670c4553508ab3edb25c 100644 GIT binary patch delta 538 zcmV+#0_FXW1+oN?BYy$;Nkl(wFU%$cC-xd-@m(s zN{(u6yy4;Dhm(_&!K+uVxV0#RsFurRUnymUY0`Oeasqbl+Hp2cVla@y{sa5a3$x&b zi?Og)tJOfjT0#h?1On#65Cj*%8H2I$G1$C$(^+JeS`Z5Qd&Vuknj6sO&X&Kups@XX-b~VTJYMnYbJ`K$M`WppDt>3 z9ET|>KT093tDQ~<;y8hDKI|YfZIcrO!44GOimq`4=#AVRuav9f?G6JB-+HoS$r6a- zxL%ZlYWM;ZvkGSq-fe82=WW@%X;c62zrPhiKHfnq!+*Yg{eEcyM8Vy-+cFe;9LK;I z>&@|Ac!6<_@7S^ZaHU)x{`>FmKj+@PdwHQ{Zf*{ShlfBL1?^57iW1pmxE{GPkJe{9 zj8Bop7AeNex`anQ3Kp2LB2 z48Ydb*2?PYYQNoXKN69wD2i9p>9oJOx#{?i@|~TXyxZ-*Xt&#s>$(P@)9E}{)l0zB z|AA(2Z|`EW*(|KJc}fXYC8dOj@b2B)mz_@MVM>w>27_0_;jq8IzwZEY@BLDv(a2+r zhzKG=jFI8+2Y)v=dQZwpiJ;uMd;7VnoVBpi>2zLI)rp9ZQXf>& zu50oN%e(!$!RGsqm4R>~TBO*20nA-!bKQkiF)>KzlZ`!nJ%Zz{j{bl#= z-75m6N&vHF&EmrkKLj8wA`#&6a5(%+E}y?(^Oh|M*LA%I9)EoBmLGrqdCoUqef7hJ z_3Qr*g23T8!Uh`m2Yos*F>(Hk|Nq~;Y{`@oR6r^}*gfdv@jX z`IUe<8dzUn50+&Q4h?1YXI_}k<(8dZYmKj4y|QaRFBpg#ktQGv_(ub=ZM3l|d45It zYWR|~L-CLAiGS#>!nql3$K0|X)L52fIEiq%`MuiU>}SuYQRCIOU#+fv`lgz@AHOsb z6jPobpJ=X8{fStU(M<&~Cj>_Ip1;q#;G!E}dD05Kc>ismN2i?6Lh+Q;>7)#-{O(LE zuB`{ou6*blyA#-aG%!>Zd9>lISd=OYQ><&W#KTW}6o36`GFp)dLG|h3E6;H3JAoF! z1qd5$kRXm!G~(t^nF&(y48uvqP!3WR2!ky`1h9`*6m5elU`j4(GC^)2LtmewXA}}8 zC>m(60FV=A#Ml@w$Mo1FxlV_{UQPEfj1-^{Kt-V1<`lwiF=i~U2u_iTt0|Yk55O1* z3B)v11y+Dyoe=otU(SzD?~?aTLGaQc+??PPz$-)TewDHrR94@R7j&KQIg7VDzpiU$ rK1hQYWWOLFheZrZsQ54ncpPRQ@)<_qj1T=D00000NkvXXu0mjf!aF2i delta 621 zcmV-z0+Rjq1cn8WB!5jwL_t(2&t;LzOH^?fhM#lJZyX)(m!ycwMMR6DRV78%A}mC- zXcbtrD%$xMv<*aBR1kzIk(-tgfntG1E&>rX^w>;ZGIewurnz}$JZH}DYmtfC3*YkL z`CeXTW@nkU?a(01QEd$kpR%F zlzNp;r`rby2RGjI_sDh+XPHykqV7IEJr zZb3GkwO&7`$#r{7hfS3jkCD!v5dn~>2^VE`a|I-*UqlVI!DDv6mC^I@OaMfjP7WC8L5CFXzgqq3Qx zHk=HkGG^qnKDivY1<)ESfuIk?1wb(NfRCP~x?0BMu1*ThhDA0Zq>|v|pfm@bXEN^@ zkp-t#ulw;@aMXE5)pZNnt8bSO5yvKXr_jr7dSMMrzFYL^3 zQWPb0Z}p2T8;Qwe6xm}GszL|?)V52i)hdM=cN~Ti1dKV1aRwNp2-=hq2rLLpK}{+N zMieF}(kV&^!6jVRt#in*$xwvARrH?e5O~I*fh+qH$-PVIuN4l#HHZVfKN&(xZNcJ{HkPu9uL7+~c3V=-z zAjqVIFr+a`G0^0OgHt$ftBhg{O$@E2PpyJ{gC{#PeM%YsRyp4x=@VK+xzjTclceu* z?93HK@%`+iXX5Fh`%>)9#;2maHD6#$f9QioK1-<>j~q*S-$!3v=r51^Z`77nzs^K_ z+i@g&t9(wZu+fk0_9)C;d+8p{)6L4`!IOmtf!vew*2d)WMbWq&J%VqZo$U*+{V5%; zE$4db^Xc$Zto!cp+QEH$i*LOJWj*=5)b%5Csp5My(()V+4wl?^-c(8KKRq9A?e;xP zmIIk!Xk}qod$BmT=fLa5f1WqL*RMX`@Ly-)^w8hgd}9~P`6~n4cKjNW7c24TbmZBD GKKCCbya@RK diff --git a/htdocs/theme/md/img/object_mrp.png b/htdocs/theme/md/img/object_mrp.png index 38b59646d710dfac4f94e01bbf41bb6b1779c0c6..65294b4ace690832d654ff04bef23db02ec07600 100644 GIT binary patch delta 365 zcmV-z0h0ct1pNY#8Gi!+001bK-QxfN0Hsh&R7C&)06{Ss(6@qfWkZdCW82H0-qohk z$cTY!J$PU)(Z8Yc?%eI|&&tA((#(j-wQq-eVeRG5_4VQD| zMo&LA&cS?HO+&=Ee$2mi%)55a$D7c|g4x)a*VdDXf_F$R9Ga7ci2V^a00001bW%=J z06^y0W&i*HhDk(0RCoa_i$wwgPzVLzvs*W|?rgpPVO-hW-TDD%#lS!~NWP(n`sld* zHB9B81yg1lD`uEoMq=FAE;?b+LP6eADR|CO1iWCnW5yi(s5sV z!p98JBoy&J8(_`)Q=5+(SAwOE%6{rfM(b;v6n}H-22iq!XH#JWkJwu2*t3u}Z z2(T?==>fRY)$Zp?_lDm4N3MYAVYy+g(Qz_l6<+ z!_ZICIQp>xHv%7>!@AUfkS5^?d@B=4{3G}lxxXF++Oh+gwij(rEZ`+=bs((^fS3T6S5Q+&*Eepw~!2eLW z`A%WvG{Dlz7xBr|+usa95NnDetQPbJIJZ%)Yi$rH=!%x+C=Cq1!&H13c>?EXULa}( zgLY;W3dI>A&NB&ul1H|^5ZE_nGdZNb9wL=oaO=X`HDR)|IY+tCtZS7t{QHXAeU+ zH^jtbH92zlUhNy#lj|1b%VU7T?*x;UriEDq4^`~9&qXZU(doAR^4*W0bq|UXlb0Kw z#qn$^1Bf*Yi+>G@^4(89_c}GzNDvF;MD$DT70jpK_&a_2m4AgGa2Ch09L5AFP!lL1 zN-3kOWR?m2icO>=1RmaQ z`_nQlj#&6MLX3=5umqX4Us@QqY*IL4nz7)YLeii<1JZu}w+Z!0NG(40W zw;}WD2JxE`tv+>p^kXGTXc1G%pBqZQ9EadF-<2ElufzB0Y=*Vhq`;+6%SfPryZ}(t z(u0Pjh;0>2HE;#N3p_%smr^V^KKZ+-_sha{c=uQ3Sl;y+A(mok!5exwZC5z`!eLX% z4Zdi6njk_9PbpymfOmaf*k|*8%VA5ml)U>PQ_2Vf00D$BybWRn_>cz|6(m8M=2{E@ O0000FUZBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru-3lKMB^9pBi3k7y0%}P_K~yNug_21~RAB(e|KHnY=8dz2GnyM|R)!Rq z(E?^sk!TQPhopo;&}g}N$qsqxVq~WdT}0?IPzFW>j&|t~VSh=|4h=GqHd#31Yi8cO zH*fjAuS<(c(C_{`{1<{Xv=2N+eCP-e8ANOM9=SXkAg1Z?)MA#t8a=@P;Bfy0$SUdb z6yn$0u>0J2pl)N?cE=_TZE6^%^TafY@%T{N0)W5b-rjLck91;Z&sh29hN^3! zkgw10_t>1VMSsS*YFTbHpD!jdX}#ajtqEb@`G)|2>5)zVAa(WSL*cO6XIoAzk@(g* zHTkZ6_T}fJ%bCI;IJPj#PC70X2>|TB^vKU#dPXhr)YsHTd$XD@q?hu;k}NI=Afj!% zVpc1>EiDVGMbl1d%Y{#*zI{}PRE5t*D#D|RBDsQZw$VWyWrjM$A_M{1>)Gl$uEbpWnh>EtDNlVE zAG=Xn*?&UR4F|n)pt6{py2#1u`8O$z#|Q3(68i{=3SH!oj_5f#m zhht=JY`<$bH%>!T{gyLTiQNjQC2^SS4LI0BK(EtDd07*qoM6N<$f*6xfcK`qY diff --git a/htdocs/theme/md/img/object_phoning.png b/htdocs/theme/md/img/object_phoning.png index 23a4e0b1dbbc3749b03c45864b52f7d12f907520..fb3e8b99d91ca75ec040ebaf2e2a4839a70ea67b 100644 GIT binary patch delta 311 zcmV-70m%Nr1knPJBYy!HNkl*h8@(4AJ#Ql6 z(Bt;J^x2-!hPxE}oSA#p_sN~P&(C-DIa(No?NJo9@j3_sm&pK`fVe=1I7|ysv+-1Lk`v;1fo4ZC6{U-nb002ov JPDHLkV1hramr(!! delta 553 zcmV+^0@nS}0>K23BYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=G5-v5)pJ!kSD zS+&{-L5pA`*kxuOD?yNLEQI|7OBOu#doXW-nr-AbM8S|mH+_f+$Hb*764dl(KQGFWm(>oGy{N?(vuitWvxYw z@&5qMxho_;lH36RNln|fx9Yk+>9T<_#ylgrqZ}lQq9{I$$Ky^E41h-fz#NhU;Kpz` z^ql}Cz0Ys0fqzm;kE^N*-uq4)yv^Jx=~qf=x2mcm?>#~YodCW_`bH7}ej8)XthJq* z0ljb9*TuVp9==b}IF~T`_XpDIQ;IwI)dv#r(SbuAAzG{pS-urz3$0Us;NIEjc z9Jg(It=H>)&OV`}CZ%*c##nKaV+aA>`+btH)_F^~cwLe6Js0 z?-kLJb1>xTs%>i6BW+dJrsTmY&E2M4Qo&a#Z#zZXS%j9em&42jq~@g74? z<+;{~WqsQDIZe|p{z)M0xx2it2jUwM3=UgcTR#c3;~ql-&wu_=A^-+s0qy=hF+wps z$~(ym;qPApbHOw52w+y^pF)oXnhm=_#$OlmdX|fq{XFcpiQ%Vlb>X zkz=I-U`u~K9RQQ#Wmp=Y+#nwEfnw d2%t`L@&Oaa+_0mrbTPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^=G5->DyhOY_$00H?)L_t(I%Z-vTYZXBhh0mGY zkVLKWgrG&R5$xXVEU^)>u@L+RmNteovG6BY2sWmOM(oAPUwdfY=C{ zz|I_t%zG@4Af9Gtmc93$^X*03wg7;pX)ZYDRsq0Ti~kh?pl#dhlJ)^0=lmqb*jZ~) zRTTi}ygKjw*`aBgOC&#%+ynqgLrUpJ-}eW_oo0iI=6CNsj4|dJ$xRiJtn0e|u(7c* zuPD$+X%96|^vkTrfTHuxgx8%Y58V~jbn)*^&}0+A!jTmT9aLih>b9RQJ>9(j57Tz$%i3?W1hEN v<0W#=tpT`A@`0p#0QMz4?Yiz)+qU=%*8vobUmP9000000NkvXXu0mjf%lH@$ diff --git a/htdocs/theme/md/img/object_phoning_mobile.png b/htdocs/theme/md/img/object_phoning_mobile.png index c94fd72ae14fdf3d710071304d1bcdf8e8e51c36..2a4e0c80eb2d8dfe71e151a95767fec72c7547a3 100644 GIT binary patch delta 278 zcmV+x0qOp;1F-^-B!BoxL_t(|0nL*kh=foWgx4Y{Xs~z0-ZhFGoW-t9FbH>;jV9wR z+Rk9McfpPruesIU=A2+ze7=i2Fd*~K{~mcd`#Q*>R delta 409 zcmV;K0cQTO0Tld)>TP!xv0 zlp=Ub90DS~jbjKc<}n-up~Yv&DJU3+O^@f!8|0tDT3y=U_0P+wJ1QZntB(TmrlRU(NfED2j9oVHgT{ zKan140;bpNIXl&a%bp)5;`F;23zmi2mlQ9R}H{F{+F zEdWGOM3N-5T7NA@qY;zI1b`$-h~xOGy%f-FHj^azzOU74rJ^Y0d7dO`u~?kF;7p+1 zZYu}^0rGucolZx9f*_DF=C+0Lcubz>7-N{v=VVz1K%VDJr_-~p^(k05{&ZDUNMgU= zb2uCTsHzHU?Wy+LWnswQr||3&fa5xsSBNEzb^ZZTRuZ#F3X{K@00000NkvXXu0mjf Dp?bBK diff --git a/htdocs/theme/md/img/object_project.png b/htdocs/theme/md/img/object_project.png index c873ff4f0dcb31c253566f41c5d81c677b6a9f47..fa64c10763299e9b89abfbabded0f51b5456cee9 100644 GIT binary patch delta 161 zcmV;S0ABx%0UOlQ%$T8=)Xp)banDdL7nhK9 znxu%g$v={yh+W@)k^1;v;OzHZFd5W7V5APiqWS`Q%o_!9%>e-b0000|#O0E&-54d?;lekl7elKf_@E`>_`N5@b@CgPCWgw3D>AW0JO0YU~90I>rOTtF9t z=21sKVX#M=FqLl@zewg^?JHEhG?8$dvPysQ-DP4Lv@Glb9oe+!)QeNVUJr8V8zmOH-f+G;heQ}D~&SB8rc?=00`-YxyqWb2BbJNK9K j>$iSm-lwwEvyy4v8_|E~ymhw#UB=+)>gTe~DWM4f6YpGt diff --git a/htdocs/theme/md/img/object_skype.png b/htdocs/theme/md/img/object_skype.png index b209cd8d16e340a330069c891053a431d7a9e01c..fd139f9d8c8bc767ce38e39e68c281ac9f85b799 100644 GIT binary patch delta 613 zcmV-r0-F7*1^xt(B!5LoL_t(|0bP>=up>YaM02)n+qP{K&bDpawr$(CZN>VGoxa|< zGF30m8|iIA}3|Yb6kcT$E3)8T#5oG zWGHsZ_uXDnDq3)vpcD~5%5_wVDrXcJen*F8FXJ%zfgYW%sDDtHl6;f~s;dzxun?3W zd6}*EO)Y-KIuIESmlv0Ro6z9Af)c5a$Vkzkz($bcs0?*4Dq*pCAVO<$;lf`to~f)M z(PNnfC0R*u0)@z)^N1AFpT;5>6YuLG+3_3ccmKim_X!Xojdh~>Sq1X?Td|X} zLU33Ja!}CowtqGxkQtpg_{D%BcXeoeMU9nDV$uGp8u>Zk65)Xl6oO3zh4@906LRc) zp9rvv$S^xRIQQLz<`Wkcw|2ePR!selI{A9qO7XHC4Uu8el><9^Pk5e7uyZAF-!C6 z+=_P^8-k%ubfWTE(Q2rLCqf`-R-7M*)g5?S2PJ`AcS#6h!hLZzakA@%jI600000NkvXXu0mjfM7|4> zzI9DBDMeAsNPo($S~`lrBX&2ubm7LApf>rMeF?f}4s3hw#M8MI<(n&*z@Z@zBUMt_ zAbW)1g%Ic|Xqu2UfwY!D&wL1%J_gV*;>UxjAR0&gC}V+Zas_V|f+yl-7k^atyU{VX z3Zx23fJi)r*FVEJVe`VkBAW*_L5mP{ikCWmEMaIndVl`l%-AA2zOQ0l-Y5|LjU;h| z5~D@R3a$#lT@g|_7q{@peuWZfV=cCHI#9)^>fiZb{jsJ=?#u*XWV&h^mxbU|HP7F~ zQ|RKZ%1EVgj`b++a$booQhG%dJQRXrGAnXx99={_p3XQDX?%9C zY~>5@W!#%t#%|s+h}+2{GOb?q1#**Y74!cAZzakAL0MHp01E&B07*qoM6N<$f@Xj^>i_@% diff --git a/htdocs/theme/md/img/object_stripe.png b/htdocs/theme/md/img/object_stripe.png index 287bd24910cb0fc86f886d02789f29b993bad530..82bd4145dab75394fb61e2f09cf4ead19738877b 100644 GIT binary patch delta 569 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 P00000NkvXXu0mjfZg7+! diff --git a/htdocs/theme/md/img/object_user.png b/htdocs/theme/md/img/object_user.png index efd446a1a4c05b50932240855227fec33c4564c2..7662c35d3d45a36b98ee2c7a6eafb326b0110fc7 100644 GIT binary patch delta 450 zcmV;z0X_c31lt3UBYy#+Nkl5jJUiY(PIu4;o00KcDcziBMrV`x~r~DJHU%!5^ z!)ZSeiH5-Ab%EVs1%krCX0yKP(<_V`IjSG}h?2|W0=k zDNM#1jYf5p(i3NJQu~P1;h(zj3&w#UvHLnbc~+%SonEzS)ifF{TefVdTp>S<0DS_g zY4CHV=SU3DhQJr_573ay;fz-(^j~U}XRR0n$lCK~yNuos!LNQc)Cz*FNXMr3jQCsf`c^G;L>; znrb_<3>=v_QAZ9;9O)A{vro`x@B#V+Jb*FLl%#e{q*hVtrGFQs<=%5R=WJ&UHZpO~ z*3MelJ1ZaXpF`Idn|C)$JKNiPl}hEQwN7@s-FLlSZ?DyAsac;lE1J!wcklkzezjV8 z5e`E*Fg6X&e;MH!G9Xt&1G{(p7avIAUFrWR{-qp zKG-Rhif@ytddXgTWw2@cqOy0Pv>PNMj6p v*1G_h045OgUu`oH7=R-p$IN~qe>3w3L_pZoS%?Lg00000NkvXXu0mjfkOcGZ diff --git a/htdocs/theme/md/img/object_zapier.png b/htdocs/theme/md/img/object_zapier.png index 4ffd34184affcdc0e807513378af999db135c7cc..b1337750b6732d01fcc1b04daab1612b71e20c85 100644 GIT binary patch delta 444 zcmV;t0Ym=G1J=}j z)N9qaZ`7dKa({wW6KaiE(Cz?rC#VCRwu%>Bpx1|f59o@IGXRF8(GVD@RK`rEv)OdQ zIHBf~e-_K(O2%rqT*zL>?hb6WGPWCM?LtAv4fZnjZqNw@hoi7Kon@R)3wvHvoGZ8c z<8i-nRcSn5!29!g1FvU>|7xIpQwv@E)%n#|DfC!i05zs}nkHbV7?yY^kit?4{$`4t mqD)ClatL6ip@P(2LMpD2O7Yc#($Qq{Lg_{D=6|UNX(6rHi~oc6U=KB= zhbFc8K@w{qHpc9}@sJ;DLbB-=bCJ$z=k3h*^WMCD^Ol$y{WO6-+bN)@DaQ}x7xy{- z836eL6#dW#Kp}%_we~>&q(mGEqLA((P)KtmcoKk|9_RR`obj763TZjx=lG_a9=8VI z`5;O~Fhkd5*nf|FszXpdCBuH`8kkWk@_f(&fEHp<>~%-eWH``aiQxb=t+ADMT8MR) z>e?zQM>2E`)k@uUorQA%hdBUnkK)%6%0KI`><+QI1IK_xKy8{2F5`EDAtm%G0NCsh zjisM)i1*)26sTvjlcB396)}2=9!KcPbpV|B%I}ttOMhW-Sgh_^I|uxHigO2l`3#!^ zDJk@fro#0}-M9l?O*dL zR48^Rc6d|_xtoVW&Q2h^ZxN75w5U5=Vr2&oS7*1z$Rw;ZyTv&}-PyU&Vm%3`!QjO? zE6pyt0gqZ&U+cP!Vy(gOs1)6>wg+N)ivp7->NrgX1t!Jv)=6$OdbM(#OVK>c!ktWG l<6JJ)9xP;?{yP5ufIn;b{$n)>2&(`9002ovPDHLkV1j^7N7DcR diff --git a/htdocs/theme/md/img/pdf2.png b/htdocs/theme/md/img/pdf2.png index 06634550daa62ede26dc024bb75b36a3d901ba16..6fd1763d233da355935cab66fa13f00e63de77c2 100644 GIT binary patch delta 599 zcmV-d0;v7`1n>lqB!4$aL_t(|0aVaKyyZL?fbl17di2@0Z5v}_Keo9U+qSj;-Tm0M zZ5sz|Pn!2yvHp?Xf8acn1rZsjJ#V0^9f&L(c2SK$rDnEmI|5F_8A}0>w zy!9^1DaE;5Kz}-&Ln$cv9C0~McS3ZG{By6AT-W`l zKF&*TkQ~>Ghi`mH@|8CUpL`Dc(pxx@DLqkz0WU8Zfq!}KC30_lk|7btT~$D61U~$l zr-rn|xn#N3w%rO*m1(jqU$awb~@ zcfJ1ok5E6P1OnfntU$&Rj|6Ki#&uBwfGQl&sSIj-jEwL5-!W7ly8Xd2W9xanZ=XIe l{6{2w24n!@{`~p-CjhY>1x#z*lIZ{d002ovPDHLkV1jPhC8_`b delta 611 zcmV-p0-XKu1pEY$B!5FmL_t(2&rQ)ZQnnxK-W=5?~D^aeoFKCE{a=sV2t3Lp;B1@ z6zA+j7^XRwwy#-%slNtFok$Tt05FDSY>A?Ta=C+Qb>X^;)@@onwa|g~50QPHLh?QW zh!|9r?(R9p5dq`T|{aD)8BJsRaU;*mpmam4iWZ0ZmpEp}jeCdXs&J!71e64j8Gi-<001BJ|6u?C0ozGLK~#7Fe3AnU8&Mp_8)J-Sg|qDiV=&v{ ztavt~*|xo4w(Z((Pxay3y?>S($?4(O56=Lg;QI2#hHBT5Blj?HlWM5lqPL+zui1vO z0PW8=y4WwB))0>?2n0lgLa{7_t*zgEYAN97gO^Bku1%L92!Bu%AeGV(4#%>9@82B+ zY0zVGDZqH)au&dG908aLj!O`LZOp&QT1X9OngysT0dzGf0(iYVe*gC1?OS7IfV^fd zq%l3nf~J8~h+-PiXdFhP51&3+@Zp203gEzIQV@M`8vp?yNoi8>^QRl%zS${@ih#_r zDM<8djQG%2x_^oUwczvdu-n5hn*%VJ{P^?7TRnr&)l;M*vSTGlXWl&?jv!WRh(Kil zmSachpILyZy<`Qxr%w7EVWW^*kgkCM1sS%2pch+nAmvlLu~h zv@(D#WDUfJv_f#jJoxY3MttE!kex|`U^Ke2DhdGlf__o@Webn!1n%ZJ1Ohxup8Dtc zq%NO>%N3$9^8mE5u6{ihI@SJ}=v-TPbNW00s*Sp5n>jAQjxy!o^_Bu`uJ*N#GQh7k zHP^j=Z_M`oUqSX5GeC)ge*@Zj5v2K+HcveR0|OUGkQ596$2=l9u`|4@00000NkvXX Hu0mjfKw$A} delta 552 zcmV+@0@wYN1hxc_8Gi!+001a04^sdD0UA(DR7DOTITtls7&ciLIAK49{r~^}0002^ zF%I}K4%#aW)+!9+Ee-fF4)!q)@h}efF%I@I4xF5}$fKvp$=b`y+RV(`&d%M?(BIP1 z;M3FL)x5>k)#TUL<=EKf+Ni7A+T+^V=iA%m+uP{e-09t(oqyim>)_z*;oFM(7dur+AIFN-*r~^zB$c z?TdWweroQ#v+nNo@3E%u@9*#L_VDoc@$vET@%HiY`111k^HMhR^ZE5V8}&vg^+zc6 zZCCa6{PsK>_J5v|_ubq0F%I}X9r%@o`1t<$`TqKHTKj)#`w@d?QEF+@ qW!hO|BO&XG8Wja(l%;F{0DymE97LCl5K@l-0000bt3!T#^|4zJ8%_P7My@&Et;07*qoM6N<$g6I~9o&W#< delta 449 zcmV;y0Y3h`0@?$RBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru;QK~y-)wUoU|LqQOQKSe?8gaoa%3yCQH^xBBN zfM7IZr;iZw0+Lqn2Mfu8_y`i4kO!~`DA!JFiP|d)+Du?w?|+pPIH6LslIF2gW zm(-9n9+BMuCx1XiQZB4$)dzc#(v1Pvk_r*t1V(|Ckf<+llHrDelkEmr|L)8W)dq;q zENnP18$dCGAOV)lOaa!vdmj?D-E7+_Bn@EM%OLV$e#hq|y-7Mt zb9NPY0a}t~UFOF$65tZ(0kza!bK745IpEYKPJ)^206Ke4vKF>Gl(F>(K*fC$FKq*; r#jn6`&q&VAHsccC106Ga;XmUG1b={vt8HZTAN>M{Z_ zSj}T8i!5HyeC@{$z zPO*hW6fln^Y~#%50(VGY$|_Rd3jD!WOq&H<_)_3bZQiCt>bk%i66k!xEneT(LhXMtc z1(wv@4aDHer+*`~t>!i%2J32O*JXh-=iKht3Mbb%7KM zm?d*Ka8W?J_|Fo*T@=t#tihBO%;^&N<*I;ojvd5^P(X}bTtaYQDB-eznW4nb+zM2y z)$BKpV=0%**>kN{vt6I1#CG%8A>y}?)FSjqyY&NA{ zuS>7j6J-AzjfVBQ#c}!$F*D~G*&7@Vhtg`bq}^_3&&6WVdVR`G-RF6+bpnBm$788f zDv~6Lj7B4wVLfk$pZRk4FDf=S)W>-80@?kR1hfQ@8Gi%-008|9F$@3z00Lr5M??VshmXv^00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-#s4ipIug9B(d0005SNklJxc>I9L9et+CfEd7C{e0 z+_Y#>(8W=05eElfz^~ybf*^>WqP|SFg4&_9YC#Zj5$)zzD1TL3s!QWw8rxp3cbYnR zPlkm5b3DJhchONLU!}|EVad@TWb%V)bQdaV z-vH6%6_v@YfBolp0|?GpWsnX6Sgeuw4a#}J9vQbi9U|+p%$@;BI<+s}Sl5iVNlL*3@@YJ#D&^L&}eE zMUf(xEU4Oq`B9OjtHD>dab$kjrCbn)rT{^fN!!yCw0|kYfhj;BNU)AYfOaf4NFz9M zLHrP)Yt@LTC%~9MSfWoLf{tTH#FK}kB20ie!t^rhIIht$QHj`Q#O<^ZFi)N!@XQN6 z4&zLH!Z9msvFUzoDZ&j4Eakt!I=Exyn~d~JgJ0+ eZ&GcA8<-egz1rrrp?mHkkWx=qKbLh*2~7a!gc`5_ literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRQmz3$A+G-!82$qxhyc+*qMiYW zAOwhR0x}sGBqb${jg5VLeA3d=>g(%g&YZbv)21_L&OCkk^#A|=eKS%n0u?cq1o;Is zI6S+N2I3@nySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Q(EFkTHYs9Cu}) tkg%tVV+hCfulS$ZQHhO+qMy(ZQHhOTeE#{ z{VS=c)8EugN55Kexy(WAt>Z<#5xP9B#&d&8;+OYQLFz(Cx zxgyKD$;0kk{odHN_DcijdTH(0(lWkTf{W=Lx$ewYcV(Dctl2#zP{l z7Ss$brBcPEARW5sPz49w6bI`jf}k!=A_$5O>LQ}jio_0r6%nPNu_Y<-mEboFvI>p$F_|_ z35I859$r&n0zklVH_Nzx&`gFU9Y_#ZcRjo4%tPf9k0$4Cca_YdG3aPaT>mlGoNp`k zOROgx*eZU%O@Ez1?Z|>n!oL>MU8e_ad2UdzTj1%h=ErBhWi>LPBR^;Fb0fB)nM^wi zyLF{sDZdR$W$cGn1c^81!d!TL`UzuyLW;ajd0dJ|xP`;_DfO_j-;vUmq?CF)#2ksp zl@WCZ006*ARShQ<5SOTD$t)Ly-mz8c6NEz0@UQNyq&Lw#%62>`%?f&x%H#Lc(o_|X?53vd*;+RjLMisk7vmjM9Od%yv{ xCOJG)CHP$B1;B)cb_>06at|!-yDHBC{sYZpzL-6W^kM)2002ovPDHLkV1nE`>G=Qv diff --git a/htdocs/theme/md/img/searchclear.png b/htdocs/theme/md/img/searchclear.png index 12437f848238b68f5e1b716b5f56a7a5fe076df1..70ff87371b4aac32fb7235842a011acea773ec28 100644 GIT binary patch delta 274 zcmV+t0qy?e0-^$t8Gi-<0036bj#mHx0O?6YK~#7Ftj8ft0&yHbVK3VVZuZd!CY!}( z-)It?%}T^#fk+gCJrEdyL~^^rM!-asjm*Y&ZpzP(@J}M=oNxQWJNoa&H2F=Z+_JYO zZ(LBJ#gH*ws-#{R@?$pyE4IwZDR^hVlr{&eup+3DI$^<v86_^t4{F1k`bj1 znUe~pqP#5$$&wx&W&|68 zd-itDD_5i+v8EuW!5zVdGrslAC1qti5%kIUa~XYt$FEUr7}StAKrGKdAz%a>GN=In Ytz||5odB%k01E&B07*qoM6N<$fpYf)YJ{iZ=( mR9lVJJlk3IAz?N0Uws0uA4Da65rdlm0000;V z5I+WD5a%`!E0bjy5HJGqT(Ch1JP{;Lj$w{K{0_~qPe5!#l3_r=3&i`t24LbHK+H~x vVTnNe6NtZ~W2kr}Rnyt9Fl^MYQNsWqM$?1*NnM2i00009>~_@*WBhX}ee~IAMYTYoDY+PovA?o6Kwp{36{7A31n5 zpCzrxl#07`Wx^MKyYKG;^^GnE%$6u{)lqsTSQy&Vkr{aU%>0K9=HHHPXU%A}7BbhV zPUM)gKj1FsMfTedE*_W{QGRH{fvt>JV+~$6y$yJHHK;ZBcI=<`%VjqTN+-x4HD!qT TVIX`H=pqJBS3j3^P6d%8Gi-<0044OHp~D30Ch=3K~#7FWBC97Kh-dO4ZD8*Iu{U60Ae<3 z7*-0zzkoQKkXk|pX#w$LApQ@;w}DuhEW>~r8G(2%*dPR+2ofj9Fh?MMhi2F(AhsdN zFrWrrAl?Ty02A*3Vs=stO9bMdK>QsYL&YPhn$CuWVWWnP8Wsis81_HuFn*=A00000 LNkvXXu0mjfw)Q#W delta 219 zcmZ3-_=a(UWIYQ51H+BTf9^nvu{g-xiDBJ2nU_EgQior?YtOpUzaPK;zn&i-?k4IUV)&L#+1ap}hncyV%lRI!+ns4v1}sjI zojlhprrdpyx*}DerKmzOD{n)xxo*qBSr6G|tc+L`mq=tv?^%4RgNfl@mqzPRyH diff --git a/htdocs/theme/md/img/sort_desc.png b/htdocs/theme/md/img/sort_desc.png index a5aa5f4e506530874aa5814fa5aa354c5b8f4f72..df3ab16af43370c490c3f16e6eaccf9df9b90d6c 100644 GIT binary patch delta 141 zcmV;80CN9?0;vIzB!6&8L_t(|0b}_8|3B66@GxxDuu;Q+AQFgw0`Yfr3>8l##V~dt z-T}n_vEY3`%uA9tfxrfcKcN})4u~B|4l^KN1mcNkhRp?ulNA9#pbW&fp$0t$Vl9ed v69}?__!khDg7}mg#sVO0|RG)M`SSr1Gg{;GcwGYBLNg-FY)wsWxvnG z$!8?R)N#20C^XU2#WBR<^xG?ne9aC5tq=bz-fC$HzVemF)Rt}2u36O=n7_z{#;|m{ zUlA~9j&xnl?d#E%Fe$z4eoawI+8R?%?Q?x^ZzSF~@Z7m1F6jA^=_SRc#=kiVSmGKi zS2mov`&o{;g7Kd43f6V;bP0l+XkKxZPK} diff --git a/htdocs/theme/md/img/stats.png b/htdocs/theme/md/img/stats.png index d883f7faea9eb6f03f125190ed895c8bb4323553..a824886208e4482cbd9d391ddd9513928d1dfaf4 100644 GIT binary patch delta 523 zcmV+m0`&cW1)~IzBYy$vNkl+=T<+zWkTCySqE%(st4` zMsX)@FQ0~9lmr5Y$2pI+U`>t~hc*Tq*sTBI-S#cJwr(o`6o0CfrIj=+g~kyS$RRvBnVuo?^Mk{7nl#OOERa7xtg< z00F@0x#LDrEub>bFm=?HO~IHPww{TrCnMXE`qet|y9lN24^Zd2jae}TDJ_0Nm9cB4 zF=pjd3@~xkRDXI;x@f71n?saQdnaHfo^NHUMNOFm3 zq)>52rqUl0qa?QV>mQi8aW0}7(0bP8<*}F4W{%?hjXJU~8RlI^DN-5#-8o63+}o?~ zS&^&t`s6F(PJ&T}?#@0U3`hql##*#8$SnN<#!>8h&3}lyM;_37-bDoBvsaySgyj%5 z%)Wq`C6UPw8;5D?Gp(sVX_Dr1uMy#kpso45&H_WMV>-ISz(hYJ)@Ad=E!=prm|C!pK@bu=Rs}MH-w&<`(<@BxR_g(=g5#hz1 z)dw?Y=kJE18VZF+@Lq5ZoOM|1sjS5XuIzXAAKqBKeZK}!YmO|86k#K@o}dQaD@x<> zr63+gPq#3sp?|mAZxA&W2B%uFgn^=7S47PaQwh#`f^?1!&yffXS{i`ApikD zYwpAt%^Ic@^1?HEaSCe%=Y+{ir_hI*crzy5PcW4mf|d7bd~ph`9dfeC#N}zmm)clh za=FdXR*y(Jw|T(ga+}?k-$;LE zSYzou?xVth;<&&%M`bL!EQVm3q;k|v`1tHIM_+rWK;f*%drugJn7sTAmX1tkLv!+? zkg}?Xw_&=77fj#KnjWLdEy?$sa3UlxGO|i@Y?EPQth*a;x8Gfff~c-g2!h0d!{NnY z_bnwB<8`HdwlPo+VCDSE86!mh5<60uwNGn10KWjAyEVyp&ENC@0000c6ont2kdyQTMzX5_S3UVooaxLarKBvGf27z`{P zd6WXZI>SYwRx@Fm=HwF*gMq~($O*$%?ObPxy8k}<;w+Oldg_CL#e-M2i^X=9rF+}- zqNvS{BKb_jU|{j!Wm%&S2Q(o+R6$uhc*T$7{KLVF$qxmq9tOz&dw{1c6#lq{e;?w% zukm*eDM@lL`!&jz9v;$%B-0@4JKBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY4#WTe4#WYKD-Ig~ z000McNliru;0X#2G#zS>ffE1#0pCePK~y-)rISHx6G0e;-*0wyH-R=W2?-vSPD&Dp zh+d@x3bwTrJbCfvp+CceQ1sw$=&jJ37f*uF6i-s>F(4M#kbiC3Krx7h2F&ix%;!N5 zRa;2tbAMs@=6MJJy8S+C3kv{%&%IumnIENEKbDSj9{{v5?_4Qg38L4H#l_*p4V?{# zxLGcPnVpYexM8f_)mj$-`~dJ3zo`JY;Y#^k2=U~0qw$uA%-L`V0sv+fpSsgGO+J^-hT)H;v~rvu&S+n$;`<3{)=0++7=O60)WoZ(Y;jbH_~xR`T6+=)gWl& z5~9=7wbA+co;K#2E9Jwx&E}y9qsU|CO#r2ACbM1*f_8r}_;1`F3{VY%b~ck)2T)?> z%`l2Q`q1g*q~nY{*L|P${Z$6yx>A=t0AG%eL4f}=j(_))G;L{P@}g2Kt}rvKwL3MX zt{ekET`AO*ijB29%#2F0xFW2zOGE@IZCPD~tz|2Uso||@*YCXry z0B~^qBNlSGi6g{zoFpw{?Q&fyT=k80rC_XGj+3P22(ewrydc_0wSErZZ}4FCWD07*qo IM6N<$f_Ab7R{#J2 diff --git a/htdocs/theme/md/img/statut0_40x40.png b/htdocs/theme/md/img/statut0_40x40.png index 591aac8e9de6fb4a9f1116f6d2fc78925bc5f31f..4e79c1e72f8e0895bb4dcdd5df730ed42b4d3c4e 100644 GIT binary patch delta 538 zcmV+#0_FYe2&e>*8Gi!+006rnNM8T|0CiAIR7L##{rUR(?CFMR@=;P+**WBF9 z)6>n=)cX7T(AU@R^77Q#*~`+>&(_x1-QCvP+xz_d-Qwca+S>K@_TS{>)7aSP>+AUW z`OekV;^pPw<>l@0@Z90y(b(Ac`1tYi^6KsF+1}pd=jYzz(>a0FwXz{{U@Y;OpT400BEm zL_t(|0gaUf0>dy2152YaGt>W{I6Gyw#_5H$Smk!&1yOpvBvIhG8}Z`%^Bwhhi&yMV zlE0sozOwW?$Yb!hc;VfmQ0v8x6jc*I)?)Y3NXe zTj6db15n{=VJr0=Xux)GuML3N9hd?5g3p!$Hgu3W^|%>>vKh2Trr1L^ob(rx4+Z&{ z(GM=Y6z+@5V#QTImg{dQ*X|(zxG>uXz-xBvhE07*qoM6N<$f{`sZxBvhE delta 1122 zcmV-o1fBb+1ndZq8Gi-<004~sxNQIc00v@9M??V10MP)^CwcZj00009a7bBm000ie z000ie0hKEb8vpu%ag5Xb*(1BSW| zI0kb`RjE>lKnkQCjHX7)* z+w7%aMWAELqS<1B>>i&#ePW8D2 zb^*}k{D0E(eL<_brlDt=&#qg~5lNEJGfh_4G$DpP--pZj+F2{M3@&GpUQx!;$k(ntZj{oE&hq*$By+Fi8NQ z)_-c>(hrFUUg|tNws@Y0?EY%4_H7HOD2kBgLo$uUXJ`)Q}0cM#7 z>Rq*pbVDx`>UOJjm7T*3EsKuf>Nt)uw0|s$GEG~SK>)04T3@ZzgqOISV>F!}6q1NA znoh~(T!=kQRZ-Wp{-a&p$6in9L5K+Viv=drDZO?slPEp5tXyxL^eB&ZbxFzTnPxvX z*>W7*O(qnE;obwJFbr`!8j0@?k<0=@*0BYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY4#WTe4#WYKD-Ig~ z000McNliru;0X#2G$*WsSfKy_0n155K~y-)rIXJ~({UWeU+>Sh@3!xzYobAY-A)ow zNu3G`p@R{D2Ze66{(``R9zqrptmt5eV1Gfo3U&~L6bi&coqv>8NO;=#Tr6DE?Ym#@ z`{@wTvXqUU>zmiZ^YG>ofRC#wMsMXX#`yAY?hOS(@oBfToocsh4uH=W)^_}S?y$N4 z^5XcbuOia^#YkZ@OY+J?0P?H%AC>gmnOa2;3V+HN2=^zx#hsfkE{*4&0~9v1$j_ru z9~Q4Yald~~AAdG0$Wgk(#BW8hPhH4dz59M%L_7tswK6%;balGjIvxfPfp)7x)79y% zmB|SJwX-o7X}P~8V-O`!DHwA1N*|t?JAI$o&W#<07*qoM6N<$f<0RaP5=M^ diff --git a/htdocs/theme/md/img/statut1_40x40.png b/htdocs/theme/md/img/statut1_40x40.png index 6def06ceaff9626830ed6f52f69537e69de22978..f6b5fdee44bbff7acc61787370d12bfdd4d7367c 100644 GIT binary patch delta 406 zcmV;H0crlf2Bia#8Gi!+006rnNM8T|0CiAIR7L;)|N8gr=-R5^%ZJ^{f!oJ--^_{1 zs5HEm0Q~y&-N}RN-?ze?7{;b1?Bcrq{rcU=f&KjX)4N^OzGMFV{Nm7*^X${gtTg`q z{_5SZ$)_{byJ7V0)a2Bh-N=93$$Z<#dDOaI+{k+B-?GiIL4Wh?(cQ{_sF`Js0000P zbW%=J0Eqwp|NsC0{{a90|Ns90{{a900RR900E;ojd;kCd#z{m$RCoc5)Kh}RPymDB z)TwQZ_rJukZkg}3Jo>R>n3nB0wq+VPVYnWDdG67@e!!K$$Br-}*Wv_gX~tbyiW_;s z14VvwU&%w|zkfTcnkVWCKN_BD@U3cjs;%&;>v^H?@M++M0iQx%3h}NQd1$wt->x&)$ zJt=ymlk+UD+cAlDYkMLt^Y^}k*&_sjcr&pk(+a~w6XNVsQt;Z4WywQo>(6pFkJ z0ANxM7#VQ7;2es|Za&S*E`E5_XV77Ru}HXQab}?7*ZfPYFHaump8TRZoTD_Ksp4$T>&IKf>38lez)dgOdpPM|kqA#(_ix-$Xa`j&GtH zM3f2)`A7N2%9QTFjg={c{G)sqkSj8R^TQA&!TI6%T4Vq~OhUjrC=4**9Rx8c0o+=i z;SemUiGKmWYT&(SzPO12z@N@Hz&7P~98SSYD% z5e8UN*|NJ>0047EGv%3Tb;sqIYGJNurhQ9(+kcf#-GR3HE@+ng=88L%Us9(V&SY(Z zx%@WmTk@-GvFe6?g{$M*^Z44+{BSp#s>spMd-Ax3UKmZO$6X4Lm;`H08(Ez0lRH+N zZdhyDXz%E0Rx?a8z}eVGrS{g0<4WzVa5na7Hjn<__FHno3$OUxyZhK)ol6TWZ4J!i x2rS(KPL8lmbS-S+H$)_9&naM(otEDae*t7_Nu;xcrLF(~002ovPDHLkV1hMgfM5Us diff --git a/htdocs/theme/md/img/statut3.png b/htdocs/theme/md/img/statut3.png index 77476349d6d99109d6d7e1c00b7928649bef603a..ffad2c0cf7a5b860244e5c43fa9b6467fc54043b 100644 GIT binary patch delta 458 zcmV;*0X6>M1>*ydBYy#^NklY@@s`wr$(4gDSRlSpE*y zw#%rFzhvTDV|IUiZ{~4^0d{FI1Bj@?&dq7>R+jHIYo^4F^R&L#XG?LUw?~{%U{)uI?UZ}LBj3! z2V7{NWfA+aKGK6;^y=|Im+ma9O4!b_ zOh6kr;6ei}3xC^>@5BZf9uM6{pRlg%ppR5;crtXG_F4snZO3*phqU-KcdaSCxY2J0 z%M;-0e`q`}*PbrD11tg4F+3f%4bv-l34b^7(Eyj_;;^cKVN+q7`12U+#)z70jC?Ov zW|RLRBu!g5O5!K{kFSj6;-aW!TlpC0Ut=m1ouPH(MuL zIXO&=cOWpC!_+H%nEsD5BKs%KCiQs2l`YQS0jDdB@f*qJU;qFB07*qoM6N<$g2X23 ARsaA1 delta 713 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 JPDHLkV1jqK6SM#T diff --git a/htdocs/theme/md/img/statut4_40x40.png b/htdocs/theme/md/img/statut4_40x40.png index 879f48739f6eb5828f4509fe25313053c50ffc2b..1139f60230aee72e5c670aa273c8374d111d3102 100644 GIT binary patch delta 436 zcmcb?c9?mBWIZzj1H*0wk9Z)}7~m7)`v3p`wVRiBEXgaK6HqYAJ7=bI>6{?>Ww1p-0Zn61}!# zQ*GF*Xoj@IUee9nTm>7KCUC#`Ci13y13MR=*thPceD2@Q2iMmv{*zg0@afA7VLknY z`!u)Ys^!Ie)%fH3w&1Vy#~pHOr5H>#vvikyd9$>qEy!cx^2q+bl^b3;celE7Z~n!= ZaO1Mx)h8zv&4IpS@O1TaS?83{1ONhs+}!{G delta 844 zcmV-S1GD_Y1K0+T8Gi-<004~sxNQIc00v@9M??Vs0RI60puMM)00009a7bBm000ie z000ie0hKEb8vp=}Ib6*l0008zNklGw~K4k0q_WM)2XY(g~iVuF? z1OQ}EHq=55P4-Eg&9Cm(H#FTp>_6zBg7zU>*Z8jw?O!}2aILP#^^NvOE-q+lQFZ*v zfo0m!nZPFs(jn+{Tu`rv{-WeY9lOFXeOi)3=K@I2nMeI~WY+Vj2G>!Dxq zqP4#|>2d%tu{4X;{%ZCs-uMI+4xq!*!p_AhqzdQa6n{D_Ev#@LwjhIHahTaYKZsOg zpC5$9VP*!$5aa-?b4H{K>zon1BZ?v{r=ZtrWOtmKZ!&PNuA|p#WM*ZzAd$eB%Zzk0 z<}!mwL<=$)eO42@*EZ5F=w91EpVbtaiy}C@GoE3{!i;Aa!C@8vAV>x0;S%>@g4<3MK9ih#Oj2c&uTPjlb5P*` zDvQdck*h2!N3i@4Es`=#oiu`Fn!3=!jXHMfx_@)iUK5_k%fV>-I_+8V*J#_)9=#f^ zAu9DoMNnZs>U#3ib}lJBRtU%41q#-JyHXvI3Rg=z(-ytUryuM}8e(UHzSh`A`jY09 z%jrv+alO$%!6G4MZ^o~9ajU;7W!;6!q6)maJx&=S^FL`G0f1U$VZbm+I&FQ@!GXMBh&~d=23RLR$nwEiw~w4eM+4k4D+r!QEKim0u&i#0a5u_>g;YQJHI|xde<6K7lnb~WXJj@Y8dhS1Z zL=2_WINf!(c5M4;L)R7f9CVnyw(4SzHLR6h2AQ5W(liX!GJj3gv8tmChl|`GSC4J5x`pZu$Q7N+tjD3Ft zD!8?G+0=oSJ%1s*gjLHN&Gh|kzgT%Y_>zN=0Bhml`zrqwKm<7ez60m=`o9b?I0A1= zm`A{~qE8a?2=Wqd;>XQ__&Rt3oJv1{FE~h&N%9g0&j^D8-+=pd#~CA6mQU;Asd@Fm zGcr2jBSE-^euFs6*0F{^lGgi3|MZpHmbDnqybts8DK}}U}1Ayy!Z!}e%3Mk4{ zrn9r!%+N-)iqr8pm^rXiDBSX;ob)`e9l$n#P3-FwfQY85zZ69ozL3ehB_e;LS_L&8 zV7X8j-E*8VB7cHH^bkZJg1Wv90DF!T0rM5f{2a_^(e<(OnamRa`yYJG=eu3cn^psX zSR@?2(UDBf;0XO(U+>+l)jkqXQ#EbiVm3Rk_{eODr;+pzy;I9 z=f%aq#@5zjW_}H#nD6^T`C?I1b}TEz%nw?0J*Nc%bAK!4GE#}e0oc%G$-E3;$q-^t z*R&inKiILXka98_?O|p}DJRaPQg&B5{TC)f2rQVU0Pq69h#|xXGsBm1f|(JEMtc-y z?k6Iss#}IT!_S&Jf~6lcNL3^}JSQhGd?lPo^0OD9UeL)8?3Y*mj&(0BQj48A4di z(^kr55YVz~+wUFM?e(RMD&bJbBBJp<+wQX+=No`rP}lDmLRihVD{E`$N~hsV*=IXW zFAgi<$ud0rJQt+Tc+kZ7fPkLe~dc+0WvpP7(1CEdjJ3c07*qoM6N<$f)QU# ArvLx| diff --git a/htdocs/theme/md/img/statut5_40x40.png b/htdocs/theme/md/img/statut5_40x40.png index 7cac0ad23ee45188ad6de41c19d8380e8273409a..22409362d00c8f4eb00184913f11e30ec0f039b4 100644 GIT binary patch delta 572 zcmV-C0>k~03CaYJ8Gi!+006rnNM8T|0CiAIR7L##{rUR(?CFMR@=;P+**WBF9 z)6>n=)cX7T(AU@R^77Q#*~`+>&(_x1-QCvP+xz_d-Qwca+S>K@_TS{>)7aSP>+AUW z`OekV;^pPw<>l@0@Z90y(b(Ac`1tYi^6KsF+1}pd=jYzz6dy+b00CV| zL_t(|0iBiQy23yV1yh~f;_fc*|AyCsg&RI({xU#&HaRPIBx#lxMV_UJ_^6eYgcFq6 zBRA$%;D%7;(SP%5MpLz3`|std(P*~X?N+mas<~J?UG;idKl!7d_0;Tkj5h#an8tW{ z;+PHr7^ta?0K#BwzdarVfRSA2Pk_nvPc!QD?}NUaDFJ5DNeqBePRs!oUS_}qn2XW| zmMh;|ErIqaX)iC;(0tL{2S6`A@Feztf&9{h$;|hDnSV{7`Ik)tnrp`sW!;3vZ$cYj z>3d2AY<{N!!q)ecR)F7k-9cFRp0Wr~h{*n4#CR(198o<-)W7yU^Vd0qmj8J6Wi~+N zdo~^o-0^JS<_JAckI)PSj%S8K$ISQ4m`NMO^G<`S%sows3tfe0%hj0$VEc4kqps`W zNdd@sp*02YtWu6nrFbQ^bV}-J?HOuyuSh?y=I3SaTpxMvTp!=aG8=@#V>Ctp0000< KMNUMnLSTZ4eMpx8 delta 1160 zcmV;31b6$&1d$1l8Gi-<004~sxNQIc00v@9M??V10MP)^CwcZj00009a7bBm000ie z000ie0hKEb8vpWyp6vzKVQKD#? z5~)v1E&?P)P$1oOkt5^`Jwke><_O6VdW9~EE`oGX8+Bqy6n{;RB!;0Ve!MPP3PXyL zZG9!4EeG>{^X7e%MRAO6R~*N1J@46KvG|>c%p^$w0FoquF~%#E%1d3-E=r}+)-u>b z0pmD^!};yhbxqIr!5G`PpNOETD(bq=~N~IFo zripg5$s|eIAAg|hdHCo0nzjKe0#(XoocDT6*RMT!842%knHayVc4rj*O*b-Ul!PERjVZGYWmy8tlz{Q23?vi=UjaAi-^ zH1XZpSs`TM)g8{?=HVD)Xcz{1?KUfwN_Tp1y3z~Ob^YS>BKRkWP6h+BiFn_?+V32_W zfQDhV06Px~AczT3yzJ zM1-MjW0)%-_X!t$s~1M zho-74hqW3F@&eb&ybzR@w)jjF=S9*}!$poYEn0B4Zq?#LA)_+QG zEJ+g1yIr=it4l*pztefQGTGuBpGG5!qG;;@QWQnF8VtzheC0*@ozA;zwfgl&A5+(T zH5!k9d+6xnD8nP0b2BUe+j@BPD8_I30p|5^NI@8WdjrfzF#>)RL-cj9;%|tY#`f|X a;$KD(-jRL{EFk~@002ovPDHLkU;%>e7a;2Z diff --git a/htdocs/theme/md/img/statut6.png b/htdocs/theme/md/img/statut6.png index fe93f1a0bcca0cfd8d77b7a02b4bcbc85d70691d..81ecdc72dc7327b420c9502467f92f5960b6940b 100644 GIT binary patch delta 229 zcmV*ST^6SFYX{>8EqRxeY_{8N~)r>;;Mgk>Y41J0V?$BqWNHGUb^G fBRk(FF*^eQ)y43f*6`d_00000NkvXXu0mjfhXib~ delta 476 zcmV<20VDo_0`>!tB!32COGiWi{{a60|De66lK=n!32;bRa{vGi!~g&e!~vBn4jTXf z00(qQO+^Rb2?`E14)-eYi~s-ugGod|R5;6}ld)C4sb;Ga%-zu)VN90uu&AGl=N#|@5dP5 z{tV#}KuQS!=NtgJ_cIZB^`tC6Ip=KBG~7*qZ*~3pM+nDe#@|p?9(aHJxGdiQcLraE z!)IppA;!4I5`T!uR8?Q>RMkL+qmhp>9xW>dh%v6k7>|adk$0c3t{!HpjhT5`psL}Q zSt0A)?rvK#fSLLAZg*EwN_+R;ZbM25=iHv~pNMnr;y&j#IOj+yUC7OReyOUVt%0hB zoB8}wRy&|zsPk|C?z6Q( SDtep%0000FMR@=;P+**WBF9 z)6>n=)cX7T(AU@R^77Q#*~`+>`~3Xf;^N=rCf;1JI$G?fai|c9nd;p-P=!T+b(z65n$jLtLM6afUNr zX9E%n{)z}mpmNd4-ZYM6M^2V}DfzK9+npSdr5~4bZSuD)G-&@!@wl?$hE(MZ88?PG zXKHRqeZs~Dn{#ufxi!%ab34p;*xF&c&rM>7Nx8y~1L;;s5J*K{2#yecUC*+_(~cFKbKG2CGfmT$XRy=j9UT`RW1U`)mQJzjd4G_;kGw+qK3vbs2EGgigq&m1 zz>|mZ`)HK65AUN9JSjf|--g57vzKN`0-+FaK7&CJAPhrgfMFOS2!j7W>HD|a+^2^; z$ffV!&VZB2*IQMH)8&H-So(E3}vuQ?PC4glq1Q8`$=?0DMqM~TdR)GQnT zN~O|w)qjAoi35P4>vt;c=V#5 z44hOdx#LbM6(kG#xr2ID5q*qUG|T}l(}bbxx#3L1fMuG?tGcUpd+o-~z7OV$W|OTf z+%-)@yU}ND)k^Kp@T{lKWvj((%R1;i%@~7i zS(&)Z3@+BG%i3?d;C5=iCBu^v-REZtCKL4M1>*ydBYy#^NklY@@s`wr$(4gDSRlSpE*y zw#%rFzhvTDV|IUiZ{~4^0d{FI1Bj@?&dq7>R+jHIYo^4F^R&L#XG?LUw?~{%U{)uI?UZ}LBj3! z2V7{NWfA+aKGK6;^y=|Im+ma9O4!b_ zOh6kr;6ei}3xC^>@5BZf9uM6{pRlg%ppR5;crtXG_F4snZO3*phqU-KcdaSCxY2J0 z%M;-0e`q`}*PbrD11tg4F+3f%4bv-l34b^7(Eyj_;;^cKVN+q7`12U+#)z70jC?Ov zW|RLRBu!g5O5!K{kFSj6;-aW!TlpC0Ut=m1ouPH(MuL zIXO&=cOWpC!_+H%nEsD5BKs%KCiQs2l`YQS0jDdB@f*qJU;qFB07*qoM6N<$g2X23 ARsaA1 delta 713 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 IM6N<$f;>`P{{R30 delta 402 zcmV;D0d4;30jvX%B!32COGiWi{{a60|De66lK=n!32;bRa{vGi!~g&e!~vBn4jTXf z00(qQO+^Rc3K0tz5U02?&j0`cIY~r8R5;76lQB*LQ4of|8A9zMY=9W`3^W=$N{vPj zK;l)@#2eU9n|J_CjFz_8a0b>OYaX~%H1OV7xEc#JfPU@FKYy7_<`aPA<%NxE6@bBT z7$b5ds)xb*Jpe5f?kt2G%&zN|iu;<8)H!N#%wxA(Sl`^-1ujK(m2a>RUV-DMUhjUZ z(eSBr$Vah18l9->sfh3!W=06%bgf)I1KtOuul-X=YeF#mKB!tjZ{)iS-AC?ZQKK#QG zVIm^!C63q@m}tFJngUn(bFjc8UDZpasRGoZsN=oAFtd49$9sQKi=qyIrp~>)kR<1r w9pu9BqfBN8{UkXD_>}1FMR@=;P+*=-F~b?eOsG?d{~}=i%q)^!4>T!)z4*000woQchC<03z=H z|Nj600RR80003tH{{VVR@7MqU0HaAnK~#7Fjg>`$1tAo~(0^*z``>luyJ5*XEj%gA z57zk*WAM(J3fAibUvj&kA3~S&dS&QSFDOg+(S}h4#^KAGRAl-zXH}Tr-l8hYOH_lW zx2nMkUnmtSU8?(}CKLR!RI5!=p-q4-ordyk>;lA#cnGj_k$;*VhL?vI+z7yjf{z&= zT)qn6m2_QC9w`7kQg}%5*yBOUqZx;NdVO3-uaAEb-W^=i7_dYD0000=0)z#S8Gi-<004~sxNQIc00v@9M??Vs0RI60puMM)00009a7bBm000ie z000ie0hKEb8vpn0006JNklxyApe)aITb6 zh?C@7p69=qd9Jkv01y#`5Rv0J-@WPdw`Eyp&msB(Dy0xc(I1j>-sd}=WsyIhf9eZ+ zGN9HPK^U^-y7-7xnqukuf`~2$7$*rbtr-`TBof|qdUV{;-&h3!Um6YoGOc+P1bj9i zGvjHq`S6k+l7Hp8c-m~3nfn1UGalD#cBI6$zca;_!7q$TTO-<;11xi0hLa2gf4_nL(Oz_#t5rU4dAVz1Pw9`KkqBmj^DSo_{p-#b&8 z#p!ly3|y6^1iYEejLDQLO9^;N5k1)ctFY7#Y8x0micN+Z;Em^vzq}0wYD@32;AXZh zju!4xN^fAddl diff --git a/htdocs/theme/md/img/stcomm-1.png b/htdocs/theme/md/img/stcomm-1.png index df442fc1edaa803c7a3304408a2259aaa95ec7f4..db09ae92ea19ad3d05f4049c4ff781d1d44c4bca 100644 GIT binary patch delta 273 zcmV+s0q*{<1FQm&B!5>>OjJc7AtBbiz0S3@#-*j+&d%r7*5}^doQ#Z=V`KO4@7~77 z*2c!xwY9aSrLBa7lyh^8T3Wr7l>h(#_xJa`oSdb5d$o*=oNH^XdwaEngr#$Hgi=y_ zN=n=!X%zqf00DGTPE!Ct=GbNc004tYL_t(|0d2?w0>m&7K!4GWYBRe3Ik(aJhx3Ym z0fG-H%?wiB30HNXM!1EpgC23HJ&Y|N_dP;SG|e|GK;2prZVl~+hm&@aRhku-^YSpB z>O6VfNRO%xFe;^+Z3U&&?BRZwW?Nw81V*W|+?8s(1hZ8sQ+s%mID2t(D9>I(#or!F XA_>ZiyxKwl015yANkvXXu0mjfenEuN delta 405 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 delta 851 zcmV-Z1FZba2I>ZoB!4kUL_t(I%Y{>GNRwe0{n9A0q=HnCeiRWELAM_jk;c$WAyV_! zO7oJTNs1;#kzpAvwRASOG;5lcNr+76rMyjT-X^--TIST6b2?jF)7&OD-A>=PNQerb zKhOK)Ip;l`=Q#wiOr@vuozl{(4rgT47n1L(t5++6l9FDoSbq*jWMwrtFc`1Ba&j7< zRaZ-ty}e^rK3@Woq%rJ zc8f7Cu4LO^;Kz^Ox)v0)hnJO!_yU34tX6-=;-VE)QC*`kLMoj^L&G5A<4YM!z~bVr z4P0(#OnG^4t$#?Qm{F;wNq_~v%WAb^etr=W$pk)s)?s*9i{#{T37yW_WFz2mJ3M&2 zf$wVdjMZfNvGnWjT3E2aU@)V;{yiopW}r}f!;>dMV`wP*lD|LGj*`Bks%k*2RO-or zX^f0$p;GBVky$KOvM=E4S0n1`q@ZRf1uZQ@h>qq~pMN}=?Ly?|x2znCGxI__-S0Z*@OQ*RRGWI(l z^MDiX)AxbjS%!`tIasVl&z#|W^zq4vBW{GR!-u>SXxb~G z?W)1NP7TsMXauj2eZtvBKpEH9r$k9fmn9+Lxqrgj``#TIE&bOTuP3g~T z$b&&O0;^>a+SXTK(ws@-bZBlKB2DA{pwrpK-rfwFm)G5uONVqm-cBs^b%G?&8M2$F zV3<^3R@@9x*mm4Gu@z(%W+NjD1pxs$zNBQwgWIvPK|-K8(}cDZQK6+Y}>YN z`(4|%ZQHhWZ2R(Lx?8&wXLsgvZXkJ=Uc8vJ{`BeC2mY7n=veT$t!>_XSJ%SujEoL` zVMVw3k=ubn>2(l+-E}2!FJ&SSDaLPoSlR4{z@h z)8WGrpZtv+5K#G=zkkJ!n3#sl($awmiA0a7DHas;DVLkj*(pXrK`)LTjkNuZ7#3Fh zLP$u>{0Zh9V@SdS+T$ zyIvyEv1ar5Z+}*Q#pI+FM&kr>bGslC>A>Zx5foHq+O*00`0CYe4^r1ZPfu@e2u_6KCv#Gtx<0G^(OaCa{t$?HLVJr9&zSI0$YXf-x$@Q7j7?P4}MUuDEu z!4ILnU?T(r!6=S@AHKG4B09$pr2f%KbLXW-RCgU zeg$fA8kE8`7>ESFI%iTo{zaXvqEy_ilXzG7E;?y8}zttZ`jJTz+!VBHKR?(n|*)+IZde zd2vJb7vObWC*)GJ6fc0A&1=>fhjw+ZS>v{U)hd^lnSaGL=E<5J2MzF8!iPjwD0)+dx}0Uhf~TB|qi%>V!Z07*qoM6N<$f}pXK+W-In delta 847 zcmV-V1F-zX2IdBkB!4YQL_t(I%Y{>GNRwd{{<5gB#H1{UeiRWY{iuEwQGsNZKk`yu zum~+A#WFG>H7aq@GEwJcOD(5anwiLSUTQX{HqA|RY-^fRYtCJ4&8F!lI^CY$Z;=oc zo`XiZ{El)^2aqCuX*o_-6SAVU9qq4FD>zT|q{<*oW z&l(yO+TPwVC!enXA$gvdSn2*x5Qo$5R#4Ekv9M5dl+<;#wX%uv@hQyB*Sa>W@qhaY554fei|ChcRYP6wnj#>uZ4uL+-T`O_4RU@R%;;* zQy3XBL#MNVCUZEPBroFIH!GT(m7sfQ1#N9ZxO|!05PuYuvz00;>R88Sw`UP~i?no$ z#Rj$dD_UDs=;%!uMP8nOm^T24WXuKb>CvF9tPA1c`Bl`pXeuK6Hf3lmT@8sK z0^{mZ2!CJg#AD`mR5llZ%-^L%sWd{Rns5<_M8kxj8)0F2Rw^!mk~NjBMdxb|sJdfe zpSNJr@D}f?cj0b^59mFhjT;&=K`z%rEFJ}m_0E3&Jm=Ht)0y$q^?RNekR-#Tt%F(L zi1|4qnVo~YYmjr-+eJVd*Vm^-Ma2h4V&V%;K!3o)`+k0mUt^4Bc;d4>4c`qsm~}kN zPLGh;FTp%s16H~>F>Vq<;Se#6w-6P@E)NJ``uY1mShKuHemC7@;#vh8`C{zj9Re1iUw9I% z2T0o-$Ks+@p`onU;NYAs|3AA6l>3JGwGn4hykv}QU*zW;Ky1p+xx<$ZaZZFM?_cR^ Ze*zurN?MwrCdvQ+002ovPDHLkV1l+To!$Td diff --git a/htdocs/theme/md/img/stcomm3.png b/htdocs/theme/md/img/stcomm3.png index 5a6c0aeface51c0bd908a4aeadfc2df1345bc274..a0647ba4d0f562ce83330b11f4c33452f519a32b 100644 GIT binary patch delta 783 zcmV+q1MvL72Bij&BYy(yNkl9$!;&c}evE8o9&Jp1ycO~3yV6%_o3%EP?G zU0u_fD=M1U_J8(n&f1UY?G>T5wFf>vnJ6o3LSbP&3=JdOE?m%hdh(=df9m=|H@CEu z;^GE!p%DT>ElNupK*dBNmW;iqscD0^cLwMk>OpXD9&X<@c0Ybxc`~D`8#Y8sD^!8F z*GpY*XlMtISA~FpEQE#eD2c4AIRT-t7CAXph>tIVxPQ1?-JwJBdl=>}Gknp9^&h88 z%xN7eHx#4fM`4xvDp*F_AS#Xr4UGV(sri%SWg{-Gh$F|w7Q)0N3g^zLTQkgK=KOTS z>D8B#FF}$g$$js0-ebD7Bq^R0Lil5 zIs^sfk)*kHe_CYZl=*IMZH_K3tt{|_#8kxu_J2aftqPDKV8g0zRsFBNQT^Y1s?C33 zUig%dFl%36V4o+@$z1O4ZKxTEIfFS&V2Z%gsvA{smlR$v{I5M*|F3OY{FT7K{uF=z zUJ=~cE}DUhEt4%wuukxt<}}U!1~U!*%T=m>(@1oh>Kt0EPbk*{05vQ**sw1W#Q*>R N00>D%PDHLkV1k~=de#5{ delta 810 zcmV+_1J(Sc2EYc8BYy)2NklD0XBCc3%(d*4?a zM1>DLoae*&|IYtB=R5>)MsT?u&Y78Q_XUEkDym*fO>K!tPJeDXcb1OG&+m5R^FR3) z74^JpZ&zr?#}};~9STs8`lO`yPX82%#r<}rrF|F6%A`J2{h_60YHew02L}fx7>y=O zPHG_%^%)Wp>TdicuB`lerJ~}?lg36_hg3?MbhX0ceQ)r^e|13EjEp!d)Y`ubFei+_`}hlCVfCd$hPE{H_^`IJ2~ zZGC&&2$Eb!PtP<421rIkl6nR(Kfj5YnRUoyi^$4q+X@cO^CO6O!pSr3ZaRy5ecw^w z2^y)9I0W z8}vV*8>dp~A(yXUaBv<%;b&7!jCeLENRU9dZ&Kj*ydBiV86m@A~K(-{a2 zeUz)nb(N#y*qo%yrr=h!m*v6pr_NH6o^L(jUFnT$ ouOn|BcszR~_KSSwb=K7W1~n`>*wsyPp#T5?07*qoM6N<$f-0DbdH?_b diff --git a/htdocs/theme/md/img/stcomm4.png b/htdocs/theme/md/img/stcomm4.png index 3e26b4d06ed2c4c88c75c00ab6b5f1f2a7683e53..9b51e1456805bab6edeb5ac5ae2477ec5ee87f07 100644 GIT binary patch delta 871 zcmV-t1DO1p2mS_-B!5LoL_t(|0fmrLpd(it#=k+#&D>zJ%uQ|Ewr#xCwr$&Q`%>F( z*SJP(XTq7yu%~wWdp)1dpThre+ih>VG)>>!W;359%j)61-rz!6R$hDLky8v1So{n3 z-S?4IRrTGhR_3&5G`Kg%n`NP;C%q%-vXX|@_!4OwAm?&+KQ&BO9KJV zE<5fR2@MT7U>E?yP{?NM#}tdg?Eqqb3V8O}uY-nR9N_iZkLP*sK^tupG6e#zpG=x& zpwSRvGO<{HecmxSSvVWObs$hLzx@3iT{n)k+f7Fe5BqluhrJ%2cM~HG0!S!iS;x#w z87`L%L8+y_Jlvee;l z*!CyoLq9G^5yPkCQ4NLM;5hqF=I_3X;hS$_sMos?gnvE=#H>M8H8`DCEL_O#swnE_ z%zN*>qRroFW2V$A9wganj=ESzIKW|}^%kJrUWfNT9Kn*&GP;HpxvB)QFT-JBLBj0W zY>j1cE*8EZ-*BqAXK}fgIx$cN*w3*auG;Qe1cxH1SVMTDYJ=3XLL=>*)Wk`{4TL=u z$hVGUuzx@9VK-yWIA+VEEw}G*J64%i;mh8as3q$Va#1{=nhQ%Xga?oEK==6YNt?sW zXx3c*0MWu+i6vrIb9E_Al5L>kw?2%pY>o4Ry&my)|=+R(8fVsZ?XL>1A=9khAv^(W&6!<^K7)_I%> z17H=HiZ#*y>g%u6OzHt(Nry3_#w^vLy47NJ(~;7MD>t4OUCX0VsJzW%roQ>sRI;0OjB7Dy;>DVrXa_MxzaP?!0jxI3PZ|XHVg5pY@eW z<)@B;fid=g9lgC)m`r2viFv&Y8)=M;I8k4(hwqHfL4R}eSEQ!OYIpB02qC0Wb%0o` z%46-(KI>y+6buFnnwq+xRvY{zgJIY&(AQ^0cee!^%{OFcD@S+ixVFXL#_1eU{5ARg zVbVZCWl+IvH?w`y?9>NQP)OopE{VLmT1XytqWb94X zgX+Lb$4kU?#enyohj3XGqEAV%B;SQcU4Y2}Y_9+!3V;Qt`zMH?th8x?49*2^1((|2 zvwR=QaU~M^5)h^g$0p%k&%V^s&X7az?3=_Csy_qgp94{sYzT}|G!ex4$mzFyhzJSH z47?DUA8L-3$6~2?8MXTCW=Fzdp@^OG+Thr-q_C}zKdwKj@~+y~NORZ8)N_I^t)2M_ ZKLHqpUGOnSuMhwL002ovPDHLkV1ky~!h8S# diff --git a/htdocs/theme/md/img/switch_off.png b/htdocs/theme/md/img/switch_off.png index 28a4376fb438b41bee3481e229439c14b55f8e1a..af7f3f53c6c70989dca7febcb286a953b828f5a9 100644 GIT binary patch delta 1108 zcmV-a1grbx3FrurBYy-hNklZ-cixr0=m`ES;-E@alM+4Bp9!WXL5>cb)uk$_T)o8k`SloFyS zG#-Ea@u3fW@crlW`G!ED61oN;ppgv21l0H^=}&4HK6mE)_kU&n{Q1YHOque06h)eO zs~|;S{82;_JT*aw@jsGy7Cg^m?%cVQ%4LQI2eqzLs#Ge~ zLZMYV0GTkVRIHyB3Qa+7Vq7P1wTz~TF!AfU9#I@KGBScnRP}B<@B2O?lCqkcoBeXR ztdqFfpkWwTwtt0)shx&Zk2n%iDI3!?w2UA`VT3XT(*Ok+m{dcLC`?vP)q;1m&6I6Z z6%ceMudeWICt}++A`)9IEzM!MT)=f)lxQ}lX%Z`;>iZl#aFC9k9v*t=VP1dj4Qwmo zckt2+&*1t#sdSFYBai5@)JYgZroRqn#KE$xt1Ew3uq_J_11p!W zj~bd9v42uFNgO@Am$ob2eDeq2=cz|496x%HAOHC0v~_fo&8B(vjW=1oe#nuFF(9|4$HJzwrT~B zJzUUslMs>nn1nTE&oslU=Q0cvzyM=<;Z}z^OAw85|s@SSWI2pU3O3zrlh} zeGI=E(3H>PxE`;(_A-kWd>r2osISkFG>cMW<73>XBob@FG|dR5xEgQ1`z{;SZseCg z{eLBIzVQ+}w{PQ#mtN+@mtW$4fBh3pxe~3#W<1x$G{N;;Qn?lig%(`bC5|G3pvu)S zjQiIKTaS~WlL!^pqAr)`b6@=;>(;L2(v>!*&7Q~XIkPcEm_Bz7>3lQ3J3q%WEBXO)iP@12(04kzHLgqvUx|_(v^~m!A_sEf> a-~B(XcnFA(m*~X+0000QnBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2ipiA5jqg5-Ax_<00d-7L_t(Y$F-JCY*bYg$A9PE z``*lSI@phCr?iNC#nK9t1x5maQdb1yPNNWGL|7T43wOo^L4U)}7}hS>o4C*zw+ZI_rmAB;9R2Cu3bCx)Peoug~FclL}te>j~_QZ zJ>AE4?%esPbARrR#x$Ob!2DK38vc21v&}E0VJ}!~85$a*vsBtLGd+#>9uZk`SEKx$ zohBmW^LZ3HW4gM!s>NbE)>=RolzN{6g2&fQk-I3L2e6pO``e&JAc`z5O_`gU!!P#g zzlwYu$B0O1T3cJ=QmKTsc9}w@6eci;Xgr>zYDt|ChJOKCtC~j;T;lLr(5ePOp{XVo zmo$3LGdCBZlp+iQsse&6yK`w|?gk_X0z@P=ZEdYdsZ=B?M|i1uRclS^g=!pg;l~S1 zPEE0TbvN6#4iFf}FBgAhYU(B~O>iz{-KI@ATjtM+>o}KCO+D+@Z=k2tSqlLkC5oBZ zS+o+g)_)7e->dgmqMCyR)7IXWbgk~DTrN|8E||bzqghV9e~Pko^lskB58n-Q{g0a* zK5~#xKKhtzlYi6Oy8&x0`Q`${U!7-ce3HK2jYM%wn90-C(^F4Nk5WSRRukp9GRBzu z_WVi|7=wtyVFtU2fTFjWghM>F48++(H zv4b?pe5f)dq*oaiqIM&8xiK)C>Gm@qKMQv zDwXOoy-Gc}NCYORRZy*UvQm9$$`^R`jo10?^l7eKn_$=AlML<~M2oO{XdjtED{(Z3 zOTecvxNi?ZZWY#AoU3(QpQg+7iU?sCF07Zf$Ho?U*K_YNCYVo8v(R`NS(C((&3`qs z|G?7(nE-_%jw@6vRUUt07eOY25+SKt1kLU}LrA?Jq#jb|mRO&HcW5OTZAgRq7~${7 zau$IP0)x_`O_C&05SV%?Tq@NlpAu%wk}mBDvtixqwa%7$Fh+q-XhnO zBXr??M}qoDGB2l;BCf=d85{fU%}OB1#z7e5@G1Wni9nj9jEw#)<;Y4?HY;iBYm*Hi v4FjNW7yt!*8-b*Cp4xb1Z6z8R89nw7euxTyM@YwE00000NkvXXu0mjf3W7zH diff --git a/htdocs/theme/md/img/switch_on.png b/htdocs/theme/md/img/switch_on.png index d4e32d98f57ff37c78bdf1e6b4235e7fb4cefc17..757b78dcd6a9dab3c4341d255ace73f09eb7cb43 100644 GIT binary patch delta 1091 zcmV-J1ibsq3D*daBYy-QNklZ3%qEZFqBRnKgk7`l@OG}Fk7Yj@YYY*x6y3}jI zu04Bcbqdy07xf{@a=9&2zWumw)r;#c%Pq^hs{kJBu@BAHw(Y z^NCS9GT%NC@Tv%p2+VAs%*I6mWpGb4S}n@lBp)TB9Q4W=Zs`|tr{kW)PnX|KKkwyE zXFrmg|m*knB(@G$D9BDQ@XP~&baZ#eD5DYqg9f#jdKaI391s8bVy{w2n@sB zX*4Q|sDH?0#)uSwn{)pB-TCX<*ZI+|cc40Gs>200yAQi|{+7l5PP|=l$@IgyV(=9* zBU)7tIS3!;64WMgS!M@F?nDHL^%Eci8yQ{{G@4C3Dgqc23?rzlLA#pb?|Xj4%;X%F z3Kj=DXtdh&TC+qJzv#c86K`@iM%S${9QEmTI)4nTCWSMuC$brJS>OQfMkqnBA!Hy7 zSE48jJeSAhG=dajSzB4?pT|#kew46fPHUgV+RP4yzC>jm_Ka@e^5RQecJs$FV41Le z1HjB606>Cl!O)9v080sr3<$9S1PBNtQDRYWB!S_iaDKD;NiLgv5_evC1%uHdC*9;M zet)>~dPWRMDydS3zpZ_T6DRJ(q;7+)RJba}pWna$6nHAa5v1fq#J*#_2q6<;j?A#| z10n&8ag3q$**n_Ix9S&jn_FH&OBLTPG+o002ov JPDHLkV1mN53XcE) delta 1209 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 diff --git a/htdocs/theme/md/img/title.png b/htdocs/theme/md/img/title.png index bb48d617379cfd5d92909464a4571e9b987649d7..40020575416ed93d60c11e08819a18723b844530 100644 GIT binary patch delta 1523 zcmVzwQbwB?cK52 zW6!h-m$_3@@9KKbM!b%6zW$)DA3v)L`5`g+wIOV!$z%MyKX_!g&q4r z6hvBU)*?hBuDYoD4*@Vlb?-ZP*yyqMjO^KSK(`hRwHg&$P=8Wh`OLesW)>8e=8YNF zXN*pxQjHro?!~k#`!4*h0El9k4<|0){=!4UdQvovXbMp@MIrnn29(rC_;>Vd%(cM- z`u6lx=9mAj0FxJPIWl@+r)F3PGf=1ofV2^k#)v){L+_4TG;PucPrn8r{x$$sXVDsh z8ntfMZ9xC$AAcTwcir#+8$;g|BN1aP8mUw&wOXZOS%zk?puqE9kJIJ#3>y2`*lWi( z9{j}s6sw^PfejngY1XBCx6bVcc5C0XZfKyzOd_MPG6B$N)M~v>r`KSk>6<43H=QB~ z0_SnNofo51lI|EYtiQ9=QT($2aHQe>5luU`Y2Uej`+t@V8%Bi%*jNTjO2Q;aqtR$G z8VyDqvbshT0O6X(4Y`jCugB%&yk6I&`5Tr_|Ma<6Fx9OAbk;DlF`!<%rtP}*Y1XiA z)4Jh-cD0ISNPe+4MTAWzqseNu*$sYvMlwz#L_~;~6t&b=LWorr<)u!S%lXK&Z$5hU z$hy6^1b=AM=gAL84eHiGuhXcBm~^&CkIg^8Kge$L4i6qHYhMCI4C$I%w#fIYA!JV3Th*k z1?3F*0x9P>d=|w;`Hr>Q4sV=@A&ZMc_pd1QF!>34tQc(iBkGX$e3S@mc}E?d8Gc z74RNui&S%7&b@u>rsYL>S=V#Ut(ZXo)Ha*_(M>xJOr&XAdnrB#cwHz6c&8{L07+An zgk=UrAITkg9+0w6YN=mdT3WDe>&8{(X@6%oN;@I6|G**RCQh4kZ$d&mWIC+?l=?fu zKL#SzzQWR&FG!$S1zO6Le`M#HiM0R}_O9PdoIbyIzX6ReMW=vM9S$Iq*Q6EzDaFK} z1tRYYwQ3;1qJ_$;YR~S?D~{~hwB$(yAe+WwwLQ9d$NupZ6&1Ra5;X{nUXebzmVZHh zDkC+2#BjR~Y$h!f6_>hptY36u*ZPIa%S($60YEkarG@nAH}LBTQ)WGI`9?fcvf=Xi z`hxh3E7~-TAk3}@vq1xnyn^cOtLGluyLsu->Z*!k0FaNJ^LZ9X{SIG_pSq}hhfdAn z9UKTM6NukWuNv){d@Nv z@Wm%zjDI{jy##S88&)Dw%F)WgdJO|Al?w7Jct}Y}DL%7f-ma_1w=5F{;eQeUlqiLN zJ^&eS_1RYwmo#eHvQ-{u$D*`6Nit&6vj7wW*(DsLB*x{P**SlE^y!_e0pK$BQtaYy zeJfU(%$7Tsuh}%)QOf&yQ~^NDVo(DoGLTW^f#kTW**M~@@fQ!R0Dv3VD~a&$`C4x4 z(W~!guf6@j(`AAU39KGc^K9La5`8Z1^p1HOlCPiI001$*!oME?nQ!{)o9`{LH6PLL z+SSX6r?<~rpOJ8RGXTV4ulh4SOlX}>*TE7P*(y6V_7nglVR!!7Uq(o}UGx8c8~*D6 Zz6Bt(ZaQt0p1%M9002ovPDHLkV1l~&=G*`P delta 1591 zcmV-72FUq@495(RBYy@CNklVNS;10tSHn4FnDanHW} zU)NtMIu2+DjR|A|2r)=@wRZh20OCO-lgFoLOq%*~Vq$8-(-8tbfj1l4JKkQr;j3o7 zu_-e>DO1QNh^(xv_ip`s?9xL8fE+G&X?9NGyVKJXIT!{p4&-1Q^v8kB0XVKUM86*{ zT)R3xH967Np?_$AqEa~0x)$5-8O~?RpH{S?Q2&rnX>=@`mX`t zLb*U39QjO4LTbvq85vW;!_-PH#)>f>BPz2tb?+kr>Wg&wph%szq4>= zMd|*MUI8MLW-XmKE+I}NH(@Y;1UI`jiP~!=08M0E0(NeQjLI=!qhMfPcUVE*=~d+%LFa|4^w^DtA6&Xi(tx zxLeRW0=_`LeI&|-zE!8)clh+-%_~2cPg8c6_w_qm$yRs;>b(3~ zC^XTnb_!VR4)z}Q7T1}ylh(q5yqwmiJAajTFYaE?0PvJb)y%x26WM6;39i)M1(YxZ zIMAIm?aUCX>k{@b__U#?(ai|`+RibUdb`ose7NA?ckQ<>9CXitkd(9+va;81dbO^u z7BrX@$VHx)@E?PC1pI`78_o|TNJanw$D%7evNziefHDV0e3rd#>zJ{rPh6?i0Dm(t z%=4@=k)T;+=qpC|6~uX8h=LE)aslY*?6Q5Izq_ex z4>-6YpYQ>%i1e`c3gVoIVJaa|N(G=*Z?qI0*#6_u1KV=ijjgB9C5`?|asQ;TX)8Zp zvte3!RW0bi!#w%z3DVQ+NS2N!abYMl;rQ++0|(}gD%lA^Rc(R zfN95lvg*t2v2nwrYqcbB5K`a40q~k|JyU}gZ=jY508ZfGuJ$)m@xF~GP8NQ<%VxD) za0yfQ+l+WJxnf#wLCG4eu0>>kAwE&?4!L(k_yiXO2no<(1>knWowlC}Hh&*0JF!29 zB1uM=S$Z80vKl29Tg#>;MR-NGV17oa@?=u8yQXf*osMO%(m zoISJ)ZN*nmx8YvG_XA+;LzjP=y(2Pe$j~NIg+#ILrvi0LML2qPxS-KM0?qZBrt?R( z7FL%X*@L>vQ89vhy#hVJ3x5eAmB}aP?9JP#HBtdKLd_cGVjduAF1X!l12<|a8j;5Z zwUPMbps9k>YG)LDV1`r@s!qAj^MD$nJjYp(qn z;l2Ve{ZSt-{Ah>rsh47|R+L{aE8KG6c3pWsve%%}`6xb2FriQwCom5hIJEKRFXvFZ p9u@PW{xX8D<(m5c+weaJ@H-&1ZaRPCJ1_tM002ovPDHLkV1gD0`knv) diff --git a/htdocs/theme/md/img/title_accountancy.png b/htdocs/theme/md/img/title_accountancy.png index 1159e6b8d43f366a3a80cdf36748b528dc65c546..cf043a829d988a2a70d4a009f0d79cdd5faf8f71 100644 GIT binary patch delta 553 zcmV+^0@nSf1-Ar{8Gi-<007|tn3wIyRA!EL9C+$yREaC zL#*Ss-7#lQGHG=dfU!sR5^F+9b0{K*?!xRs4@2tfu_xqqF+I)xG}AQ;8FY_7{0M36y6 zZb^CqKS2+IpfUGuVn{FJ7Zwq$;#1Beu@2!Beqt`cayn3kANhelXuw#4pg(tTSeh5K zX%rIcC?E)m$z%ZEa%|dH*jK2@SPF=BETb=faxce{`X&D)Zs04H5$kBflU%`(yZZ6C rc2d~7K_a6aMM7Qa(ZPm+2BQD~%8s=48zQf500000NkvXXu0mjf#S8x9 delta 666 zcmV;L0%iTT1g8a%8Gi%-002t~P!j+E00Lr5M??VshmXv^00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-#q4h<0+E(}vR0006wNklRo9LE4aU(}fXHEa{LgCvAu|*GP(t`&w9TcDw4GND$1M76da! zT(N19qm^U{tbbC6E)BkV;)M~x3VR&1)(L6XjOVAO%w9JI!EHw}=eN0TN|3T8-&K5;{YMw_$WbhgkEN>FC@r`br4i#8kdKD&t*5=91$q0$b`hJ7<@9%H%- z^U<6UJM2S~18NnS@GW<07ZL?if-)Ob+o(a4U3S?dVSiLqs3AY-w_b%}b++59({?M( zm^5v^5TeMi2U3Pas+D7%7ROW>FqWNa5uchf;iExsr1ToFT)ip{68iErWHz+A;F)Q` zpbn+^D9T>w#yt00yIPTcLq>D^C@9yiMTIw>>d)kCT#wHhl}cKbpCJ?4oRO5$ogsoX zagw9Vvwz9))}}o65_=qVFca!lr)VTJ8& zT-buyxWG+#&*H);EN9DPQN|sz5bt!Jy_x{>X#6OH53==i34iK3kn*aa+07*qoM6N<$g3N?5 AQvd(} diff --git a/htdocs/theme/md/img/title_agenda.png b/htdocs/theme/md/img/title_agenda.png index eb4c8d2bea24113f1edcecffeaeec78d3f0b8b87..ca69e7a53abded8617b87fb70b97f19f8c9c8913 100644 GIT binary patch delta 526 zcmV+p0`dLs1*Qa$BYy$yNkl1i zP4R&(jCUQ+EW~qsjdH=9NjjmC&-gD2KBAJ3_|HmK`H26d)pl+n4)Nol{oziR(gxKG3BuyM}NXn=kZKV zbjJd0#eOWn7}SW`9fQLX%K~TdOgi+%AxM^@koCCX)|q6slXxaA=3{r1Y36)doU^)7 zuYui=Omh`K3x8YVm}t%?COFS;J@ad@RWMOKo@t4735+p2V-lRtweIPJb%HUf@k|;l zz={Nho4w(}PBpWW7b^tAwd2cRkzlad8!YVfw(grP-=!Ph0J8=C%w9iXXNq;7wAW8N zz9XgxdYHX(s1wJOsQ4bjT^+UK+hDAqv-o(kXZ^pIaDP`b?f7aKE*OaR37H-1zTtxQ z+VKTVpiI`p+?7q*Lp{BCgXxN1GEot8PgQ9T`CY^pN9SMEBPx#24YJ`L;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2i^-64KXg}q}Xi$00M4FL_t(o!|j>BYZO5g$3Nd- zFgZ~$CP4{e5|AJYMhkxhB?tk zL=D*uJPYSwS$1#l;@oZ)?!j=!zS(!5`R<#Uw{tQx%4%Jd*gEhX_@dz@O(t9$FN^Xo zBrQrBmozD96}Z96@eeJN4wmgK{ z1a6zzQrIU$CNp9Az`ki#ry3W{);=- zNV6l7?qocf=v+A5U~csKhX2|`!PJ)lUv*ERFC*3uukdD8mGlef{*Rh%)qS4INWrys z)HX|dEO7xg%&ZQ-opLS{0yQ)H)0Pu6N!Ng5dr)|}m@~6Y-{p6!waq;Lj^qjlZ&~@s z6Bq+VGUmWKu-Hl(;&w>urfwvey=NEc#>2}~cRGV-+a0fB?YT;PY u_n?9f9CazM93eki238#myT%ZL@oslx6`4!3j50<500000=fi{BYyw{b3#c}2nYxWdR3T1Tlqm)FKby#{*c}Du|8v1U`WX78Zh~d4GTev9e1dq%e@yLV`gQ zL=+(w>*BiJ*|}$CXEVb7;Wm5DocrhAIhVadnseC1evPr&Q*Q<9xKJ=(n5Q-6QiA*V z5S2V!@cW5KkpMGzjf=St6bUxTG+xP+JP1Jok`ckXI8-pM#~n>$P02eM5qw`UHi%iB zl`NDz8Yp%j=YI=gR|0kV=}InRyFVBay!?AK!7Ns>h|j%&gKCl#r?8Zp+&x%($DINB z*An?#RZV+ovPl+jCZ_W*O*Y9fyul0XWzO*uJ2{D|Egr?V*)P(jCP^|DtV^UxcJUlP zhcNFPZsjCK1Rvm8C7m>9akVTdvc;dOyClgvdaAsGmwycB8jwZnn`A6lm(~kLj+riR zb?zY}A+mx~L!LY9?j2ddN0`T#N;-eDDDxf@5j=^9m2_&*`X(6*)}_iZlgkf0#`i?* z2yWweS&=3M-{IbX_yTT}6=`ydr!ZL%o6z}ISW1&Ccp6{p7HNHx{I`N1M{4nh-Q2`^ kY#7}ag&S{pBJnTj7X$X6)0gJvOaK4?07*qoM6N<$f-Mv5egFUf diff --git a/htdocs/theme/md/img/title_products.png b/htdocs/theme/md/img/title_products.png index 79c42a93647290818de98c961ff2b379efcd401a..cb20b9a0a7f6fca61be8c76d8c4bbd7af53f8f60 100644 GIT binary patch delta 298 zcmV+_0oDGR1G)l`8Gi-<007|tn3weW4Dz59&FDfqTD{uQg-(>hsbf$h{&0vrT;SI05?fx^=+QCAjd;1>E#rGA|9{Zt w&HTce|H=PC2P2Yd0Oyb#IYS?`XS3P<0Yo%dglrv2XaE2J07*qoM6N<$f-DJu`~Uy| delta 395 zcmV;60d)Sl0-6Jm8Gi%-002t~P!j+E00Lr5M??VshmXv^00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-#q4h;?l_g4Yw0003iNkl#uMN&0{ZmRre<+N zi4rc>U-qcVBY$0NY;=<_P1xG+Ts^mqiJvF p@gH*;{T;oEFdkR?KYX_}1FeIpO9f4V!vFvP07*qoLXBiTK!e>rGNJ{;gJ-%jfm7b({Ni;R=Bh zZcH~Biq18^4^&yZ&(QPR%QUY{PDKU*iw<{TnGfkg$$NJEE?umdKI;Vst03?J? A-v9sr diff --git a/htdocs/theme/md/img/uparrow.png b/htdocs/theme/md/img/uparrow.png index 5d54c6a4c91bb97934aa53b8116985016417559b..14a7b767b9903c712f24cc66443961ac1c02c24a 100644 GIT binary patch delta 119 zcmX@a*ugkKqJV>mfq~&~XR$VrVk-&q3ugEag60v@wLlSDPZ!6K3dZCg|NsAwa$;D~ z#^|wEouwfw;7a1GmSud59IKoeUd?RR=?#{366ARh>|V4ZA-tXQM2LINA0~z)r{{79 T&fvTOG>E~|)z4*}Q$iB}VIV2P delta 178 zcmeBRJj6IbqMnJFfq{X)mFGQ>VlVOZb!ETC&B|wLroZCd6rd1ifk$L90|VCw5N32* zV=@CM$dc~p>&U>cv7h@-A}dHyfKQ0)+O=!nzkmP#|9__rr?o&q=8_=4;Q#*_uAkxs zs%6miba4#fxSpJmkdToez{{JOAds5CDx}S)pu})4iA6|h%{m7sku@wXEr&QJ#4%iC WWxKxNI?rjKP6kg`KbLh*2~7YbyEef9 diff --git a/htdocs/theme/md/img/upload.png b/htdocs/theme/md/img/upload.png index 862fb593232ab42fffc8c17029f166f81cd39268..0aa0e26da51583205a5238dfe95ba60a3fdda2be 100644 GIT binary patch delta 219 zcmV<103`pY0_*{h8Gi-<0036bj#mHx0JBL%K~#7F<jJKv$w>eJ002ovPDHLkV1huXTXO&a delta 280 zcmV+z0q6eg0jL6y8Gi%-008{QM%(}Z00Lr5M??VshmXv^00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-#n2MHY>xOGLV0002FNklxF-}536ouh0#1N4JLWnjL zEP}8MU@uzuIy#m>g|VXtS_lOdVF@I3#vQ1IjD^0(OrEvglYdNR&i!vPb29u})r=ej z!QMdaH{{Mrh_rB9hMp572%c0g?HifbqLs;teK$wyHqrDLjDJpZLsxKLLUQaZc(-)T zu|Q^8nxLs=R`?HmCYPOnN#ea!oRT+wL~CB{ifLjrbaXTlZ%f^}lu)cUz3-eJqnuLh e^#A;Od;#2oa1q*Hgr1QA00006kZ!%Q%Qg;;NqA6`Wm<_`Yr4MFRnw3CBQy#%fGWvu01qW`MGds00000 LNkvXXu0mjfGK`qi diff --git a/htdocs/theme/md/img/warning_white.png b/htdocs/theme/md/img/warning_white.png index 56ea847427b79039889f88536148d81ac20a4f9e..1df801fcfa56eb5bacb2126f07ac2edcaa2e6f7c 100644 GIT binary patch delta 205 zcmV;;05bo)0_g#eB!93;L_t(|0nN_=2Et$%hw;q}KqxA@!PpJ9%hXY-00U5WXq}{X zg{CMJ5GYztd@q@|)xMG*exDEgd7YnC6h-&$8$&7PpN>R08IkRXj|HR@zRggKaJw1zdX{x9$JZ^wL@D*T#R7b5U#`1LWUgcnsQ`lI)B#(R5;7cl1&c5Kp2MKlCC94XyOJ<+@M{#32QFl zXXzyB0M5WANLXNHMdGoUMl;$*OT?4B$t=F_nfYc$`W1i&cz@pzMZn@yNdR0-g0d19 zSn?zS+%lq&SHd!)U5aR1R5D96&rM>c?@D~&lxXaj#2f+N?yFdms-%&mdd^-ANkdbc zd73V8v+l(n4d4oN^F$k~;hwPuSZ7HFq*F6Vqi;*vz#*eJZM2v@(26AvFrhqSz;S@4 nq?LIo3jSM1(i&M(Pk+Y)-zmYwDgE0yw36#QR45 zdvp8emRp(IPtQNR*?KecbElxdV$G=m&<5RKhOgXu@N(zBWPkHKz0>TjFVQAr%CTwr zv%&Yj`?>BXZhzECDXGj!1yJz9{ciIW=iPOe(_Cq1+r`Jj$3<64Qc^08B-0Q7;N=hf zf{7>uadH4GI0tG^I@i)8&Tyrc69Qn!v3M9EczVTB;p5sLf8m#pf7BO=DUCe|02aIt z^xku?v)y~H*?*wI#o|zt>kJNH0eMn5bMzTipMKTO$KT+vmtoC`0a#P{Pu;!e1!uZq z9S1|5CN2erf|NO8nlwns1X7UWF;9<}5B_X)m#2NPmQtDH2e78_?|b(3*PiukmKF{R zIKT>(ARJnNM;o7v439z>0W};-zB*jH!;?Q4BtqCY0Ds#3{m-)JUFSJXrXY11xQvKF z2o52R%-AI$!%$&K^@@kXn6FKv+dch#L1HTY=5qdy_U?;!{NUBQPm|(NDeWoCOejgH zD9OpmQ(j46pIsaRx3$GrI6J8kD3z_6ScOX!IHyDaOck`CWWtzV zv6mr^FvlbU?Xm52?|Z_qg|iU=rT>+?c;LijRMI(+#S~WI^WS?u#KEQH2q^{23>nLY zB}Vep*>R(XULN0W1OT&Md;i_StqBo14t>BOCx0bJ7?flz(q;*lm{{hlgp`nQ2%mro zqdatsdFWajXCna4o3{tISS7&a02RxWtjT0`jNBfOv!69GTnr^fekiDfIADT{k$&55F9~ofW{62k*II*h|S(??2k>*4TohRo3>CZo`+Q{5*FStVvo zS$}abw~HEoz2v>WCcvOkUUP~gbqxhaaF`>ZK?9GHlo~EDr9+FDlp&rHF88Y@rXyBfJ*(7k^wxf356bJob1d+1F6eL5JCN&&cuwaz~st==fw9H`{am1Jj zZCoM_&eN1`^M0L4phjIO+l(xm;ZmNR|?4kTIZ1NrQPT2~9i|tHu8Q*m#tA z)`7#l*#H>3MZ=QPW28{7oL>==QGYQcrOyI6K1~VY(xHK&qEAMb6_sL_DHXoDfumfk z1TYhTR|Ro_rJ9LQ!6r5Gf=zyg9IZJeCr85F- z%d3%38_QI7^T;rG%(0CXJQXDj$q7^&YXm~5F!Y5p#-q^Zatsj2mZw?6&VOP;8|Dmh zjh8L@goL!wk1>|VBc@mi4ol;8Wnn=r$E8cg3N4yAazhQP%=pCF1(s(6Ak5ug}Cg60t5<|(xOfssN+x&5s_eMFr=w!2&mJeMJOq^5a8@zn#`DiX5Rh!mt2n6PfV!b!A8RzIGe?I$F81eJqL}~;lvnuNvC7}S>FOs(nzItLuE->`)Ko)Iib{=a?bJ@vOU_=C8m`i7rfa*#IgKwqOY0<)C zqEXAx!6&9g4OdmrViz5tMvtMiw!m0+%&;_-MOV{NQk?lCCO6Couzzh@f8R(=#G^rt zruH@1wG-$H-6f=_j?u^oUh zM;N8SJ#Y0XlYe5_H~<*yWViUy6>hxtixpx#4caS2tZN{xejh$&N<^acySTJ5R zXGjnN-goAo`Jnn;wue1D61AfyEl}!F78D#SPr!<8zJLF$55Lk+gG}L1!dWtRf8(_m zT7QUtnZBuE)M|H z_#qB8jOIjWQRd~RgV$a9W7~(G_I|R@lsdR8^-t{Da~bc#-nqm7?=|L)hoP{ebi611 zarl+_k5XOgm#v6g!B5e-VuMq_@aXgPqW-jz06S?G^hG(xdkxj n551s26nevJb8W88wYh!`19%d6D7E3k00000NkvXXu0mjf$|Fa4 delta 2423 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 diff --git a/htdocs/theme/md/img/weather/weather-clear.png b/htdocs/theme/md/img/weather/weather-clear.png index 8b5c71297be93d30ea29eadc000fd86d8df8b06d..ed1d48065f3fb3aee5b7d47cef6f0d869b6ccca7 100644 GIT binary patch literal 7439 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 diff --git a/htdocs/theme/md/img/weather/weather-few-clouds-night.png b/htdocs/theme/md/img/weather/weather-few-clouds-night.png index 1bf2322a35b7a183d45674e33f4ee95d1a8e96d7..e2bbfee2b0eda9415480c99a1d7bd65b81200e16 100644 GIT binary patch delta 2201 zcmV;K2xj+~5~LB3BYy~MNklz5R`r|zkH>h>(){^9my zh0dV(_PMVcrCkOwd^1F-LC&I@kXTz<0Eq{Hrc-i0YQHWa)z=8Mp zUu!*m{>L>Ap8|nKp^*rDlI>GZ{{I&+7VcI7aDw2$51M&GUHH@i$Ov&%NHOJQiW+Zw zfAhZ|v?lB=4&WgEhv)wAzs5vNkkQ2kuAR(hq%FliO@>`zUcH$NVK>h1qme18H01eyUJK7s=rWd_A0DHBBqJ_OOq1g=jm2lN z9JkMafMph_Qk@%~DTcq7ax($&vWQ6%1WiH=34bFDIW>GjQXs4`@SHv4=R$0lv! z{DeK7{U|pLK;QrX+Z!C=Ae(HmhtCu#ikLbUg+mjf@u+Z~8KTllh9+_C^N%oJ3DFn| z>s{cymbNwf(a~er<{i~ty^hESa(XUsgf(bP%i-@=qHI79;(EG8@FHc}GfI$-= z5jYYYjvR?(grLd>Lt;|)@u{Eql{c904z|p$IrpO8FPY!GRs#Z05sTU2XTv|&N8%_{ zenrg>3>ubGAiHkfSeR@iIX8YM>o?SOufa}@snJeZX)A>qh-Fd+^1Gd%Xyf4+GDhJev1sbV zSPF77JRl&#l%Kfn!LO6rQ|eT>F6}soQY_%E0I(pp>(*A2r>7rIe}q4;&qQ&U`F{-ou-wwYZ8u9O$np-cXih{nU@=bprE2f^wST3k3>1j)c^>9<@Q-9dR zr^zBd5h1FSFK`GvKmg-%G6K2rLw~0bB38e|G4Ty`!tFD{I6s?J%kH#r0AhK5Yw4h0 z4~@6g*>Wbgp5HVC+8{H^hr)J^A2v|f`Zi{<|5#xS)-QrWj1=L)x5=zi~8-QLpdTtP3WgnzBcV6L+0 zkL2g{iV(?+T+%bDs+uOUh1wQ97ybF?PR@jreb#7E!Qta@2qYc`K?ICZRPFrPcn;;( ziY<$GNc<4-INeyw*F`Gx)TlUjJDeTqAE+-(uTOcZUd-d=epMe*9w#`*{#Mwb($Yyy zGHctJ@wL_>^VWXgb*KNLF@GQ6qsrtB1&RWPAz_F_(i|_Xc`X`bRCUiw*xdj{*Y}B;`Bd`qJ0@Z80Tkq~H`8T`oA0FOR;oe}9o8OO)28*=ZSp zaFW)9x07?0+nPaG>yLjemOkSTwC$ zHp<6#-JPm$S8|y$z<(Qtc_V5_&o$*C=gX>a!WYxD+@{;!i}$9o2|cO3D5+WBdL1z` zTV|vJ*>)i?aI5l+Gy=M;aF%TnG7J_cpac*ERH@OhM)+c)H+Qif6}nKm;x)I#G83Hx zn{8=yo{bHDb&s%QfL}G@Sa{9mEU94{GbT1B6>f6=gj5)14!8!h}m^KI;;6S*mEJh9_ z3WK7~_q(5Ffq%BB5F^N0;~SiHYgEMoF&(!pra6vcNDs>ttMrNS`B{FDJ}3AN=h$JB z6oEh**>Sma!=Es38&d?)g185Tx za{$9h_UMtY!x)9eLtZjVSu9pu+j8v05BIG5DTmjUGFpNpj7>4D< z*hbP}ojoiPS;nfb24KVuJsmp`S5@W&0)@b0al(NE;F5_@VaYL2ep2d3l`yVExa2qA zYsU^W003by2;2KV^uk{pVhF;05ivRd8w02_z>eLL$0fLn+oN-LPCf4j_{}^UDEg2j bNs<<~AQJfLxceV000000NkvXXu0mjfl&~^- delta 2318 zcmV+p3Gw!%5ttH?BYyw^b5ch_0Itp)=>Px#32;bRa{vGvuK)lWuK`{fksJU300(qQ zO+^RT2NVey7AE{Yy#N3J0%A)?L;(MXkIcUS00^8(L_t(&-tCx4jAm6ChMzOs@t zYwD&N8U(t5Mw>wqH7vxKpb!^`3lb7R5{)ZyAu%y(h$|A^k$)H$ZcNk=bzw|MbYX~* z7=wTUO?Ow*UDWv3@X!C9&N(isx}h;Zw_WI_-kaRyCgjzrXY9qs{RW?SApdO*9J^X}+{}`8E1M(}Ma0e6` z=+a@t6cr>AMV|)ibdf093^7;~bDU;`eULwr?L`Wtxu=FE#6uDzNwL()>9fI0EU-w1 zrGzA9kwqjCE#%$!Zcl1J+2bY3%+SOqAV8q$!_0v6Cju*$72$U&jBhZeEI||GDn&6%;0n}xHrAxg~-by#z_#=2{9xLG2~S6 z34ck6NEoBcfDM{#^E!?-n#B1Ddn&v6zf6JPdarb(ICLsqHL*fzP zQKi8MN5Oy;O$oy|9V8R95j5y;eyMtQ>3@aZ57ilsB>7-B6rLW7?utHBnh3_!v@9ax zQdGM(x}keZ`;%i>3}Da%NCb`qha*QK86qgN%7B=ZZG5UH?*6rTy}xcY&6%Hd?=tti zrvd^`5sT^I_V9jvO&o>FFX@Ws%EPLzM`OONE}T6s!VnLO#gHH=ut-9NSPUMJlYb(1 zH5rg|crCp#^@eYz!Nl^D0^#5yi_}OY1_x144{lWt#UJ-(bQU5t+9@k-sZf2fNJ?M6 z-oCYohhxA9g^$FdsS;x;$jR`4fCz&{<2v&%liHK&WVj;jD2P(*&R>0jz?^JVtt}@{ zr+-Rs;{NJX6o;8#b4oc~)MP_WF@H%z)QL!MTm0+Mfma|HkYkx;9E*p-Lt)4W88XC? z;8Vpg{d|<=v0tm!Mc-zKBEpb6M<()J0t@9=!@r4Ie6Ojvm13eO=y@t%^ZT-7s+o-C zoSKlHwzOFZ*MvU#`8qyz4&W0JqOceQ4uQ8@R3iq|0J(bPBtpdMF0K`?sDBe~n<2*e z*|b`8r*`&?VsUo;;JjZAjkn%jcP6)=mfug`+NPie0k<>>Am%Rox zGRnH^rL3|Arob!knMc6VszlahGyLiRUn%#1p01Co|Z;HhqqXuMM8$bo?niH69km0P_st(VyruJt{N4( zP`c#R*To`Z?W@+B(&#)J8FWcWk%3Xa2Cz>3`kX{zgK8CP9%?0B+|u)PN<$(vc7%OV=EnFJ^_OtZz8S7?ah8r;|MI z$08W_>*+sRCyE+}*bqa}ml2+~Sj&mT6jP*ZbJjaoUft-N>#NkaOT}q(O1FbEJXlPc zU2kpO+ceW>L9?!W1icnGNMO;rA)vQ2>}Hu1y^$n zSm!ida#n#RAu(5Bc!MpvBy2E3q4AKrtCYoJ#e3PY6K@OSAmT8v$`Fe{6YY9$K><{V zFpNmi7=H#t%+W;BW`!**a(C0L|AT-LmwGzBsN1qDnG*;U0*l=#B6nd6gNMSBV>s`* z0*OK*aafA;b1v(6?k*bO#Dy7-cO85$5I#@#eD`SQ?shJ*2mJx@?lO9xvG0uGuDBz% okA3W8AN$zHKK8MX4+sAS|Hkvm*nDnA00000Ne4wvM6N<$f+<=~5C8xG diff --git a/htdocs/theme/md/img/weather/weather-few-clouds.png b/htdocs/theme/md/img/weather/weather-few-clouds.png index 2818985f4779629bbe1860f15512b771351a3898..3f188e6220d0f25a6fc4ec55cf3c13c70ec105aa 100644 GIT binary patch literal 5730 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 M07*qoM6N<$f^50evj6}9 literal 5360 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 X>>>ee_X$r`00000NkvXXu0mjf%OhY5 diff --git a/htdocs/theme/md/img/weather/weather-many-clouds.png b/htdocs/theme/md/img/weather/weather-many-clouds.png index 53e1db6fb323d2b42bdf4dc321be165e2efe87b5..de4cae7e8e1fc1b48958374ac1dc3d3834f7d633 100644 GIT binary patch literal 4399 zcmV+~5zy|5P)~>$=CeN;Ry*C0000!bY99<)9&T2nigd_qG<1`YRv699)?HpVQkyBt+((w z_<`^#dW~%x*Y_UV)}W_nx{zHR+iaKDTDA7>KXp#{uMqF+>x=aD_H1ha5$Qx?+Mv{P zeOGP2&-M}k{=WhY4-dn{nHdYHiW6%?bqP$+zci(gVx9b3v|vUXXyTX0>s#EV6i^E~DI z%lVT|I!m%YLb$1^3D9OF9*+}@PZo_vs~pEpQNqaCXP-SXH8r((@4fempBn$s#~&L6 zz(Rtwrlwj@8WkHiPRLBAQy~|MZ4p8!u`E*p0pm*tfEIxgq5$6nv@*<);V&X=u0*#0 zhQyw}UwqK_3qw-!)}^JTQ4Eh6N~!I6o|(`2w|8~D-_3p(@#bb|Yi*_V_4QR{Wo0`c zpc=+#RqeL5`);$%HoMu5W3E}V`Z3$Gp1SF#n|d*kl^%QSvF~K{4I4JF`MLRIE}uV! z3$bf1pBoD}pRsJUCLT}aJ+Gt^iKL5G4k%?dz&G}%RJ(wL6G@y)N`->Z&}~v`$D=TW z0%L41uTa=)C6i$UpgHQgk^=`ECpj-oGZwq`R|#M*y z!}i^8zcbPDaVZ2vF)G5<5!%5A9ei_lPxlTRH*B~+5{YbRX=%xC+_+Ia_~3)^*=L`W zPtPpuhkPza@`nYbk|TsbVpLK>=55EyO-xSo$7*6(be72l5BHuRaZG&r27&?zDHOKr z1(g&M0>J?V02ISO@=BmGMb8VBLkvbV>QX!m3>PRCOM8xwPe`;A&r)* z$ALbjv>K27(EdkZ)@{-j#)ZOp2nly390vdzoIg7^w`TR~HFu7T48L>ZjW?FMdwOHb z%PUt(DXvBoMs-|VK|-2B27+qP}} zf*jtouI4ejwe2WQyjhy9hzy$7>*}_}u`F{2;Ys2II>~_<&MVrImo&qBo?}>v2Y_8_ zt^3l(`dX62kuNG&q|mNJi@cVOSW`5pT2~4nWXvTW^u1#%V{R71Qms z7n(uSvHf63=^#z&Y;hbX^qANfkcYM|%Ts_yJXdPiOk$?Jxi%h8pseZl2Nw2-VRn6E z-7POI8HCE$#ZX-aCa_#fYyr=*a>02(;GttZ`UHWM$W;UBB$fgY z5Zv18+Gy{dy#PfIJ@bKQI!_U3TjTH_YJe&e zYT;bi7;Jf_H2^4#Vu}xml9fTeF7+!wumxZMmAYb227q>lewOGkAAKsto?h-8(jh8I zI~*=cp+`<)YoT<}-@z=>EY{p^GBJID*$P^wE_zSKW0#9yW|_NQ*simK07^`#7Dv%` zRe;~Ed-ZQV>KRWzaMd~IV4U$bHYh;SOw{lgFrG{q0Kz$X#r_Kn)gtfs3)okKrs0`} z8uE)Vjhbf^LV>Wsclxr8VTkC8fjFpaA`Q&B-N9l3e+}z;x+J+C$A02*!eyr;) zEiE6_ejElt&`vc-ND?_K!w?VW$ss!P2Qv^M&~1pGe8(C2#29GLB{0OGM$IJSgmJnj zki?)y(U*NC?1^?K&Wk;BYsVWo6QKznEgOcA~TKp2E<@7{g77g&Hm z-s1!i6UK5ezx1ZxRPokSU}pmT!Nbw=H_CNA851|K)?oy>?Li@jaopw}d5iipVUbU; z0X^c%#frsT?hs=E4k}8>wFpH_gGlPiw@mGT1^`Py7{?!40!z*~;|!Z2y4KPk1_2Jw zs22=@!q%433mcY~heqcKQWw7vUIno3(rQI^Gu}C+?{xoxgWq}Z<1UI#(Y*DI@ol5g z>b;AL^Vig>d1PyHkSGf^@(#3F!$Dgtf~NXfBFx^%S3|UEe4q;|UX)T}qwHjBVr&6I zq2|S&4p4QiX8|LdabIg!VIKWtgEK?zN@*Bt>eSHkM>7LJ^jlwB6{vuc+pb8n<)I-? zpOn5coj0!Czi;2QAGqckXNsmx-rl=&=gzMR`A>^pXQ@(R|K)*!a!@K3;y6`T=e$hF zBc8g9dVolhw+8330t`f}sMAfNNUm*+(SX9~G7TtJ9EReEzQZc82GcYLmps*kzCfBz zL*~W%{7B3&qU{_^z*d`u5h>%uJSXu@?!E8+yOqknmv8$I9X$BG{+3N+^JlI4pa(rD zY52jurKP3YqBu%qz?>q|5xpunnaCj)5kTZWCYAXPEfw9I32_u7Vi-Xchx0toRaoMR z@jRnpyesx}oQ6?|Df2*W=EhMXikOw9^+e(<6bnrPxC+tcJAL!|fZ*jjj&$Vc_8QkSJvElX|+YcQ%eB_`CpuIXnCub@N`-6e6 zg{?0t2TBhbPT&v=bvkVWeQ|PC6kJ_hMJseKS9c0094&L#)BT{>gQ$V5*DJpI8O(n{Kp}C5cjXbw1jM|HrUV7QytG7LT^*K*|=yKm`E9sEcC$a$KlhLf3q-bmGOn4$&R>BNQ;lw6ivCzrK`7NE$8 z4LPm1w16PgW0+J%9Ce2Y#XfGJxaPvyoVMtOR2~O%HWc+i$pHTN1Q5q_{%lGAndx@B zMT*6SJ}{D{(j?8d;`|J7D09l8f6^*XdCF5dOC@={uuyOqo%_U4n}Jm8{@_Kg-1x3x}J`b zEDohg;o}o_=#7mW@^P#vit0p(T|x(_7J1J0Srj8Vg?)`tEr78&M;rlz8UukOnt3Xz z5(Ny_&hi5c^k!WEEE!@6x4eb^h;9KMtjr3=7*eZt{MfM{EG*2Q;05hJ1mKsy{H3|* zqKh)UZ8<&(CSOp{24udFJKRNr%70N7ml^NUEb9)NQ=!f^lqRPMt-%n$%}5=M+E4{-u^ zGC6kq#2tPk*gqKbqV3za|9t>xH{5UoA{96Nxjo014qm52$sH$-FHM7>by>gH=};RJ z)g+-ha~M`^Q#oBxW@EUYN1aAqVoVgrId!>8Fswy4ID6=tuy^MgBCw$`3-D)3{mAPN z)?h8>wy=*BpoAy-I`EXIzcS4N)&Ey54~Kgf78ehTQPF_|2mU?)G!XjruYWrG-gm#3 zDEi|lN&6RHbm8-~h|l>Nnqo9LNooLy4k;jQB7Nd0eJDc#qO2Ei2Iu4!3?W5e3=UZ4 zp`{r$JUwulxihv##+RqeV(pBrSPq8<;7ONI|0mQMsuW=l0C0RId(`@BR}Ytm`xfRG z_g{D2@8f?6K-oBOTyxDe=Gd_lRsy+6`f!G#TAAfeIT_&)E}hOSVuWY{M1K6_O1R1t zK;*cbnl04bm8YPRMN;n^z$E{ldw|An1nucJWer^u0X`m&bxrsm-C%8vPdTmw9G>Uv z%WkoU*Z1eB?+sfvZ#s7Ewb%Zs6#jbvd`dq-pM3Jk>DY#3nGFHUBF$h-i>`9n2G12AmRYG2au{e?5nJkv7dp8`O8 z^PArcO4H{&=Q;OWcG*=snt|WYgl=VRQayg`$c1{ldz&VFqw?x>(b01l!PMpFpS|!% zi!H5|E4kw-POx_sI}Ar9o;yU5TAnw$oG%z-)s$9Fta75Cg+PVS1CXnF9>lDKLI40& zggLfk^~mPt7LJGkdK*3ciKus<1b_BF{Whqdp{?HBRL{NOqRw1@{`_VTT%!H>oR!gN z5VV5R#Sj^9_<3y9>2?l_hM_7$UptbgS6|CAd@YKm14XJOV^8R9?o>4I2NDK3cu3J! zMopYot9#lu{Y=_Z_nR7DNs=&H6^mNR{hF9yi!yx@CCQ2ywJ;iu8oICNvqZ2)(yGJl zPWOJ*B+EMI9FHd1%I81-(d_^BVBhEskk(BvnW}c z%;x78Y#3&?*YmR@!--oQG%LqWoUq+ykg1UtcA7bUyvUZ09(1Hg;u^+pw@tdSVfq?x zYn~Y$U3UHX!1~^w-jS-GTOS=U?RL+GVOWV~#%4*vi`3a!(+zWV?G002ovPDHLkV1j%oUGV?_ literal 4502 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 JPDHLkV1k{z$@2gJ delta 1601 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 literal 7300 zcmV-~9DC!5P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L02{9W02{9XUK)`c00007bV*G`2iOY} z5;XzMQFy!n02~BKL_t(|+Uhi7=mM?6Jo)@r2kA$20kyfWJ5pGn29LOpK6&7j_HFXh#xQE81Hvsaxu9_44-Z zzPr?%s{3B6C4rp;L|`UID%HF7>efByKj-}C+-|{#Q5d`8dPf(5cadE$0D=Ekgl!xH zfQ$#heq*)YUAr16vj_^j2a(~!B&{oC_D0@@+#ax#bt=G68BmC+=~f;L#SbPs5GHUe z#ehagX|$xvp`r!vK`4B{^7h-mA!Id`Kp>*`CIN`;^IdW^=s;ah+sZ5j?wbzKu~?OL z!zasNexv}Xtp%ASRmxsl2v>=jvY;ddTbh9pgZg-gv*!Sa#XOGf0w85%jgaHGA*VCy zP(msgZTel<_x+|1F97Ui9ETdAt`5wyW(FV_)Sx08?*Yi~olL>pO~7Ws((7G1lfhR$ z2$EAf%i}Q94-Tm2OVbpf#LM=~ky)^}mQct-RbnZ9?x!z&h&kXkPTB1~fd0H;GE16p zHq3UeNI>~l7R3A%QqchTT1;jZW137$j%h|zQ}r>KMZqf6DJ7DCs7G~}p^~y+V&2o5 z+zkeM9RU2dYqm*2z9P9wyH_aMqFA6C;6!Y0jG6m zhB%Qf=xer!?_82eSqX|w^MIOO;*bD%3Q=%MC&1K$jOdd=OYS3ucpQ}cai+?X!8W%M zJJAbPXTY%(QzE+t!I=c0wklANHHR>nE`KcnCde0tz@9Jx*ax2i4GWq7R1YzV2|w)D z3oOza0_9AB6M zF~SYh)2tCWNC{O5v$D*w5(O~NWjzhjP^gg|RW$PrFzRCf=0VU$-iG{S4J@t5%(^hG zmAb9qvA7&K-wy|-6hW`?LMd4ww;W{G6adD?qRJAvw|7l|6=kVhDp*Qgelqw5fQ?3F z0;M`avVO2VtC+7pmAoL|nmyyG_r#XRyb~7_DTsCv-UB%}n5!m}fmsZU3ux=$t{hPg z9*wt!&rAN)OT-Kpm>DdPQXLRa`JffeHb8jbxO}>!Xn{W>)66g|dc)2pK{jk~uoOGj zECNpV0BM;39xxFJFBD+c9U*2z)Rrz}sU+P1a;BD;Ob01fW17aq!9(R$YVeji|BPEO z3-Bgd0zz$^+2z_fd{AJH3T=$Y513cP-qCuzzE3p9`MkJqvZFI;VDJJ zbeUM0bLAU$%ESOKNRU&#V0|DdP%MB)ks(Bed}(sJ)5n(<$86ob>D&gfYV0_pPu(E<2sY3eDKbF1m^ZTPs>Nb#d ziihk+vK<6V=_M^&&e+WmL-0%~14$CUng}JhMsoD%C+u3)DzwZTssp`HPjj9CvDF)h zI$SWz*3AAr>6-$rw}-T*8X#&Kxc7-{S3tNlsKlee0)hhw&ccBvelFq2gBqS9Wey*S zL(mNA9x}uVKHQW!0aFj8ohYew3^s)Hn*GMN-zjC^#|U`ffd`0c+64Rx2?b-S*X#9r zRHn5?j}}*5_gcUoEY2mP;ZDbpm-N0h(5aY_=HQY$fqKdafP{wQP;f}p9m4yhs;SE_ z4tkys3x{drj0ufNZ6MdBkNv7xzbLxZ8!>*)f=&)f;eKLBZ<5TpJZu4nd>vrlK7g)v zP>2^H9Y)G*1p7Ug!3Q6FkVGO8JrD>)J&NOtc=NSPiMO{+nYADm4L9~24Q@Yi$~Zow zX=l#oPm`fDRxJ#do3$?VypjZvWFR=W@f1OTamJ5#4`Bd|G9V5|!o~{(fLREf1xl?S zw9~d{@JMpz#2Z3sl2l&-Y2+-A7%L9c`3mU9SHMT}H4+(Wb*xeEh`waI^Uv-B=FguG zQ>RWPsZ@%!w6st(T=o0?F`Q>FT)6OVO;ej}+tKRl<6W{W`vCyKS$EUWnb=#yiS!xA zI4tFkC#HI%XlKa8e@bY)B0`@c2tcWu|C9h34*;u#E2~rmNiZUUVT$yiN*O^QVD{M) zM$YA&npSEPl{MHAh!PqwrS3^Gq?(cx9yBjua*dS|~=5riJ z#dRAEjQD)MX$Z)ztt~C9gTY`Mu2ajl(FTc=6%h}R)kwqSn{FOF>(pj@p7i?cY*4BJ z0GdSOdENsKhS%c=kdjLv02@z&!f?iLFCQ{b0~4P$h=2m9DMs?W_VqRG*mRYmGo_RD zXINQ3NHsWSdyEocISL`K#`fN5!$`MH*7OS{g-n|^4Hhg|Fm^q6?p#t=SI5H}5{U#& zr_+sXZEd$VG&FP_K79CiXJ_ZKXf!$>L1?OwDM0{;qR5!0T*+#cseW)+^7tkoZ$BzU zT1G$#C?H4LKnm2O2RV6D5&kX+mRy$Q6BfaN1ERVykGVHKSBE$Xypfe)!>sNhlPGwNIL~ZbDPj%8`-L z5i}BXk6!Ed`I{W(7-fr7=41jxC^IMh$k|c}4_cH*YAnw88hH0gkGs-85 zs@oDUg@`5xy(4DFNr7!5AS8f0JwRnVQ=~-2ep0Cd0t7xRw*;~rqFn&=s#`&1il7pZ zbOu%y+M!M#WW-4TEe#SddYKj|l&M+L`%)(T#6hQ8VB`rCCMblEX)`-IzNBe-dtF@| z82&NKCP`&76g|zRO`pCLJ*-kmA}D})E{rwJ5|l~?Dl8!oI5-eYfFOq03_^J^6AP6l zHdvs7WvakR8W^P@7)}UmqJyl~gQA>=NO%O0EO>!%g*f;ZK_!-`0OBl)I#7`=mB^{2 zj|yNG3JK=z-$8)xM>x6(&hUG_E<9|bLgjK9Fja(;R80k4)0m7}W7GgY2ZeDe!!&RkdfZCJ z7K`8w&jr=n1}c%!2pPY-24&mTIh(=SOsTMzh!|0YmLMo8}+<0*FhDd^QbGxEcU#ShRS&zC)2E74R&XNT8}JM^tzkLtR9#AYq5$wJi)c zEfXWaBt}^Pz|{j)Q3+9~XyYlN0xVbf0S-u75WG_!1kDo$ssur;@*5%IesDMyG=Mks zImi`{Kz`tPsE?lozo&pFn80vU34&DbsdmcaK2T(0usv~N`cteNL}k4JfYvPAM2Y|= zhAid~bxIg|8JS9iXIL2rMv~+b4kGK(Rl*!ED;Z_fPZ-3%B0RK9hQW>JgeS;NRu#Y= z0Efmnc$7zq>hL`REaJM1aE0|?8;D49Dx^jU?iVQ}KBKtn-r2Zk5?mbqF-Y-a;8C-c z_O}3x8TcIqthne9bW|D7;}yX!gJYsjJ~qgtQa7RO2*|mU#I%RNuaw}_5F__y*kuub zoL@$!?`~|U&v-qakN_Aca4_SBGQT_+`v8w$<%WoMTda00@zj#D_H^Z zIdnvUA_vu?Pc>l06v%~ckjsM*tx*F^QfC8bfFbGNXKEJ%qhxYpk?lTelEouz3;>RI zE}Kgu>LSivW|v%MF9UeJI^kSkm}O>Lyknyb^PSHkRb*P7Kc#By_7m1Tb3OBR>D^XRZfNu zkPE&+s+LonKbYU3h6;7PkEi$82#Lw>cIFFS|u||k^j*4Ise5PC}ZxRzO z5$DTN5KwT|ME;k}9Pr}8#`Q}?s6oKAJ!&emY|2pb^nm3X$;1M=NP}t*MYL!yCAVeD zyY0NXc#|#8!yMrSyYJM=?!WeEdOQ&H&%#qE)_gS5MAQ|*2iy=Mc))d;jQP%(tGob= zhd6O_yIT7>29C|Eh9U0ffAFv96io{Ouq?1_N3{Mj8ZUB|N+P`^CXF+yno=&Es){0> zWih83t>O&iBe!diG&wx^j?S`?Z>F}&!4|g zPNy=O$LsNDGC3#|i^4$3^^i~;^HI16Ux|r75a1Pn7)F_7b9um7coz*v07`D|auG@r zzz@P$S}|IZWl>#l79fLb#8v519eAGrMeqs$P%(=VCK6T>fDpom!wDX!vj0@}`ClIK zp1Q?8P$ILl_V>P5c^#fSc`|wP%{OT#o2{ERZR#I2#N#V$j8hcCQO0%A*#&%l;U!c+ zz^r>b#OL*jQiiRwXq;5e@Wm2IXEMTt=oOLsTohGdl!%s<;9O1Kam+7Wsz8j1AtJ`H zg|Ss}?c~7w#LY(85Z$W~k)=ZT~EZ=dS=mRW(GH*I}$F$jZ4q*5*P1iujoUaOUS^Dta4T*TAFe z;5M<0Pr_qZB5^2UM#C%J-6dgcEc`F?zFkcrkp^WzJpm(?Ka(lQSu&35OB&))Ax{ZA z-q6j>6Efj->pn>?1K_Ero?@toT{Oyry?uQzVSYJ?s>odet^wTBx?9ew%@9Ad(zIB- zH5NHf2{&F5-v|7DBsZlJ>TZq$aMHAp7)`+e;O4(erouQ&M3Tv893u2t#rVpLmVtWN zm1`~~Y>WtqvQ04Y#epv6ipPmh?!T&UBw3^0bytR5_EX_4TeiT=nKO9-v(njofu{f} z8{tY-Ux2Eg#SbI^M3*QFv?Z5--0!*a!YEV((?JmtBgn8yV!{aVBITA%QXwu%#6H_C zi6OH4UowtD}kZ%cr}27k2E}Q7N(&dF7Q? zcnH~{NGz?W>L7-EG?&XIIQhwv?BfO279J)dywUJ6<-rYA;WeDynl6i67K-32GdEZ$ zhT?jX@xIu7MW9r0LY3KtG5Dq^h;)1hiQ7bID^;Qtpi{hGTnIn~Z()iQ3V6S1Rx3=k zT9nV8>wPVi&i4Ae9V^M&%M{{DfNjvhU-`DFL0Q>aiR91b;O z$WsmLKc&)Dzgw|I`LoB;12+jU(0CjrVZ3;CCay7fmdI6tf}RpCM&q%`6JQB2q-wiN z+!;m8?q{*iILTH)1rTY(37H^q^7A<55a#w0{5ygi7s};xC&HoVsQV+DD`eNMH{e&B zH<=6O&&}7=#FB_;G8T)?jzy!L5&}>SHAMRoON&xxTxx>}M|-S`Da=qxrY zX`qTKf!%wdq&t?gUH^s??{%+>+pk+YP&2n9|J_JW5dEw2=^fJfana}t%SX> zH9^)~9}*$Wa5&XwhE-F7j)81f+hg3Z7hmzCJ`*Olcq&Zb5@g9RS(SJ2SuQWxBF&gA zQ!5+_K0@H1DEHobFPSo>i)fl7%r1;vqAN3_upK3SX`u&kax<>LwI*N`qNi~KqW}M)n>(+hj`j`Iq z&e0h)gAdu%6J^1ciAw(BruvwgOBPdI!?|$#g@MALRNr#_R9|YJ7wo=h5YFsLMAi|5 zt(~A;c%Y#sP?X8ACuJ&APM?qB>rCho`~03S-oLi4XH#wggU4!og(6S-0$Kd=<+FQx z)7gDLdh{3PPWC+e>m$;+sK0zLQ9mcU{TDscG%53EJ;TPn3u$HX!5#blPiw?_@=S1X zv8}5Ue(>bxUCU;5cc1az6f~43Y0EDMmxiL!`sQVeBW-~HK%H(&jS z8*W^9>>r*xKXg;)sq+I(w>O>YC(9--U$SWH&-d;tOBa9q>T^S{Ebqv?GSIj(qz9w$ z{ExQo?9GQKK&0g^THEpyl0N#{Db|_NCeDe!^7A*3{PgKZl3QQ@rMYR-CPv|3D7vOe z4Q>9IDwj(iu*eTDX>u9@){pWUDN_4D7}n;OZjU4Gx%%^Uu4 zm%aU&&7C`5-Etvuaes38%8l&gp`nq{ti5L8P1768EYQ%}QV)fa<6FA+x>g9^WTZ#W z4sO_5gq#{~|F3^nG*9e1d@|fvzh?fl2!=!&5`!a|)29wu z(?7QKfmlIR#Cg}X%MPfX_vQZylH5`2QoXlTl; zmfHMiN?x>b-lLHkPXoXX;F7&~dhpQJ*Y;(Tds+Lej=SG_`PFmf;ce#pIfk=$6$Rx$Y%Nnj~_VyqbGiRIMH|bWbd(qN3#PbEkJ3QI=z1Boy(fBnIf+~{*}|&p{#!R zKralRJ=A9wMy&MEg^Q!f=h+)S`oaD;UfQr%^3Q5rd|mq|!eL+dt)D!85DW_veS`Lq z-3POU^!XgT9}=DQ&1u0I-~2}PIyUV-+Hu<#{NP#F@ae~1PfT6?@PC0TWY+IIvEZSf z^fs^1;_$x6+DEr+y#BM#{_x#0L_}Bc zciYD=uKMx|8~*$kJuJ|C-(vVJGV{(Sc2G~7AI6Jk{Z$bgU-;jb)GYYUg?IQ>e}L<8 zt^TvL+_j+P&dl&oKZHN0L-fHFaJiJ)Tkl~lom2m8{Nm|7n;(1nFaP$l*}e^X#UYJf zTM6229=Jjlum9o4Z@hoyGGE=z9Z(f@4xwTH|GYwHa^1Qm-&uOw+(ro8Iq_0>uAj#< zkLz)*0I*;F{*NC&zWt})nYm)w7n?d}J_J`t{cU%AX3@GE?il}!p6!qCIkow({@(o+ z$$aUq|8U2X!S*?efvmr*8Z|UEeJS7+9ji1jI+i|bzwrCBZeIFn2(4?auC-kMmva}c zp1H6-rsIiepIEHtSF5Z0Kl0WI3*EIdg2ZlV_{iVU) zvwSa%$$x@NQWMm?MX4~_-4B7pDjKK{y6JbXPy$_1_${*Zb3c1_%9{VN>#9_l^ZD9)pZIlp#;yPD zZ+=sxc75_2e-iKf%mc!(e^rTnbtQOyM}~J2-~H3yX?gOB$GZM>%Yd`$p`Q-prE(eJ zJ@CW7`F>AuEcp`qR{Um(lx<6>vDKa5FM~-jD zOAE$}Y0W;k^8}2XdHYTH(2MkkHIM8Va_Z(k`dPR_CM;YZT=Iv{jQX1HSq)c zACtUOuTB-J)cfl?Zxjv7M?o6qer74spL*r`jbGgG$ol8buwdK2dk8*4BEvsZ2KN8` zRYV5C-)o$G-Hb0yh#@Yvp~6Q@ z1DIq-BoKQmGt1a^%RN z0|yR#_l<9Scw z#bVJE3I&tT=M6nc5+l#R8_eP<~4_mF`b_V2>VNL_25T8`cco{ z{oUU^OG@w-_9{@tQQi`G`FRfBT<{rv`O*J?GxIIPbVP_Vf8 zzz`0TlasSR;5X(1#<63^;vfI`$M5^pr#|%stvdw>zcK)L%fIe*uiGF(+p}`z%B5Jl zr>DmN0`5(0H=9kvSUdpb%H^^_ImUW!AWZ0Z2tWa#_abqL*|%@s2R`$e&wNU2PTyG& z0`v24!JquepUmICfB)YM4-YR@%o>zH0q#dfN6o~|=)(iR2n!D! z>n&cqn2>n?JKph*XG0T!`OEeIEQ)0+uYK)ne@|9@_Q=Qx7RUNN-WfA%JnwwN!UF>X zhIigm0E_tdM9Ebt)6mYJKX1;SJzLlK2fp{c@4Zgf_?PVgklsTj=(7>tTND6rbFApy znU3}SvnM+m0KgGSeWulFnNz1u@ys|vz>_3gLAdm3+-EhehdSez1^}Didh4yda?$rf zUy*pFV968tb7H)<$4lo#rh*Ha2E1T)1FxcdQB+9xSdj0PrE9 z#&{1P>p`%u*7y=Y|Dpl#m0m$YJ_jLr_EuM&j|(#lg$M=D`dmqW#5m8afn`w^(0q}E zCvfFGF>h|U)w(5}1gIx7MDbo)S*M0ww_I113o z0Hi|V*jIaANycLR@$qqkb!j~NvKTL6Z8}Ob4w8ikbq_%Xx_`Ve<|g&z=MKQjU;c6{ z;cT%O*l&I7TcsOsyz!n&OT#FHyQ8FMeUygXz1z~TILhEL0Kjipl6lN$9i>s$00=rB zg0lRM!bS%v#!wvsE?jbd{r(y4*=63(1%Ow-`qfs-l;pZYxm-|Ajj4#`*FW^34}Gzo zjZS*z)?4=(8bV@OU*zEKSdZ>&0h9tHz(66!pd>C%gBWpp)&d+F$}v|bMxzrY-UL8! z!72e!Qf6rVOgv!c&Yfo6x^-6Wm+BA`XyJmaIjrl}-Me=`rC2O1j^m^#!8Zlg4x}bE z8#it=mtTIlx#Ef|jW1zQR#hP&cp~&HPe%cSH>69(P~`acjJtU8B5ME?fcgPQI#0G>g04mUczh1#s5jS6}n%L0RPv2{AsJYxB>We*cmuh9D- zierl)+_PnWU%z?slb>RGtG(u`tFJ~dtm#jA z4^Lq{ow$C;XzaQQTH1WEpE;_07g1QVY)A@5&_q}T>#$y{`XsLK784# zRZm#5c=1CnUL3s`h`h?B(%ee5x>&-uP8>gRXw&9RkJf_2A~u`P7phsQ8qyIkvv@-O zM*x)8gGnv#tpsO)bU-OA!|y(qqZsZ=2=Ja-fohJ}_Kc6hSeNw)8$!W<7x38ya6DJ| zx?)sdP9oa>34jPDuLag^+_2$I#bW8QdGqEQ$gA7w+KGBSC=`n6x{;B4N$`R;v>9Q= zu9Stel;=a2=d;*15e1BTdWlT9*SxNTA3_1D!dXQS^IZk!%UTriQE2MPqG* zGFVuypQSKa(Nd%o3#L>orlC9{O%oF(amrYPbDRLEa``G&H21j2Jy6c*`+$UR82_fP!06TLias}9x?kmy%4S>)u&R?)#Lq5zE@K!lA z3*fd`GD}_7vaZ3au|7g|qb@FN+no%6RR0(9nwJl3kV+XV08?Ppg9EN8i*DP#Ll);q zT$#x-%x4U(Pw{-Od*9oPOELIBVMsXskCPvraPnV@XaL4In#(MExxHNv2qY;P1VKR= zK@p~0EQr;6(&=_5MK-C$PZsMXjq95 z0GnK?pirWA_qp2Y8DGhiwmHK-gpRI(bAn7{yw3{s6)RRs*)#BjFL(e!Ay=fHP{vqF z7#do$QD;5CVEiA7-|BY=0C+bW&6-fh6=ql+MbnOv8L9TzGhy`eb} zsz|X4AZ#c=nmRumHK$IVy0Bv9%70bLjUVuU2bkLhpwVc>VLmsVFXRJ%Cin87SVm-| zvZCzXGwyozOvS(Ltm(LyYw#4jB_ED%l3sEc%hD$5L$Q}S1Jt1H!HGImu6E3x*>b1 zu9%pNqE6CNDOG!W`@(zPd*Q;xAIinYtPKXm1p|RJM{%qL(ctm^h#Tv^-SZok z&ay@}Kjt^fJ6|!$7bUKoW?bqzMVRv-jo^2eO)O{#q|^%UP+{3CzM9|D zQyuB+@0+Kz`rS2aR@bh$;)-+z0RH>4Kl?Lk@l>oDojZR%H##~NoIH7|Q=6z4%RS|4 zz1}pFN--#ya~47Y1P~&mA}c>51E?h;FFbt7wEzHt8h2WjzG%@U(^m77$Ey<%L-UIbv*Qn_p^s^57>m4`bQVECzN zTdUVGAp~g|PZQCmkekg}u1HS14fDHtz?IZ==0@5Z5Ae;0MsKx(i%@H%5ytR5#9Y^D z`4AWi^Oh`GeD_9u{Ax1htdF7`D^oQv7qQJ1@;O6ib1`L?pA}G1J ztvugsO_~EE3#C_Ly*s*41t#B&7E_fV!2#-(vzNKXN3SI-MUll_J!joPVJF@P3VuQmjL+YH^0fJs}y3bHCmH| zfRr5cDUikded+|EN(5>0Kgzk^vz+Ye^kOlOw`64KNz5Ilq=ZE=0AWECVjOV|C|!ux zr8=Kc01WU$3~`$KR8s& z7Yb)p+YhNi9E1FXE+-coyOc#8fPx6`5k_#I0q~3hzY7?wMObh}Fj~U+G~oshWli-U zV|J%B`=Uge@rd^pTpKrc1);Add9rv4o?}U|lard??K-SoBn2M-(&x`P7){Y#}-P%IMrewt?;TsBi4 zZ^%34dFC7dPoO**!F|~QBx2QhO-5iSPs(I0r%kNv(=JyUS33K8VAKd7F6_xV7UC3v zLpkV=Q(`1rDwg`2t>(V|zQNHTNMkga)l@>7uYc{!-QBx(w1$U=#)atk@X+v9-EYbX z0Pkv`?c<+<2}Oa~ry*k86Bdfo5rQ-dA#x<<1bN#NXq@=+R^9OiV5jaMH3a*5md{$| zeePt+dP;6DOuQNB{s4V_WH2O$eDPdSUsl=NsInW00;==Jb?I*e7Ym0y5n!)zvan- zt}^5tLPbgC=sn8U3QiF~r+E_Wb^*#WzF{p2u{6>G4jAUJH=)WL3ct?8`1nU|7XaFS z{^x(#6DLj=nysm!o=Ro87OKj%8W-wGw^JG3x_+ShC|TplSKZXKJ2q4<)$DYa(>x%& zP{ER_S;|(eMMao0jzIm7Z;jeV-De;rR`G!BoRhdLVN(G1ATuTrQh3FWZ|d5iYS*k@ zR?e6p+fZKDO&#yRIWE&=->Fm=L<0kTAF}37wx>V+>2}SU&9+oZEgBp>s_alT`Aut< zZ`n82^ZO^716%Jo_fQ*IwOQT~mS-;J;EItvC6Mr`UbXZ-=f(!7Yhiq0V0&>({KGEE zJRjz2lhd72H%fXW_9Pyo@o`@M4^1dM$Dq6* zPP1-^odXrEzMvZ?$dfPQ`5d+O}<*vu)M3tt55QHfi|g zb-6abA06{=oWE|lP{41YGw1~aef|3h{0cPdJDH(ABxyQh_7lcKgL53zg^PRpheXs# z0(XUu?nE1xN@O~2NN`3<2mC{rPdrpmsv8qLV{_R_(G+S>+#vwYLB0C=? zm7GaNN)o>i)$v9mbXu%Wd)tt_;H$?Dx79XpE~+HkgltXOpt+y?^r0pfI#vEivs78! zHB1jJJ6HUrok06e3nx@z@9l|C-#VUcZ>nzS5r%Q}Od;*mF>yFoK(4opj5axOyuSKG zzEW9p_|09l`3Jv>i4CgxYFnoi1igz4h_~pJjK(^~gom8kl~-KWLToQRQ+qhpU4Bq( zmB3?ggxK@-$*i_fzBR$Ook^P7?jU3}M;r7WLv#mUvxB<|s&;<%_~7Z2$J9rT9MMzo z3o+(@?)$HzhdE%~GvrTTHeSk&1CWDl>AnhQFB_k6 z*>HDHZE5GGx4)?x=%}b~uPLh@megr*p2cKW^N92a8`h*T;^b@V+T>C>qoTAOy{#1; zT7^_IEbWvG$@c4WzWTT%XWyoL3d_eXG{`Z7&tvflx4&8jg$e^5Vr^w!seEj>a|FKy zf#*{$9Ji+*ySnZ?m*Sp!voUCC7Rz5fIpCc9@O?1gJ@4(n8+W$oICiTNF@ev_XV$T- z)0{8?!Cjb)%lzlOVwQUA`wnbY04`wi|L4KB44VUh!RLAq5Nt@mM7%}L>p#dH@}2$i znJdM8o_!=mFgck9nBq4vDB9N&!rfCA1UM@*1(*S<|p9ck9HZRUsKM|h;Y zbBadI}7f1wI=l3Vf~WJG%PW02sg5C^4#6kX_o4RN4*BY6b)w<8eKutyQMp z*3X~g5+ZN2a(BNG2CSx~tqe(z znm+L!&1YZ9YdHSmM*wtyH#zH$>F;oy0z!ecBqp%5w!Yn1r_gDX-Tk=CJLC4n-tl3} zz{#+~Wwwzo_ywnU1epsNfNqF|3;0V}9x;LM03d$PvBLV2EqC9eG4fKx%@4cZGr-E# z@P<4VbAeLQ)_Q%<%$>N#l*3>u$+7;%Zg7T^D1zCpxUAynzDGB|`Q99b^`;=Wl${qR>x{d-zlQ z2`KnkB9Xdb+N6Q(;CfEjicS42t2xQ|HmZqpMhaz;vjBz&(wuGT5e|3VaFQ}1YFky|kS^Pj(!{{xK{aIg7{JRtx8002ovPDHLkV1hti?<@cS literal 6327 zcmV;o7)a-dP)Px#32;bRa{vGvuK)lWuK`{fksJU300(qQO+^RT3lkFvGj6O4wEzGB24YJ`L;(K) z{{a7>y{D4^02nt(L_t(|+U;8jcvaQ4KKqUt8&@)jkW@+WIPp#Uk^J$S8p@1QJ39GTbRQcRX+XD`!WD z2z^yP>}xmQ;heM2-utZeueJWQ_PL<^qc`z+5JJ~=DU0ao>CqY+8#QWTz<>ctBofiR zUT=!-lNd@zN(k})0sts35{ZPme*Jp;ym|9V%FD~A3>-Lcq}%NtlAWDxb-7&0Kp+rz zI2;EL9XfQNuC8v)efQnB)n>Cr2#~~Q0fsnN7EdOVrr-SLHyQi)@Bd0cLBTDBg@x4_ z85xSnWKyhFt75TO6tmgPM=F(4$TQ##%8?^Sn(6%emX?;E&Y3gk04*2$G(d=R;Ogqe zjT_SzE?jscDg8JdIb=;%QdLzx;_)~GA@9lJn8(*>0EIj!Mqs=WjYhwH+ikZsQFj6$ zd|m;N%4-il{BS;5@Ws;7(iu<$ja;3TA_Z{3JKzOSlFzYN4D)et9{?j>P{0v8ckVp4 zeEIUPKl98pf1-7wG++O`0U!m}D1L{NfD3bTb4#60Co7kpp3c_x`~4UP>*EYi*y6+o z91h*x-6w&7XP65x4j(?8+_Y)aqfbBm^jumu0uVko07%Q6f2wIHa< z*>CF0FTb3kUGTu)VRC<7Hu&~GDL7(&# zfQ9&%M9F7LnLNI=wN+_uZVu4+3mWC}fhmfji1yt4wpJ@?!rNEsWsu2<7kJ4Kv>SiXGPv}s?Z zdxds-N^R|4426(vSy|-J99R#BtOcMHKmr(02xFimyEqz%5pIvQ0FKNOm`giGg?5zi zCIAF37(zhUC^LjV6A!4VsZq+x$^^NePMa8&7PgQzeRQrKJ9g}~R;wj1nM_$p@G4aZ z4;8LTWo4!E_STNfB`hmTRUtr-L?~Gv2NZztNS7FcB1iV~xZ}rad;*- zQ?NWhkVR7N!Gi}KLx&FS05$!e0gwzz`*4MJZzg(~gI;8z{v=r-gIuhPHZ{`=3kohJ zrY@p>HIYmT2!d<8GToi7TyxE}ip%Lz-ru?vg0VH_E|0*2QcxC$%;^XbkeUPo#SUB= zwE(gL6a{$j6uC#hTm~mAD+}{LoF?iw|5YRi0vR)AjF53!U0p3`zb+skSzIO8%PlG@ z`a(`l&Txvc+N!FmNyOGQPKP6p^wd(6_jTp~i=IlR7;XuC2Ur#4$QI1c&*!kfx)>|7hXjqnkGH}^v~Y8*1Hh0Dp)d|vSfvQK_-O%n z?6JoLz1%l=$dIe@^YSh^e!Ts-s!?9H*#wLCUW=!6LjYDvp5aBTltlShC1=tqjE72zd zKY))kzsa z0P28|ZVce8WYLkMMw7*{C3f^>85YkF(oOL^andBElN19VP#7W{`|td4Ae`V0avcCB z_X;wzEWzbzJwVl1xflcm$`BO7*sT^~^)$UF8q*;gsl^6`^?Jb0lD%o3i3B6|@B5mo z!s^zPh(&1w6N~bavSs=*p)uw%X9yMK#vw#!(Z?m3{?I`sOiH?(PDzZgE{Y+X z5i;-uxjB;G5&=s6Ew|jV9?P8;0OI^ud;9VIxjET^G`l?=!jVW22$m8Mo|J|!;}K$( z(;Dx0NqWtsl2EkAw^&mS81W~4iKS3XH_}@L}u?3 z1bR_XF)4ctJRu7n2EjseP*3FN58^OH3kA8j0vH(oOX9b{836#^p_}g)s~SSrX|o(WkJQRAnZ?%V-?tnYnK;5oI)rlxQVuCvXieGQ6qRThOdFyHZ*< zOerZT>shyMop0lY&6e4-|2-Cs22(G+^wKFkLA&+V8)>uQPkOz+N~hB?M8$`+M1qCW zRAyd2s6iz`N(d5+&L*TOL^CTXB%2}onXfH2MoF^%8L z+`z_0p8x^E+xSdFiCdV1Fb_sD;O6y_y{N9}>P{qLsWgYp>2kSE6UI+U6c-mIcI?=3 zvIhuZMzA&1)$M2j~*<*){m0~0W_?qVm-47HYCM04lhmr=zE}KdFCOyw9r_9lSt{tGvnPR!%&)V zQmKAdNlD3du~@vlI~>|gKQ6vvv1n`YG3g`^m_L8MLOYryZCaY!+Kz7^7w@3h%pflC zsH8a*hqb65`J4rkt_}duhuDN5ax5&v)gW7%vxYIBOJspQSux_!4Pulb0PFX8QOYQ% zd7N>e2s1oLQTVx$O#~xFmJx(EQG@0pzRFHZa}IN-yR#^*t|=)Q>fgM1b6+?x%&)xi z3TknkST)ho+N!m;cc_hxM`Ql3fYqL6cLo9>r8^Q~1vSG$P=Eyx0;x!lpCJQKT@Vw& zP?+L0M%GP1aRQ(RV;MXyi*Y4XR#r8X*07(T180n5PtjR911ttl9w2Kj#>^U^W75H^+6>WtSr95}AP~$d8&-N}PImT1w0M%5K#T^c z+(d=wayU`;vH*Ci&2AU;^#gsV^4Og%VE9On@CO1gAqY~)%@7f-4ssKkz!{RGoxuDW zAI5gt@G7n<*#l&gq2Y2m;3B9sbX2e01TQG(8@o}!V9CnQ&pR&|=-i5odE!S=Y%4LC zF(+ahK*(!kO$%L{`4bch9j*=q+!$bh*#!heZjMr(4~4tAV2RK*UW?}d5C*r|tX$2( z3?vp#oKDH&dhbu*CRyrYu51zjR$f|OdITSdxK81RwFP;qpm&n8M3!{GLm;1lG6>X` zH6U}c)oyppnl(%Gg@7y}D=I3K`XfhB@_VUGCI=9RXP_x_K7f!`!b_3Xq>w!zIuM#F z44_gNPuJ|~=x29_>tk&uRrL2|8ID_-NP1mfy1mYdb3X(`IgEADFb^P@dKDIsmFJw` z0lKknBpPiy(r|P!`BxYHnEDX_D^{$)rz;)A>JNsy5dx%ShD?E2OkV4TAgB^ejJC$g z$>*GtjXK?GHM6%c8A=i}HdCa8AjJR(G=@TkccmDVIEdFsbuyy>Fo17@Ax;PrK@Drd zV1xkABQCX@qjJ?;I?GR64cSj^bD`xY_T*`ZSSQDv4hAD=wjyr zmuBI(4q&oUCBiJY%mDBV3!bY2iXtpzrZdhNEYARM=f8^aRf9QzInHE2A-~a>A*XXA#Wo*sp zSSTE=YdY4v_`}`1m+jkMS4Ze(cs%KYNHLXw5y;u3PP#zgU ze%S#?h*iUDn82VsQYOY?w+SoDw998S(RVE*Fx;JDOY=LijsS5IfrD~be>}$5E1T7p z9twx{rn@uRRaH-FO20-Wr1IXfrSY+2Mu&YqZzmzz>GS%k>AFfI0Hmt{Z5jV4n4lS-a4ylGS}qfWZzG# zPoXzD$!b9=Sp14=wrEN+hge;s7a}dnJpn*~K!yh({u46YA*CAIUsZm~LuOzlcprj_ z5|yL$C|N5QiU4#pNrLe>fRc>Qr8WvNJwXc?z+jH?I|LIW3cpxaXXm$ta)!2O(OaUS zp~(^oN4#kcMt!&hDIiO(QwT=V|!kQiOz_^4**gUu!Z;eIMubZP=+ zE3Ji!5K+oR_14OEF=MhvN380c%DCJ%vV_n9uml-nDAjU)*t9z?yw12Xw7_mK0l$#E zF0LEA1J03|hQCu$U6Am2+)oPSuWUEmaDyl*87^!#T|k5Sdddz?#avZVIAU){+Rqz8 zp6Uq$4n!d}HH=8tncTda~ zPo&aF>~2kC0F!3&f6xSl2f0n6Tc!I(-z2+#*S17uPB=jTB?y2Z$&o=`ki@PY8$|GA zlFU!*?(lgt4q0v1%^k6WZ1Un)*S42uHqS|@cCX?tD7J)KmS+1bp{CAgX&`PJ*3=wsF%2x3 zTwo1t$S_5lJudCwmQMF95mm0tH#Odoo8^jxx+9`J;wb6}DES@9^e2-I8}FNON%^kL z@xt%by|-cM#8JN5mY^f2d|+^Gb4Q|J`>xjM#YOHt1Dvr#anioN)lx8Gu9$fhTF72?-mDt`na8z*RI|s_Frr=`- zTYI)1^;^epU$gbU3%$vChuq^MMI)+|U;kv;x}vOj-7((;w{G`YR{W)TV!BtGojdu0 z0q-r__u+e+dV2Q!`Nwb8Zd&r%l&NF)y!QLXRz+BkYBd+-G`57N4xTdcycKV5+`9dc zcw^hD+CNXN2rg;PyVzrM`;Zv{O!Rjr+#_nvIW0elUz0by{a`!RvztW`JnT;|5}wgy6-?&doVR)+=b=2 zaov?uQkbblqPkg>UJc`r%$}Yo9C+tbv8#|`t7=8X3^l{nsGx+RG`~G zlYb#1Lc0@-fBJ_V^&cz>;NBn5(o07a3<$S%n8r^V{gfxumZK zS4cS}!v;>eYSJJ_TDMsK!d-`htwGz)ZAX;0`kf8QNNd91+St++Sgfyq?WGUaFIuok zbyOFQA3ON!43ERJ<&C-9l}JqKXlPFE+PE#)?QaYzpGEUleW%P_{@o|~?n`e_E2iJ; zR4g-d{&nv1j?zmX{bv6;Bfj+Fm^ptulyVo|e#uES$2H%(%aK2G$VmXF-*l zwJ1uK@|mL*1Adzbs>!6$Z3`_DxSzO(e8?i%#v@n>4Ua^}1>!d~b+ znRRD>%wx01e1Agbm=}(o;-`KW(wi!+<5UMXV%3PA4xh~s9x7E z`^hZET{ZEAiIWNjyQp2YI@QqVE_HZ1^=6hg}n*9JH(7#p9{K>Q4vb*Pea=~>+ z(Zj2o^;^GBnZq%)y5D0bhV&8YtnU?HaMv$hlmK-!n zx#5qlJeHa^=Z|f4Yd(qaZh!ShFCU8NB^N&W>$5KVr{{pl%JjRhm`iDR+Nqw}GhE31 zp8owVPcqAFQpJJYdsp}WyD z3)&rd*I#<7v^k*k>dVx$(vOFV&<47)Dlg!Io5aIa*ZUl0HQ002ovPDHLkV1gTg@ecq1 diff --git a/htdocs/theme/md/img/weather/weather-showers-scattered-day.png b/htdocs/theme/md/img/weather/weather-showers-scattered-day.png index 96a574f6805096bbdbb723bf5025c3fc0453ed41..ae098117351df526fee6029e0a03bad1359ac36e 100644 GIT binary patch literal 6317 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 literal 6533 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 z zbry*UFp5~m02+tEG7$noyEm!SwXh?;>1A z_Uze%@Rx4u(K-f__t0nt+yQdb zGUqUuysl;;ItwU@34pgKpZLTlaNW91C}qfw(UQOkJsV%pPb4jW*0$zc+Juhb18-W5=D5i-e{5@DJw=2BXUHI`05A|`2?lR zQ&Z=szK`%T$mUI(;I6xW$;l)W1tFa>sIY^|Pp*(J^b#jNRUqE@#$W!8)pyVDj7>aubYW$E@22(iARw-*oJmB`v)DXBxLwB`Hy_rLm84Odv+ zu-ZKL9JHMv?)#rdrf&VUZ~mD+^kH!+-F0{T!KeP@cunv8^}h-LAO*2}`OB}@%M5cQFEWooNokx!tzZU)~;CLdmif`Txqd;e)Ust2D;tzxzE6*#ep}GM8}Tdb+>=< zkJDY-KMHRqshhLc-}|4wx?MXoh1yN*a%D&O#&f&Xn%CESt1aGG#f5USpUGkz5*$5g>4`G z%3!8<;O{Q?|1$2ld&hk@e`MqP-*W(LyJP#;Zn*urYao03$~V(1cF3M)Wo8N96;k^3 z&%PavNB6d`41MvD3H2L)@|=d;FYI_z09I}-raIOa-u?(Ee#wILuaw~}%DOxM%hrvz z-TGf4y}RdUt|T~(i&JyKfgc?>1l1qE@MgO6XP%y~&%C$*Z?}wo{2TYKy7f=*f2;Z* z`@;i!{_S5M(@^-ww_H{^fA6Zxsbsr1tdq$VT|c)z;FeEb|C#G{^xX_^Q7ovX4?X$f zS@2#sbUEErKJnW$W!_Audj5qYVdLx+{Ji9jfB&sdui5!;KKhpX|3tQ6C(4)gSpW6^ zBKN+}{q;;{CZ!M8cI6 r-Bd@Oc;dj5-=D$i#6v%TcY*wG4Rx2hF+$e>00000NkvXXu0mjf#BYrL diff --git a/htdocs/theme/md/img/weather/weather-showers-scattered-night.png b/htdocs/theme/md/img/weather/weather-showers-scattered-night.png index 2cf3dd242e0d9fbddf1a575ecb198d4c11fe2bdc..ad0283a08db6c9ea96cae7dc4e6705e128b0e9ed 100644 GIT binary patch literal 5171 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 diff --git a/htdocs/theme/md/img/weather/weather-showers-scattered.png b/htdocs/theme/md/img/weather/weather-showers-scattered.png index f66251cb03495dc346670749c4e2b94b0dc71e89..9d4abf532037ee2c824c9a7da6689f631c51fc56 100644 GIT binary patch literal 4937 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 Hu0mjfn)^)Q literal 5210 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 UTPU)(wEzGB07*qoM6N<$f{Nzu#Q*>R diff --git a/htdocs/theme/md/img/weather/weather-showers.png b/htdocs/theme/md/img/weather/weather-showers.png index 8e7eb470bdde0b795d8e0edcbbb8ad4c3285b1b7..38cd41f03b512a5199eadd727722dfb41c233914 100644 GIT binary patch literal 5138 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 A)Bpeg literal 5373 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 IM6N<$g78RZ!~g&Q literal 5857 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 VXn=*I4|D(k002ovPDHLkV1hQR51{}6 literal 7257 zcmV-f9H!%mP)Px#32;bRa{vH0T>t<#T>%+@MqK~^00(qQO+^RT3LOtHF4DH&0000024YJ`L;(K) z{{a7>y{D4^02|p!L_t(|+SPjrkX_Yz=6~+??%Vsl-WRFWYHckEA*{s+WXxg@gmFPI zRfK^8%J!783)j@x#=$cghcXpx*Ek->Rk$)ZHMZl5mmy9_;=~ys2pO{oOF|%l(AH9G z>3x6wmb;(%{`2l@Bt=mVYf8YDgJ@?#y{r>;l_n`M8`DM~5ChzGRwBV%=TT+ss z^T_i^4+GNa9gs%vAqw{PYD%buW=z5f}D5@(epCm={?^=ZP$kucUe`^dN zr$}5>m}r@;=J|zGxb6x~o$I<0`NH&EG6>}MZmJuiugw%1nF1^R))>GyNH`T%oO)g3PN`}BYoJE z*^z#2sMn`fz{bwah6qGbY0^L)l1nas?y32 zAZ#aURBkin{J>IecCQl^&a_df#UiTMlo&Q}$7LkS1EjlIA%hM{QIjysOG!FF04S^J z2`Ok9`R+XFehYbhnvhO&lzL$#a#99VPU&UXQ`6H_JwE2mm}#VjBgDIG0J-;8K_V2< zh^re5^QK?gSC9vS8j0p^N)InkxwwT!`a|kCL}Fpthe$Y6q&r67Xz#0*YQ432Z*y1; z@{tqyni1GqN>ZkXJ;BYs%h zSF+pYb`(1@CTFTbj0STy{Rc8 zD@9r^MbU4>0HH@(7?O?UeJf3V^x~~qoFkm4%aJKJQfe+QD!NX3rG>OgbLbh@jSWt= zk$1(0?5dCGMzMv2<`8KCoA7PvB!ARl42vi*s5-PqI+IV$=K7}pI#;ji`Wd%j9?bIqu$6oiY&G!CYtKGYXgi%3MLvfv81npeOB(sD8z<~f;Bx^d& z9r$U@ZW-L)+?{&^O6{S9u1T335|zRc>EY^8EUyb$92i4%D)Q3j<(=4ly<6*a(VZ<-w#35RnYQ zK8BqX&F%f0&}u#TtG1Py6C~}!RL$%oKRXq*?%yYuSBgR-zoyYt7B(Z$yJCQkfBfU3 zwJEFjw465Xx#QVlHX&Du(T-m7wQatb)X%)M@X>Vh#$syiCerMX$ka)L0SGL#*bqX1 zWA8IXta!`;GqAynC@Kk>dFe00{04JZp*6P)sj^$PjU6I0o0Fb(K%X0)6PwRV)oG+^ zQsF^#Nvgo-KmU0FGB59$Oq`hQ6jrjSC7-c-^V!u+J74S?+tT~=Tzkjp3gPNBu_w6E zsCmUiZx5ly6X`m=2}7Adc=p2@@POl#la& z(Fja&Bt-lN63e#@5C$X-pNtlhtWiHTb=3H9&*kEOlQwx8vn*<*e7K5iG1;u?6aA*K z&_0V4T+pxl+u&c_2R!=dqr&%n&9-gLvMgDv)hyFAi`i^;-SWP^o7b&dce|$RnJ^4- z-L$#OWKlbMH*BjF+g6MmUN~%?cy47n=>hHeN(lzYkbpv(9$|JP{8{m{n54o05%E2- z@;qNgFn~`Y@KG)o$Y>_24!a%Im9#X~DjcG0znEC%iouSPz~f$>52-o~w4w?5R=)U^K0nKMVay1LeK1VB&S zFmzUWQTZSUBuK;vCSVv+Ts|$lLl081X@rclK}N2Vv?N?-Kxt-`0(^&zJtG^;4G|7( z03>vPb8zH46wDu|urxRVh6LLkWw|!e|VJ^(fNPF!ET~6gjzTb(voxxFWzzaKRifVg zmE391*#26yhykDZ%xAPprP{k?%jPe&wY7h!QYp_1xKY=%G(3T@r(kA!_H<`wXFoh^ zSf&LJhe9do2P#(rO&7YZTnE9F5$ffN|A8<`L^#tT7(>*%JV>Ct8M=Z(4MyBSn4x46&J(h(s4`|;1{Xn6VFs9D097$0{ID{aG^=A|&P-z7Y(!2~zx={4PYo!Y z1egt^Qpr5hm}@4K_u;?@%GeZgu1V#~1~@|bP$}O0)6`rzK>1vWOyHK3q0(7` zNwEN**UzbOwnKg;)pGL`WHKU59h0GcO8!G)77M|PH2}qFDQ-S4l>u}>7yz%GmB$B_ zZU8r-V*r99$^!;L1#Tea%@Aqj2Ojwz80lcB>w_1FMQuFdV zl%RkaG7>3*nHQBO#TtyTnow|Pdj1t)-Lo*n7;v&i#MO;_a0qVn1`!S#*3pnsI3hQ6 zE1Cpm%s|>|6zG}=Qmv6;G$B)cgs~fD2fXm*)s7aPtQb%fPV^?(TUbQp9J>p(oKW5n z;EN-ZP7vO*@`B>X`L#mYl?G;1_qDi=@26(7prVJTc+$2m2 z%b6h4!bRbc>3B3d?;1D1Di>3LQF8dq@Ugbmmg%N^zKs~=Y!GZ!2Lx}_gjw6AmiIDJFDJPIp@KVEQ5$-V{lcg4~KTiWI=;tv$S8LUzAWLkd zxe^>or*M0P0?blL4R|Pm!co#r+N`f(T1s$?3B&{|&fq2xvJyG3HX@wTLTE|} z8_e?or0N($MSKvfpi+i(%*VN5f^|aynov;@GDbA&o-!bkNPV>J1UX1qpEl9>bSKs^ zQGqxGlVoN(D3OYN!m)%CBXX8kV(ZAi(lNsJ&TKOq`w$G92lJ9lD7V3#m z=j;nnxg!{Xt3a?&t_=HuKZ6J6SO5k#Ap)tw*;HWRp`nvAXo-0lrc0MW8~-RA#hX~!ByjJ;;w)> ztfvLB!fZ$jDU*otKv%|zLS-n$BF@U1#RJa?QiCP5bUd_f?on$DTiV{U2qc*QHd z;e;plw-=7Td0FT5sce{?Hu$a3nrB0W0jE!&j#7p;d+6}d|AX7Tj*j+w&=vNZ#OckU z3ntlUYFJUl#0n@65{%<>bHoPWbWvmKn&d;s*HBhNzKiOAWZdUBj$Gc^&_-QhEw1$- zWds=;EEMWqjSu+4rd8v-1eAvf<4PqpJKx=r%y+jn3ECr{_@W+-}Vm` zp?kusP{jgt=s)?%Pw0c!T`yOyT3H<*pExo+GV%tjy8!Fvux=7oHC4IuT@GFLc3ct# zaioM`Hb^p+5{MR2t<_YI0EM~KDYW)*zw(xHc3kY@b$9?Osn00MfC^3ll|~Kbb-;`j z@iC4-evZy_rR23xg6mep0j!Et{1!oAf11y~e!&0x{xCa{409FPbjJ7}j{pP-bkj{Y zv5;bFYATt@WZvJ})_N5H&zP8)aL^5;r1VsH89F1qjR)$ikP|833g{68Q`41ac?&2wUk%e#A?m3p@i?y$4VKWHfELO%31hJ*6gVo$6xiu; zrHPf5bXIz)-k_0QjlG331jYH@AVa-Ivrvsp^?dadJWPTRfs6RTnVe49t^NIdH_gn< zJV!+CIbV&z(-PGn!VS~&rP3iN%qYtYr9!F)3MVgH|9iVdzaQ*ey^Zp-(4kk{XJpDH?Ko#N4p{G0+Ngd2y5sM{G zDP~z*tNEPUXZ4wc3S}_5!(^KCIu2VHCgvy#u(k_@87m|!ro3O@gn7#2D9db6buJ_2 z`9|8r6+>?TrJ7TzR2Zie7Bmc|49bgxB^WwnYffjTT7JKFjscjKE?p|;=4PGI(TQJ9 zO-=vI2St)`S4fqMLC6M)L)}*Zhzm+^G=ngJ@-Q0%V{8zc%c#PRNC6_>=P1RA*lQl2 zORObX0TT5H@Z7r6p)!D@(kfCQR|iTvVZ+;5LW;7NB@7R)rva0Ujm*z-Tosj^J}fIB zBiUysQ|-f}EsJ{VbQV4R^wV8J0cS5d#N8)O483ylOZ@?%gR;*l8+xO}o#P)f#^SS4u ztyjK(etdlDt?{wpgOig}$B}czwzif5^!rAlpaJ%okezo5ng*(VP}S)Iv~$M}`HP)9qKE(R5B<_YIqL84zp+>>T+W)Z@~R{? zo+#^8ge~qV-0;a4Y~;7jju$9SVG9`2GZYz@XM=p z>cGQ-$iNIV5T6Ui2pm~y_DtO5Ff|Ie$x5){aKwC{abyt$`8=-T1Z?1la?}`?TQ!N; z>w&@=vADjJTnPdgn-h=84^;Sr6_5&Gkrb+|>ug-4joH)P-SvRyxo0kF0KEH;+B@5- zr_T)kaK5xK*xuH9vtj5ho*zs=*%1Q?*wRwG7bR{POA1d3Qp&{PsVazUL@j$2LU|}p zk!p|Ga}A2iBhQy?NH9Mi^*cqCa#`g*n}?5JA(^7+?RI#vOOg%r=SX0%RH+~sJL1=P z5^@4Zmf$tuRzbf8{qeW{M0k#G0CJL=P+v;~2%!L;NVc{V@5FnA|4Ag10u(C~GykW~ zrO?#&0b%J6wP^AZm}y&(Hsnpm#uD_`(-Ov9+}s-ws_xlC}cCmOHLnNZN@`qzH>qWQ0Zq838WL z!7DJlmdA#Zdya#y=SG?cdkRgho6*D=(=#*wFABW8nXmEe*3e*p+Ymu(D5iMR z#?f^-#{204blYvW(R+fRfDXPWzCe*~@b7~+%DBdV;uD`(3~eZxgprI3ertW2wM#{q6Xg+en3Q&f~M*a*|UZ++`q zR=HeGeesK5-1VLBd?%pui07V9_uO-jy>a8l0W@w)j~+dGf`jF(`33d~xJnlwLGKZI z_~D1&cg;1|ELpyM`Q78=<3ELg4sYMS{dGEvFs@_wmnjyD^K>44{p(-vVtsb+-aYcf z6Hmx@?bqU;{NyLQ&{I$S@P|MAR{_ku_uiZN!4G~=J}b0O!t>pz(?ckEQwI+oRACE@ zVC0TkT3WdA;`1fo^9{feH1e+gTpkZxfshT*1YHhr+WXd9Z#Au0v7!nO9X~6N(Fkb^ znCHjFO7!&fSnzHNozTh$9(drjZ-4vS$_S&Qqm{jT_Z~TZ{P8aK<=^K%_qpQQwQH~K>+9neA+^JY4}0+Rp~oM8{2cGyamO8^5yn_M4{tOZG2sSa#(Z4|WC5wH_Ew|iGa|K>Np`6_-OnMdxn*|vQg%It!bi3w3ry-?YC?6Jp=fA+JV zokIxwY$T+?yyG}5gHOK({pd$O+Vj*?Pwk<)g528D96s#>SpR-tC0tBjk4_ zR+#q!AvhUFf&sn~{37@;;{=^W2wB>+Y12mhVyzRN)A#M$xA#k5`qC)91G?lO2qgtj zehW(4cY)#)K;vy_OpXEQin#orp!6|(-U*;$<&MP$Xaau(Y=R5m72r*n`&Tf+V(xcz zbaaDz0C4{qC2|Nm$Qn?-2GpOUOGxhs1kvb7D3^ix3d74UWvl!w3{ghB_P(CJut z!np(HyiSAPVjyN4g8BLjvGR+AmUkHME{@;_nEw~8>@R>3hc1Egm%a>gn8OI&2>bm& z@72J77a{C(K-j}y``XuL=%3U3;%7V&r&|a3AYFj4y&ZY!rI!)_#!*xVi!KpeQVhV( z%EnJ>dqCX)tNS7BV+hw*9(m-E@FKrC<}K|O@ctO>^N4_#={-W?-}?UtpbF$iMn+0_ n0~683iH*Pj_$vi|?=kxSqbcsPf~{T500000NkvXXu0mjf$zS9E diff --git a/htdocs/theme/md/img/weather/weather-snow-scattered-night.png b/htdocs/theme/md/img/weather/weather-snow-scattered-night.png index e77c698d6edeacfd185285cf1dc37628d1455f8e..d8b0ccaa7ff12a3b92460a113a497ab758135e84 100644 GIT binary patch literal 5583 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 qPkDagx#ylUg|p>sIa_|n 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%0Aoks*fM42_y43?p377t~wpY#xN6L{W^h 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 literal 7563 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 diff --git a/htdocs/theme/md/thumb.png b/htdocs/theme/md/thumb.png index f7d11f9a5360b1e42a4e2a4bb92e1f2eaac54faa..076684bdaed0188f2eb5ca17321912b95cc4681f 100644 GIT binary patch literal 10820 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 O0000004Lh0ssI2`oL~D00006VoOIv0RI60 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

        !wmGsGW3F##?_zFkq2X{MY#qi!^YU+_~* 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 T2pzF(00000NkvXXu0mjf(Sb)W diff --git a/htdocs/ticket/img/gplv3.png b/htdocs/ticket/img/gplv3.png index ba78d4c4941dabf2fcac5409a92ac4c57920c69f..338e012c824bb716eadb41d1da8ed9e5b68b2a10 100644 GIT binary patch delta 2468 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 Q_W%F@07*qoM6N<$g1EcriU0rr diff --git a/htdocs/ticket/img/history.png b/htdocs/ticket/img/history.png index 59f9ac7d94c62bf7a39172db3adb591e742ad5a1..0b2689db510eb54f06ff54fde2f4e98d5292369e 100644 GIT binary patch delta 1937 zcmV;C2X6R}5uOi_BYy{FNklhA9D?(W{E?uvw3pj~{U zXz(S%1e#4r2A#-*KqbMYf>-k2^JSKq^`$9y=0xv3=XcLN-}&DAUp)Nd#}DVs(fniA&iv@=c9e=z3_c=|(;s}?WJ9lrX zb%1f>#;sw3<>cfS`uhj*b-K*ATHSl3rDr1}BfCK+1j?+AGFqY)sEL#$E{bM|LcRatQ63@fCzGSE_?P#>K=d;UZY z=Vg#QHWl|BxqsjaWsoV75vS6T>7h_+A(1B`LZU&c_5*aIixpnp0Uz~-TsS@Pqf{#qB~5~a0)Ht8LX((@WUUGD8Y2T?{Vyz1 zgOCU{RPjdm^5mE{ePJlMYGrc`?A*EEJ5rJgH;)K%tf3tyB2cWN^Oxcri(R#6|J9Ob z95H+aG0cCIp#+G6lvE>8c=}vaUawxgp*9~un>KBlIlFiy_zL3S!;e8wNIV5d#7j>p z)^0eGMt@T_kxlE>XQ=1B#{zH#u>_F>&Z`LAdBBGUK~9)FYd6iY`&ocC>o@Ma5*i*~ zOb#hvG~=8A)DVYh;LTH@bLXDh>-+=j$~LZxLAon~HGJl1(CC z;eQ(l{8R`DPo(NkgC^kv($kA!GL?Qe8Vf5;rg9`DnV}{Ksa#8N@u0e)B7Odyc0StX zBJA3=*VucH+)Yn7;RvR)kCLR|wKAQWO%C+BT`S zk*m&(KQ^1)fUz0_*x5Ch*RTJG;8v~Lv)8OYn&rinllbJoZ2kCa}R!fcNh| zkx+fHYQkC83v}wzPuRL$mlu8d4SP!So@k_`(I& zk;|8_-+BK&|9iUeL)p=zCr{kJ|L9&;c0p;!jvdF;NDce+8FJ>vJps1tyj(G7!M36! zryOwiF&B@Vg}8Rx6RXxAub4b-O@H1gmK$cw*`#IGj2}N`Uj=E2N}Y~qSu!Fe8iLot zm|1|&U%nwN&17lRsM+`$0od8qUpRc!%+%)1+g@d^2b9%)_9JJ-pTF*nMa%c+(r>HC zrgrT*_%BC}v5corpT92j4_EO;F;KkLA~){~K7Xpjr%x5g%PT?Vy8@WZ#eaDG*jd2g z_&l05Yr)e01yFq)?f>z4ZrY;lzKuJsp#Q*e!T&I?t%JjJbw#Dcsu{^C?@&_m4WB6Z z7uq#rMMV|XyMr+!k044Qi%G+ZRa(C@qGeZ)Wh*s)`mwP6uzt2$;=VP<3& zB0Mqy_Z_^xKjQ@akj11zZ-2ztPE~ryhM|6jnw(!-sU`xodFcl=2dn37+kV(TkaWYB^u_g6BNK?FV<(4;Y-RHvHI|{-;B{pq2Q#fVjn(Usv zhd!+>0A})ofXy{m&uFm=FW>V`(@hDr2jCR$s$DEJM|Tz`ClMva;?#o3dreQg3* zNB@DNZXY@Ag0T}8>ep;ITyXu4hvlB50E?FH%o;Ocv2n+~+i1|B$?O`mVw=bKhK-wE zWLU^XQ&9De19w4(_65hTc2a0ASmoCbYI`^R^F}E?%=MS?v!yhU5QTNd5-( XH#0Fv7slKG015yANkvXXu0mjf5Y5W? delta 2179 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 FV1nYX-GTrB diff --git a/htdocs/ticket/img/mark-read.png b/htdocs/ticket/img/mark-read.png index 450a80cb3fa55d29ae6bb78a7dd36ef125d39753..d6a04e8ab5e8ef9ebc705f6286820301c81869bd 100644 GIT binary patch delta 902 zcmV;119|-R2b>3xBYy*9NklvnA0wr$&K2V>i|ZQFK@Z7g#i7U46y_I?=iM~lESHCrv8FVi8u5dQA)6l;GB@LbI6 z*|pj5biIEUPt*PGELZH6ot#_$<@Gtga|O)xRgykw4_)@>RfHGFcUn77wnOMFaa*kW zJ^&WU8t~0lI>G~I__4PnEJ`*8f3!Wpd!5FD>a#jXs7K8WAoG##E?#Y z1*NFZAYw|TR+KBG_pcE4Og(S3D)+7Dd2BHs0qKxeMKBRDngw9=Hu=%XPdpCi=_SkH zeALP!_>2iRa~Y2!)xl4_x)462zv<`Dl!w*_aK&mp7Jq4X#%!Hd_!;~H51jVliQ7?# zLmomQ<|FQf?g8=bhBFadNXHZume9c*aDJ)MC9`rFk4-qLGB5j~#X)S>9D_NEZ7@f* zHD+tI!Y1>f*k?ZtI~~VixqT1Jvi}b=T>in{fXUEJl)`4YVY!4yPppjc7}E`sL76X1 zPvVN+27fG-qA*vgE#}A=FgSqQ20O4yx*z8LXp6bBZ7Ov=Tkn4?HK%aGbs@foKgAdS8`vm4 zER6{1OSK=2&rTb8PJ`0L<sUy`D+6wH*l;|0zd^fFnF2+7b|=#+ZXU}{`FRf!K4AO zD}R`Q800lJAm#vKP9WyCZ;~+enJ0ZMZk^#*sKGoSai}~8R6PqsKdNt-pc3pb!+@9% zhy{RH2#7_wL>Q#pCP+3z4HgB7L*@C9EMbS5!-(N(WJ{o~;R0!dx{?>fhGH(L8aAj) cnUDblv`+ARTPH5ede6z%q>Z$A(J#S>1dmpRBW0it)(S30j=8DAqYW;(gZ2m z7oqqfeG@Mg6fd9%T1nCriv}X?I0{xm)iegFC0ImBFAq&7ZGX(T&cYpZo#T0vzeWm(Oq0L?8 zwMHV{D}=Ivzetm=YS}gy%(zruEm?_{(!=);YUFkJvO@TF2)q zqi%B}(v(akZqBagxVg)_(HxPV6|eJby1(*a>snhe=YI(<&ea($q-bJlowKy`iH0L$ zlq*a`LL|+^;Id$UciCZq<;^X=TD{y|p?nuUjo*6+fCDEzUxD22a=7)aRlDsqWewtN z{1mm;M*1%Yl1hpX?g0Cb-{qEC>Jw*P;g0IN>upgv!{;L%Bt#rjn(W!$gsSH4bLV?- z=!N{6xPQRg6VFj;-vJ32zJ75c(0(JR-tN-#xX7eCd_`4uPf>;X%k&S78dpJ;pg|yX z9EZM^lr-oMPcX+Mre<=FqlQPUPtn=;vMH0aAdri%>+kdo*w;AgcKIG%Gnu%_(B!um z#E_Zg!)&_MKKSG7p1y0UlpbmW~Jjk3fPkdxya*CI!hE6A3a6$6iU P00000NkvXXu0mjfdQb2R diff --git a/htdocs/ticket/img/messages.png b/htdocs/ticket/img/messages.png index f2747b492830f2999ebc7385036a62e41270d737..4a6e779ea7e96a5e99325db92ed190171b980d69 100644 GIT binary patch delta 1288 zcmV+j1^4>$4Vns&BYy)mMAZ6xQ0iEwt9$N*Tcab^yVpG{_22Eg(XG zhzL<>goqJhv{P?bfZ6fDBM)T!y-hvi8yy=7+UE;o0;GoWD1U4zgynk(Z9B~9;9+_( zMTD& z1~<=I`MbL_a{v-RL_(!QwerkO4*=>Ia9cKH8?fLQ^qIn_;7j6{S02DK&v~P9R^b!( zd*)FEVH@JUseczB1zSO*3}{^+)|`Szdht@}5b@#_Uj?1(8a*Gq&o%dqODu>ehhIwT2X1ir{ZR`4ihI(;t*u z`F^uH1ajK}uAN0h77|e*V(K(i@-R|I$Pl&3GIA)$`Uu%Z9$SlE<@HIkf~&XCBe{)C zfayDQ@2@rE120G}V34d%{y|0-k@P- z2U_Jm%5y)Fourz#a{UxK*SHaVdZgOcmCN z-M#{;lmobQZ1g-kFHGdg-bY_58=_w{z|-@k#4jYSJrl4+fKG<3RJ^fkmJ)P642@ig-BQJDqhc~_L zZ{k#)F%0PbCCo$-=gmc!{+d%J4v>?)PJSeQhHO{{|YYzkmCoa86cUPpfVPkU21Ot1itxc zhY~Dlr6%gDlR_!~$FCFs`coJNTzJDij?z@Ygzxkp5MP^pI>G=x|#ZX!%W(D`q+db*H z?)si+{G*BJ7dE4xUXT9aB((G2iw?hV2yiph_F2*Mq2=gDSEGMC73~?{WHo(UjQrME y^dA?aTRkIoa!d3*(aGUKhi`D1`v2GQKL9W0{HaWSseAwc002ovPDHLkU;%OyhFD!^4XgiFWSMJcBy6|pCN06X)d&~>sXwFqJu z2`=>5GMUV4b3(!FgI@Ei-e7g1_lc0b(uDREB8diEIGcwopYWDi>m3$7X=77i%?e+; zLRug!)k6qfQz2;7+pQ3GT!wJ*8N_k^mkzx$DUd>SBUpJtops4#gK^;IINVrMxUV@P z=9~rHGKk55lbPsT<@%A{|xBe!1 zLi`yJ1A_6*tUo>y?<=Ga+s}DY@kc7(Zc8XxndTNhiKk|92GJQb(Zax7Ed<>=A%@JQ z?%i`oS@<*_O^afohc-}9k3)gzwhcV>K>cBC=uk#emf17kKj?ixb*psuTRSK}94Ool z5K#HwJV~xbg-4hRtFQSq-g5B?vOXb5hr8zXJ;Tjx?dU-Db;Il_##FIQEd0Ab0WBCF zv^@EYr#>?>8FJr|Qz5y^FOkHL7qz{Nzw^O6CYg@jxYkJv)=J}pX+!qayI|+~DEhzl z;Et#Sa@rD)hRh3@Uypgc;^r;>j`f!XN*TEQ4D0)35Mg#*Z3`Co;zGrn*P79}-?lOr zl02AWkNX17lc(50LX72P!2NCb@EO%3`Fxt1;kQfDi0vThZK3e(^qBH(l+NMn)iy$s zi|Drcef!FkwfvT}JeM8BCsjR6jad22{<){g?+TC$J!oWT+Ing_FP&vypbsW1K8 zk23IUGD?%nB4vni_NNqud3KF)cS3*u)IhwCm%^Ge-dc~Fl=K;w za$Jg|%)5L;oQ=&s`M;Xz^oVr^r&fg>iL_L2+55{$?I@+!!(g8=PuucKGI2lT8l_-j zpAy5Uc;5IePOo~yagKv^ksj|5Ioq19q#CBevM;sBjl0xHDB;eL^Uy-!i__NMJ~`ZO zw!!GyiG2k9kGJ~GIA>4Zw`0}#R7L>ps=loWq`Hei$m+ixEpX7DTtvkR$*{PtCUhoy zXW;J}r3x5vHa$aLB0+*h*~F;v?11K6O{*JMiFN-o63dbImdb5ka=S`j?oRFLUnif~ zVJwP>_K~a~b=4+10o{8ZsWOrOng76lJo=pzD8qw?o*!u_aBUah%lz+xR_6Q>W4BO4 zdsumN$>ne!lIG={W&fatanw_LDRpY!S$nmi^_wOI7~|So1Ss diff --git a/htdocs/ticket/img/statut0.png b/htdocs/ticket/img/statut0.png index b1cf5df0e7580226f61d129d2ebbd93506c0ee75..48752fae6da21b1bd3d924ded3e681a9e535a3de 100644 GIT binary patch delta 94 zcmV-k0HOct0ep}oSVKufK~#7FV*mjU50C$3;Chf=xB(0#05>XBiTK!e>rGNJ{;gJ-%jfm7b({Ni;R=Bh zZcH~Biq18^4^&yZ&(QPR%QUY{PDKU*iw<{TnGfkg$$NJEE?umdKI;Vst03?J? A-v9sr diff --git a/htdocs/ticket/img/statut1.png b/htdocs/ticket/img/statut1.png index 4e72abd23cc2732ed9bd6cee69f81afc0a70481d..4308125330b719de972f1e491ac84b6d3dc87810 100644 GIT binary patch delta 184 zcmV;p07w7)0@MMJB!8PpL_t(|0b_7;bF268@c2(EW`F{i0rd8m>rexp1Mzw&yPc$T05P)}s`)j@>4XiyG^879 mNHuvW5fPx=R8PtjXJ-HqA=F_dj&bJz00003Cy delta 353 zcmV-n0iOQU0sI1xB!2{RLP=Bz2nYy#2xN!=000SaNLh0L01kBk01kBlxnof>0003V zNklpRSNHcD}b^r9|l`c)n{vMAIYAbtj^ z#TJ0G;R*@k+34}ljYz(PF-R>)4@L?k1p@=r13CAVlVLzPvH|rVK@xF2NG||0GA61Z S7XQBh00000003+ zNklSd);X?dPE zPS!GOHpUnLHzZ5hGgZAWm&?^8WGPwTy6!T7JCbX8$w+RGMx)PuzyC1ZlT3#y$*nwd zqUJQYP66UL-uTZvNwI1Lh{*dqfT|9x0Fu6{zRpQ-Wd-=Y{|(?wRU=FH#~=tUtbmCk z03SK#v8tZ;dVjst2&sQyj5!8yO|oD~5CJ%8x7)XW0JU0evsf%XWp6nLG6=(Pr`zqm zq(*QYr#a6I{63@OIL%aodcD3PB5!%$*OKBZj^p)Cr!y1)5RrpL&65-*l83VqRCRAr nb3(f_0Dy(NPbDHH0Qdp*Ms(?+?XPD50000N2b7 diff --git a/htdocs/ticket/img/statut3.png b/htdocs/ticket/img/statut3.png index 6ea7f62a9ff22ffbf63ef42b0d6469e1d8482618..61b6017852ca7b2ef2b93be366a9546628565f20 100644 GIT binary patch delta 207 zcmV;=05JdS0_y>gB!99=L_t(|0b`&G@bK_(c6D`)Crh)Nn_D!{fd4=PLO^^VZBD8I zyFmuHySsM-+2KI?GpPnF0vQ0pP=lTmtvNI_lo_buIFbRkf!Ky<1Av;dp&Ea?xVV^* zAhyg@v^hosdv0003E zNkl@we$bSKR1AtO$;_GX_Sl|o* zf*_b^tw$v90gQ(fyaNEqOOgqe-qXu=I(}xkr+l9`)H527aEf4&X#Y?f`(~)}R8CDoxV|5qWN?`Kp3e iSZim-n8QDXhhhPiGEh8V3-TiX0000SKZp&){zQ8LsQ57~4M4r|A0$SC7ceaX ziIL)k-`HG0iWmGrhJgGJ!a#i>b^uAy=<4cf0Ez*ip4}k!;2KCs6lZ4uPJ+ELZqjzL P00000NkvXXu0mjfqzXuk delta 302 zcmV+}0nz@w0m%Z8B!2{RLP=Bz2nYy#2xN!=000SaNLh0L01kBk01kBlxnof>0002% zNklWKfsLT5s#`N# zU*K-t{R6;_yCZ~fT}pZVroi1N56L7V2URryCL)Iz zs{Jqwt5VAIq9+`*ZF>Z;2e3ckKMK+>zH~i;PhsSD8U4JLTmS$707*qoM6N<$g2qvT AssI20 diff --git a/htdocs/ticket/img/statut6.png b/htdocs/ticket/img/statut6.png index 5bff8090beba27faa75233b12e1e80934a310434..77e76e62de9e464f50ed452fe2b9369e7b6215a7 100644 GIT binary patch delta 243 zcmVGms11-QD|v_`RE(TXAS;C^Jc#ftsp4 zJUsp*;TWPd0~JRjYX-U^pA?(*ff_y|Y3?T}zcr2Uo@}1hP_cMq+ks(WfJ-ww zC}F@9LPI+mNS{U$TaP!OK(-C+7 toD7oy#LuCI=#iD{fd1wOdMSsHIsh<>jDY)mAsPSx002ovPDHLkV1i#qXt@9Y delta 444 zcmV;t0Ym0004a zNklF>4z^5QX3DMRFm5QUubbFt{ldZpB$hk>sg%W`ExIW`|wi0TIV>Eu3Xj z*g5wOz#+*&qtO^{WMHj5H^vM~rQX^G-uu@8Mj&7 zR>5%`*F@xVfB}5Zvg~c>KU!rFMbQwzb}{)n%d%dYrhh|!c7s-{^>iNg-aiL$9C8sk zP1AHz)|dcSDu0!q&bb$%(d~94k{?Rit0YN2%?~jEP_0%kMC1v8Z=FtO9{{G)>4Avs z24SA({Y5K^_kN4yL_{7Jd)|r28%N5B!7)bL_t(|0b>{;z|GC=KQ>I3VXm&O{ZIoAtX6#TwL-& zVn9O<+uPgoU>c85Sd3&qIMkAGsOIZH%>wwGXbr@lp^E!KV$ROa{y_F`AifRMEJ3_x zC_ob140K&R45MgvbaYe)DtHcc_G+L_EJ$Hgj|~&lOc)>n?ISwWiJuXnOBfIzjl&xN Y0I0002@ zNklc1U@I=hL{J?w21_lN)yMYZC`hW`! z&AntBp-pB7h2z{*D;cJ!>T0TiKMzh3HBDpt_!uMolmRiu9Dfu-cp$j|umJ#nC?VlK z#<&E4x~{KDF3fDBs;7Ct_k<+8b00028 zNklAu+$4|$DcBT3_~1U0 zs!jml060000XBiTK!e>rGNJ{;gJ-%jfm7b({Ni;R=Bh zZcH~Biq18^4^&yZ&(QPR%QUY{PDKU*iw<{TnGfkg$$NJEE?umdKI;Vst03?J? A-v9sr diff --git a/htdocs/zapier/img/object_hook.png b/htdocs/zapier/img/object_hook.png index 5a307bfc62f85df909a3cf024f27ee87d44be275..b421fe3c9e046e26f6f64e996d0ac6f914fb40ed 100644 GIT binary patch delta 191 zcmV;w06_of0^0$QB!8kwL_t(|0j1Ib1_D78hw-W#1Q1CC80j8C5OkoR07;M(Q$Y%m zxuQ87ysn)cmekTk?3Oe{bB$B002ovPDHLkV1nfVQ!4-f delta 333 zcmV-T0kZzv0q6pdB!2{RLP=Bz2nYy#2xN!=000SaNLh0L01ejw01ejxLMWSf0000P zbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$QsvAlXN7}*zMz^A(}kc#5*p=yBcS#sy?2v zg|#GK6Sti;v6hl-w`DxS3U($)8+gIPBygJeh!b?Hs+!$C4qG2*Y7Q|#r>br+OmhFD zGlQ7quBuLPfJSR{Tf}Gf*uy&BlH9fd+N?@4sHzSwX9$n#Xsj*c72PCPzd%(zqb}$1 flw`O5{jYul?qFs%s3Zq400000NkvXXu0mjfE?|;N diff --git a/htdocs/zapier/img/object_zapier.png b/htdocs/zapier/img/object_zapier.png index 2681ccc1d3a7d33593e8502daa447b8c816ddb08..de31be865a1339ea825ba4156c94ee7d38b0ddd6 100644 GIT binary patch delta 392 zcmV;30eAkZ1)&3wBYy#CNkltJ)b>UVMU|1R5zh_8ZxAfWXDvjW$nSd;F>nHjhq#j1fS$Cn}MToQ}Vf?xysIT0`vO%ODoUxI+wC__6(0`&O}h&q+v zcQ4qY&m9XGiDn4u(I>`vFHnh&jt1zqI}mj&$~jXZ*s0qb4;Tkgb?6zk{~4;$+4%s) zJcOvjX8U9a_J8R%*8(O%R4uye_Q$9}H&+A9TP0J#%7&QdOHy2TnVxqHq6*FR7Do#>0Eyvk miUEHhaU8V)z6t_@fEIlZf}RIhjo|`!ArU9G9g76G5GYp#H5tF;xs+=z=Hn{m|1tW4d7gmU$xZ&AmC;YcQ$rqGdlq62X532uCWD+ zz*Z6#Puy$;PMFzl;3#lS(#K5fvnt?oy#cE^ zV4RdQ@qbSgaKMwmGdI@(eZX}|A2PEi|BdK;FrEj7a@P5KBg)bwjhopWpa&S0^ln7~ zIEcZ#xv2om>=;mTvomp7S=zUfMq-Pa*-4U*(fYvM9@LwZ^Z;0LC%nYcD^%FWV(tM! ut@kx*iR5*SB+L^EYlZ(WSOrixfZrRuvN}?FO$~Pd0000 Date: Mon, 6 Apr 2020 19:16:51 +0200 Subject: [PATCH 149/336] Fix label on 'Receipt printers' module --- htdocs/core/class/dolreceiptprinter.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/dolreceiptprinter.class.php b/htdocs/core/class/dolreceiptprinter.class.php index 468cdf050bc..239372979e4 100644 --- a/htdocs/core/class/dolreceiptprinter.class.php +++ b/htdocs/core/class/dolreceiptprinter.class.php @@ -615,7 +615,7 @@ class dolReceiptPrinter extends Printer $spacestoadd = $nbcharactbyline - strlen($line->ref) - strlen($line->qty) - 10 - 1; $spaces = str_repeat(' ', $spacestoadd); $this->printer->text($line->ref.$spaces.$line->qty.' '.str_pad(price($line->total_ttc), 10, ' ', STR_PAD_LEFT)."\n"); - $this->printer->text(strip_tags(htmlspecialchars_decode($line->desc))."\n"); + $this->printer->text(strip_tags(htmlspecialchars_decode($line->product_label))."\n"); } break; case 'DOL_PRINT_OBJECT_TAX': From 5707bf0d73a86e7db8ae37446b9ceb26508a2ad2 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Mon, 6 Apr 2020 19:38:50 +0200 Subject: [PATCH 150/336] NEW RECEIPT_PRINTER_NB_CHARACT_BY_LINE and FIX product label --- htdocs/core/class/dolreceiptprinter.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/dolreceiptprinter.class.php b/htdocs/core/class/dolreceiptprinter.class.php index 468cdf050bc..e089a89190a 100644 --- a/htdocs/core/class/dolreceiptprinter.class.php +++ b/htdocs/core/class/dolreceiptprinter.class.php @@ -597,7 +597,7 @@ class dolReceiptPrinter extends Printer //print '

        '.print_r($vals, true).'
        '; // print ticket $level = 0; - $nbcharactbyline = 48; + $nbcharactbyline = (!empty($conf->global->RECEIPT_PRINTER_NB_CHARACT_BY_LINE) ? $conf->global->RECEIPT_PRINTER_NB_CHARACT_BY_LINE : 48); $ret = $this->initPrinter($printerid); if ($ret > 0) { setEventMessages($this->error, $this->errors, 'errors'); @@ -615,7 +615,7 @@ class dolReceiptPrinter extends Printer $spacestoadd = $nbcharactbyline - strlen($line->ref) - strlen($line->qty) - 10 - 1; $spaces = str_repeat(' ', $spacestoadd); $this->printer->text($line->ref.$spaces.$line->qty.' '.str_pad(price($line->total_ttc), 10, ' ', STR_PAD_LEFT)."\n"); - $this->printer->text(strip_tags(htmlspecialchars_decode($line->desc))."\n"); + $this->printer->text(strip_tags(htmlspecialchars_decode($line->product_label))."\n"); } break; case 'DOL_PRINT_OBJECT_TAX': From ff1b3db54b1cfb66f8bda1067495bf4a88118d7c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 6 Apr 2020 23:38:30 +0200 Subject: [PATCH 151/336] Fix regression on hamburger picto --- htdocs/comm/action/card.php | 2 +- htdocs/compta/facture/list.php | 45 ++++++++++++++++++++++++++++--- htdocs/core/lib/functions.lib.php | 6 ++--- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 07cd885698e..15980f9a19e 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -1580,7 +1580,7 @@ if ($id > 0) $linkback=''; // Link to other agenda views - $linkback.=img_picto($langs->trans("BackToList"), 'object_list', 'class="hideonsmartphone pictoactionview"'); + $linkback.=img_picto($langs->trans("BackToList"), 'object_list-alt', 'class="hideonsmartphone pictoactionview"'); $linkback.='
        '.$langs->trans("BackToList").''; $linkback.=''; $linkback.='
      1. '; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 93d47ae584f..11bcab0386d 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -107,6 +107,8 @@ $search_user = GETPOST('search_user', 'int'); $search_sale = GETPOST('search_sale', 'int'); $search_date_start = dol_mktime(0, 0, 0, GETPOST('search_date_startmonth', 'int'), GETPOST('search_date_startday', 'int'), GETPOST('search_date_startyear', 'int')); $search_date_end = dol_mktime(23, 59, 59, GETPOST('search_date_endmonth', 'int'), GETPOST('search_date_endday', 'int'), GETPOST('search_date_endyear', 'int')); +$search_date_valid_start = dol_mktime(0, 0, 0, GETPOST('search_date_valid_startmonth', 'int'), GETPOST('search_date_valid_startday', 'int'), GETPOST('search_date_valid_startyear', 'int')); +$search_date_valid_end = dol_mktime(23, 59, 59, GETPOST('search_date_valid_endmonth', 'int'), GETPOST('search_date_valid_endday', 'int'), GETPOST('search_date_valid_endyear', 'int')); $search_datelimit_start = dol_mktime(0, 0, 0, GETPOST('search_datelimit_startmonth', 'int'), GETPOST('search_datelimit_startday', 'int'), GETPOST('search_datelimit_startyear', 'int')); $search_datelimit_end = dol_mktime(23, 59, 59, GETPOST('search_datelimit_endmonth', 'int'), GETPOST('search_datelimit_endday', 'int'), GETPOST('search_datelimit_endyear', 'int')); $search_categ_cus = trim(GETPOST("search_categ_cus", 'int')); @@ -168,6 +170,7 @@ $arrayfields = array( 'f.ref_client'=>array('label'=>"RefCustomer", 'checked'=>1, 'position'=>10), 'f.type'=>array('label'=>"Type", 'checked'=>0, 'position'=>15), 'f.date'=>array('label'=>"DateInvoice", 'checked'=>1, 'position'=>20), + 'f.date_valid'=>array('label'=>"DateValidation", 'checked'=>0, 'position'=>22), 'f.date_lim_reglement'=>array('label'=>"DateDue", 'checked'=>1, 'position'=>25), 'f.date_closing'=>array('label'=>"DateClosing", 'checked'=>0, 'position'=>30), 'p.ref'=>array('label'=>"ProjectRef", 'checked'=>1, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>40), @@ -269,6 +272,8 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter', $search_type_thirdparty = ''; $search_date_start = ''; $search_date_end = ''; + $search_date_valid_start = ''; + $search_date_valid_end = ''; $search_datelimit_start = ''; $search_datelimit_end = ''; $option = ''; @@ -405,7 +410,7 @@ $sql .= ' f.rowid as id, f.ref, f.ref_client, f.type, f.note_private, f.note_pub $sql .= ' f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,'; $sql .= ' f.fk_user_author,'; $sql .= ' f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva as multicurrency_total_vat, f.multicurrency_total_ttc,'; -$sql .= ' f.datef as df, f.date_lim_reglement as datelimite, f.module_source, f.pos_source,'; +$sql .= ' f.datef as df, f.date_valid, f.date_lim_reglement as datelimite, f.module_source, f.pos_source,'; $sql .= ' f.paye as paye, f.fk_statut, f.close_code,'; $sql .= ' f.datec as date_creation, f.tms as date_update, f.date_closing as date_closing,'; $sql .= ' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,'; @@ -512,6 +517,8 @@ if ($search_module_source) $sql .= natural_search("f.module_source", $search_ if ($search_pos_source) $sql .= natural_search("f.pos_source", $search_pos_source); if ($search_date_start) $sql .= " AND f.datef >= '".$db->idate($search_date_start)."'"; if ($search_date_end) $sql .= " AND f.datef <= '".$db->idate($search_date_end)."'"; +if ($search_date_valid_start) $sql .= " AND f.date_valid >= '".$db->idate($search_date_valid_start)."'"; +if ($search_date_valid_end) $sql .= " AND f.date_valid <= '".$db->idate($search_date_valid_end)."'"; if ($search_datelimit_start) $sql .= " AND f.date_lim_reglement >= '".$db->idate($search_datelimit_start)."'"; if ($search_datelimit_end) $sql .= " AND f.date_lim_reglement <= '".$db->idate($search_datelimit_end)."'"; if ($option == 'late') $sql .= " AND f.date_lim_reglement < '".$db->idate(dol_now() - $conf->facture->client->warning_delay)."'"; @@ -531,7 +538,7 @@ if (!$sall) { $sql .= ' GROUP BY f.rowid, f.ref, ref_client, f.type, f.note_private, f.note_public, f.increment, f.fk_mode_reglement, f.fk_cond_reglement, f.total, f.tva, f.total_ttc,'; $sql .= ' f.localtax1, f.localtax2,'; - $sql .= ' f.datef, f.date_lim_reglement, f.module_source, f.pos_source,'; + $sql .= ' f.datef, f.date_valid, f.date_lim_reglement, f.module_source, f.pos_source,'; $sql .= ' f.paye, f.fk_statut, f.close_code,'; $sql .= ' f.datec, f.tms, f.date_closing,'; $sql .= ' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,'; @@ -603,6 +610,8 @@ if ($resql) if ($sall) $param .= '&sall='.urlencode($sall); if ($search_date_start) $param .= '&search_date_start='.urlencode($search_date_start); if ($search_date_end) $param .= '&search_date_end='.urlencode($search_date_end); + if ($search_date_valid_start) $param .= '&search_date_valid_start='.urlencode($search_date_valid_start); + if ($search_date_valid_end) $param .= '&search_date_valid_end='.urlencode($search_date_valid_end); if ($search_datelimit_start) $param .= '&search_datelimit_start='.urlencode($search_datelimit_start); if ($search_datelimit_end) $param .= '&search_datelimit_end='.urlencode($search_datelimit_end); if ($search_ref) $param .= '&search_ref='.urlencode($search_ref); @@ -797,6 +806,20 @@ if ($resql) print ''; print ''; } + // Date valid + if (!empty($arrayfields['f.date_valid']['checked'])) + { + print '

    77opy6JYdY%mD7KyEe<83POsRkW{|HbMXZ002ovPDHLkV1fY(+ZX@< literal 929 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUD!lvNA9*UJvjIaRrKVaq%&5NOSWD^YV-F z2}lSCii?WLGH@s|bE`3MX)$tZG4g6N^J=m1YAGt~DXSWY>iVf^Ir#)vv#NG*YjtvJ z_3&tS^6GT)>2&k!^$6(q3hMU>8uW=jr7}^)jD2ht6{eo$DCAH7>b5K4(f``Zni`i(%zQBC8Jg z*E}k2SY6q+vASiKXUo;F?yHd#Z%0qQ6*J|Id&_(O{*M7&ALA!H$((gJd*-{G1^2TS zf6ra=BX|AZx|I(r*M4g1+uk*GU)$VsJ(CYim~n9OtfSNBo|rcObj!k9?JMt3S#W&r zigOdz-JQ4WLgSi;Eh`_itbNqK_EF3FuPqy1we9-Tx${fMou)UCaAn2jtGjofU9$VphTV_a5B!~R@aL>Ezjq(Fz3&%;7XWs6(_-^CH54*2@*!uYI?kE5DKmBv$=+$%Q?;Jbz=)jpb z=dQjwd-KzU%P(%+cyjB`+cR%|-F*7<>X-jFfBb*)||Nq}mvhV;#?c9NtJbnUI(BB3-Nx;Ub@h$4jtHFKoo!qF?Tn`IuBchXJ`FLS-@JLVrlY_< jUfa7^K%Dc;OlF418$!KbZvLABbT5OatDnm{r-UW|n4cfS diff --git a/htdocs/theme/eldy/img/object_projecttask.png b/htdocs/theme/eldy/img/object_projecttask.png index 4a01b50435a54567ce0d53cad192e728aba5505a..8ba62e2c6602b9776474a3082e1d0f8e560ea881 100644 GIT binary patch delta 425 zcmV;a0apI42e<=}8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0004PNkl3zC`nzG_g)&NBjFnUwxEWv0@Fr&0BUKJbcdCGcP^683pEcnSU(kbJa3K%cOPdw*o~f z%353d1_!4)JICUa8)Q_Y8K{tBgKzmL!bmFUn3z1f@HW$cW>u%^FA}K?^ruO+Nn9rs zi38CEtrayYOldqAbVd!e~Q&i$WZ6sqCXFgG_( zJ{05^)FK-bd=SH*d(RtAq2HwwJwwXK=Nedw52<7#r6L}LO8_uXwhsi`4nY?IQqOT2 To6E|100000NkvXXu0mjfs#?Ej literal 941 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUDNSs54@uLt;qxB|twxcC@2q`7&7dHKco z1SA9m#YM$r88{S~xz!lBv>3Uy7yai2v}?tv)L+aw^P98u%iEdBcBD*&PSzO zjw^VbRtmXl9C6$t>X>ozb%V6~dYMn1L+81K&UK958kgK2pED&eeVcQ}#jx@tkyQu$ zYaSIhtgdX^SlzPAv*l`7_tnUWx1%TDikWi9z2&`s|Hpu?kMR?pWX`&qJ@Z}8g8NyE zzvnLbk-PqH-O7iRYdfT_mX!}$);{WA`>198*Om>h+IIcv-1((r&z~vlA5Gr-V#>bvbGJQR zwBqct^*5GmxUypN)!n<#F4_HP!|q4z2ma1D_;c2o-@6ao-goH!f}^h&AAi5_{kGjDfXe7Eu9huzmcY<>K9_mhA7pZ+;=^y<0ucaEKUbl}XJ zb5~!Tz4__F?^7hI5zb{^Vef#eFyLVq+z5V&@ z_rEva|9|-K^ZWPTAAkS<`}g1f|Nn0&S$F`Wc5X?KUoen6XaU3NKYM(D4&C7C;uykl zJ$Xhmlf<(#hC)I{uXs3`3YK#i8*SoF*;2;Vywj{Pr^o4#aGH delta 268 zcmV+n0rUR!0h|Jm8Gi!+001bK-QxfN0A^53R7F}^T2fL{-rnBc*3RC}#?HO1#;u&r zt(4BCjQ{`t_wVQL-qwVKgy+t^*0r4f_wVP{#?G~z|M&N;rJT;SrQXK1=jZ3OwXMdz zy~f7It*x!^@9(9hrIeJEjEs!EwY76|b7Ny;lzbmJ00001bbnG#Qvg8b*k%9#0Axu- zK~xCWO~=auf*=qD(D7>4;GHB&>_zJT|742-Ji8+z002k^RgKG1v#`YAU!@@lu-(b1b-a@{~PJOA6Z-J$P~r(c^w$Aio-g}!(e^3!=+ctz?)H(M?dsP64G1`YOI%;NyoL4`qiV6!eAv{x6L&~IF zl#nsM)7dEjLAs}-n-~a#s07*qoM6N<$f+zD|9smFU delta 345 zcmaFQ_>yUYWIZzj1B1r2yN`hsdx@v7EBjSuR&gfY)!W%bfI^%F9+AZi3|t>Tn9*sC z$qb+%OS+@4BLl<6e(pbstU!K6fKP~PP*6}*R8(?ua&d8SOG`^nPtTMoQwsp?EV_WalpF4K%+PQo8?ma)Z_xbbZ?~kp0 ze{SphYkS`V+3(+fzjy5Wy>s861JSkb&+mPI4@A%Z1JU>Q|G$6#{~w6{hh;kN1v-MM zB*-uLKf}}Q23|m3nx~6n2*-8b+^SHxYUAwvU96O%e{oke<)$&uCNg=O5 zd0kM4#Z*mSr@$voZg)2|O$vyv-?SoQxz?-HYY*3&F1I=su(ogS_pQf#x9yu=7A+OO ocu7p!zxU-YEYf>yRrMR>RXVxfPby}f2DFmF)78&qol`;+0Av)b&;S4c diff --git a/htdocs/theme/eldy/img/object_resource.png b/htdocs/theme/eldy/img/object_resource.png index 2d93019b62f353d5e43b2e617f940ab5b178071b..aff6464f4fdb948497ed0a5bf43d89a07d72c3e5 100644 GIT binary patch delta 98 zcmX@gSTaE(hJ%TLf#HbIZw?@3?djqeQo)!!!|XMyBTLX1dHslOIg*84&!*=pb~to> znBC$k=%Ov=8lK3IXSYdVm*<*3Tu=*7@n`Q^0;tDJsM~XgQu&X%Q~loCIBQs BAu#{| delta 180 zcmXRp$~Zxyo`so#fnjG{VGfWI3h)VW{r~^}vSrJr&3bY5>Qx|ne%Ti1DhVZ^EMtl*!&%@FS21sKVW0$<}-fEc;5*qWa;VR7{YNq zIe>|oO_W_+jNM&Al#7i=(Lt_R+nJ*|TaRG^ml+?gsTnI*TbmUFt87dohXx1BvH)HN Y%_IDmbz^470!?A?boFyt=akR{0RP%Df&c&j diff --git a/htdocs/theme/eldy/img/object_sending.png b/htdocs/theme/eldy/img/object_sending.png index c798ced0b5c113d90d6987b597b477a0face49fa..c592f0d599333dd696881d090e76972878c02102 100644 GIT binary patch delta 183 zcmV;o07(Cl0@DGIB!4haOjJex|NnDyb7Ny;Nl8i0&d$ch#;K{P&c=+VmuIl|i&f zh^t!y0|OIS5JZ1=VYsycDBg1?O--7CiIMR`0)v|-(|-m*1~AuGoeXLj_u^9)eqs<@ ln7B|-Py}d@00X}~0{~QI5gPvMA0hw%002ovPDHLkV1hw?No)WB delta 245 zcmcc2IFV_BNGZx^prw85kH00(?ST|NsB*>FJrAoSdDVU0hsTT^zK0dhV1d zQ&z5Axp#`!xwS#(j`i%^x%1euW9QDDd;a|SdWTI{fqEHBg8YIR9G=}s196hP-CY{}XO@yM5_( rt(q&3o|>+jo?e|pvy8-zyOIp~oYM9uMZMdB1~YiN`njxgN@xNANHShE diff --git a/htdocs/theme/eldy/img/object_service.png b/htdocs/theme/eldy/img/object_service.png index 65e9041589f39e0c76746ea08669baa778442a61..f27e9b669e6b025c196f8f4ac851d81ba4ffaac4 100644 GIT binary patch delta 297 zcmV+^0oMNQ0=WW^8Gix*0059Gx`qG%00wkYPE!B?00000Zl(v30002)NklPd;fjEx9{}+&*`ywFMYSI$r;se zei!dlE3wtF7U%T-Gi24S=5bxxvXn9f&?#we-m;xl%UsrVo`2^|<_+1^O* zN8S-_;}JTj9A)w%`QFOz0ktwm0nuu#H5}1#0L`ICPIXTg;4DN~$(EKeD1P*WT0M~T zQP`~RpHRY{Wo|NB93ipq-er{Z&hTGl;w!9{r&LxS#ebo{Q^A8l?6zR9C>s!=e_Ue&hPKe_wU~K_vior|0W+^>i_@%0d!JMQvg8b*k%9#0EJ0JK~xA^ zHOuQ7f*=fl;T1(^I}jxhQ_HB#4DSEtl40MEJ-mAc05z(o=|LTyjobXOxPQBw!);Rb z@oiHenj>*ncUJ8itv;XTk$Z)&2VQiZuj$wrTUn!(BCc@AE{RpF?3)3w6c_GVOaOSy v`w*BIL!t;i6M}_-j7cx0;4J;^CoKVfC?O0vQ5HyS00000NkvXXu0mjfEsmso diff --git a/htdocs/theme/eldy/img/object_skype.png b/htdocs/theme/eldy/img/object_skype.png index b209cd8d16e340a330069c891053a431d7a9e01c..fd139f9d8c8bc767ce38e39e68c281ac9f85b799 100644 GIT binary patch delta 613 zcmV-r0-F7*1^xt(B!5LoL_t(|0bP>=up>YaM02)n+qP{K&bDpawr$(CZN>VGoxa|< zGF30m8|iIA}3|Yb6kcT$E3)8T#5oG zWGHsZ_uXDnDq3)vpcD~5%5_wVDrXcJen*F8FXJ%zfgYW%sDDtHl6;f~s;dzxun?3W zd6}*EO)Y-KIuIESmlv0Ro6z9Af)c5a$Vkzkz($bcs0?*4Dq*pCAVO<$;lf`to~f)M z(PNnfC0R*u0)@z)^N1AFpT;5>6YuLG+3_3ccmKim_X!Xojdh~>Sq1X?Td|X} zLU33Ja!}CowtqGxkQtpg_{D%BcXeoeMU9nDV$uGp8u>Zk65)Xl6oO3zh4@906LRc) zp9rvv$S^xRIQQLz<`Wkcw|2ePR!selI{A9qO7XHC4Uu8el><9^Pk5e7uyZAF-!C6 z+=_P^8-k%ubfWTE(Q2rLCqf`-R-7M*)g5?S2PJ`AcS#6h!hLZzakA@%jI600000NkvXXu0mjfM7|4> zzI9DBDMeAsNPo($S~`lrBX&2ubm7LApf>rMeF?f}4s3hw#M8MI<(n&*z@Z@zBUMt_ zAbW)1g%Ic|Xqu2UfwY!D&wL1%J_gV*;>UxjAR0&gC}V+Zas_V|f+yl-7k^atyU{VX z3Zx23fJi)r*FVEJVe`VkBAW*_L5mP{ikCWmEMaIndVl`l%-AA2zOQ0l-Y5|LjU;h| z5~D@R3a$#lT@g|_7q{@peuWZfV=cCHI#9)^>fiZb{jsJ=?#u*XWV&h^mxbU|HP7F~ zQ|RKZ%1EVgj`b++a$booQhG%dJQRXrGAnXx99={_p3XQDX?%9C zY~>5@W!#%t#%|s+h}+2{GOb?q1#**Y74!cAZzakAL0MHp01E&B07*qoM6N<$f@Xj^>i_@% diff --git a/htdocs/theme/eldy/img/object_stock.png b/htdocs/theme/eldy/img/object_stock.png index 2f439db7b500111372c4f8cba7e71e06e460b823..b583191285923809856c961656ec0e1d3c5ba996 100644 GIT binary patch delta 342 zcmV-c0jd6~1m*&e8Gix*0059Gx`qG%00wkYPE!E?08ju>qZPkd0003SNkl=CiW8UM z?!5tiy+I)CmrtfXq)dBB%K!iX07*qoM6N<$f;s)1ApigX delta 540 zcmWkqO=uHA6rQ%JwN>n)R?%Jx!5A-9Fc786CLtjSG-at3Qczio)y0cltl;7yZY-Js zYh?t{>7jAdLPxPAWAre+$kIk#4<5FpNIXW)LzWqmY}=+#YE)^lSY#+{nI^|FgYPDn`PBf0=7S&9mV8e@{f{}&|*D%sjU-_QB>RxK@NR2LJ^1H8i*BgzUBMHy4e*f?r0AAmCnET>fNWWY=^Z5Dsu@|#5 zLn-~i(u$hRd*P3pcS6xyPi7_~=@aAp+M&t7SYR3Sb@TS=-;o~A>Yv4m)4W{zHuWhJ zoIm9*&t>|%j?Aa_Esy%P9_+ic=5j15v*{1HMDpu_xxJOnS5vv`h2DDh?|OGnf1$I> S*_%Hp9D`_RF!(H>B>w|t2@akB diff --git a/htdocs/theme/eldy/img/object_stripe.png b/htdocs/theme/eldy/img/object_stripe.png index 287bd24910cb0fc86f886d02789f29b993bad530..82bd4145dab75394fb61e2f09cf4ead19738877b 100644 GIT binary patch delta 569 zcmV-90>=Hb2FC=D8Gix*005AYXf^-<0uD(;K~#7FVtjDt^@=I?Z(sWYpotog;0U7V zSMNBsZQD3OtRuuM<}6VexkOTkZQIs*=BH8n>y4j!x~-~$5@$#ROhgRC$cXH2OvDo> z$6L3iJQTM*y7gNDfKi#*)GUKo?AbxWnJc94KlS~mN}fHeLw{t{SgNq)5e2H$xKsk4 zW`X|v;;l+2GL~fF3-H9L`IcS7CrwVR>hIt3-u=eOGvAOgC@Uf#O&m%O9u^-vKA~14 z@RR2}XLgGG0|-Gv6pAx;AdAJz`v>-=i+`TIXb&D@rcRAPdc_2t0GYvp$eyL=U5n}A zlh*l*b(BBB*ndKWl#v(C*+ag)#gAXr%9VXYaQLv=`nAQhsmc2<<+-baQG79t$bpBK+huH0+aJJ88cYotQFaQ=Sq_8^>O=GR}namSSz zG)RUI6=D4TyL$Gi>c$9S0bvaUe$h*o73)@Kx9+t*et#*E5&U!k)ewj(qlJ|?0TQ}1 z;)r3!0(#SE>Gfw_6;uIb$C2JHI=uSOdHlRRezY+LyQMyU-93A*`J<&^f`C8(_a1!H z0YtA3{|*F`l1hWQ^8Gi-<001BJ|6u?C00d`2O+f$vv5yPV>IRB3Hx0BvP*E+8>6AZF=yaxNe;FfchFF*iCe zIXW;mAS*C2Ffd!#K~y+TO;b-uR6!j6 zX5M@I_U+rnO7LHSp{|xv=%J`{rywfGpibebLk9^wNP&chB06;GS`a~Y>C!bi23a6P zB$k;)k(jNPZL99Sebe`ww=Wy`nB6z?{rUZ7Mt%CQVjkUD#Qba-RbyaW1veW)X$?3U zS~~!t97QC*J%8UpcQK3M;T)V+b@tl3*XuCg;3mUOj+e2Uwd2~^!rh)@rLp?c;M;Nx zy)ah+d=Dn@;pB4g0=lOp!u2Uak~o9^C6#iSj#&I^pe~$zZfsma*{F=ym&cj&?dT~o zB2$&ib-bP3z`gq=t}DA&glvh4leoChL`!>sv8!F^+kY2YvW$G*!NCJL?n{isJ%Iux zC_qTFB*~$pJCVt7kz@MBZ#o=G1YNmoHvWJVFt_&_;Y({g7XWgT$LhMt_OG`*W^&s@{y%gi_gEfp# zE@S4+rWNrs3WEc_CCOzIz)cfa0XasE!$%63xYCAGCz>$OA8;)>2^kScq=4-KzsKZg z+dv|{97-v4w0SswERT_MO&IED?Hn6h1~UuMKY#Zmfe45*kqUiYs^R^|Dr&W){-|y+ zyI8}msWR3m0xuPi9sugn=oeFCG#gcfILo5M4A|{T)Nr#zAt_Xw7@wC5J9zoJdc1A& zf6-)fCFV`zTX6GyC(XQxdqS9E9_Zw}JB#jit`DEiqPN%M6P6N^K8Q;iwGbBIhXI^` lMj+Ba@gnx;>KNIzfxiXLt)E)oqyhi{002ovPDHLkV1nu delta 268 zcmV+n0rUR!0h|Jm8Gi!+001bK-QxfN0A^53R7F}^T2fL{-rnBc*3RC}#?HO1#;u&r zt(4BCjQ{`t_wVQL-qwVKgy+t^*0r4f_wVP{#?G~z|M&N;rJT;SrQXK1=jZ3OwXMdz zy~f7It*x!^@9(9hrIeJEjEs!EwY76|b7Ny;lzbmJ00001bbnG#Qvg8b*k%9#0Axu- zK~xCWO~=auf*=qD(D7>4;GHB&>_zJT|742-Ji8+z002k^RgKG1v#`YAU!@@lu-(b1b-a@{~PJOA6Z-J$P~r(c^wFdgVn~6z)O@8r& zD@%YvdY&$hAsp9}1DKfEMA^l~*xe-zM7h{_6wm4D@T@b?x*@^gBkAPe6_Y3uBCv>& YK`4^%>U1SmaiCTPPgg&ebxsLQ0K~8~r~m)} diff --git a/htdocs/theme/eldy/img/object_tax.png b/htdocs/theme/eldy/img/object_tax.png index b4022e77740bb96770f8fee065c58284e3518c45..37a0ed334958ef4211c5025c0de288f393d7ed94 100644 GIT binary patch delta 251 zcmVg~0p{)(iCKg|64 zn;-h|mDbugj(CB-p@_9sRab3{xuQe_joHI6T+!b9G}TfRrF4nhDJ`mj$&b`L9rKOyV zrIdudoP@@lgx=oX_wVn{#lS-p;+wwWa_6|D2qR*1ffyl!W*9_vh!{*4EC9 zjD(DgjB|5yYinylLPE~Y&YYZ_+MUN`00001bW%=J06^y0W&i*Hb4f%&R0!8i%G(lx zFbqY}P;50eUUMd+MnJ`Q2ekkHc|Jf3`)$oR0Dy=n5MT&Z_1tNgP}`q|Y-H1R-;vMP zTRw@#(xa3}q?=si9_dMZU0nw*nVD^Mn$jJMbmpC}_lLN8qSbn{?P*Ltv(C*IJ+lD*`A#5;*ir6+pqO&O|j%sFI7yWlGE_4@lWH|PL~&6bh;Xyjei(>K`jU^7ltBx-f?& zv~rfox{!yzzi53#oKJoPmZFE?*UFl?26-cf-4PC$VU~YfGh>EF6T?T zA`Y>N@trBy@ZI7nM>(u+!&jq^@wJT!*DeP6#CaEM*38~|kR?MNMiPk$SQ1OD?I4)JHxWpNyGv+0IWK9JfivkXH zDnKt?7+AENrqbv3je}&kfkh!_?pZhXU@)Q4LwVK?=*#!3(I48Bc;C@)d8}G;ErMVs zoS&0*%9w-!2Y(yT0Ur~MI(o{>ry^lVKi1Gs)teejPbU8OCHrBYh;6*hiOXU7kQ9Lg zZN4ax-_kE+O$&5)qERHyH1NSYA%e6FS4dyAo<7arn9VmYKm(HyP1DW$h;=;N6*2Bx z@^n51xzF~l=;Aey(U72_?mVCo&mMwvCa*z50RKQQi4lplY-^-dPC?A9}PE341GRd4&AXKhFe_`{eFLn zdlTvpG@uv?g#?C~SHtzC_%gyibY2+a)XACn7!j}LSS)6VMn$7Hc$@jReM@zH5j42Z zVEn)U7BC^B@W+S<+!z-i_do_($ND+r#&uPVp{|kBJmd!~HKf=4y@x3P0000(2gwsH*C^D2gk9kk0}uBqB$ncNMUt5tKv0n0E(gn&w7CP5_%W1inHDPpWE*pqU+K zaF_+0yZbw!b5H=vvV4d!in~t-;;LG-ZL4)%-!3Mq>b;p=%n}FSGNtq~48!wcqPxGE z+2`zz27HUin>L8VMX>Mt?Y>D)tA=US|GcBEF}wS2^v0Zano{~X;FI$U;u284TVN)R P00000NkvXXu0mjfZg7+! diff --git a/htdocs/theme/eldy/img/object_trip.png b/htdocs/theme/eldy/img/object_trip.png index d911bd621ded42003fdbbe193de6cbb849193dc3..d63d74801626c594a161a503ca75017a4b0c8c8f 100644 GIT binary patch delta 215 zcmV;|04V?Q0_Xvd8Gix*0059Gx`qG%00wkYPE!ER0LB2d7OMQ(0001;Nkl6G5CRgp@_9sL`JQ(exgJKjj@$dFSKo&oCS*}a?f-P^iVAwN5Xq7<`{0Noii3C z_*;q}>;~_d-k*S;Gts)bri+_3D1AKv@$N{o$Z*FLyl3*2!yVZrK2iOUnRZ9JvE*rA RxX%Cp002ovPDHLkV1gT1U=IKQ delta 353 zcmV-n0iOQo0r3Km8Gi!+001bK-QxfN0EbXaR7K9lwNg@2*3Qn>&b`L9rKOyVrIdud zoP@@lgx=oXl#F|vlzWtnbG@aE&ZUIs-qwtSbFG|=wWXBj#;wk+jJ>t3@7BG}t(3;S zweQ}>&b6HH@9(9Yl-|z0&b6ig|NoqvjMlxioRoz3_xI=L-hbBC&WwzNjEszPb8~BJ zYeGUo&d$!9oSZ&wIh_Ci00DGTPE!Ct=GbNc0004EOGiWihy@);00009a7bBm000W` z000W`0Ya=am;e9(2XskIMF-#q0}~Al*nRDj0001ENkli}=pXVGy7zONSQMYKs_W*P$QIEF6*CII=e>kh00000NkvXXu0mjfy0fd$ diff --git a/htdocs/theme/eldy/img/object_user.png b/htdocs/theme/eldy/img/object_user.png index efd446a1a4c05b50932240855227fec33c4564c2..7662c35d3d45a36b98ee2c7a6eafb326b0110fc7 100644 GIT binary patch delta 450 zcmV;z0X_c31lt3UBYy#+Nkl5jJUiY(PIu4;o00KcDcziBMrV`x~r~DJHU%!5^ z!)ZSeiH5-Ab%EVs1%krCX0yKP(<_V`IjSG}h?2|W0=k zDNM#1jYf5p(i3NJQu~P1;h(zj3&w#UvHLnbc~+%SonEzS)ifF{TefVdTp>S<0DS_g zY4CHV=SU3DhQJr_573ay;fz-(^j~U}XRR0n$lCK~yNuos!LNQc)Cz*FNXMr3jQCsf`c^G;L>; znrb_<3>=v_QAZ9;9O)A{vro`x@B#V+Jb*FLl%#e{q*hVtrGFQs<=%5R=WJ&UHZpO~ z*3MelJ1ZaXpF`Idn|C)$JKNiPl}hEQwN7@s-FLlSZ?DyAsac;lE1J!wcklkzezjV8 z5e`E*Fg6X&e;MH!G9Xt&1G{(p7avIAUFrWR{-qp zKG-Rhif@ytddXgTWw2@cqOy0Pv>PNMj6p v*1G_h045OgUu`oH7=R-p$IN~qe>3w3L_pZoS%?Lg00000NkvXXu0mjfkOcGZ diff --git a/htdocs/theme/eldy/img/object_website.png b/htdocs/theme/eldy/img/object_website.png index aae8bf6eba03015d44032e7fafb2450c05a19dda..4b2f7afa5b72015e0544b82ced79d68064af777d 100644 GIT binary patch delta 303 zcmV+~0nq;L0?GoAB!3Y}L_t(|0d>-|;umlL#nEq?{mD+_z4-Tu;9~aRZai^002ovPDHLkV1mH$ Bl~n)$ delta 339 zcmV-Z0j&PY0`3BkB!4wYL_t(2&vnvEO9D|C#_>bZ&LZu?Xa+?^MOJj1%96+;m7PTD9^sv~ty^Z`uEy9w8@Y@mn~a_j-sZm@qynvrw36DaSMJa7`{-Aa z4Q#1ZTh^^Q%HRkkrvoJozl1?8$PZ@uO=L+2kiu&)r&_3K2D^quoMKKD^Qz|QdhE<_ z_c|J=}j z)N9qaZ`7dKa({wW6KaiE(Cz?rC#VCRwu%>Bpx1|f59o@IGXRF8(GVD@RK`rEv)OdQ zIHBf~e-_K(O2%rqT*zL>?hb6WGPWCM?LtAv4fZnjZqNw@hoi7Kon@R)3wvHvoGZ8c z<8i-nRcSn5!29!g1FvU>|7xIpQwv@E)%n#|DfC!i05zs}nkHbV7?yY^kit?4{$`4t mqD)ClatL6ip@P(2LMpD2O7Yc#($Qq{Lg_{D=6|UNX(6rHi~oc6U=KB= zhbFc8K@w{qHpc9}@sJ;DLbB-=bCJ$z=k3h*^WMCD^Ol$y{WO6-+bN)@DaQ}x7xy{- z836eL6#dW#Kp}%_we~>&q(mGEqLA((P)KtmcoKk|9_RR`obj763TZjx=lG_a9=8VI z`5;O~Fhkd5*nf|FszXpdCBuH`8kkWk@_f(&fEHp<>~%-eWH``aiQxb=t+ADMT8MR) z>e?zQM>2E`)k@uUorQA%hdBUnkK)%6%0KI`><+QI1IK_xKy8{2F5`EDAtm%G0NCsh zjisM)i1*)26sTvjlcB396)}2=9!KcPbpV|B%I}ttOMhW-Sgh_^I|uxHigO2l`3#!^ zDJk@fro#0}-M9l?O*dL zR48^Rc6d|_xtoVW&Q2h^ZxN75w5U5=Vr2&oS7*1z$Rw;ZyTv&}-PyU&Vm%3`!QjO? zE6pyt0gqZ&U+cP!Vy(gOs1)6>wg+N)ivp7->NrgX1t!Jv)=6$OdbM(#OVK>c!ktWG l<6JJ)9xP;?{yP5ufIn;b{$n)>2&(`9002ovPDHLkV1j^7N7DcR diff --git a/htdocs/theme/eldy/img/pdf2.png b/htdocs/theme/eldy/img/pdf2.png index 06634550daa62ede26dc024bb75b36a3d901ba16..6fd1763d233da355935cab66fa13f00e63de77c2 100644 GIT binary patch delta 599 zcmV-d0;v7`1n>lqB!4$aL_t(|0aVaKyyZL?fbl17di2@0Z5v}_Keo9U+qSj;-Tm0M zZ5sz|Pn!2yvHp?Xf8acn1rZsjJ#V0^9f&L(c2SK$rDnEmI|5F_8A}0>w zy!9^1DaE;5Kz}-&Ln$cv9C0~McS3ZG{By6AT-W`l zKF&*TkQ~>Ghi`mH@|8CUpL`Dc(pxx@DLqkz0WU8Zfq!}KC30_lk|7btT~$D61U~$l zr-rn|xn#N3w%rO*m1(jqU$awb~@ zcfJ1ok5E6P1OnfntU$&Rj|6Ki#&uBwfGQl&sSIj-jEwL5-!W7ly8Xd2W9xanZ=XIe l{6{2w24n!@{`~p-CjhY>1x#z*lIZ{d002ovPDHLkV1jPhC8_`b delta 611 zcmV-p0-XKu1pEY$B!5FmL_t(2&rQ)ZQnnxK-W=5?~D^aeoFKCE{a=sV2t3Lp;B1@ z6zA+j7^XRwwy#-%slNtFok$Tt05FDSY>A?Ta=C+Qb>X^;)@@onwa|g~50QPHLh?QW zh!|9r?(R9p5dq`T|{aD)8BJsRaU;*mpmam4iWZ0ZmpEp}jeCdXs&J!71e64j8Gi-<001BJ|6u?C0ozGLK~#7Fe3AnU8&Mp_8)J-Sg|qDiV=&v{ ztavt~*|xo4w(Z((Pxay3y?>S($?4(O56=Lg;QI2#hHBT5Blj?HlWM5lqPL+zui1vO z0PW8=y4WwB))0>?2n0lgLa{7_t*zgEYAN97gO^Bku1%L92!Bu%AeGV(4#%>9@82B+ zY0zVGDZqH)au&dG908aLj!O`LZOp&QT1X9OngysT0dzGf0(iYVe*gC1?OS7IfV^fd zq%l3nf~J8~h+-PiXdFhP51&3+@Zp203gEzIQV@M`8vp?yNoi8>^QRl%zS${@ih#_r zDM<8djQG%2x_^oUwczvdu-n5hn*%VJ{P^?7TRnr&)l;M*vSTGlXWl&?jv!WRh(Kil zmSachpILyZy<`Qxr%w7EVWW^*kgkCM1sS%2pch+nAmvlLu~h zv@(D#WDUfJv_f#jJoxY3MttE!kex|`U^Ke2DhdGlf__o@Webn!1n%ZJ1Ohxup8Dtc zq%NO>%N3$9^8mE5u6{ihI@SJ}=v-TPbNW00s*Sp5n>jAQjxy!o^_Bu`uJ*N#GQh7k zHP^j=Z_M`oUqSX5GeC)ge*@Zj5v2K+HcveR0|OUGkQ596$2=l9u`|4@00000NkvXX Hu0mjfKw$A} delta 552 zcmV+@0@wYN1hxc_8Gi!+001a04^sdD0UA(DR7DOTITtls7&ciLIAK49{r~^}0002^ zF%I}K4%#aW)+!9+Ee-fF4)!q)@h}efF%I@I4xF5}$fKvp$=b`y+RV(`&d%M?(BIP1 z;M3FL)x5>k)#TUL<=EKf+Ni7A+T+^V=iA%m+uP{e-09t(oqyim>)_z*;oFM(7dur+AIFN-*r~^zB$c z?TdWweroQ#v+nNo@3E%u@9*#L_VDoc@$vET@%HiY`111k^HMhR^ZE5V8}&vg^+zc6 zZCCa6{PsK>_J5v|_ubq0F%I}X9r%@o`1t<$`TqKHTKj)#`w@d?QEF+@ qW!hO|BO&XG8Wja(l%;F{0DymE97LCl5K@l-0000bt3!T#^|4zJ8%_P7My@&Et;07*qoM6N<$g6I~9o&W#< delta 449 zcmV;y0Y3h`0@?$RBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru;QK~y-)wUoU|LqQOQKSe?8gaoa%3yCQH^xBBN zfM7IZr;iZw0+Lqn2Mfu8_y`i4kO!~`DA!JFiP|d)+Du?w?|+pPIH6LslIF2gW zm(-9n9+BMuCx1XiQZB4$)dzc#(v1Pvk_r*t1V(|Ckf<+llHrDelkEmr|L)8W)dq;q zENnP18$dCGAOV)lOaa!vdmj?D-E7+_Bn@EM%OLV$e#hq|y-7Mt zb9NPY0a}t~UFOF$65tZ(0kza!bK745IpEYKPJ)^206Ke4vKF>Gl(F>(K*fC$FKq*; r#jn6`&q&VAHsccC106Ga;XmUG1b={vt8HZTAN>M{Z_ zSj}T8i!5HyeC@{$z zPO*hW6fln^Y~#%50(VGY$|_Rd3jD!WOq&H<_)_3bZQiCt>bk%i66k!xEneT(LhXMtc z1(wv@4aDHer+*`~t>!i%2J32O*JXh-=iKht3Mbb%7KM zm?d*Ka8W?J_|Fo*T@=t#tihBO%;^&N<*I;ojvd5^P(X}bTtaYQDB-eznW4nb+zM2y z)$BKpV=0%**>kN{vt6I1#CG%8A>y}?)FSjqyY&NA{ zuS>7j6J-AzjfVBQ#c}!$F*D~G*&7@Vhtg`bq}^_3&&6WVdVR`G-RF6+bpnBm$788f zDv~6Lj7B4wVLfk$pZRk4FDf=S)W>-80@?kR1hfQ@8Gi%-008|9F$@3z00Lr5M??VshmXv^00009a7bBm000XU000XU z0RWnu7ytkO2XskIMF-#s4ipIug9B(d0005SNklJxc>I9L9et+CfEd7C{e0 z+_Y#>(8W=05eElfz^~ybf*^>WqP|SFg4&_9YC#Zj5$)zzD1TL3s!QWw8rxp3cbYnR zPlkm5b3DJhchONLU!}|EVad@TWb%V)bQdaV z-vH6%6_v@YfBolp0|?GpWsnX6Sgeuw4a#}J9vQbi9U|+p%$@;BI<+s}Sl5iVNlL*3@@YJ#D&^L&}eE zMUf(xEU4Oq`B9OjtHD>dab$kjrCbn)rT{^fN!!yCw0|kYfhj;BNU)AYfOaf4NFz9M zLHrP)Yt@LTC%~9MSfWoLf{tTH#FK}kB20ie!t^rhIIht$QHj`Q#O<^ZFi)N!@XQN6 z4&zLH!Z9msvFUzoDZ&j4Hl0=5B=B!7KLL_t(|0b>~az{tob0f-L}zzM_{)Bwc)3E&308l(Wk4g|0Q zF3n6pJQaw)!EGgszeDvfAsZ9{k|Y7&2I6^8b~v&@^`saCHAET8t|u~p2?snOgBq}5 zk`2NgtC$AiO3e?5Fz5lnR1UHMpFt$2Y+U&aW)R&n?Z5*7ToaAph4U*g)Bpeg07*qo IM6N<$f)H#w2mk;8 delta 302 zcmV+}0nz@p0m%Z8B!2;OQb$4nuFf3k00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru-vu5J7%7Vt2*UsX0Le*2K~y-)&62wf!axv2pDia; z0U5;8098P2r%2R*38;V^Iin3*4FH87<97k{E-OQ=zlcYncbON__vC>fTR>i z2Y7{<6)uo?nijx%K&b2j@vp4;HY$7*J5_r#k`x1HAOmJ2mv{mfU~guxkF_nZn;>!r zt}SQdX0)6b$qhKQ@0BYQO%%%7t-jo(r}-Gb4`Y7~05i*dxTId88mOFuoDW!gI44jO zn3zjyLJE=^NhkSeYm&+->BoVqt$H|B(9U1g8;~w2(~ShyYXATM07*qoM6N<$f)1v3 A8UO$Q diff --git a/htdocs/theme/eldy/img/printer_top.png b/htdocs/theme/eldy/img/printer_top.png index c58d7456dc442e90dea22c1cfa2d79a42bda9034..d8aa5328255dc0ed30b79ac4db43775a9d66602f 100644 GIT binary patch delta 155 zcmV;M0A&BX0=EH>B!7NML_t(|0b>~a;N!=S2|#>+08SvrpavlRPXIU2)gT2Rb|8Qi zaA{@&;;BIV4Q?x8{2i)?3E7|skR%ECHW1H)vcr)Lswc%Ds3FQwc0G{+OgP{P8PtFc zlWY*~Sj995S89Ghgh3AorgD%C_zWUBW#h_cFoWopX$Kwv02D3LPq*}ZlRE$a002ov JPDHLkV1nsPJbC~C delta 289 zcmV++0p9+%0lWf`B!32COGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA z00(qQO+^Ra3(R5;7clDiGUKoCTqEhj`<0%XtyRX}V~Bx=9} zR6vfL(S|MBATT9NMubTWI$3xANCe*KG}@WnnOm4zMQuP*3V)HwJoq8A@Trj4QJzKv>X}99XL1d zl`9mD6xuag{kTa-^C^HIhyEG>W|sMINu5F!P&x-W@3HoDPM{(%F_Tn>6eQJ>vcc9Q n6=Twm16Nyia2m>>ok`UP85J}Hnc%*T00000NkvXXu0mjf7S3+o diff --git a/htdocs/theme/eldy/img/puce.png b/htdocs/theme/eldy/img/puce.png index 55046304094972d0793a1d8d682c201037fafd00..41b6031591213e1b3bfe8a649b1e3fa6298c7553 100644 GIT binary patch delta 79 zcmcc5m^4AslZkEakt!I=Exyn~d~JgJ0+ eZ&GcA8<-egz1rrrp?mHkkWx=qKbLh*2~7a!gc`5_ literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRQmz3$A+G-!82$qxhyc+*qMiYW zAOwhR0x}sGBqb${jg5VLeA3d=>g(%g&YZbv)21_L&OCkk^#A|=eKS%n0u?cq1o;Is zI6S+N2I3@nySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Q(EFkTHYs9Cu}) tkg%tVV+hCf&&Yc z&|d>f(2ipVpQ#yw6t4vpi~@lRzSpU^jpx1y;*zxA*}2O38+k14@km00001;08Gi!+000s3Y`6db0Lf5HR7C&)05LH!N=iawN*H5GA!AZ8V_HgM zT2h2#A%tTojB7EBdt;1yYm|g*t(<$UoP@P=0KIbny?X$?dkDRI5WS^)y`_Z4djQ6S z0LFv}&V&HYgb2=z2+ou#&Xh6MgaFoz0M?8M)|4UMi~!!02!Gy`5Z;^s-kc%cr9$4V zQsYaywK00001bW%=J06^y0W&i*Hq)9|UR0!8i zj>!&!KoCT$34aE6n?Yq5#NdKxf=fV=Ek^wRkMaN#>sIgZssLsHkm$n90zxVPz5)Q# zDm|(9dxxFh0Epu&C8B*8G#yIjrAAuybX&mQwKm9jr^+?~%x_g$e8x1YifAR6!Mr}@ z^~{)7SrW$q0Knd6%gLfVJFNr$<3dFD#Nl>j6Iw*%L@7ZFq_o9gs55U|?*6L)0E<8H a^Wh7UNDp)ve5P&y0000ulS$ZQHhO+qMy(ZQHhOTeE#{ z{VS=c)8EugN55Kexy(WAt>Z<#5xP9B#&d&8;+OYQLFz(Cx zxgyKD$;0kk{odHN_DcijdTH(0(lWkTf{W=Lx$ewYcV(Dctl2#zP{l z7Ss$brBcPEARW5sPz49w6bI`jf}k!=A_$5O>LQ}jio_0r6%nPNu_Y<-mEboFvI>p$F_|_ z35I859$r&n0zklVH_Nzx&`gFU9Y_#ZcRjo4%tPf9k0$4Cca_YdG3aPaT>mlGoNp`k zOROgx*eZU%O@Ez1?Z|>n!oL>MU8e_ad2UdzTj1%h=ErBhWi>LPBR^;Fb0fB)nM^wi zyLF{sDZdR$W$cGn1c^81!d!TL`UzuyLW;ajd0dJ|xP`;_DfO_j-;vUmq?CF)#2ksp zl@WCZ006*ARShQ<5SOTD$t)Ly-mz8c6NEz0@UQNyq&Lw#%62>`%?f&x%H#Lc(o_|X?53vd*;+RjLMisk7vmjM9Od%yv{ xCOJG)CHP$B1;B)cb_>06at|!-yDHBC{sYZpzL-6W^kM)2002ovPDHLkV1nE`>G=Qv diff --git a/htdocs/theme/eldy/img/searchclear.png b/htdocs/theme/eldy/img/searchclear.png index 12437f848238b68f5e1b716b5f56a7a5fe076df1..70ff87371b4aac32fb7235842a011acea773ec28 100644 GIT binary patch delta 274 zcmV+t0qy?e0-^$t8Gi-<0036bj#mHx0O?6YK~#7Ftj8ft0&yHbVK3VVZuZd!CY!}( z-)It?%}T^#fk+gCJrEdyL~^^rM!-asjm*Y&ZpzP(@J}M=oNxQWJNoa&H2F=Z+_JYO zZ(LBJ#gH*ws-#{R@?$pyE4IwZDR^hVlr{&eup+3DI$^<v86_^t4{F1k`bj1 znUe~pqP#5$$&wx&W&|68 zd-itDD_5i+v8EuW!5zVdGrslAC1qti5%kIUa~XYt$FEUr7}StAKrGKdAz%a>GN=In Ytz||5odB%k01E&B07*qoM6N<$fpYf)YJ{iZ=( mR9lVJJlk3IAz?N0Uws0uA4Da65rdlm0000;V z5I+WD5a%`!E0bjy5HJGqT(Ch1JP{;Lj$w{K{0_~qPe5!#l3_r=3&i`t24LbHK+H~x vVTnNe6NtZ~W2kr}Rnyt9Fl^MYQNsWqM$?1*NnM2i00009>~_@*WBhX}ee~IAMYTYoDY+PovA?o6Kwp{36{7A31n5 zpCzrxl#07`Wx^MKyYKG;^^GnE%$6u{)lqsTSQy&Vkr{aU%>0K9=HHHPXU%A}7BbhV zPUM)gKj1FsMfTedE*_W{QGRH{fvt>JV+~$6y$yJHHK;ZBcI=<`%VjqTN+-x4HD!qT TVIX`H=pqJBS3j3^P6d%8Gi-<0044OHp~D30Ch=3K~#7FWBC97Kh-dO4ZD8*Iu{U60Ae<3 z7*-0zzkoQKkXk|pX#w$LApQ@;w}DuhEW>~r8G(2%*dPR+2ofj9Fh?MMhi2F(AhsdN zFrWrrAl?Ty02A*3Vs=stO9bMdK>QsYL&YPhn$CuWVWWnP8Wsis81_HuFn*=A00000 LNkvXXu0mjfw)Q#W delta 219 zcmZ3-_=a(UWIYQ51H+BTf9^nvu{g-xiDBJ2nU_EgQior?YtOpUzaPK;zn&i-?k4IUV)&L#+1ap}hncyV%lRI!+ns4v1}sjI zojlhprrdpyx*}DerKmzOD{n)xxo*qBSr6G|tc+L`mq=tv?^%4RgNfl@mqzPRyH diff --git a/htdocs/theme/eldy/img/sort_desc.png b/htdocs/theme/eldy/img/sort_desc.png index a5aa5f4e506530874aa5814fa5aa354c5b8f4f72..df3ab16af43370c490c3f16e6eaccf9df9b90d6c 100644 GIT binary patch delta 141 zcmV;80CN9?0;vIzB!6&8L_t(|0b}_8|3B66@GxxDuu;Q+AQFgw0`Yfr3>8l##V~dt z-T}n_vEY3`%uA9tfxrfcKcN})4u~B|4l^KN1mcNkhRp?ulNA9#pbW&fp$0t$Vl9ed v69}?__!khDg7}mg#sVO0|RG)M`SSr1Gg{;GcwGYBLNg-FY)wsWxvnG z$!8?R)N#20C^XU2#WBR<^xG?ne9aC5tq=bz-fC$HzVemF)Rt}2u36O=n7_z{#;|m{ zUlA~9j&xnl?d#E%Fe$z4eoawI+8R?%?Q?x^ZzSF~@Z7m1F6jA^=_SRc#=kiVSmGKi zS2mov`&o{;g7Kd43f6V;bP0l+XkKxZPK} diff --git a/htdocs/theme/eldy/img/split.png b/htdocs/theme/eldy/img/split.png index bb66213f41332ebfae7172ce9e949bd2a4c60dda..cec6a001a1a5ff4771aeeb980120d46fa6dc31d8 100644 GIT binary patch delta 120 zcmX@i*vU9SqL71$fq~&~XR$VrVk-&q3ugEag60v@wLlR&PZ!6K3dZCg|NsAwa$;D~ z#^|wEouwh`!c|4-=7oIB0!#UnoE&6Zx`Sm8`Fb=keKwdn>0$h-!~B;kk{*jQu$L|i U-pmdKI;Vst0DQA4(EtDd delta 179 zcmeBVJj^&jqMnJFfq{X)mFGQ>VlVOZb!ETF!6w438~Cf%11Q8<;1OBOz`*qZgc+UI zn9KkQvZOouIx;Y9?C1WI$O=*v;1lAycJ12t@8AFb|KF*@X)REYxg^Lh`2T-~>!)~u zY8muAT^vI=t|wgTe~DWM4f@2)jr diff --git a/htdocs/theme/eldy/img/star.png b/htdocs/theme/eldy/img/star.png index 4b6b458467588e6c444e1d4e23a00622db915374..4d319e9e3b366f6635c2c011e7843deb821260a0 100644 GIT binary patch delta 270 zcmV+p0rCF*0-gep8Gix*006`i`v?F400wkYPE!B?03rYYRd1Ca0002fNkl$Ur>!t(c6bN_iv~MA|M01q7TpS9bD14e@7t@0nI~EcXDm# z!4>8E*A#-#=ED7ZfC$9cz9e(w{PZ=wDVrwLffSzGHf7JMoPRxA(9!y7iTmdFAgnvL zW6q}OVOtkR!_lhlu*0jSqq}K!lkcXPVGsn=u%N;N-Ql-S?*uAZ-Qv5pB^Zb{bO$V} z^16HWIEtbZn`Z$<*EFZxI(-O;mNg_TEA~3Hb^(f_EtAS1E`X!G3#Tq^Du%ED+<%Ib UY(#e<00000Ne4wvM6N<$f-j7BH~;_u delta 365 zcmV-z0h0cn0{sGz8Gi!+004ZhoNWLA00DDSM?wIu&K&6g004?mOjJbxA^@gyN}za1 zrg}=IfMTnHO{;`WrGj&n zt_Ls|EfQqUwuJGGUB5pXAtaPv-!$Dc9c9ND6-x+J>M(q~&JBPI-D(D=f#{+G00000 LNkvXXu0mjfujrw8 diff --git a/htdocs/theme/eldy/img/stats.png b/htdocs/theme/eldy/img/stats.png index d883f7faea9eb6f03f125190ed895c8bb4323553..a824886208e4482cbd9d391ddd9513928d1dfaf4 100644 GIT binary patch delta 523 zcmV+m0`&cW1)~IzBYy$vNkl+=T<+zWkTCySqE%(st4` zMsX)@FQ0~9lmr5Y$2pI+U`>t~hc*Tq*sTBI-S#cJwr(o`6o0CfrIj=+g~kyS$RRvBnVuo?^Mk{7nl#OOERa7xtg< z00F@0x#LDrEub>bFm=?HO~IHPww{TrCnMXE`qet|y9lN24^Zd2jae}TDJ_0Nm9cB4 zF=pjd3@~xkRDXI;x@f71n?saQdnaHfo^NHUMNOFm3 zq)>52rqUl0qa?QV>mQi8aW0}7(0bP8<*}F4W{%?hjXJU~8RlI^DN-5#-8o63+}o?~ zS&^&t`s6F(PJ&T}?#@0U3`hql##*#8$SnN<#!>8h&3}lyM;_37-bDoBvsaySgyj%5 z%)Wq`C6UPw8;5D?Gp(sVX_Dr1uMy#kpso45&H_WMV>-ISz(hYJ)@Ad=E!=prm|C!pK@bu=Rs}MH-w&<`(<@BxR_g(=g5#hz1 z)dw?Y=kJE18VZF+@Lq5ZoOM|1sjS5XuIzXAAKqBKeZK}!YmO|86k#K@o}dQaD@x<> zr63+gPq#3sp?|mAZxA&W2B%uFgn^=7S47PaQwh#`f^?1!&yffXS{i`ApikD zYwpAt%^Ic@^1?HEaSCe%=Y+{ir_hI*crzy5PcW4mf|d7bd~ph`9dfeC#N}zmm)clh za=FdXR*y(Jw|T(ga+}?k-$;LE zSYzou?xVth;<&&%M`bL!EQVm3q;k|v`1tHIM_+rWK;f*%drugJn7sTAmX1tkLv!+? zkg}?Xw_&=77fj#KnjWLdEy?$sa3UlxGO|i@Y?EPQth*a;x8Gfff~c-g2!h0d!{NnY z_bnwB<8`HdwlPo+VCDSE86!mh5<60uwNGn10KWjAyEVyp&ENC@0000c6ont2kdyQTMzX5_S3UVooaxLarKBvGf27z`{P zd6WXZI>SYwRx@Fm=HwF*gMq~($O*$%?ObPxy8k}<;w+Oldg_CL#e-M2i^X=9rF+}- zqNvS{BKb_jU|{j!Wm%&S2Q(o+R6$uhc*T$7{KLVF$qxmq9tOz&dw{1c6#lq{e;?w% zukm*eDM@lL`!&jz9v;$%B-0@4JKBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY4#WTe4#WYKD-Ig~ z000McNliru;0X#2G#zS>ffE1#0pCePK~y-)rISHx6G0e;-*0wyH-R=W2?-vSPD&Dp zh+d@x3bwTrJbCfvp+CceQ1sw$=&jJ37f*uF6i-s>F(4M#kbiC3Krx7h2F&ix%;!N5 zRa;2tbAMs@=6MJJy8S+C3kv{%&%IumnIENEKbDSj9{{v5?_4Qg38L4H#l_*p4V?{# zxLGcPnVpYexM8f_)mj$-`~dJ3zo`JY;Y#^k2=U~0qw$uA%-L`V0sv+fpSsgGO+J^-hT)H;v~rvu&S+n$;`<3{)=0++7=O60)WoZ(Y;jbH_~xR`T6+=)gWl& z5~9=7wbA+co;K#2E9Jwx&E}y9qsU|CO#r2ACbM1*f_8r}_;1`F3{VY%b~ck)2T)?> z%`l2Q`q1g*q~nY{*L|P${Z$6yx>A=t0AG%eL4f}=j(_))G;L{P@}g2Kt}rvKwL3MX zt{ekET`AO*ijB29%#2F0xFW2zOGE@IZCPD~tz|2Uso||@*YCXry z0B~^qBNlSGi6g{zoFpw{?Q&fyT=k80rC_XGj+3P22(ewrydc_0wSErZZ}4FCWD07*qo IM6N<$f_Ab7R{#J2 diff --git a/htdocs/theme/eldy/img/statut0_40x40.png b/htdocs/theme/eldy/img/statut0_40x40.png index 591aac8e9de6fb4a9f1116f6d2fc78925bc5f31f..4e79c1e72f8e0895bb4dcdd5df730ed42b4d3c4e 100644 GIT binary patch delta 538 zcmV+#0_FYe2&e>*8Gi!+006rnNM8T|0CiAIR7L##{rUR(?CFMR@=;P+**WBF9 z)6>n=)cX7T(AU@R^77Q#*~`+>&(_x1-QCvP+xz_d-Qwca+S>K@_TS{>)7aSP>+AUW z`OekV;^pPw<>l@0@Z90y(b(Ac`1tYi^6KsF+1}pd=jYzz(>a0FwXz{{U@Y;OpT400BEm zL_t(|0gaUf0>dy2152YaGt>W{I6Gyw#_5H$Smk!&1yOpvBvIhG8}Z`%^Bwhhi&yMV zlE0sozOwW?$Yb!hc;VfmQ0v8x6jc*I)?)Y3NXe zTj6db15n{=VJr0=Xux)GuML3N9hd?5g3p!$Hgu3W^|%>>vKh2Trr1L^ob(rx4+Z&{ z(GM=Y6z+@5V#QTImg{dQ*X|(zxG>uXz-xBvhE07*qoM6N<$f{`sZxBvhE delta 1122 zcmV-o1fBb+1ndZq8Gi-<004~sxNQIc00v@9M??V10MP)^CwcZj00009a7bBm000ie z000ie0hKEb8vpu%ag5Xb*(1BSW| zI0kb`RjE>lKnkQCjHX7)* z+w7%aMWAELqS<1B>>i&#ePW8D2 zb^*}k{D0E(eL<_brlDt=&#qg~5lNEJGfh_4G$DpP--pZj+F2{M3@&GpUQx!;$k(ntZj{oE&hq*$By+Fi8NQ z)_-c>(hrFUUg|tNws@Y0?EY%4_H7HOD2kBgLo$uUXJ`)Q}0cM#7 z>Rq*pbVDx`>UOJjm7T*3EsKuf>Nt)uw0|s$GEG~SK>)04T3@ZzgqOISV>F!}6q1NA znoh~(T!=kQRZ-Wp{-a&p$6in9L5K+Viv=drDZO?slPEp5tXyxL^eB&ZbxFzTnPxvX z*>W7*O(qnE;obwJFbr`!8j0@?k<0=@*0BYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY4#WTe4#WYKD-Ig~ z000McNliru;0X#2G$*WsSfKy_0n155K~y-)rIXJ~({UWeU+>Sh@3!xzYobAY-A)ow zNu3G`p@R{D2Ze66{(``R9zqrptmt5eV1Gfo3U&~L6bi&coqv>8NO;=#Tr6DE?Ym#@ z`{@wTvXqUU>zmiZ^YG>ofRC#wMsMXX#`yAY?hOS(@oBfToocsh4uH=W)^_}S?y$N4 z^5XcbuOia^#YkZ@OY+J?0P?H%AC>gmnOa2;3V+HN2=^zx#hsfkE{*4&0~9v1$j_ru z9~Q4Yald~~AAdG0$Wgk(#BW8hPhH4dz59M%L_7tswK6%;balGjIvxfPfp)7x)79y% zmB|SJwX-o7X}P~8V-O`!DHwA1N*|t?JAI$o&W#<07*qoM6N<$f<0RaP5=M^ diff --git a/htdocs/theme/eldy/img/statut1_40x40.png b/htdocs/theme/eldy/img/statut1_40x40.png index 6def06ceaff9626830ed6f52f69537e69de22978..f6b5fdee44bbff7acc61787370d12bfdd4d7367c 100644 GIT binary patch delta 406 zcmV;H0crlf2Bia#8Gi!+006rnNM8T|0CiAIR7L;)|N8gr=-R5^%ZJ^{f!oJ--^_{1 zs5HEm0Q~y&-N}RN-?ze?7{;b1?Bcrq{rcU=f&KjX)4N^OzGMFV{Nm7*^X${gtTg`q z{_5SZ$)_{byJ7V0)a2Bh-N=93$$Z<#dDOaI+{k+B-?GiIL4Wh?(cQ{_sF`Js0000P zbW%=J0Eqwp|NsC0{{a90|Ns90{{a900RR900E;ojd;kCd#z{m$RCoc5)Kh}RPymDB z)TwQZ_rJukZkg}3Jo>R>n3nB0wq+VPVYnWDdG67@e!!K$$Br-}*Wv_gX~tbyiW_;s z14VvwU&%w|zkfTcnkVWCKN_BD@U3cjs;%&;>v^H?@M++M0iQx%3h}NQd1$wt->x&)$ zJt=ymlk+UD+cAlDYkMLt^Y^}k*&_sjcr&pk(+a~w6XNVsQt;Z4WywQo>(6pFkJ z0ANxM7#VQ7;2es|Za&S*E`E5_XV77Ru}HXQab}?7*ZfPYFHaump8TRZoTD_Ksp4$T>&IKf>38lez)dgOdpPM|kqA#(_ix-$Xa`j&GtH zM3f2)`A7N2%9QTFjg={c{G)sqkSj8R^TQA&!TI6%T4Vq~OhUjrC=4**9Rx8c0o+=i z;SemUiGKmWYT&(SzPO12z@N@Hz&7P~98SSYD% z5e8UN*|NJ>0047EGv%3Tb;sqIYGJNurhQ9(+kcf#-GR3HE@+ng=88L%Us9(V&SY(Z zx%@WmTk@-GvFe6?g{$M*^Z44+{BSp#s>spMd-Ax3UKmZO$6X4Lm;`H08(Ez0lRH+N zZdhyDXz%E0Rx?a8z}eVGrS{g0<4WzVa5na7Hjn<__FHno3$OUxyZhK)ol6TWZ4J!i x2rS(KPL8lmbS-S+H$)_9&naM(otEDae*t7_Nu;xcrLF(~002ovPDHLkV1hMgfM5Us diff --git a/htdocs/theme/eldy/img/statut3.png b/htdocs/theme/eldy/img/statut3.png index 77476349d6d99109d6d7e1c00b7928649bef603a..ffad2c0cf7a5b860244e5c43fa9b6467fc54043b 100644 GIT binary patch delta 458 zcmV;*0X6>M1>*ydBYy#^NklY@@s`wr$(4gDSRlSpE*y zw#%rFzhvTDV|IUiZ{~4^0d{FI1Bj@?&dq7>R+jHIYo^4F^R&L#XG?LUw?~{%U{)uI?UZ}LBj3! z2V7{NWfA+aKGK6;^y=|Im+ma9O4!b_ zOh6kr;6ei}3xC^>@5BZf9uM6{pRlg%ppR5;crtXG_F4snZO3*phqU-KcdaSCxY2J0 z%M;-0e`q`}*PbrD11tg4F+3f%4bv-l34b^7(Eyj_;;^cKVN+q7`12U+#)z70jC?Ov zW|RLRBu!g5O5!K{kFSj6;-aW!TlpC0Ut=m1ouPH(MuL zIXO&=cOWpC!_+H%nEsD5BKs%KCiQs2l`YQS0jDdB@f*qJU;qFB07*qoM6N<$g2X23 ARsaA1 delta 713 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 JPDHLkV1jqK6SM#T diff --git a/htdocs/theme/eldy/img/statut4_40x40.png b/htdocs/theme/eldy/img/statut4_40x40.png index 879f48739f6eb5828f4509fe25313053c50ffc2b..1139f60230aee72e5c670aa273c8374d111d3102 100644 GIT binary patch delta 436 zcmcb?c9?mBWIZzj1H*0wk9Z)}7~m7)`v3p`wVRiBEXgaK6HqYAJ7=bI>6{?>Ww1p-0Zn61}!# zQ*GF*Xoj@IUee9nTm>7KCUC#`Ci13y13MR=*thPceD2@Q2iMmv{*zg0@afA7VLknY z`!u)Ys^!Ie)%fH3w&1Vy#~pHOr5H>#vvikyd9$>qEy!cx^2q+bl^b3;celE7Z~n!= ZaO1Mx)h8zv&4IpS@O1TaS?83{1ONhs+}!{G delta 844 zcmV-S1GD_Y1K0+T8Gi-<004~sxNQIc00v@9M??Vs0RI60puMM)00009a7bBm000ie z000ie0hKEb8vp=}Ib6*l0008zNklGw~K4k0q_WM)2XY(g~iVuF? z1OQ}EHq=55P4-Eg&9Cm(H#FTp>_6zBg7zU>*Z8jw?O!}2aILP#^^NvOE-q+lQFZ*v zfo0m!nZPFs(jn+{Tu`rv{-WeY9lOFXeOi)3=K@I2nMeI~WY+Vj2G>!Dxq zqP4#|>2d%tu{4X;{%ZCs-uMI+4xq!*!p_AhqzdQa6n{D_Ev#@LwjhIHahTaYKZsOg zpC5$9VP*!$5aa-?b4H{K>zon1BZ?v{r=ZtrWOtmKZ!&PNuA|p#WM*ZzAd$eB%Zzk0 z<}!mwL<=$)eO42@*EZ5F=w91EpVbtaiy}C@GoE3{!i;Aa!C@8vAV>x0;S%>@g4<3MK9ih#Oj2c&uTPjlb5P*` zDvQdck*h2!N3i@4Es`=#oiu`Fn!3=!jXHMfx_@)iUK5_k%fV>-I_+8V*J#_)9=#f^ zAu9DoMNnZs>U#3ib}lJBRtU%41q#-JyHXvI3Rg=z(-ytUryuM}8e(UHzSh`A`jY09 z%jrv+alO$%!6G4MZ^o~9ajU;7W!;6!q6)maJx&=S^FL`G0f1U$VZbm+I&FQ@!GXMBh&~d=23RLR$nwEiw~w4eM+4k4D+r!QEKim0u&i#0a5u_>g;YQJHI|xde<6K7lnb~WXJj@Y8dhS1Z zL=2_WINf!(c5M4;L)R7f9CVnyw(4SzHLR6h2AQ5W(liX!GJj3gv8tmChl|`GSC4J5x`pZu$Q7N+tjD3Ft zD!8?G+0=oSJ%1s*gjLHN&Gh|kzgT%Y_>zN=0Bhml`zrqwKm<7ez60m=`o9b?I0A1= zm`A{~qE8a?2=Wqd;>XQ__&Rt3oJv1{FE~h&N%9g0&j^D8-+=pd#~CA6mQU;Asd@Fm zGcr2jBSE-^euFs6*0F{^lGgi3|MZpHmbDnqybts8DK}}U}1Ayy!Z!}e%3Mk4{ zrn9r!%+N-)iqr8pm^rXiDBSX;ob)`e9l$n#P3-FwfQY85zZ69ozL3ehB_e;LS_L&8 zV7X8j-E*8VB7cHH^bkZJg1Wv90DF!T0rM5f{2a_^(e<(OnamRa`yYJG=eu3cn^psX zSR@?2(UDBf;0XO(U+>+l)jkqXQ#EbiVm3Rk_{eODr;+pzy;I9 z=f%aq#@5zjW_}H#nD6^T`C?I1b}TEz%nw?0J*Nc%bAK!4GE#}e0oc%G$-E3;$q-^t z*R&inKiILXka98_?O|p}DJRaPQg&B5{TC)f2rQVU0Pq69h#|xXGsBm1f|(JEMtc-y z?k6Iss#}IT!_S&Jf~6lcNL3^}JSQhGd?lPo^0OD9UeL)8?3Y*mj&(0BQj48A4di z(^kr55YVz~+wUFM?e(RMD&bJbBBJp<+wQX+=No`rP}lDmLRihVD{E`$N~hsV*=IXW zFAgi<$ud0rJQt+Tc+kZ7fPkLe~dc+0WvpP7(1CEdjJ3c07*qoM6N<$f)QU# ArvLx| diff --git a/htdocs/theme/eldy/img/statut5_40x40.png b/htdocs/theme/eldy/img/statut5_40x40.png index 7cac0ad23ee45188ad6de41c19d8380e8273409a..22409362d00c8f4eb00184913f11e30ec0f039b4 100644 GIT binary patch delta 572 zcmV-C0>k~03CaYJ8Gi!+006rnNM8T|0CiAIR7L##{rUR(?CFMR@=;P+**WBF9 z)6>n=)cX7T(AU@R^77Q#*~`+>&(_x1-QCvP+xz_d-Qwca+S>K@_TS{>)7aSP>+AUW z`OekV;^pPw<>l@0@Z90y(b(Ac`1tYi^6KsF+1}pd=jYzz6dy+b00CV| zL_t(|0iBiQy23yV1yh~f;_fc*|AyCsg&RI({xU#&HaRPIBx#lxMV_UJ_^6eYgcFq6 zBRA$%;D%7;(SP%5MpLz3`|std(P*~X?N+mas<~J?UG;idKl!7d_0;Tkj5h#an8tW{ z;+PHr7^ta?0K#BwzdarVfRSA2Pk_nvPc!QD?}NUaDFJ5DNeqBePRs!oUS_}qn2XW| zmMh;|ErIqaX)iC;(0tL{2S6`A@Feztf&9{h$;|hDnSV{7`Ik)tnrp`sW!;3vZ$cYj z>3d2AY<{N!!q)ecR)F7k-9cFRp0Wr~h{*n4#CR(198o<-)W7yU^Vd0qmj8J6Wi~+N zdo~^o-0^JS<_JAckI)PSj%S8K$ISQ4m`NMO^G<`S%sows3tfe0%hj0$VEc4kqps`W zNdd@sp*02YtWu6nrFbQ^bV}-J?HOuyuSh?y=I3SaTpxMvTp!=aG8=@#V>Ctp0000< KMNUMnLSTZ4eMpx8 delta 1160 zcmV;31b6$&1d$1l8Gi-<004~sxNQIc00v@9M??V10MP)^CwcZj00009a7bBm000ie z000ie0hKEb8vpWyp6vzKVQKD#? z5~)v1E&?P)P$1oOkt5^`Jwke><_O6VdW9~EE`oGX8+Bqy6n{;RB!;0Ve!MPP3PXyL zZG9!4EeG>{^X7e%MRAO6R~*N1J@46KvG|>c%p^$w0FoquF~%#E%1d3-E=r}+)-u>b z0pmD^!};yhbxqIr!5G`PpNOETD(bq=~N~IFo zripg5$s|eIAAg|hdHCo0nzjKe0#(XoocDT6*RMT!842%knHayVc4rj*O*b-Ul!PERjVZGYWmy8tlz{Q23?vi=UjaAi-^ zH1XZpSs`TM)g8{?=HVD)Xcz{1?KUfwN_Tp1y3z~Ob^YS>BKRkWP6h+BiFn_?+V32_W zfQDhV06Px~AczT3yzJ zM1-MjW0)%-_X!t$s~1M zho-74hqW3F@&eb&ybzR@w)jjF=S9*}!$poYEn0B4Zq?#LA)_+QG zEJ+g1yIr=it4l*pztefQGTGuBpGG5!qG;;@QWQnF8VtzheC0*@ozA;zwfgl&A5+(T zH5!k9d+6xnD8nP0b2BUe+j@BPD8_I30p|5^NI@8WdjrfzF#>)RL-cj9;%|tY#`f|X a;$KD(-jRL{EFk~@002ovPDHLkU;%>e7a;2Z diff --git a/htdocs/theme/eldy/img/statut6.png b/htdocs/theme/eldy/img/statut6.png index fe93f1a0bcca0cfd8d77b7a02b4bcbc85d70691d..81ecdc72dc7327b420c9502467f92f5960b6940b 100644 GIT binary patch delta 229 zcmV*ST^6SFYX{>8EqRxeY_{8N~)r>;;Mgk>Y41J0V?$BqWNHGUb^G fBRk(FF*^eQ)y43f*6`d_00000NkvXXu0mjfhXib~ delta 476 zcmV<20VDo_0`>!tB!32COGiWi{{a60|De66lK=n!32;bRa{vGi!~g&e!~vBn4jTXf z00(qQO+^Rb2?`E14)-eYi~s-ugGod|R5;6}ld)C4sb;Ga%-zu)VN90uu&AGl=N#|@5dP5 z{tV#}KuQS!=NtgJ_cIZB^`tC6Ip=KBG~7*qZ*~3pM+nDe#@|p?9(aHJxGdiQcLraE z!)IppA;!4I5`T!uR8?Q>RMkL+qmhp>9xW>dh%v6k7>|adk$0c3t{!HpjhT5`psL}Q zSt0A)?rvK#fSLLAZg*EwN_+R;ZbM25=iHv~pNMnr;y&j#IOj+yUC7OReyOUVt%0hB zoB8}wRy&|zsPk|C?z6Q( SDtep%0000FMR@=;P+**WBF9 z)6>n=)cX7T(AU@R^77Q#*~`+>`~3Xf;^N=rCf;1JI$G?fai|c9nd;p-P=!T+b(z65n$jLtLM6afUNr zX9E%n{)z}mpmNd4-ZYM6M^2V}DfzK9+npSdr5~4bZSuD)G-&@!@wl?$hE(MZ88?PG zXKHRqeZs~Dn{#ufxi!%ab34p;*xF&c&rM>7Nx8y~1L;;s5J*K{2#yecUC*+_(~cFKbKG2CGfmT$XRy=j9UT`RW1U`)mQJzjd4G_;kGw+qK3vbs2EGgigq&m1 zz>|mZ`)HK65AUN9JSjf|--g57vzKN`0-+FaK7&CJAPhrgfMFOS2!j7W>HD|a+^2^; z$ffV!&VZB2*IQMH)8&H-So(E3}vuQ?PC4glq1Q8`$=?0DMqM~TdR)GQnT zN~O|w)qjAoi35P4>vt;c=V#5 z44hOdx#LbM6(kG#xr2ID5q*qUG|T}l(}bbxx#3L1fMuG?tGcUpd+o-~z7OV$W|OTf z+%-)@yU}ND)k^Kp@T{lKWvj((%R1;i%@~7i zS(&)Z3@+BG%i3?d;C5=iCBu^v-REZtCKL4M1>*ydBYy#^NklY@@s`wr$(4gDSRlSpE*y zw#%rFzhvTDV|IUiZ{~4^0d{FI1Bj@?&dq7>R+jHIYo^4F^R&L#XG?LUw?~{%U{)uI?UZ}LBj3! z2V7{NWfA+aKGK6;^y=|Im+ma9O4!b_ zOh6kr;6ei}3xC^>@5BZf9uM6{pRlg%ppR5;crtXG_F4snZO3*phqU-KcdaSCxY2J0 z%M;-0e`q`}*PbrD11tg4F+3f%4bv-l34b^7(Eyj_;;^cKVN+q7`12U+#)z70jC?Ov zW|RLRBu!g5O5!K{kFSj6;-aW!TlpC0Ut=m1ouPH(MuL zIXO&=cOWpC!_+H%nEsD5BKs%KCiQs2l`YQS0jDdB@f*qJU;qFB07*qoM6N<$g2X23 ARsaA1 delta 713 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 IM6N<$f;>`P{{R30 delta 402 zcmV;D0d4;30jvX%B!32COGiWi{{a60|De66lK=n!32;bRa{vGi!~g&e!~vBn4jTXf z00(qQO+^Rc3K0tz5U02?&j0`cIY~r8R5;76lQB*LQ4of|8A9zMY=9W`3^W=$N{vPj zK;l)@#2eU9n|J_CjFz_8a0b>OYaX~%H1OV7xEc#JfPU@FKYy7_<`aPA<%NxE6@bBT z7$b5ds)xb*Jpe5f?kt2G%&zN|iu;<8)H!N#%wxA(Sl`^-1ujK(m2a>RUV-DMUhjUZ z(eSBr$Vah18l9->sfh3!W=06%bgf)I1KtOuul-X=YeF#mKB!tjZ{)iS-AC?ZQKK#QG zVIm^!C63q@m}tFJngUn(bFjc8UDZpasRGoZsN=oAFtd49$9sQKi=qyIrp~>)kR<1r w9pu9BqfBN8{UkXD_>}1FMR@=;P+*=-F~b?eOsG?d{~}=i%q)^!4>T!)z4*000woQchC<03z=H z|Nj600RR80003tH{{VVR@7MqU0HaAnK~#7Fjg>`$1tAo~(0^*z``>luyJ5*XEj%gA z57zk*WAM(J3fAibUvj&kA3~S&dS&QSFDOg+(S}h4#^KAGRAl-zXH}Tr-l8hYOH_lW zx2nMkUnmtSU8?(}CKLR!RI5!=p-q4-ordyk>;lA#cnGj_k$;*VhL?vI+z7yjf{z&= zT)qn6m2_QC9w`7kQg}%5*yBOUqZx;NdVO3-uaAEb-W^=i7_dYD0000=0)z#S8Gi-<004~sxNQIc00v@9M??Vs0RI60puMM)00009a7bBm000ie z000ie0hKEb8vpn0006JNklxyApe)aITb6 zh?C@7p69=qd9Jkv01y#`5Rv0J-@WPdw`Eyp&msB(Dy0xc(I1j>-sd}=WsyIhf9eZ+ zGN9HPK^U^-y7-7xnqukuf`~2$7$*rbtr-`TBof|qdUV{;-&h3!Um6YoGOc+P1bj9i zGvjHq`S6k+l7Hp8c-m~3nfn1UGalD#cBI6$zca;_!7q$TTO-<;11xi0hLa2gf4_nL(Oz_#t5rU4dAVz1Pw9`KkqBmj^DSo_{p-#b&8 z#p!ly3|y6^1iYEejLDQLO9^;N5k1)ctFY7#Y8x0micN+Z;Em^vzq}0wYD@32;AXZh zju!4xN^fAddl diff --git a/htdocs/theme/eldy/img/stcomm-1.png b/htdocs/theme/eldy/img/stcomm-1.png index 2e3f98bb6fd1c7b8be370b877b05800b0ed09d29..3885933500c48711590c2a88769e2b3f77e3eb4c 100644 GIT binary patch delta 695 zcmV;o0!aOb2hIhMBYy&wNkl zyu21gSXe2Th}-k$9y9+)vb0Q|Xl9l;+uS^98#@p5_b=*hYkwPtKp+91FF|2pD=aJ$ zd5<2suKkT{Yn!&r#wPW;r)O?hQc|s?t7{Z8nF0hl_V)5nR@RBw*eX1E;->YD=-%6KAK-w+Z~QqlOsv73JC30zP8crbtgTa~Sy&|NF?&+7 zJ~YHfZEX+Y;wq4mQcEOu-3tA^&Ln766l(Oqv@=Fa>5$u zLPbS4NFXVxjtOMq+&L58Hv!sWVk%@`&v`sCs5bf!D7c!MUX+w{AU(YS#>VlID_1P5 z4;|8ZM1TCBL}(KVrReS+1AQ+EP;dnWt#EbCl0Sd$-hAMIw)*bfYM*NSqrm8>7%eSB zEVKd8mXJ`xLJJmuTx8^w`EG7)jxH{(ELb&XW-c;>vcXP1d-gFXY(6C<%-RPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2w-6Cfw-*;p0;00Rd}L_t(I%Y~CqXjE4e#=raC z%s6>7nHe)hA9TM$?3#KN-VKl zX>LU{x&;8>x;_8~rPPO;Yn+)GIW{%bEPH#;=zjnpgoJIoNT=hFlCZHM;CVhc7kKbs z$-j4RZlPB5`q(prOeUkA^?iN)c=E)BWjTmOx4`oRR#zQNO_gYJa-lFgTl~TI{lRSZ zT=A8s%=y#AP$&S-B?^TqCMKr&%uMM@wYvHpks8lt&j|ov|4!HSuD7JT{W}1hKHZD; zb!v{WvFWv3?vF{^u3dCpKBg48qoZdxX*UUmhK5)svp)pv9{}!rdiUSt){!7%;i=D2e6@9?SD9$A`w6rxZ zuSF6TRth5G_VT62%s-MWEt4mjnI+CPH&5C@?gRb(i@Mv|hJV4~2*73wP*~Us3yVb7 zlP9k07{9{SHf@=WP3lcg&)l%2q*_5&*C<3H2?*%5x0i*ovQEUtR^iz*H?40(XXmU1 zj*giRyuI@xa&wzU+S`W-L5#1ENF?C#L?|uoKvUBI>gxLO_N{m6)vK1Pseq$n#;)Mt zlF_cN5eb{k|9>_r`9zO}3l~CNT^mtR<>=@bL38sU?CsN8moHnqICI8$;<)vVAt5D2 zt*t}khhfy$_oKai2vm$XNlZ+|ym|8x8CeGM4|R~3Sc7}_979i?GF-~AwoaL5VUesy z>VOE);0g*_ z;p&e}$mYu!mX>#(M4qzzj5mFBT Xc_tkvl`ugZ00000NkvXXu0mjfow;#? delta 908 zcmV;719SZR1)&F!BYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru;RzcH6C+d^4`~1Z11?EKK~y-)g_B)qTV))^pZA<3q$kaXNt)!;NNKxC z3Cr+8*wDam;26_s@naXmfr1wfu_%fIgm#gmqSiA=?GV)_wDYYjQGM+ch(B6T8 zggX}VL)RIkRH#&JxZN&n-D>*g=1MOCcn1L3=;)REh}5%&;U4Vk>&kR@hk~XVfUau* z0HqW-CoC+K;rDwXgu?05le6XWZ%>>#^J-BeqI5Xy`+s29t_SyR+twX4%^-AL17i$~ zF+`(L3=a>ZRI0+`al!4@kV+-{iPYfW;D?$f1l?u~w;YF9wQ6H&se)p$ibkUiAtcV7 zJC745-iJ~OQW6}8(AU@H^Z7a+C!(lEL`%hDby7+ai9`UAhymN?n3`I|*|Xo{@Znc5 zH1swAz<+Thgpla$^rELH@~Gp8w0`m8r*il1gSA#m>>C&`1BT&2B+`jwGK>QU_9K&d z4!ylQ5s!yJ1aK}uq`0stx1bfK{R^UBIbGMNlPDF9%|=jSmt_A+d{jd0ix zO=D;@+GsW%01Qg0r!@dLa%6AIw)tndTuBoB`G2br60@@n-GRCAxO)mbI`@ z{L*opk!<#8@h(70)hLy!=Pj%9a4_g|wc7&u{5m+7u&fHErf%^0`O;XWviUiYx}41( z6@LJr-vL~`I!@{IleTU1%$6;&c(duCR%_$ZrC)0k6Ejx|h1)~5TJvK-M*MwYvH{u3s5fE!B~2k`$)a*R>iwr$(CZQHhO+qT`aouuv- zr>y2pp50%t{D>c!JNK+%)~wT27caiJm7l+vIPqBf(W4I%{K(R!S9}*Pyi|YX%B#E2 zoC!#H`ZQiWdp3aaBzs4U*zb>DY4Il;Hr%3$qWTj;N>fV4WPi+Ps#>X1p3HW;4vYaB z4MAe!$F?q)Fb_Z!{%p&ZyO}m`zSHBtfhT8g-i#1kuCGj%RmS~%eD^My1qM3Vl`Ela z=+M0j@ta+{9$I$nc+mgQp{M7cJc;{~lqB!~h5bfVRhFJEvw#2xi;exrA|pSrF=Gw| zbm_7oJ2=W;D1TwK>Q>aMRj_IC;#o~uvY2?Q6u(gv21!!kbPDkH*22q+qG-|V`FP&e zty{06l(+Yu5XA78h#;gQF76W?4gsmDBKS)XMHOjjA{b-f`}sLp-nP(~Esm^lIQpKhXZ<$@?(IybUpvGB@1;P^-q0OA>|m8M1} z?5pbMU4PK%?+0_Ca>&(wBrJu>Kzw-_0SV7hquDSRjehVDMfvA_ym}Qc-M=3a_4RA& zJgqgCsZ5@V{b4Uz71YZcs+bO2`35LCbTI-~4hQ%1;*yio5fb85pFfXDjEHdTmn3P+ zty?o4RJ8!UKHku3D4@uY(o(>{KnXxoJXIAWCVzgyg$pmm%a>p7jfhC<%NIY#6AX^N zm%qPqomvmas)2ZSbss>rNDjD-*c~&GtTW>5*_Yq<@4tKN_3OCSf{;9n5Zu0geVUBl z*avAkE^KXfKIvJ6#qXHTzP-B1UW{$PR@Kj>)ELw&xJ{c?{adwKVaI>!27ldP?~X%9 zS}tBL?_Y$i?OvKq?w&ifa-T{Y>U9`b3P11@t_P?Qv7X_(00000NkvXXu0mjfw3(X2 delta 851 zcmV-Z1FZba2I>ZoB!4kUL_t(I%Y{>GNRwe0{n9A0q=HnCeiRWELAM_jk;c$WAyV_! zO7oJTNs1;#kzpAvwRASOG;5lcNr+76rMyjT-X^--TIST6b2?jF)7&OD-A>=PNQerb zKhOK)Ip;l`=Q#wiOr@vuozl{(4rgT47n1L(t5++6l9FDoSbq*jWMwrtFc`1Ba&j7< zRaZ-ty}e^rK3@Woq%rJ zc8f7Cu4LO^;Kz^Ox)v0)hnJO!_yU34tX6-=;-VE)QC*`kLMoj^L&G5A<4YM!z~bVr z4P0(#OnG^4t$#?Qm{F;wNq_~v%WAb^etr=W$pk)s)?s*9i{#{T37yW_WFz2mJ3M&2 zf$wVdjMZfNvGnWjT3E2aU@)V;{yiopW}r}f!;>dMV`wP*lD|LGj*`Bks%k*2RO-or zX^f0$p;GBVky$KOvM=E4S0n1`q@ZRf1uZQ@h>qq~pMN}=?Ly?|x2znCGxI__-S0Z*@OQ*RRGWI(l z^MDiX)AxbjS%!`tIasVl&z#|W^zq4vBW{GR!-u>SXxb~G z?W)1NP7TsMXauj2eZtvBKpEH9r$k9fmn9+Lxqrgj``#TIE&bOTuP3g~T z$b&&O0;^>a+SXTK(ws@-bZBlKB2DA{pwrpK-rfwFm)G5uONVqm-cBs^b%G?&8M2$F zV3<^3R@@9x*mm4Gu@z(%W+NjD1pxs$zNBQwgWIvPK|-K8(}cDZQK6+Y}>YN z`(4|%ZQHhWZ2R(Lx?8&wXLsgvZXkJ=Uc8vJ{`BeC2mY7n=veT$t!>_XSJ%SujEoL` zVMVw3k=ubn>2(l+-E}2!FJ&SSDaLPoSlR4{z@h z)8WGrpZtv+5K#G=zkkJ!n3#sl($awmiA0a7DHas;DVLkj*(pXrK`)LTjkNuZ7#3Fh zLP$u>{0Zh9V@SdS+T$ zyIvyEv1ar5Z+}*Q#pI+FM&kr>bGslC>A>Zx5foHq+O*00`0CYe4^r1ZPfu@e2u_6KCv#Gtx<0G^(OaCa{t$?HLVJr9&zSI0$YXf-x$@Q7j7?P4}MUuDEu z!4ILnU?T(r!6=S@AHKG4B09$pr2f%KbLXW-RCgU zeg$fA8kE8`7>ESFI%iTo{zaXvqEy_ilXzG7E;?y8}zttZ`jJTz+!VBHKR?(n|*)+IZde zd2vJb7vObWC*)GJ6fc0A&1=>fhjw+ZS>v{U)hd^lnSaGL=E<5J2MzF8!iPjwD0)+dx}0Uhf~TB|qi%>V!Z07*qoM6N<$f}pXK+W-In delta 847 zcmV-V1F-zX2IdBkB!4YQL_t(I%Y{>GNRwd{{<5gB#H1{UeiRWY{iuEwQGsNZKk`yu zum~+A#WFG>H7aq@GEwJcOD(5anwiLSUTQX{HqA|RY-^fRYtCJ4&8F!lI^CY$Z;=oc zo`XiZ{El)^2aqCuX*o_-6SAVU9qq4FD>zT|q{<*oW z&l(yO+TPwVC!enXA$gvdSn2*x5Qo$5R#4Ekv9M5dl+<;#wX%uv@hQyB*Sa>W@qhaY554fei|ChcRYP6wnj#>uZ4uL+-T`O_4RU@R%;;* zQy3XBL#MNVCUZEPBroFIH!GT(m7sfQ1#N9ZxO|!05PuYuvz00;>R88Sw`UP~i?no$ z#Rj$dD_UDs=;%!uMP8nOm^T24WXuKb>CvF9tPA1c`Bl`pXeuK6Hf3lmT@8sK z0^{mZ2!CJg#AD`mR5llZ%-^L%sWd{Rns5<_M8kxj8)0F2Rw^!mk~NjBMdxb|sJdfe zpSNJr@D}f?cj0b^59mFhjT;&=K`z%rEFJ}m_0E3&Jm=Ht)0y$q^?RNekR-#Tt%F(L zi1|4qnVo~YYmjr-+eJVd*Vm^-Ma2h4V&V%;K!3o)`+k0mUt^4Bc;d4>4c`qsm~}kN zPLGh;FTp%s16H~>F>Vq<;Se#6w-6P@E)NJ``uY1mShKuHemC7@;#vh8`C{zj9Re1iUw9I% z2T0o-$Ks+@p`onU;NYAs|3AA6l>3JGwGn4hykv}QU*zW;Ky1p+xx<$ZaZZFM?_cR^ Ze*zurN?MwrCdvQ+002ovPDHLkV1l+To!$Td diff --git a/htdocs/theme/eldy/img/stcomm3.png b/htdocs/theme/eldy/img/stcomm3.png index 5a6c0aeface51c0bd908a4aeadfc2df1345bc274..a0647ba4d0f562ce83330b11f4c33452f519a32b 100644 GIT binary patch delta 783 zcmV+q1MvL72Bij&BYy(yNkl9$!;&c}evE8o9&Jp1ycO~3yV6%_o3%EP?G zU0u_fD=M1U_J8(n&f1UY?G>T5wFf>vnJ6o3LSbP&3=JdOE?m%hdh(=df9m=|H@CEu z;^GE!p%DT>ElNupK*dBNmW;iqscD0^cLwMk>OpXD9&X<@c0Ybxc`~D`8#Y8sD^!8F z*GpY*XlMtISA~FpEQE#eD2c4AIRT-t7CAXph>tIVxPQ1?-JwJBdl=>}Gknp9^&h88 z%xN7eHx#4fM`4xvDp*F_AS#Xr4UGV(sri%SWg{-Gh$F|w7Q)0N3g^zLTQkgK=KOTS z>D8B#FF}$g$$js0-ebD7Bq^R0Lil5 zIs^sfk)*kHe_CYZl=*IMZH_K3tt{|_#8kxu_J2aftqPDKV8g0zRsFBNQT^Y1s?C33 zUig%dFl%36V4o+@$z1O4ZKxTEIfFS&V2Z%gsvA{smlR$v{I5M*|F3OY{FT7K{uF=z zUJ=~cE}DUhEt4%wuukxt<}}U!1~U!*%T=m>(@1oh>Kt0EPbk*{05vQ**sw1W#Q*>R N00>D%PDHLkV1k~=de#5{ delta 810 zcmV+_1J(Sc2EYc8BYy)2NklD0XBCc3%(d*4?a zM1>DLoae*&|IYtB=R5>)MsT?u&Y78Q_XUEkDym*fO>K!tPJeDXcb1OG&+m5R^FR3) z74^JpZ&zr?#}};~9STs8`lO`yPX82%#r<}rrF|F6%A`J2{h_60YHew02L}fx7>y=O zPHG_%^%)Wp>TdicuB`lerJ~}?lg36_hg3?MbhX0ceQ)r^e|13EjEp!d)Y`ubFei+_`}hlCVfCd$hPE{H_^`IJ2~ zZGC&&2$Eb!PtP<421rIkl6nR(Kfj5YnRUoyi^$4q+X@cO^CO6O!pSr3ZaRy5ecw^w z2^y)9I0W z8}vV*8>dp~A(yXUaBv<%;b&7!jCeLENRU9dZ&Kj*ydBiV86m@A~K(-{a2 zeUz)nb(N#y*qo%yrr=h!m*v6pr_NH6o^L(jUFnT$ ouOn|BcszR~_KSSwb=K7W1~n`>*wsyPp#T5?07*qoM6N<$f-0DbdH?_b diff --git a/htdocs/theme/eldy/img/stcomm4.png b/htdocs/theme/eldy/img/stcomm4.png index 3e26b4d06ed2c4c88c75c00ab6b5f1f2a7683e53..9b51e1456805bab6edeb5ac5ae2477ec5ee87f07 100644 GIT binary patch delta 871 zcmV-t1DO1p2mS_-B!5LoL_t(|0fmrLpd(it#=k+#&D>zJ%uQ|Ewr#xCwr$&Q`%>F( z*SJP(XTq7yu%~wWdp)1dpThre+ih>VG)>>!W;359%j)61-rz!6R$hDLky8v1So{n3 z-S?4IRrTGhR_3&5G`Kg%n`NP;C%q%-vXX|@_!4OwAm?&+KQ&BO9KJV zE<5fR2@MT7U>E?yP{?NM#}tdg?Eqqb3V8O}uY-nR9N_iZkLP*sK^tupG6e#zpG=x& zpwSRvGO<{HecmxSSvVWObs$hLzx@3iT{n)k+f7Fe5BqluhrJ%2cM~HG0!S!iS;x#w z87`L%L8+y_Jlvee;l z*!CyoLq9G^5yPkCQ4NLM;5hqF=I_3X;hS$_sMos?gnvE=#H>M8H8`DCEL_O#swnE_ z%zN*>qRroFW2V$A9wganj=ESzIKW|}^%kJrUWfNT9Kn*&GP;HpxvB)QFT-JBLBj0W zY>j1cE*8EZ-*BqAXK}fgIx$cN*w3*auG;Qe1cxH1SVMTDYJ=3XLL=>*)Wk`{4TL=u z$hVGUuzx@9VK-yWIA+VEEw}G*J64%i;mh8as3q$Va#1{=nhQ%Xga?oEK==6YNt?sW zXx3c*0MWu+i6vrIb9E_Al5L>kw?2%pY>o4Ry&my)|=+R(8fVsZ?XL>1A=9khAv^(W&6!<^K7)_I%> z17H=HiZ#*y>g%u6OzHt(Nry3_#w^vLy47NJ(~;7MD>t4OUCX0VsJzW%roQ>sRI;0OjB7Dy;>DVrXa_MxzaP?!0jxI3PZ|XHVg5pY@eW z<)@B;fid=g9lgC)m`r2viFv&Y8)=M;I8k4(hwqHfL4R}eSEQ!OYIpB02qC0Wb%0o` z%46-(KI>y+6buFnnwq+xRvY{zgJIY&(AQ^0cee!^%{OFcD@S+ixVFXL#_1eU{5ARg zVbVZCWl+IvH?w`y?9>NQP)OopE{VLmT1XytqWb94X zgX+Lb$4kU?#enyohj3XGqEAV%B;SQcU4Y2}Y_9+!3V;Qt`zMH?th8x?49*2^1((|2 zvwR=QaU~M^5)h^g$0p%k&%V^s&X7az?3=_Csy_qgp94{sYzT}|G!ex4$mzFyhzJSH z47?DUA8L-3$6~2?8MXTCW=Fzdp@^OG+Thr-q_C}zKdwKj@~+y~NORZ8)N_I^t)2M_ ZKLHqpUGOnSuMhwL002ovPDHLkV1ky~!h8S# diff --git a/htdocs/theme/eldy/img/switch_off.png b/htdocs/theme/eldy/img/switch_off.png index 28a4376fb438b41bee3481e229439c14b55f8e1a..af7f3f53c6c70989dca7febcb286a953b828f5a9 100644 GIT binary patch delta 1108 zcmV-a1grbx3FrurBYy-hNklZ-cixr0=m`ES;-E@alM+4Bp9!WXL5>cb)uk$_T)o8k`SloFyS zG#-Ea@u3fW@crlW`G!ED61oN;ppgv21l0H^=}&4HK6mE)_kU&n{Q1YHOque06h)eO zs~|;S{82;_JT*aw@jsGy7Cg^m?%cVQ%4LQI2eqzLs#Ge~ zLZMYV0GTkVRIHyB3Qa+7Vq7P1wTz~TF!AfU9#I@KGBScnRP}B<@B2O?lCqkcoBeXR ztdqFfpkWwTwtt0)shx&Zk2n%iDI3!?w2UA`VT3XT(*Ok+m{dcLC`?vP)q;1m&6I6Z z6%ceMudeWICt}++A`)9IEzM!MT)=f)lxQ}lX%Z`;>iZl#aFC9k9v*t=VP1dj4Qwmo zckt2+&*1t#sdSFYBai5@)JYgZroRqn#KE$xt1Ew3uq_J_11p!W zj~bd9v42uFNgO@Am$ob2eDeq2=cz|496x%HAOHC0v~_fo&8B(vjW=1oe#nuFF(9|4$HJzwrT~B zJzUUslMs>nn1nTE&oslU=Q0cvzyM=<;Z}z^OAw85|s@SSWI2pU3O3zrlh} zeGI=E(3H>PxE`;(_A-kWd>r2osISkFG>cMW<73>XBob@FG|dR5xEgQ1`z{;SZseCg z{eLBIzVQ+}w{PQ#mtN+@mtW$4fBh3pxe~3#W<1x$G{N;;Qn?lig%(`bC5|G3pvu)S zjQiIKTaS~WlL!^pqAr)`b6@=;>(;L2(v>!*&7Q~XIkPcEm_Bz7>3lQ3J3q%WEBXO)iP@12(04kzHLgqvUx|_(v^~m!A_sEf> a-~B(XcnFA(m*~X+0000QnBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2ipiA5jqg5-Ax_<00d-7L_t(Y$F-JCY*bYg$A9PE z``*lSI@phCr?iNC#nK9t1x5maQdb1yPNNWGL|7T43wOo^L4U)}7}hS>o4C*zw+ZI_rmAB;9R2Cu3bCx)Peoug~FclL}te>j~_QZ zJ>AE4?%esPbARrR#x$Ob!2DK38vc21v&}E0VJ}!~85$a*vsBtLGd+#>9uZk`SEKx$ zohBmW^LZ3HW4gM!s>NbE)>=RolzN{6g2&fQk-I3L2e6pO``e&JAc`z5O_`gU!!P#g zzlwYu$B0O1T3cJ=QmKTsc9}w@6eci;Xgr>zYDt|ChJOKCtC~j;T;lLr(5ePOp{XVo zmo$3LGdCBZlp+iQsse&6yK`w|?gk_X0z@P=ZEdYdsZ=B?M|i1uRclS^g=!pg;l~S1 zPEE0TbvN6#4iFf}FBgAhYU(B~O>iz{-KI@ATjtM+>o}KCO+D+@Z=k2tSqlLkC5oBZ zS+o+g)_)7e->dgmqMCyR)7IXWbgk~DTrN|8E||bzqghV9e~Pko^lskB58n-Q{g0a* zK5~#xKKhtzlYi6Oy8&x0`Q`${U!7-ce3HK2jYM%wn90-C(^F4Nk5WSRRukp9GRBzu z_WVi|7=wtyVFtU2fTFjWghM>F48++(H zv4b?pe5f)dq*oaiqIM&8xiK)C>Gm@qKMQv zDwXOoy-Gc}NCYORRZy*UvQm9$$`^R`jo10?^l7eKn_$=AlML<~M2oO{XdjtED{(Z3 zOTecvxNi?ZZWY#AoU3(QpQg+7iU?sCF07Zf$Ho?U*K_YNCYVo8v(R`NS(C((&3`qs z|G?7(nE-_%jw@6vRUUt07eOY25+SKt1kLU}LrA?Jq#jb|mRO&HcW5OTZAgRq7~${7 zau$IP0)x_`O_C&05SV%?Tq@NlpAu%wk}mBDvtixqwa%7$Fh+q-XhnO zBXr??M}qoDGB2l;BCf=d85{fU%}OB1#z7e5@G1Wni9nj9jEw#)<;Y4?HY;iBYm*Hi v4FjNW7yt!*8-b*Cp4xb1Z6z8R89nw7euxTyM@YwE00000NkvXXu0mjf3W7zH diff --git a/htdocs/theme/eldy/img/switch_on.png b/htdocs/theme/eldy/img/switch_on.png index d4e32d98f57ff37c78bdf1e6b4235e7fb4cefc17..757b78dcd6a9dab3c4341d255ace73f09eb7cb43 100644 GIT binary patch delta 1091 zcmV-J1ibsq3D*daBYy-QNklZ3%qEZFqBRnKgk7`l@OG}Fk7Yj@YYY*x6y3}jI zu04Bcbqdy07xf{@a=9&2zWumw)r;#c%Pq^hs{kJBu@BAHw(Y z^NCS9GT%NC@Tv%p2+VAs%*I6mWpGb4S}n@lBp)TB9Q4W=Zs`|tr{kW)PnX|KKkwyE zXFrmg|m*knB(@G$D9BDQ@XP~&baZ#eD5DYqg9f#jdKaI391s8bVy{w2n@sB zX*4Q|sDH?0#)uSwn{)pB-TCX<*ZI+|cc40Gs>200yAQi|{+7l5PP|=l$@IgyV(=9* zBU)7tIS3!;64WMgS!M@F?nDHL^%Eci8yQ{{G@4C3Dgqc23?rzlLA#pb?|Xj4%;X%F z3Kj=DXtdh&TC+qJzv#c86K`@iM%S${9QEmTI)4nTCWSMuC$brJS>OQfMkqnBA!Hy7 zSE48jJeSAhG=dajSzB4?pT|#kew46fPHUgV+RP4yzC>jm_Ka@e^5RQecJs$FV41Le z1HjB606>Cl!O)9v080sr3<$9S1PBNtQDRYWB!S_iaDKD;NiLgv5_evC1%uHdC*9;M zet)>~dPWRMDydS3zpZ_T6DRJ(q;7+)RJba}pWna$6nHAa5v1fq#J*#_2q6<;j?A#| z10n&8ag3q$**n_Ix9S&jn_FH&OBLTPG+o002ov JPDHLkV1mN53XcE) delta 1209 zcmV;q1V;PU2+RqPBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2ipiA5j!x8s9cu-00c})L_t(Y$E}u2Y*j@V$A8~9 zbI!T1UP@bP3K$|u1I8#+gAWLMOmLwq7sjm%Ltn^|zqk*4XUG9n_F1%Jdqy;90DGRe9TUeO^Ugd*S) zSXh`RpHEP6Xf>y=-bYw6W@hK8)Do)YDy^lQ=G-D%hx&*rT`?;G2x25jDR>dVIY$U# zQyJ;1LB-+Ilu}kECF`jPqoB=}Y$w;|rg^|W!(;oOM#b~Z^v6uJ-eRym%+Y~Yxj27@ z%kC6A>wjbH8+w+r@dQ@5wRj=~0iPx2%?wq=Irl#ZF(iWbj#8yU8q35UArg&xI>;{n zC`U$*bH4E&tvJV#2cIXKgrD7M#zqe^I(vXOubiiEsLsBTgPi@*C{D+lkL-MknH%3R-@1XX zW*i!Lj-T46i4;__I^sd_D_8iTg+2zN3UF2#Oa+k|y|=uESIeXF@~%;I7sI&fj<+(+2lf$51=YQlw4cP6~A#Nyu$8Xhp0%#XN}jnWC@n;Y~FN9f)qqDb_prFik{Z)pURfLcO>zkj&c z`~-B**>^3A&Umae>BR=>r1-9;75u$VOb)YR0whz<`843t9* zVWSxl6%%tdId!2nQ~PyCy5Q41mokW$+_IOjEA`I4iI;RF^4snC?-;QunB1Vl>&GCoF)_J7BqEBL00001bW%=J06^y0W&i*HK}keGRCob> zj7I`MP!t27KYHi>chyN&W|ta&WZ@)S<+v=Ml&S#RJ*sY?jVbPF_5jTQ=mNhfM_|&; eypY0KU5FiF4goKK8Cf>~0000&GCoF%z#PgVl_j-J}??DVW@# z*z(&?!(C*{a3!@h?fLI|(uDH+^N-n>rQxhKyG2~cX~*o$%k9sAJHE330004WQchC< zK<3zH0000Ra)!a&`9>~J_Di|dmVuN}_} z(bVuy9l8rV@{VKzDAke~@HO!SE~_~LI_=s1M}M)k0nq2CJoW$p002ovPDHLkV1hff BW6l5o diff --git a/htdocs/theme/eldy/img/title.png b/htdocs/theme/eldy/img/title.png index bb48d617379cfd5d92909464a4571e9b987649d7..40020575416ed93d60c11e08819a18723b844530 100644 GIT binary patch delta 1523 zcmVzwQbwB?cK52 zW6!h-m$_3@@9KKbM!b%6zW$)DA3v)L`5`g+wIOV!$z%MyKX_!g&q4r z6hvBU)*?hBuDYoD4*@Vlb?-ZP*yyqMjO^KSK(`hRwHg&$P=8Wh`OLesW)>8e=8YNF zXN*pxQjHro?!~k#`!4*h0El9k4<|0){=!4UdQvovXbMp@MIrnn29(rC_;>Vd%(cM- z`u6lx=9mAj0FxJPIWl@+r)F3PGf=1ofV2^k#)v){L+_4TG;PucPrn8r{x$$sXVDsh z8ntfMZ9xC$AAcTwcir#+8$;g|BN1aP8mUw&wOXZOS%zk?puqE9kJIJ#3>y2`*lWi( z9{j}s6sw^PfejngY1XBCx6bVcc5C0XZfKyzOd_MPG6B$N)M~v>r`KSk>6<43H=QB~ z0_SnNofo51lI|EYtiQ9=QT($2aHQe>5luU`Y2Uej`+t@V8%Bi%*jNTjO2Q;aqtR$G z8VyDqvbshT0O6X(4Y`jCugB%&yk6I&`5Tr_|Ma<6Fx9OAbk;DlF`!<%rtP}*Y1XiA z)4Jh-cD0ISNPe+4MTAWzqseNu*$sYvMlwz#L_~;~6t&b=LWorr<)u!S%lXK&Z$5hU z$hy6^1b=AM=gAL84eHiGuhXcBm~^&CkIg^8Kge$L4i6qHYhMCI4C$I%w#fIYA!JV3Th*k z1?3F*0x9P>d=|w;`Hr>Q4sV=@A&ZMc_pd1QF!>34tQc(iBkGX$e3S@mc}E?d8Gc z74RNui&S%7&b@u>rsYL>S=V#Ut(ZXo)Ha*_(M>xJOr&XAdnrB#cwHz6c&8{L07+An zgk=UrAITkg9+0w6YN=mdT3WDe>&8{(X@6%oN;@I6|G**RCQh4kZ$d&mWIC+?l=?fu zKL#SzzQWR&FG!$S1zO6Le`M#HiM0R}_O9PdoIbyIzX6ReMW=vM9S$Iq*Q6EzDaFK} z1tRYYwQ3;1qJ_$;YR~S?D~{~hwB$(yAe+WwwLQ9d$NupZ6&1Ra5;X{nUXebzmVZHh zDkC+2#BjR~Y$h!f6_>hptY36u*ZPIa%S($60YEkarG@nAH}LBTQ)WGI`9?fcvf=Xi z`hxh3E7~-TAk3}@vq1xnyn^cOtLGluyLsu->Z*!k0FaNJ^LZ9X{SIG_pSq}hhfdAn z9UKTM6NukWuNv){d@Nv z@Wm%zjDI{jy##S88&)Dw%F)WgdJO|Al?w7Jct}Y}DL%7f-ma_1w=5F{;eQeUlqiLN zJ^&eS_1RYwmo#eHvQ-{u$D*`6Nit&6vj7wW*(DsLB*x{P**SlE^y!_e0pK$BQtaYy zeJfU(%$7Tsuh}%)QOf&yQ~^NDVo(DoGLTW^f#kTW**M~@@fQ!R0Dv3VD~a&$`C4x4 z(W~!guf6@j(`AAU39KGc^K9La5`8Z1^p1HOlCPiI001$*!oME?nQ!{)o9`{LH6PLL z+SSX6r?<~rpOJ8RGXTV4ulh4SOlX}>*TE7P*(y6V_7nglVR!!7Uq(o}UGx8c8~*D6 Zz6Bt(ZaQt0p1%M9002ovPDHLkV1l~&=G*`P delta 1591 zcmV-72FUq@495(RBYy@CNklVNS;10tSHn4FnDanHW} zU)NtMIu2+DjR|A|2r)=@wRZh20OCO-lgFoLOq%*~Vq$8-(-8tbfj1l4JKkQr;j3o7 zu_-e>DO1QNh^(xv_ip`s?9xL8fE+G&X?9NGyVKJXIT!{p4&-1Q^v8kB0XVKUM86*{ zT)R3xH967Np?_$AqEa~0x)$5-8O~?RpH{S?Q2&rnX>=@`mX`t zLb*U39QjO4LTbvq85vW;!_-PH#)>f>BPz2tb?+kr>Wg&wph%szq4>= zMd|*MUI8MLW-XmKE+I}NH(@Y;1UI`jiP~!=08M0E0(NeQjLI=!qhMfPcUVE*=~d+%LFa|4^w^DtA6&Xi(tx zxLeRW0=_`LeI&|-zE!8)clh+-%_~2cPg8c6_w_qm$yRs;>b(3~ zC^XTnb_!VR4)z}Q7T1}ylh(q5yqwmiJAajTFYaE?0PvJb)y%x26WM6;39i)M1(YxZ zIMAIm?aUCX>k{@b__U#?(ai|`+RibUdb`ose7NA?ckQ<>9CXitkd(9+va;81dbO^u z7BrX@$VHx)@E?PC1pI`78_o|TNJanw$D%7evNziefHDV0e3rd#>zJ{rPh6?i0Dm(t z%=4@=k)T;+=qpC|6~uX8h=LE)aslY*?6Q5Izq_ex z4>-6YpYQ>%i1e`c3gVoIVJaa|N(G=*Z?qI0*#6_u1KV=ijjgB9C5`?|asQ;TX)8Zp zvte3!RW0bi!#w%z3DVQ+NS2N!abYMl;rQ++0|(}gD%lA^Rc(R zfN95lvg*t2v2nwrYqcbB5K`a40q~k|JyU}gZ=jY508ZfGuJ$)m@xF~GP8NQ<%VxD) za0yfQ+l+WJxnf#wLCG4eu0>>kAwE&?4!L(k_yiXO2no<(1>knWowlC}Hh&*0JF!29 zB1uM=S$Z80vKl29Tg#>;MR-NGV17oa@?=u8yQXf*osMO%(m zoISJ)ZN*nmx8YvG_XA+;LzjP=y(2Pe$j~NIg+#ILrvi0LML2qPxS-KM0?qZBrt?R( z7FL%X*@L>vQ89vhy#hVJ3x5eAmB}aP?9JP#HBtdKLd_cGVjduAF1X!l12<|a8j;5Z zwUPMbps9k>YG)LDV1`r@s!qAj^MD$nJjYp(qn z;l2Ve{ZSt-{Ah>rsh47|R+L{aE8KG6c3pWsve%%}`6xb2FriQwCom5hIJEKRFXvFZ p9u@PW{xX8D<(m5c+weaJ@H-&1ZaRPCJ1_tM002ovPDHLkV1gD0`knv) diff --git a/htdocs/theme/eldy/img/title_accountancy.png b/htdocs/theme/eldy/img/title_accountancy.png index fba1c91e05b51765ed8c8c0352840b3db978f614..6ed4fe78532c9a9ec3ba1e104ec4eb6a6c8565a3 100644 GIT binary patch literal 600 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6sn`IY5ZC|z{{xvc0@oe*F9D5~ zFA4GsW-xG2C^+!p|Aqwu53+0%E*zN<-B9DD*PRw{!Y3tMUfFrdd(h?4d>*Zn4fs`->3iYD-!u5R$i)DwlL`^lgjy}-*r}WO?Cgq z;Sj@^ly>}ya*U0sQSSDgIh`T)_KyPYz38yWTslwqjj5W#tGmyxu_UUP&RQm@Fm2k| z`JQV(Zw**;+ttbCJn?I9D;kd+NuSN}axtZz32bcbw{A*S_`?SO2 z=a28K{P@f#-XL;S2`k3u|KKsz<+oD2s}o;Yw*`NPmZ5YNJ-h7RI=DEC(8YGuR70>|2RS3O8{T?3Z5hX z2fzyeKexw@(h_7{L3B613#RMo=JDmd+1 zRqZ3~M5F@n7QpF1#|~buZAbnXKx-urz=E?dbJ_>qw|}PA0C>K_{Fc1GZYCSH%f{+_ z%e70fh30qcmsy?X?`CSpUd8#=@Hgiu)CABQ7j1Zbnbb)i!SB+sJ@B8B=_@u)-_=Yt z=3y^)?bsfWnxoY?lxP^GIqw|4J^@fMpH3A+z{et;@g>TnfW2thE+@a+D3udXX4J@k zHd9|(%6|}CFp(!kSsJj%y#8SV;Jv3_-e=%%0PlEy0^nRkIuWV)QDVW*MWhyyjtjaI z_InNB5zik0ct+=)*0ER6rXXz=11MvuWBXa!gk3nc2mZU^eV&-noU$0Bu;#_{Sm;Y$ z`)2eya}4fUIHp#ye>nvFaiTP_80V?Wniooox_<&NAM4nhHP5kY0I!CcRG#Se&}d>I z8&|R1rY3xK~X-3X24Hl}JaqA?~WX5<3;DTVI!`G_X za^V&|Wn;mmG8*3E!=(44Wn6%*!HXW zkfF=wA+lSn+d7n?|HGQy;f&EmX|tm|VkWman3=P(+YjA+mcyUOw{-jk{m(gdnwEMM P00000NkvXXu0mjfHfO>y diff --git a/htdocs/theme/eldy/img/title_agenda.png b/htdocs/theme/eldy/img/title_agenda.png index 93c5a814bc33dff0feb644e45ffaf31c19ebde17..4e4f1d585432ea5dca2a2a948943efea9737dce4 100644 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC|z{{xvMfsYM7JU|VC zB|(0{3=RedE<9-XAMjzqh6M=<0tKzPJo|u>Cp=voLn;{GUI}eFY{27sQT*h@Gw=R| zTbD}m9xkabc2aw=pY=A!;f)JZr*f{pZFlZ;l-jr%{_Mi zQQ++CJcgAg)gBkx6t1}1HS?jV<=PEB3%$C|=(Nng#LZSMD7!Ir;|x#;dAjlK68Gi-<008K=(YgQt00DDSM?wIu&K&6g000JJOGiWi000000Qp0^ ze*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ3l$A98D1HEVgLXE#7RU!R9M69 znbB>+Fc5~nzv_G0pxJar;QC^uC<1B+Cp3~z ziiBcfe_YPK{|=cMbG18WYzaQW-x^+0apGP+7tik`HIi~kg`_>O8Vmk@ggKYMcZ&I` zJTGYnWG99SH+IPypf$5PXw6s|R#J?K4nSdM%^bt#0a(vD=JPqjw+a46mL+YI;1m4F z@Mb166YvDQ0)Jnl)0^377f?9eVgXm}JO5zMOUfkeB-N7kl3Mq@RAn5=8AP5B^`BoIko2tS14R##}lZD6*|7~F@Jh5MXzR^tN{0gFWsi@+cx0M zwXxxSb4Gb)&un|Q7E{7Ez{{mKBk8ZU#i7@jy1Ez%f&Z)OfA+``KE2C*)D3H9RfH3w z>Le<{907*qoM6N<$ Eg4Htnm;e9( diff --git a/htdocs/theme/eldy/img/title_bank.png b/htdocs/theme/eldy/img/title_bank.png index 5bd5d25a1eaf5da8b760719867d116addbb76666..959d8bacaac6939826d5a6ae0551875d99c24ccb 100644 GIT binary patch delta 299 zcmV+`0o4BW1H}T6BYy!5NklMCIbynt{^Q`>(x|nPzUz7m+wxLqch%E>NduV}zEB?K3RAUnIfdyC) zi$BdB3hlUne9;y9PzW#lT1lwGI^>t^pb5$NR{p5MIOLDbp??M;csDmFwBQ)>&(6?= zLU`awWmtmPh$XP;p&^KkVbenmuwn(G*$S*^z>Cr#nx)~*e9?hEP1@iK$H@YD#`62u znSstS&=_H{+h>c;>Lke{^M#1#sZUNju)K_^d39A4A002ovPDHLkV1lNKi#PxP delta 476 zcmV<20VDp!0`&usBYyw{b3#c}2nYxWd&_+Y1262(F2lojelQFT<(R3kuNI!?&xg3IuPMhR)02x`}kRdSez@olTCrSSZ))i38ad0nmY|So&u>j$AVJ!W!pdtow&R; z^HsLV_eXtPlfH6mp-?;-`#6xT;uKscsN6qG*RMm+t>M2Rvwy8zGmT(b8o{zOf@Nt0 z%hCvzr4cO4)CE*r|EOi4MbeQrCc%<9Xtyg;#DL606VqmjAjtNgf~wMSd{2C zD&Q6;I13wJn(RX8p>mBEpM=r2Jy`VZ^g*s4K;aYs45A=cG@&t7W?tkN- zz7I=~b)XM?!cRTt9Jpdc_k|Iw|4DA<1ASnG6)LKaLTaz-vzl6eIZW#451j!6rpyKe bNb=qQ0tXw+E`2Fm00000NkvXXu0mjfTF+v! delta 405 zcmV;G0c!sJ0j~p)B!2{RLP=Bz2nYy#2xN!=000SaNLh0L00Ace00AcfjlA&80000P zbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$REJ;K`R9J=W*fCDSKoEuD z&oKx(BsfGQ-vB9e)Le%g0dA3wo`!}FBn}cd07XO!6w@RUMSpDVdY#w-|I#$p&c3(S z%xbg@q>(kqncxzm$h;Na@Y+B#h#WJNi7{L6)jHD_%xz-23xo3(4bDSFV`^{}xxS84 zU=7CzmRr8v2j<>3)lM}Sn%_7#_Nv%B8-oR&u~c2y+X!unnB3*sOR-s4U=bm70XO@jr4+p>Ehlp7)+)21_x5fY#)U}Ng20-NWG|2#;qWF z-z0zD;CaBBixh#Qlw>^N5#KfY-=qi((@ZLZ!Bh^yV4s_$9O0vD7d5=+IKg$-PAa&g zy@$!RV}|_qG%~>z&f5G14fw>19X=KRFMa^xa=5wzvkq0I00000NkvXXu0mjfyX&xX diff --git a/htdocs/theme/eldy/img/title_companies.png b/htdocs/theme/eldy/img/title_companies.png index ca172c460ace873c61891c80fec10981c428c47f..54f61141f69d3b3b21937b72ec22b21b49ca1ad2 100644 GIT binary patch delta 211 zcmV;^04)Ei1MdNlB!9L^L_t(|0qxn*4TB&QM&XXo5gdh4Itn9ngpP7YU<5{B1Ny%k zukjKCCWquaNzC_vVD!~{e{A5vgP$LG@EV&+fwmR!RrNqky=UY5KxqYhQOT*SjJK0H z27Vv-rp&1g;Mr|h^WZf;$^w0-A5!BF+UR}8@uu=YzYF-PvP@IG1D~Di$;Z!H^YiiG ztFnWNj}N~du-kwK58gj@AA!&QeDL7GUktnj@Vl?O8YKvC{9L#p@P8$AusSg{pa=i} N002ovPDHLkV1i2+XBYqg delta 400 zcmV;B0dM~A0jdL#B!2;OQb$4nuFf3k00006VoOIv00000008+zyMF)x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru-U}5CF*}QSJca-O0V+vEK~z}7?U>zdgHQ~GKUaNE zHh>M94az2Egl>?G&=EQcY>;d~Hy{(7zVJ|`;FOyt{K%I4fPXBTBkSB_-)oXssy(q_ z3-AFxzz6up*z>)AU}iaxC!{u#8n^bnhm@H$K$eht269R5l(fkb^ESY4QrdKO0^XhY z2k2e@# z&8%>8wn^wE^?y2`8@%}MI(>dkZE9dh;&R~ak3ISVKAm`(v;$q~{K1JABRXGs9qbx3 zy7Qqnb6pQgMv&Iu@PH@opv@Y=e*=4i{aJwfQV;+D00{s|MNUMnLSTZ8AgR#+ diff --git a/htdocs/theme/eldy/img/title_document.png b/htdocs/theme/eldy/img/title_document.png index 65019c1faf27f7b6851e2717b673e8ad87d5ddf4..8cfcbf77a2e5d6f6a80d80c24ab165772c739822 100644 GIT binary patch delta 296 zcmV+@0oVSz1i}K4BYy!2Nkl;&w>urfwvey=NEc#>2}~cRGV-+a0fB?YT;PY u_n?9f9CazM93eki238#myT%ZL@oslx6`4!3j50<500000=fi{BYyw{b3#c}2nYxWdR3T1Tlqm)FKby#{*c}Du|8v1U`WX78Zh~d4GTev9e1dq%e@yLV`gQ zL=+(w>*BiJ*|}$CXEVb7;Wm5DocrhAIhVadnseC1evPr&Q*Q<9xKJ=(n5Q-6QiA*V z5S2V!@cW5KkpMGzjf=St6bUxTG+xP+JP1Jok`ckXI8-pM#~n>$P02eM5qw`UHi%iB zl`NDz8Yp%j=YI=gR|0kV=}InRyFVBay!?AK!7Ns>h|j%&gKCl#r?8Zp+&x%($DINB z*An?#RZV+ovPl+jCZ_W*O*Y9fyul0XWzO*uJ2{D|Egr?V*)P(jCP^|DtV^UxcJUlP zhcNFPZsjCK1Rvm8C7m>9akVTdvc;dOyClgvdaAsGmwycB8jwZnn`A6lm(~kLj+riR zb?zY}A+mx~L!LY9?j2ddN0`T#N;-eDDDxf@5j=^9m2_&*`X(6*)}_iZlgkf0#`i?* z2yWweS&=3M-{IbX_yTT}6=`ydr!ZL%o6z}ISW1&Ccp6{p7HNHx{I`N1M{4nh-Q2`^ kY#7}ag&S{pBJnTj7X$X6)0gJvOaK4?07*qoM6N<$f-Mv5egFUf diff --git a/htdocs/theme/eldy/img/title_generic.png b/htdocs/theme/eldy/img/title_generic.png index a44830798aa930020e65ad3587bb58c0e201ec75..a71608da773a3b409bb636066ff97500c46e4106 100644 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC|z{{xvMfsYM7JU|VC zB|(0{3cK3(E&_j0*$U2(**+AmAaJhq#7$Kai_TKSC) z$DP)BJeHfsQ+4vV_~pE03Z zf3DN(Y_5JZ_dyc(Bjx<2)tw9fx2}!(T6Z{t`&E1Y@i_&{L_W0MWl&fwcq7uN^$;j% NJzf1=);T3K0RZ?9p4I>W delta 659 zcmV;E0&M-31E2+v8Gi-<008K=(YgQt00DDSM?wIu&K&6g000JJOGiWi000000Qp0^ ze*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ3l$AA2p@zFQvd)0AW1|)R9M69 zncH!rKoCVwyYz1|*x3lI3`_{lV6_=21e}3Fz!9u6FwTI@0Dot|M$r4yRE^tU^OmSm zSIvi{QP<&4&u|+=RoQCXvEjJE-{5cXD~E^#5y?fQ8vJKfy~qGkpa3))VMva1q)s+M{VPQ9#UUIU*rs{%Z=?2mcjZ7IDfr7Mlla=LWEA3H9tH~enEEnyGb zyYFgMtwkg?r5}6b$vSc^>TQZIetYc+j?KGY+n5!bb$^wrS^@vIY>A6a!HdX~h~%4s zkF4t-;FpMmEh!&>AMsJCs^wPTPi})Yjl$d2!>elJ2t9nUi4Ci&C*a*aK8Q$iA^2)k z8|bt?Nup~Hu%<(EyMARJU tNmaA849{++JkJJRvtr2YCGv&hKiZ!jkNHbVehdHr002ovPDHLkV1idSC_4ZE diff --git a/htdocs/theme/eldy/img/title_home.png b/htdocs/theme/eldy/img/title_home.png index e89613dcd753d62536d1192b0f4b89b0e75ab093..ca55d31ab1f478728dce10dc13f7465c2df7eee1 100644 GIT binary patch delta 538 zcmV+#0_FYg1+oN?BYy$;Nkl3p}(aQVAD#{~U><;5Iq!EEHkubP5A9$nzH4tN29^#bjo^$Oy# z2Tn?aQTPl|e8Ds%{#_%}U=1V$TaZ59BlF=HBn&4|C|)BQ;eR1SaUO$l9-?@NMy^Np z$47`_2QtD?Mr?;DKH{^Bk;$ByWo3Q@d457=sBE$YD59dBHY ztcYt6#Vu5attZ|>@E*OrkK znJm}~@o@w>^nVu=!gpIKJvKoUA2ABHa<~Es!A(?wtuH=66g!a#YQ=B{qIiTRu(ic= zNEqItCv0_b52Cn;(#BIOJoP_P=*Q}i>BsWCK1Z$>=!owP!DonKEz*KaI&6f*z$T;% z;T+&I2E*KhcI5;l0+}K>1&N{4C<-!(FkXMN*hek!34a2?OLT&*J{~|Ec#d|kwZ=0D zz-W6t4TInk%4)wthdyBxY{hXFf?>u}U1Wf*6eNyH!1?8H@}@mVksP6SOizLR11_mjny3Cjpb-*A(nYzyc(O c(}KPNBok`CTEvT1(f|Me07*qoM6N<$f*acKH~;_u delta 727 zcmV;|0x12m1nvcpBYyw{b3#c}2nYxWd@2AJycTs~*SEfS0&{-hlTk znloiraXm+#G1`kk6jCvWJpupcjJJS$)q<|;;IeTGwUZ6G z1dl2NOyUWaPJb5UR`dlxUf^i_S**S z0xn}lrcDjbh+dvbmcxV~7o#JP_zPN7-e$C6Q>yGh?5i5&I&=q;_M$1}J&3Py-8USn zFwcY_TZKoULo~uf(|j@DyM&psZ;|kf6!2g?aMMK_aDOP-HO!8^3vs`Mw}6K+V7V_8 zTH9k(i}pZ*A<^lQXf0ls0ZgI?8&Yi#<9on+7Yjmw4R{`C_#WF*-dz}|5HN|aqIH|7 z1#bi1S6H0|+<}jQ2I-Tc+*w^NvS)d{@X0lZeF@;P5}meTZtRQBUlU09Q9RO&6vD~A2PYpg(LTz5i7EvQR9uc|U!Hqvi%9X4kHi>YyvAsa&=*=zkj zsj^2+xV2Ks-LGo{3q*^Ksf*a002ov JPDHLkV1hdcNA>^! diff --git a/htdocs/theme/eldy/img/title_hrm.png b/htdocs/theme/eldy/img/title_hrm.png index de788526bc1e458293e2c957066e54695c1d44f3..24d9e49894802d350a8e0f4d6cdbe99c06ab6ba3 100644 GIT binary patch delta 816 zcmV-01JC?~2*w7GBYy)8Nkl4@%Jho<5cHtP#V1y3C{Lc4$!%zIipLB{k_$643x~4WSF5 z&%6U;My90^9JGwHd9a?~BpYBFYJnv3Zlr-OolHO9^IegDJ*d&75gFH`C!)xKcLJ@< uASna1@(;e4lGxWQ=Os0+s;a8$#r^|PGxr&^@F?*B000077jg delta 1007 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2!17C8iN#ivsM00V?cL_t(o!|j+$PZLoXhM$>& z(gFg4fEP4)A)+Lj8ob1~FuHK*MiX}?#$Vun@IUw;bYh&}19${H1ZFn_d>3#YxB{F3hD0Qe_`qA> zDewe%tXT|pUIW*F?Qub*ssx_` zI)Q$m-7-T*V4Mo(>00AGz(v3Vp2Y#tP$l>ra1Xc->;(3R#C0GmXKmE{4zLQWg_wn7 zth}QIX^RV@TJUSYv^1C}qY!u)=n$DU;4JV4m;f$|Y=5AQ)~-X5*cjOC0cn zz(JA73x7;eWAnflU_8Pk_scB)Y!>)o;1)0-+bzif8-Xd{0dO~B?xQNcW|IIP$6;Rp zpB0nWwCb*|-DSd{qj9f{StY*muYfV&L`YfdsLn}gN7_Vi(J(JRsb~t0uj3+)0L2qx6R)7{@R#M97mr6+|u%%*dR+sfW!0 zzm2e4bMQxG>qEc+tIP2t?xXysq?o^?>w|C!aP!i;t!2mGp3q}i=ni;gc&0>>ggNC+su!n>8m%-@R2E8`-t5)^mYY}Okc z9reQEd@FETQ6e1@-u#$A*7I&~-z!BsF)d%oX@~v+pH)ODTEJ@!u-tFcGNX)=-Ku;d zC)4txGVGY5L(p5=r(G#slO*FQyiOU>Y-r6;Kg#A^wPYEi>vxT@;Mvu9gF!NQP8lR! z2lB)d+-Go^9_eE0(mI3 zwLk_hV4mJ!1KK0VDq$=xz!JKF8K@rm5lYg01=?acUcv;Av48ll$1uTjEJZ6?@M{ky;??86A;BCTbkFSg(v+&4vkg!&S^0^ePMM=%ok2)%ra#1SD7z;k5K z2x+elX5b+VkbeUKe8(aEU39*Cd+-$o2!S4+B7^$yT}{kzf4zF3dRKE0UzT`O>Vbk= zn1*V9O~Wmir%%|f2kJfn`h|go4@~-Mgb&m|uA&Lle@{gacmNIIUJ(Z_1S=0L4=gc( z*{;CvMI4xo(YOJN`HJX%_&_xbz->hH!Uw8h0A?e~#b1{2fkGItDSlS>#PI-uYS?k~ zfOB1O7?#i?48tXuhtuc_@AXP}M?Xt;BYyw{b3#c}2nYxWdm!N9%*wFr?9S}HGqLaohZ$z>J?A@T&OLXShB(@cQ#goa%-}XYMe;w8hHw;9 z_=%Mc`;GfJiM4ft?Zy~Bbb-pV<!4s-QOD4CYEe<=H$gNXjBe{a#_H4O{~Ia0MSr z23)|U)D}w4eSeS3*pmmf9_R72q~q_H#BoW++Zsx*O{QbY_?*KztZO^lh-W38%;GGD z^PV`P;dJb5$rz6%wQs!OghgD%-U3j0+KExTEEw||z1u|#cO-?pCIGBcP00eBz}Ft} z7vzz8;_Hj-W|I=_WmRRU%M zwFZ2!ZYFor2W-CJ{F^%V z>cg0>0I)3BG!Eq_HTlQ)AOhe;oWPTU<7XrvxP^5@SVn)u%2+?e%4l%L>H>`p77Mg; yut7m<2kTTGXcVwUsDq3S;8=Qo4-aEF{R2xYz!C5Wct+j;0000USCPGTmDR4*?yIe$rslqF+`q-^%c&B(eP5niyc6HH--~;5+uWm@jq8@pwN`ED z|DTqq8``AI|JqZ5t>++n?vMqZG)~fyMk>Lm1;_oEp^PuWz+7bpJ@O1Ta JS?83{1OPG5UvvNf delta 353 zcmaFM_=jnNNGZx^prw85kJYlDyqrfHV;NblzPLq&N#aB8wRqxP?KOkzv*x z37{Z*iKnkC`#o+^USqAx|LeX1h5mTDIEF+VemngvZwV*xJ&{eK9I_pA1DaG5 z*rz0D#_Y{xpW?v&IMtIQX@>6y_S(rg5tAzGPal6Xq4vU=4Ob!(4=Pq1J9@_w#ywFE;JgPAGYtUHSt1Nchhd~J`d6b}0Uvb$dT-^}fn wWonvA>-@go;CW{|>)Z1^y;X5wN%hBkrObU7o^r0Z2@DAaPgg&ebxsLQ0DNbbHvj+t diff --git a/htdocs/theme/eldy/img/title_setup.png b/htdocs/theme/eldy/img/title_setup.png index fa4ff3aded1b49e54483faa198e9291117327a40..7d200d2e7ae197e23935335b4ece91427f65d01a 100644 GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3-qtXDD_6DdPa25ZC|z{{xvMfsYM7JU|VC zB|(0{3?(qL0zk`T$>lD3j+`>;z&zO?+OUz7h%e7w{F3z;k zUf+93X4?I06?^X6texR@<84c>eZ@&h_Jz#ywN=MV=O4LytkTxJ;)>$?drCCeMUxOR_^{=hi&Q%hMKEcRk8?oNxOm zuw#*2w%Fq@=bS31{gT!ER}}7a{&CR#ITAAuar}?#S7Lsub)w;t3RC#O|AF2IVml0i z4#lo8(6VI>sM>LD_xwM5+?oVieNLQ7eI

    '; + } // Date due if (!empty($arrayfields['f.date_lim_reglement']['checked'])) { @@ -1026,6 +1049,7 @@ if ($resql) if (!empty($arrayfields['f.ref_client']['checked'])) print_liste_field_titre($arrayfields['f.ref_client']['label'], $_SERVER["PHP_SELF"], 'f.ref_client', '', $param, '', $sortfield, $sortorder); if (!empty($arrayfields['f.type']['checked'])) print_liste_field_titre($arrayfields['f.type']['label'], $_SERVER["PHP_SELF"], 'f.type', '', $param, '', $sortfield, $sortorder); if (!empty($arrayfields['f.date']['checked'])) print_liste_field_titre($arrayfields['f.date']['label'], $_SERVER['PHP_SELF'], 'f.datef', '', $param, 'align="center"', $sortfield, $sortorder); + if (!empty($arrayfields['f.date_valid']['checked'])) print_liste_field_titre($arrayfields['f.date_valid']['label'], $_SERVER['PHP_SELF'], 'f.date_valid', '', $param, 'align="center"', $sortfield, $sortorder); if (!empty($arrayfields['f.date_lim_reglement']['checked'])) print_liste_field_titre($arrayfields['f.date_lim_reglement']['label'], $_SERVER['PHP_SELF'], "f.date_lim_reglement", '', $param, 'align="center"', $sortfield, $sortorder); if (!empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER['PHP_SELF'], "p.ref", '', $param, '', $sortfield, $sortorder); if (!empty($arrayfields['p.title']['checked'])) print_liste_field_titre($arrayfields['p.title']['label'], $_SERVER['PHP_SELF'], "p.title", '', $param, '', $sortfield, $sortorder); @@ -1099,8 +1123,12 @@ if ($resql) $facturestatic->total_ttc = $obj->total_ttc; $facturestatic->paye = $obj->paye; $facturestatic->fk_soc = $obj->fk_soc; - $facturestatic->date_lim_reglement = $db->jdate($obj->datelimite); - $facturestatic->note_public = $obj->note_public; + + $facturestatic->date = $db->jdate($obj->df); + $facturestatic->date_valid = $db->jdate($obj->date_valid); + $facturestatic->date_lim_reglement = $db->jdate($obj->datelimite); + + $facturestatic->note_public = $obj->note_public; $facturestatic->note_private = $obj->note_private; if ($conf->global->INVOICE_USE_SITUATION && $conf->global->INVOICE_USE_SITUATION_RETAINED_WARRANTY) { @@ -1213,6 +1241,15 @@ if ($resql) if (!$i) $totalarray['nbfield']++; } + // Date + if (!empty($arrayfields['f.date_valid']['checked'])) + { + print ''; + if (!$i) $totalarray['nbfield']++; + } + // Date limit if (!empty($arrayfields['f.date_lim_reglement']['checked'])) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index f6279cc992e..44c823a4f4a 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3135,7 +3135,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_accounting', 'object_category', 'address', 'barcode', 'bank', 'bookmark', 'building', 'cash-register', 'check', 'close_title', 'cubes', 'delete', 'dolly', 'edit', 'ellipsis-h', 'filter', 'file-code', 'folder', 'folder-open', 'grip', 'grip_title', 'language', 'list', 'listlight', 'note', 'object_barcode', 'object_phoning', 'object_phoning_fax', 'object_email', - 'object_bookmark', 'object_generic', 'object_list', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', + 'object_bookmark', 'object_generic', 'object_list-alt', 'object_calendar', 'object_calendarweek', 'object_calendarmonth', 'object_calendarday', 'object_calendarperuser', 'object_cash-register', 'object_printer', 'object_technic', 'off', 'on', 'play', 'playdisabled', 'printer', 'resize', 'stats', 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'wrench', 'globe', @@ -3165,7 +3165,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'generic'=>'file', 'switch_off'=>'toggle-off', 'switch_on'=>'toggle-on', 'check'=>'check', 'bookmark'=>'star', 'bookmark'=>'star', 'stats' => 'chart-bar', 'bank'=>'university', 'close_title'=>'window-close', 'delete'=>'trash', 'edit'=>'pencil', 'filter'=>'filter', 'split'=>'code-branch', - 'list'=>'list-alt', 'calendar'=>'calendar-alt', 'calendarweek'=>'calendar-week', 'calendarmonth'=>'calendar-alt', 'calendarday'=>'calendar-day', 'calendarperuser'=>'table', + 'list-alt'=>'list-alt', 'calendar'=>'calendar-alt', 'calendarweek'=>'calendar-week', 'calendarmonth'=>'calendar-alt', 'calendarday'=>'calendar-day', 'calendarperuser'=>'table', 'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle', 'printer'=>'print', 'technic'=>'cogs', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', 'title_agenda'=>'calendar-alt', @@ -3259,7 +3259,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $fakey = 'fa-comment-o'; } // Img for type of views - elseif (in_array($pictowithouttext, array('list', 'calendar', 'calendarweek', 'calendarmonth', 'calendarday', 'calendarperuser'))) { + elseif (in_array($pictowithouttext, array('list-alt', 'calendar', 'calendarweek', 'calendarmonth', 'calendarday', 'calendarperuser'))) { $fakey = 'imgforviewmode fa-'.$arrayconvpictotofa[$pictowithouttext]; $marginleftonlyshort = 0; } From a5f39e996df459cbbf0dcc2a0b5f38589ac670bf Mon Sep 17 00:00:00 2001 From: Norbert Penel Date: Tue, 7 Apr 2020 09:27:55 +0200 Subject: [PATCH 152/336] FIX : twice call in a page fix to let this function be used twice in a page --- htdocs/core/class/html.form.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 8e30c65b409..fc845dee245 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7779,10 +7779,11 @@ class Form global $conf, $langs; $out = ''; - if (!empty($conf->use_javascript_ajax)) $out .= '
    '; + $id=uniqid(); + if (!empty($conf->use_javascript_ajax)) $out .= '
    '; $out .= ''; - $nbno=$nbtotal=0; + $nbno = $nbtotal = 0; print load_fiche_titre($langs->trans("BarcodeInitForProductsOrServices"), '', 'products'); print '
    '."\n"; - $sql ="SELECT count(rowid) as nb, fk_product_type, datec"; - $sql.=" FROM ".MAIN_DB_PREFIX."product"; - $sql.=" WHERE barcode IS NULL OR barcode = ''"; - $sql.=" GROUP BY fk_product_type, datec"; - $sql.=" ORDER BY datec"; - $resql=$db->query($sql); + $sql = "SELECT count(rowid) as nb, fk_product_type, datec"; + $sql .= " FROM ".MAIN_DB_PREFIX."product"; + $sql .= " WHERE barcode IS NULL OR barcode = ''"; + $sql .= " GROUP BY fk_product_type, datec"; + $sql .= " ORDER BY datec"; + $resql = $db->query($sql); if ($resql) { - $num=$db->num_rows($resql); + $num = $db->num_rows($resql); - $i=0; - while($i < $num) + $i = 0; + while ($i < $num) { - $obj=$db->fetch_object($resql); - $nbno+=$obj->nb; + $obj = $db->fetch_object($resql); + $nbno += $obj->nb; $i++; } } else dol_print_error($db); - $sql="SELECT count(rowid) as nb FROM ".MAIN_DB_PREFIX."product"; - $resql=$db->query($sql); + $sql = "SELECT count(rowid) as nb FROM ".MAIN_DB_PREFIX."product"; + $resql = $db->query($sql); if ($resql) { - $obj=$db->fetch_object($resql); - $nbtotal=$obj->nb; + $obj = $db->fetch_object($resql); + $nbtotal = $obj->nb; } else dol_print_error($db); @@ -291,26 +291,26 @@ if ($conf->product->enabled || $conf->product->service) if (is_object($modBarCodeProduct)) { print $langs->trans("BarCodeNumberManager").": "; - $objproduct=new Product($db); - print ''.(isset($modBarCodeProduct->name)?$modBarCodeProduct->name:$modBarCodeProduct->nom).' - '.$langs->trans("NextValue").': '.$modBarCodeProduct->getNextValue($objproduct).'
    '; - $disabled=0; + $objproduct = new Product($db); + print ''.(isset($modBarCodeProduct->name) ? $modBarCodeProduct->name : $modBarCodeProduct->nom).' - '.$langs->trans("NextValue").': '.$modBarCodeProduct->getNextValue($objproduct).'
    '; + $disabled = 0; } else { - $disabled=1; - $titleno=$langs->trans("NoBarcodeNumberingTemplateDefined"); + $disabled = 1; + $titleno = $langs->trans("NoBarcodeNumberingTemplateDefined"); print ''.$langs->trans("NoBarcodeNumberingTemplateDefined").' ('.$langs->trans("ToGenerateCodeDefineAutomaticRuleFirst").')
    '; } if (empty($nbno)) { - $disabled1=1; + $disabled1 = 1; } print '
    '; //print ' '.$langs->trans("ResetBarcodeForAllRecords").'
    '; - $moretags1=(($disabled||$disabled1)?' disabled title="'.dol_escape_htmltag($titleno).'"':''); + $moretags1 = (($disabled || $disabled1) ? ' disabled title="'.dol_escape_htmltag($titleno).'"' : ''); print ''; - $moretags2=(($nbno == $nbtotal)?' disabled':''); + $moretags2 = (($nbno == $nbtotal) ? ' disabled' : ''); print '   '; print ''; print '



    '; diff --git a/htdocs/blockedlog/admin/blockedlog_list.php b/htdocs/blockedlog/admin/blockedlog_list.php index 3bd7f0097b9..d753b3a66ea 100644 --- a/htdocs/blockedlog/admin/blockedlog_list.php +++ b/htdocs/blockedlog/admin/blockedlog_list.php @@ -33,29 +33,29 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; // Load translation files required by the page $langs->loadLangs(array("admin", "other", "blockedlog", "bills")); -if ((! $user->admin && ! $user->rights->blockedlog->read) || empty($conf->blockedlog->enabled)) accessforbidden(); +if ((!$user->admin && !$user->rights->blockedlog->read) || empty($conf->blockedlog->enabled)) accessforbidden(); $action = GETPOST('action', 'alpha'); -$contextpage= GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'blockedloglist'; // To manage different context of search -$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page -$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'blockedloglist'; // To manage different context of search +$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page +$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') $search_showonlyerrors = GETPOST('search_showonlyerrors', 'int'); -if ($search_showonlyerrors < 0) $search_showonlyerrors=0; +if ($search_showonlyerrors < 0) $search_showonlyerrors = 0; -$search_fk_user=GETPOST('search_fk_user', 'intcomma'); +$search_fk_user = GETPOST('search_fk_user', 'intcomma'); $search_start = -1; -if (GETPOST('search_startyear')!='') $search_start = dol_mktime(0, 0, 0, GETPOST('search_startmonth'), GETPOST('search_startday'), GETPOST('search_startyear')); +if (GETPOST('search_startyear') != '') $search_start = dol_mktime(0, 0, 0, GETPOST('search_startmonth'), GETPOST('search_startday'), GETPOST('search_startyear')); $search_end = -1; -if (GETPOST('search_endyear')!='') $search_end= dol_mktime(23, 59, 59, GETPOST('search_endmonth'), GETPOST('search_endday'), GETPOST('search_endyear')); +if (GETPOST('search_endyear') != '') $search_end = dol_mktime(23, 59, 59, GETPOST('search_endmonth'), GETPOST('search_endday'), GETPOST('search_endyear')); $search_code = GETPOST('search_code', 'alpha'); $search_ref = GETPOST('search_ref', 'alpha'); $search_amount = GETPOST('search_amount', 'alpha'); -if (($search_start == -1 || empty($search_start)) && ! GETPOSTISSET('search_startmonth')) $search_start = dol_time_plus_duree(dol_now(), '-1', 'w'); +if (($search_start == -1 || empty($search_start)) && !GETPOSTISSET('search_startmonth')) $search_start = dol_time_plus_duree(dol_now(), '-1', 'w'); // Load variable for pagination -$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit; +$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); @@ -64,8 +64,8 @@ $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -if (empty($sortfield)) $sortfield='rowid'; -if (empty($sortorder)) $sortorder='DESC'; +if (empty($sortfield)) $sortfield = 'rowid'; +if (empty($sortorder)) $sortorder = 'DESC'; $block_static = new BlockedLog($db); @@ -78,7 +78,7 @@ $result = restrictedArea($user, 'blockedlog', 0, ''); */ // Purge search criteria -if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') ||GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers +if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers { $search_fk_user = ''; $search_start = -1; @@ -87,8 +87,8 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $search_ref = ''; $search_amount = ''; $search_showonlyerrors = 0; - $toselect=''; - $search_array_options=array(); + $toselect = ''; + $search_array_options = array(); } if ($action === 'downloadblockchain') { @@ -98,7 +98,7 @@ if ($action === 'downloadblockchain') { header('Content-Type: application/octet-stream'); header("Content-Transfer-Encoding: Binary"); - header("Content-disposition: attachment; filename=\"" .$auth->signature. ".certif\""); + header("Content-disposition: attachment; filename=\"".$auth->signature.".certif\""); echo $bc; @@ -106,26 +106,26 @@ if ($action === 'downloadblockchain') { } elseif (GETPOST('downloadcsv', 'alpha')) { $error = 0; - $previoushash=''; - $firstid=''; + $previoushash = ''; + $firstid = ''; - if (! $error) + if (!$error) { // Get ID of first line $sql = "SELECT rowid,date_creation,tms,user_fullname,action,amounts,element,fk_object,date_object,ref_object,signature,fk_user,object_data"; - $sql.= " FROM ".MAIN_DB_PREFIX."blockedlog"; - $sql.= " WHERE entity = ".$conf->entity; + $sql .= " FROM ".MAIN_DB_PREFIX."blockedlog"; + $sql .= " WHERE entity = ".$conf->entity; if (GETPOST('monthtoexport', 'int') > 0 || GETPOST('yeartoexport', 'int') > 0) { - $dates = dol_get_first_day(GETPOST('yeartoexport', 'int'), GETPOST('monthtoexport', 'int')?GETPOST('monthtoexport', 'int'):1); - $datee = dol_get_last_day(GETPOST('yeartoexport', 'int'), GETPOST('monthtoexport', 'int')?GETPOST('monthtoexport', 'int'):12); - $sql.= " AND date_creation BETWEEN '".$db->idate($dates)."' AND '".$db->idate($datee)."'"; + $dates = dol_get_first_day(GETPOST('yeartoexport', 'int'), GETPOST('monthtoexport', 'int') ?GETPOST('monthtoexport', 'int') : 1); + $datee = dol_get_last_day(GETPOST('yeartoexport', 'int'), GETPOST('monthtoexport', 'int') ?GETPOST('monthtoexport', 'int') : 12); + $sql .= " AND date_creation BETWEEN '".$db->idate($dates)."' AND '".$db->idate($datee)."'"; } - $sql.= " ORDER BY rowid ASC"; // Required so we get the first one - $sql.= $db->plimit(1); + $sql .= " ORDER BY rowid ASC"; // Required so we get the first one + $sql .= $db->plimit(1); $res = $db->query($sql); - if($res) + if ($res) { // Make the first fetch to get first line $obj = $db->fetch_object($res); @@ -147,26 +147,26 @@ if ($action === 'downloadblockchain') { } } - if (! $error) + if (!$error) { // Now restart request with all data = no limit(1) in sql request $sql = "SELECT rowid,date_creation,tms,user_fullname,action,amounts,element,fk_object,date_object,ref_object,signature,fk_user,object_data"; - $sql.= " FROM ".MAIN_DB_PREFIX."blockedlog"; - $sql.= " WHERE entity = ".$conf->entity; + $sql .= " FROM ".MAIN_DB_PREFIX."blockedlog"; + $sql .= " WHERE entity = ".$conf->entity; if (GETPOST('monthtoexport', 'int') > 0 || GETPOST('yeartoexport', 'int') > 0) { - $dates = dol_get_first_day(GETPOST('yeartoexport', 'int'), GETPOST('monthtoexport', 'int')?GETPOST('monthtoexport', 'int'):1); - $datee = dol_get_last_day(GETPOST('yeartoexport', 'int'), GETPOST('monthtoexport', 'int')?GETPOST('monthtoexport', 'int'):12); - $sql.= " AND date_creation BETWEEN '".$db->idate($dates)."' AND '".$db->idate($datee)."'"; + $dates = dol_get_first_day(GETPOST('yeartoexport', 'int'), GETPOST('monthtoexport', 'int') ?GETPOST('monthtoexport', 'int') : 1); + $datee = dol_get_last_day(GETPOST('yeartoexport', 'int'), GETPOST('monthtoexport', 'int') ?GETPOST('monthtoexport', 'int') : 12); + $sql .= " AND date_creation BETWEEN '".$db->idate($dates)."' AND '".$db->idate($datee)."'"; } - $sql.= " ORDER BY rowid ASC"; // Required so later we can use the parameter $previoushash of checkSignature() + $sql .= " ORDER BY rowid ASC"; // Required so later we can use the parameter $previoushash of checkSignature() $res = $db->query($sql); - if($res) + if ($res) { header('Content-Type: application/octet-stream'); header("Content-Transfer-Encoding: Binary"); - header("Content-disposition: attachment; filename=\"unalterable-log-archive-" .$dolibarr_main_db_name."-".(GETPOST('yeartoexport', 'int')>0 ? GETPOST('yeartoexport', 'int').(GETPOST('monthtoexport', 'int')>0?sprintf("%02d", GETPOST('monthtoexport', 'int')):'').'-':'').$previoushash. ".csv\""); + header("Content-disposition: attachment; filename=\"unalterable-log-archive-".$dolibarr_main_db_name."-".(GETPOST('yeartoexport', 'int') > 0 ? GETPOST('yeartoexport', 'int').(GETPOST('monthtoexport', 'int') > 0 ?sprintf("%02d", GETPOST('monthtoexport', 'int')) : '').'-' : '').$previoushash.".csv\""); print $langs->transnoentities('Id') .';'.$langs->transnoentities('Date') @@ -204,7 +204,7 @@ if ($action === 'downloadblockchain') { $block_static->signature = $obj->signature; $block_static->object_data = $block_static->dolDecodeBlockedData($obj->object_data); - $checksignature = $block_static->checkSignature($previoushash); // If $previoushash is not defined, checkSignature will search it + $checksignature = $block_static->checkSignature($previoushash); // If $previoushash is not defined, checkSignature will search it if ($checksignature) { @@ -219,9 +219,9 @@ if ($action === 'downloadblockchain') { $loweridinerror = $obj->rowid; } - if ($i==0) + if ($i == 0) { - $statusofrecordnote = $langs->trans("PreviousFingerprint").': '.$previoushash.($statusofrecordnote?' - '.$statusofrecordnote:''); + $statusofrecordnote = $langs->trans("PreviousFingerprint").': '.$previoushash.($statusofrecordnote ? ' - '.$statusofrecordnote : ''); } print $obj->rowid .';'.$obj->date_creation @@ -258,15 +258,15 @@ if ($action === 'downloadblockchain') { * View */ -$form=new Form($db); +$form = new Form($db); if (GETPOST('withtab', 'alpha')) { - $title=$langs->trans("ModuleSetup").' '.$langs->trans('BlockedLog'); + $title = $langs->trans("ModuleSetup").' '.$langs->trans('BlockedLog'); } else { - $title=$langs->trans("BrowseBlockedLog"); + $title = $langs->trans("BrowseBlockedLog"); } llxHeader('', $langs->trans("BrowseBlockedLog")); @@ -274,7 +274,7 @@ llxHeader('', $langs->trans("BrowseBlockedLog")); $MAXLINES = 10000; $blocks = $block_static->getLog('all', 0, $MAXLINES, $sortfield, $sortorder, $search_fk_user, $search_start, $search_end, $search_ref, $search_amount, $search_code); -if (! is_array($blocks)) +if (!is_array($blocks)) { if ($blocks == -2) { @@ -287,17 +287,17 @@ if (! is_array($blocks)) } } -$linkback=''; +$linkback = ''; if (GETPOST('withtab', 'alpha')) { - $linkback=''.$langs->trans("BackToModuleList").''; + $linkback = ''.$langs->trans("BackToModuleList").''; } print load_fiche_titre($title, $linkback); if (GETPOST('withtab', 'alpha')) { - $head=blockedlogadmin_prepare_head(); + $head = blockedlogadmin_prepare_head(); dol_fiche_head($head, 'fingerprints', '', -1); } @@ -305,19 +305,19 @@ print ''.$langs->trans("Fingerprint print '
    '; -$param=''; -if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); -if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); -if ($search_fk_user > 0) $param.='&search_fk_user='.urlencode($search_fk_user); -if ($search_startyear > 0) $param.='&search_startyear='.urlencode(GETPOST('search_startyear', 'int')); -if ($search_startmonth > 0) $param.='&search_startmonth='.urlencode(GETPOST('search_startmonth', 'int')); -if ($search_startday > 0) $param.='&search_startday='.urlencode(GETPOST('search_startday', 'int')); -if ($search_endyear > 0) $param.='&search_endyear='.urlencode(GETPOST('search_endyear', 'int')); -if ($search_endmonth > 0) $param.='&search_endmonth='.urlencode(GETPOST('search_endmonth', 'int')); -if ($search_endday > 0) $param.='&search_endday='.urlencode(GETPOST('search_endday', 'int')); -if ($search_showonlyerrors > 0) $param.='&search_showonlyerrors='.urlencode($search_showonlyerrors); -if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); -if (GETPOST('withtab', 'alpha')) $param.='&withtab='.urlencode(GETPOST('withtab', 'alpha')); +$param = ''; +if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); +if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); +if ($search_fk_user > 0) $param .= '&search_fk_user='.urlencode($search_fk_user); +if ($search_startyear > 0) $param .= '&search_startyear='.urlencode(GETPOST('search_startyear', 'int')); +if ($search_startmonth > 0) $param .= '&search_startmonth='.urlencode(GETPOST('search_startmonth', 'int')); +if ($search_startday > 0) $param .= '&search_startday='.urlencode(GETPOST('search_startday', 'int')); +if ($search_endyear > 0) $param .= '&search_endyear='.urlencode(GETPOST('search_endyear', 'int')); +if ($search_endmonth > 0) $param .= '&search_endmonth='.urlencode(GETPOST('search_endmonth', 'int')); +if ($search_endday > 0) $param .= '&search_endday='.urlencode(GETPOST('search_endday', 'int')); +if ($search_showonlyerrors > 0) $param .= '&search_showonlyerrors='.urlencode($search_showonlyerrors); +if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); +if (GETPOST('withtab', 'alpha')) $param .= '&withtab='.urlencode(GETPOST('withtab', 'alpha')); // Add $param from extra fields //include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; @@ -326,30 +326,30 @@ print '
    '; print $langs->trans("RestrictYearToExport").': '; -$smonth=GETPOST('monthtoexport', 'int'); +$smonth = GETPOST('monthtoexport', 'int'); // Month -$retstring=''; -$retstring.=''; +$retstring .= ''; +for ($month = 1; $month <= 12; $month++) { - $retstring.='"; + $retstring .= '"; } -$retstring.=""; +$retstring .= ""; print $retstring; print ''; print ''; print ''; -if (!empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY)) print ' | '.$langs->trans('DownloadBlockChain').''; +if (!empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY)) print ' | '.$langs->trans('DownloadBlockChain').''; print '
    '; print ''; print '
    '; -print '
    '; // You can use div-table-responsive-no-min if you dont need reserved height for your table +print '
    '; // You can use div-table-responsive-no-min if you dont need reserved height for your table if ($optioncss != '') print ''; print ''; @@ -405,7 +405,7 @@ print '
    '; // Status print ''; @@ -414,7 +414,7 @@ print ''; // Action column print ''; @@ -435,7 +435,7 @@ print getTitleFieldOfList('', 0, $_SERVER["PHP_SELF"], '', '', $param, 'align="c print getTitleFieldOfList('', 0, $_SERVER["PHP_SELF"], '', '', $param, 'align="center"', $sortfield, $sortorder, '')."\n"; print ''; -if (! empty($conf->global->BLOCKEDLOG_SCAN_ALL_FOR_LOWERIDINERROR)) { +if (!empty($conf->global->BLOCKEDLOG_SCAN_ALL_FOR_LOWERIDINERROR)) { // This is version that is faster but require more memory and report errors that are outside the filter range // TODO Make a full scan of table in reverse order of id of $block, so we can use the parameter $previoushash into checkSignature to save requests @@ -444,17 +444,17 @@ if (! empty($conf->global->BLOCKEDLOG_SCAN_ALL_FOR_LOWERIDINERROR)) { else { // This is version that optimize the memory (but will not report errors that are outside the filter range) - $loweridinerror=0; - $checkresult=array(); + $loweridinerror = 0; + $checkresult = array(); if (is_array($blocks)) { - foreach($blocks as &$block) + foreach ($blocks as &$block) { - $checksignature = $block->checkSignature(); // Note: this make a sql request at each call, we can't avoid this as the sorting order is various - $checkresult[$block->id]=$checksignature; // false if error - if (! $checksignature) + $checksignature = $block->checkSignature(); // Note: this make a sql request at each call, we can't avoid this as the sorting order is various + $checkresult[$block->id] = $checksignature; // false if error + if (!$checksignature) { - if (empty($loweridinerror)) $loweridinerror=$block->id; + if (empty($loweridinerror)) $loweridinerror = $block->id; else $loweridinerror = min($loweridinerror, $block->id); } } @@ -463,12 +463,12 @@ else if (is_array($blocks)) { - foreach($blocks as &$block) + foreach ($blocks as &$block) { $object_link = $block->getObjectLink(); //if (empty($search_showonlyerrors) || ! $checkresult[$block->id] || ($loweridinerror && $block->id >= $loweridinerror)) - if (empty($search_showonlyerrors) || ! $checkresult[$block->id]) + if (empty($search_showonlyerrors) || !$checkresult[$block->id]) { print ''; @@ -506,7 +506,7 @@ if (is_array($blocks)) // Status print ''; @@ -572,7 +572,7 @@ jQuery(document).ready(function () { '."\n"; -if(!empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY) && !empty($conf->global->BLOCKEDLOG_AUTHORITY_URL)) +if (!empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY) && !empty($conf->global->BLOCKEDLOG_AUTHORITY_URL)) { ?> '; -$arrayofselected=is_array($toselect)?$toselect:array(); +$arrayofselected = is_array($toselect) ? $toselect : array(); -$param=''; -if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); -if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); -foreach($search as $key => $val) +$param = ''; +if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); +if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); +foreach ($search as $key => $val) { - if (is_array($search[$key]) && count($search[$key])) foreach($search[$key] as $skey) $param.='&search_'.$key.'[]='.urlencode($skey); - else $param.= '&search_'.$key.'='.urlencode($search[$key]); + if (is_array($search[$key]) && count($search[$key])) foreach ($search[$key] as $skey) $param .= '&search_'.$key.'[]='.urlencode($skey); + else $param .= '&search_'.$key.'='.urlencode($search[$key]); } -if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); +if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); // Add $param from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // List of mass actions available -$arrayofmassactions = array( +$arrayofmassactions = array( //'presend'=>$langs->trans("SendByMail"), 'enable'=>$langs->trans("Enable"), 'disable'=>$langs->trans("Disable"), ); if ($permissiontodelete) $arrayofmassactions['predelete'] = ''.$langs->trans("Delete"); -if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete'))) $arrayofmassactions=array(); -$massactionbutton=$form->selectMassAction('', $arrayofmassactions); +if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete'))) $arrayofmassactions = array(); +$massactionbutton = $form->selectMassAction('', $arrayofmassactions); print ''; if ($optioncss != '') print ''; diff --git a/htdocs/bom/class/api_boms.class.php b/htdocs/bom/class/api_boms.class.php index 6b629fd2852..d21d82b5ca9 100644 --- a/htdocs/bom/class/api_boms.class.php +++ b/htdocs/bom/class/api_boms.class.php @@ -63,16 +63,16 @@ class Boms extends DolibarrApi */ public function get($id) { - if (! DolibarrApiAccess::$user->rights->bom->read) { + if (!DolibarrApiAccess::$user->rights->bom->read) { throw new RestException(401); } $result = $this->bom->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'BOM not found'); } - if (! DolibarrApi::_checkAccessToResource('bom', $this->bom->id, 'bom_bom')) { + if (!DolibarrApi::_checkAccessToResource('bom', $this->bom->id, 'bom_bom')) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } @@ -103,27 +103,27 @@ class Boms extends DolibarrApi $socid = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : ''; - $restrictonsocid = 0; // Set to 1 if there is a field socid in table of object + $restrictonsocid = 0; // Set to 1 if there is a field socid in table of object // If the internal user must only see his customers, force searching by him $search_sale = 0; - if ($restrictonsocid && ! DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id; + if ($restrictonsocid && !DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id; $sql = "SELECT t.rowid"; if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) - $sql.= " FROM ".MAIN_DB_PREFIX.$tmpobject->table_element." as t"; + $sql .= " FROM ".MAIN_DB_PREFIX.$tmpobject->table_element." as t"; - if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale - $sql.= " WHERE 1 = 1"; + if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale + $sql .= " WHERE 1 = 1"; // Example of use $mode //if ($mode == 1) $sql.= " AND s.client IN (1, 3)"; //if ($mode == 2) $sql.= " AND s.client IN (2, 3)"; - if ($tmpobject->ismultientitymanaged) $sql.= ' AND t.entity IN ('.getEntity('bom').')'; - if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= " AND t.fk_soc = sc.fk_soc"; - if ($restrictonsocid && $socid) $sql.= " AND t.fk_soc = ".$socid; - if ($restrictonsocid && $search_sale > 0) $sql.= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale + if ($tmpobject->ismultientitymanaged) $sql .= ' AND t.entity IN ('.getEntity('bom').')'; + if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= " AND t.fk_soc = sc.fk_soc"; + if ($restrictonsocid && $socid) $sql .= " AND t.fk_soc = ".$socid; + if ($restrictonsocid && $search_sale > 0) $sql .= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale // Insert sale filter if ($restrictonsocid && $search_sale > 0) { @@ -131,23 +131,23 @@ class Boms extends DolibarrApi } if ($sqlfilters) { - if (! DolibarrApi::_checkFilters($sqlfilters)) + if (!DolibarrApi::_checkFilters($sqlfilters)) { throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); } - $regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; - $sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; + $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } - $sql.= $db->order($sortfield, $sortorder); - if ($limit) { + $sql .= $db->order($sortfield, $sortorder); + if ($limit) { if ($page < 0) { $page = 0; } $offset = $limit * $page; - $sql.= $db->plimit($limit + 1, $offset); + $sql .= $db->plimit($limit + 1, $offset); } $result = $db->query($sql); @@ -168,7 +168,7 @@ class Boms extends DolibarrApi else { throw new RestException(503, 'Error when retrieve bom list'); } - if( ! count($obj_ret)) { + if (!count($obj_ret)) { throw new RestException(404, 'No bom found'); } return $obj_ret; @@ -182,16 +182,16 @@ class Boms extends DolibarrApi */ public function post($request_data = null) { - if(! DolibarrApiAccess::$user->rights->bom->write) { + if (!DolibarrApiAccess::$user->rights->bom->write) { throw new RestException(401); } // Check mandatory fields $result = $this->_validate($request_data); - foreach($request_data as $field => $value) { + foreach ($request_data as $field => $value) { $this->bom->$field = $value; } - if( ! $this->bom->create(DolibarrApiAccess::$user)) { + if (!$this->bom->create(DolibarrApiAccess::$user)) { throw new RestException(500, "Error creating BOM", array_merge(array($this->bom->error), $this->bom->errors)); } return $this->bom->id; @@ -207,25 +207,25 @@ class Boms extends DolibarrApi */ public function put($id, $request_data = null) { - if(! DolibarrApiAccess::$user->rights->bom->write) { + if (!DolibarrApiAccess::$user->rights->bom->write) { throw new RestException(401); } $result = $this->bom->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'BOM not found'); } - if( ! DolibarrApi::_checkAccessToResource('bom', $this->bom->id, 'bom_bom')) { + if (!DolibarrApi::_checkAccessToResource('bom', $this->bom->id, 'bom_bom')) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - foreach($request_data as $field => $value) { + foreach ($request_data as $field => $value) { if ($field == 'id') continue; $this->bom->$field = $value; } - if($this->bom->update($id, DolibarrApiAccess::$user) > 0) + if ($this->bom->update($id, DolibarrApiAccess::$user) > 0) { return $this->get($id); } @@ -243,19 +243,19 @@ class Boms extends DolibarrApi */ public function delete($id) { - if (! DolibarrApiAccess::$user->rights->bom->delete) { + if (!DolibarrApiAccess::$user->rights->bom->delete) { throw new RestException(401); } $result = $this->bom->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'BOM not found'); } - if (! DolibarrApi::_checkAccessToResource('bom', $this->bom->id, 'bom_bom')) { + if (!DolibarrApi::_checkAccessToResource('bom', $this->bom->id, 'bom_bom')) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - if (! $this->bom->delete(DolibarrApiAccess::$user)) + if (!$this->bom->delete(DolibarrApiAccess::$user)) { throw new RestException(500, 'Error when deleting BOM : '.$this->bom->error); } @@ -318,9 +318,9 @@ class Boms extends DolibarrApi unset($object->location_incoterms); // If object has lines, remove $db property - if (isset($object->lines) && is_array($object->lines) && count($object->lines) > 0) { + if (isset($object->lines) && is_array($object->lines) && count($object->lines) > 0) { $nboflines = count($object->lines); - for ($i=0; $i < $nboflines; $i++) + for ($i = 0; $i < $nboflines; $i++) { $this->_cleanObjectDatas($object->lines[$i]); @@ -344,7 +344,7 @@ class Boms extends DolibarrApi { $myobject = array(); foreach ($this->bom->fields as $field => $propfield) { - if (in_array($field, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat')) || $propfield['notnull'] != 1) continue; // Not a mandatory field + if (in_array($field, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat')) || $propfield['notnull'] != 1) continue; // Not a mandatory field if (!isset($data[$field])) throw new RestException(400, "$field field missing"); $myobject[$field] = $data[$field]; diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index c2779429ebc..a9ed7ee3a00 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -1009,7 +1009,7 @@ class BOM extends CommonObject */ public function calculateCosts() { - include_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; + include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $this->unit_cost = 0; $this->total_cost = 0; diff --git a/htdocs/bom/lib/bom.lib.php b/htdocs/bom/lib/bom.lib.php index 7da2c768b7f..92f43ec3fce 100644 --- a/htdocs/bom/lib/bom.lib.php +++ b/htdocs/bom/lib/bom.lib.php @@ -90,19 +90,19 @@ function bomPrepareHead($object) if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/bom/bom_note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->bom->dir_output . "/bom/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->bom->dir_output."/bom/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/bom/bom_document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'document'; $h++; diff --git a/htdocs/bom/tpl/objectline_create.tpl.php b/htdocs/bom/tpl/objectline_create.tpl.php index 66bcf0cece5..be7eb3e775f 100644 --- a/htdocs/bom/tpl/objectline_create.tpl.php +++ b/htdocs/bom/tpl/objectline_create.tpl.php @@ -130,7 +130,7 @@ print ''; $coldisplay++; print ''; $coldisplay++; diff --git a/htdocs/bom/tpl/objectline_edit.tpl.php b/htdocs/bom/tpl/objectline_edit.tpl.php index c8899603f58..36862e48708 100644 --- a/htdocs/bom/tpl/objectline_edit.tpl.php +++ b/htdocs/bom/tpl/objectline_edit.tpl.php @@ -52,11 +52,11 @@ $objectline = new BOMLine($this->db); print "\n"; -$coldisplay=0; +$coldisplay = 0; print ''; // Adds a line numbering column -if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { - print ''; +if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { + print ''; $coldisplay++; } @@ -82,8 +82,8 @@ if ($line->fk_product > 0) { if (is_object($hookmanager)) { $fk_parent_line = (GETPOST('fk_parent_line') ? GETPOST('fk_parent_line') : $line->fk_parent_line); - $parameters=array('line'=>$line,'fk_parent_line'=>$fk_parent_line,'var'=>$var,'dateSelector'=>$dateSelector,'seller'=>$seller,'buyer'=>$buyer); - $reshook=$hookmanager->executeHooks('formEditProductOptions', $parameters, $this, $action); + $parameters = array('line'=>$line, 'fk_parent_line'=>$fk_parent_line, 'var'=>$var, 'dateSelector'=>$dateSelector, 'seller'=>$seller, 'buyer'=>$buyer); + $reshook = $hookmanager->executeHooks('formEditProductOptions', $parameters, $this, $action); } print ''; @@ -104,7 +104,7 @@ if (($line->info_bits & 2) != 2) { // for example always visible on invoice but must be visible only if stock module on and stock decrease option is on invoice validation and status is not validated // must also not be output for most entities (proposal, intervention, ...) //if($line->qty > $line->stock) print img_picto($langs->trans("StockTooLow"),"warning", 'style="vertical-align: bottom;"')." "; - print ''; + print ''; } print ''; @@ -117,20 +117,20 @@ if ($conf->global->PRODUCT_USE_UNITS) } $coldisplay++; -print ''; $coldisplay++; -print ''; $coldisplay++; print ''; -$coldisplay+=$colspan; +$coldisplay += $colspan; print '\n"; print ''; // Adds a line numbering column -if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) print ''; +if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) print ''; // Description print ''; @@ -71,7 +71,7 @@ print ''; -print ''; // No width to allow autodim +print ''; // No width to allow autodim print ''; diff --git a/htdocs/bom/tpl/objectline_view.tpl.php b/htdocs/bom/tpl/objectline_view.tpl.php index 1419136a2e8..667c66848ae 100644 --- a/htdocs/bom/tpl/objectline_view.tpl.php +++ b/htdocs/bom/tpl/objectline_view.tpl.php @@ -95,7 +95,7 @@ echo $line->qty_frozen ? yn($line->qty_frozen) : ''; print ''; print ''; print ''; -if ($this->status == 0 && ($object_rights->write) && $action != 'selectlines' ) { +if ($this->status == 0 && ($object_rights->write) && $action != 'selectlines') { print ''; - print ''; print ''; diff --git a/htdocs/compta/bank/bilan.php b/htdocs/compta/bank/bilan.php index 28607ecca26..d728ac2a71b 100644 --- a/htdocs/compta/bank/bilan.php +++ b/htdocs/compta/bank/bilan.php @@ -44,10 +44,10 @@ function valeur($sql) $valeur = 0; - $resql=$db->query($sql); + $resql = $db->query($sql); if ($resql) { - $obj=$db->fetch_object($resql); + $obj = $db->fetch_object($resql); $valeur = $obj->amount; $db->free($resql); } diff --git a/htdocs/compta/bank/budget.php b/htdocs/compta/bank/budget.php index a4c57a60fdd..042117808d5 100644 --- a/htdocs/compta/bank/budget.php +++ b/htdocs/compta/bank/budget.php @@ -31,15 +31,15 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->loadLangs(array('banks', 'categories')); // Security check -if ($user->socid) $socid=$user->socid; -$result=restrictedArea($user, 'banque'); +if ($user->socid) $socid = $user->socid; +$result = restrictedArea($user, 'banque'); /* * View */ -$companystatic=new Societe($db); +$companystatic = new Societe($db); llxHeader(); @@ -55,14 +55,14 @@ print ''; print "\n"; $sql = "SELECT sum(d.amount) as somme, count(*) as nombre, c.label, c.rowid "; -$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ as c"; -$sql.= ", ".MAIN_DB_PREFIX."bank_class as l"; -$sql.= ", ".MAIN_DB_PREFIX."bank as d"; -$sql.= " WHERE c.entity = ".$conf->entity; -$sql.= " AND c.rowid = l.fk_categ"; -$sql.= " AND d.rowid = l.lineid"; -$sql.= " GROUP BY c.label, c.rowid"; -$sql.= " ORDER BY c.label"; +$sql .= " FROM ".MAIN_DB_PREFIX."bank_categ as c"; +$sql .= ", ".MAIN_DB_PREFIX."bank_class as l"; +$sql .= ", ".MAIN_DB_PREFIX."bank as d"; +$sql .= " WHERE c.entity = ".$conf->entity; +$sql .= " AND c.rowid = l.fk_categ"; +$sql .= " AND d.rowid = l.lineid"; +$sql .= " GROUP BY c.label, c.rowid"; +$sql .= " ORDER BY c.label"; $result = $db->query($sql); if ($result) @@ -88,7 +88,7 @@ if ($result) print ''; print ''; - print ''; + print ''; } else { diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 60d7c4f2463..cba83d8f015 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -1188,34 +1188,34 @@ class Account extends CommonObject // phpcs:enable global $conf, $langs; - if ($user->socid) return -1; // protection pour eviter appel par utilisateur externe + if ($user->socid) return -1; // protection pour eviter appel par utilisateur externe $sql = "SELECT b.rowid, b.datev as datefin"; - $sql.= " FROM ".MAIN_DB_PREFIX."bank as b,"; - $sql.= " ".MAIN_DB_PREFIX."bank_account as ba"; - $sql.= " WHERE b.rappro=0"; - $sql.= " AND b.fk_account = ba.rowid"; - $sql.= " AND ba.entity IN (".getEntity('bank_account').")"; - $sql.= " AND (ba.rappro = 1 AND ba.courant != 2)"; // Compte rapprochable - $sql.= " AND clos = 0"; - if ($filteraccountid) $sql.=" AND ba.rowid = ".$filteraccountid; + $sql .= " FROM ".MAIN_DB_PREFIX."bank as b,"; + $sql .= " ".MAIN_DB_PREFIX."bank_account as ba"; + $sql .= " WHERE b.rappro=0"; + $sql .= " AND b.fk_account = ba.rowid"; + $sql .= " AND ba.entity IN (".getEntity('bank_account').")"; + $sql .= " AND (ba.rappro = 1 AND ba.courant != 2)"; // Compte rapprochable + $sql .= " AND clos = 0"; + if ($filteraccountid) $sql .= " AND ba.rowid = ".$filteraccountid; - $resql=$this->db->query($sql); + $resql = $this->db->query($sql); if ($resql) { $langs->load("banks"); - $now=dol_now(); + $now = dol_now(); require_once DOL_DOCUMENT_ROOT.'/core/class/workboardresponse.class.php'; $response = new WorkboardResponse(); - $response->warning_delay=$conf->bank->rappro->warning_delay/60/60/24; - $response->label=$langs->trans("TransactionsToConciliate"); + $response->warning_delay = $conf->bank->rappro->warning_delay / 60 / 60 / 24; + $response->label = $langs->trans("TransactionsToConciliate"); $response->labelShort = $langs->trans("TransactionsToConciliateShort"); - $response->url=DOL_URL_ROOT.'/compta/bank/list.php?leftmenu=bank&mainmenu=bank'; - $response->img=img_object('', "payment"); + $response->url = DOL_URL_ROOT.'/compta/bank/list.php?leftmenu=bank&mainmenu=bank'; + $response->img = img_object('', "payment"); - while ($obj=$this->db->fetch_object($resql)) + while ($obj = $this->db->fetch_object($resql)) { $response->nbtodo++; if ($this->db->jdate($obj->datefin) < ($now - $conf->bank->rappro->warning_delay)) { @@ -1244,30 +1244,30 @@ class Account extends CommonObject // phpcs:enable global $user; - if ($user->socid) return -1; // protection pour eviter appel par utilisateur externe + if ($user->socid) return -1; // protection pour eviter appel par utilisateur externe $sql = "SELECT count(b.rowid) as nb"; - $sql.= " FROM ".MAIN_DB_PREFIX."bank as b,"; - $sql.= " ".MAIN_DB_PREFIX."bank_account as ba"; - $sql.= " WHERE b.fk_account = ba.rowid"; - $sql.= " AND ba.entity IN (".getEntity('bank_account').")"; - $sql.= " AND (ba.rappro = 1 AND ba.courant != 2)"; // Compte rapprochable - $sql.= " AND clos = 0"; - if ($filteraccountid) $sql.=" AND ba.rowid = ".$filteraccountid; + $sql .= " FROM ".MAIN_DB_PREFIX."bank as b,"; + $sql .= " ".MAIN_DB_PREFIX."bank_account as ba"; + $sql .= " WHERE b.fk_account = ba.rowid"; + $sql .= " AND ba.entity IN (".getEntity('bank_account').")"; + $sql .= " AND (ba.rappro = 1 AND ba.courant != 2)"; // Compte rapprochable + $sql .= " AND clos = 0"; + if ($filteraccountid) $sql .= " AND ba.rowid = ".$filteraccountid; - $resql=$this->db->query($sql); + $resql = $this->db->query($sql); if ($resql) { - while ($obj=$this->db->fetch_object($resql)) + while ($obj = $this->db->fetch_object($resql)) { - $this->nb["banklines"]=$obj->nb; + $this->nb["banklines"] = $obj->nb; } $this->db->free($resql); } else { dol_print_error($this->db); - $this->error=$this->db->error(); + $this->error = $this->db->error(); return -1; } } diff --git a/htdocs/compta/bank/class/api_bankaccounts.class.php b/htdocs/compta/bank/class/api_bankaccounts.class.php index 1272cfcad85..2fb97ff949c 100644 --- a/htdocs/compta/bank/class/api_bankaccounts.class.php +++ b/htdocs/compta/bank/class/api_bankaccounts.class.php @@ -66,32 +66,32 @@ class BankAccounts extends DolibarrApi { $list = array(); - if (! DolibarrApiAccess::$user->rights->banque->lire) { + if (!DolibarrApiAccess::$user->rights->banque->lire) { throw new RestException(401); } $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."bank_account as t"; - $sql.= ' WHERE t.entity IN ('.getEntity('bank_account').')'; + $sql .= ' WHERE t.entity IN ('.getEntity('bank_account').')'; // Add sql filters if ($sqlfilters) { - if (! DolibarrApi::_checkFilters($sqlfilters)) + if (!DolibarrApi::_checkFilters($sqlfilters)) { throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); } - $regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; - $sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; + $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } - $sql.= $this->db->order($sortfield, $sortorder); - if ($limit) { + $sql .= $this->db->order($sortfield, $sortorder); + if ($limit) { if ($page < 0) { $page = 0; } $offset = $limit * $page; - $sql.= $this->db->plimit($limit + 1, $offset); + $sql .= $this->db->plimit($limit + 1, $offset); } dol_syslog("API Rest request"); @@ -108,7 +108,7 @@ class BankAccounts extends DolibarrApi } } } else { - throw new RestException(503, 'Error when retrieving list of accounts: ' . $this->db->lasterror()); + throw new RestException(503, 'Error when retrieving list of accounts: '.$this->db->lasterror()); } return $list; @@ -124,13 +124,13 @@ class BankAccounts extends DolibarrApi */ public function get($id) { - if (! DolibarrApiAccess::$user->rights->banque->lire) { + if (!DolibarrApiAccess::$user->rights->banque->lire) { throw new RestException(401); } $account = new Account($this->db); $result = $account->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'account not found'); } @@ -145,7 +145,7 @@ class BankAccounts extends DolibarrApi */ public function post($request_data = null) { - if (! DolibarrApiAccess::$user->rights->banque->configurer) { + if (!DolibarrApiAccess::$user->rights->banque->configurer) { throw new RestException(401); } // Check mandatory fields @@ -190,7 +190,7 @@ class BankAccounts extends DolibarrApi */ public function transfer($bankaccount_from_id = 0, $bankaccount_to_id = 0, $date = null, $description = "", $amount = 0.0, $amount_to = 0.0) { - if (! DolibarrApiAccess::$user->rights->banque->configurer) { + if (!DolibarrApiAccess::$user->rights->banque->configurer) { throw new RestException(401); } @@ -235,14 +235,14 @@ class BankAccounts extends DolibarrApi $user = DolibarrApiAccess::$user; // By default, electronic transfert from bank to bank - $typefrom='PRE'; - $typeto='VIR'; + $typefrom = 'PRE'; + $typeto = 'VIR'; if ($accountto->courant == Account::TYPE_CASH || $accountfrom->courant == Account::TYPE_CASH) { // This is transfer of change - $typefrom='LIQ'; - $typeto='LIQ'; + $typefrom = 'LIQ'; + $typeto = 'LIQ'; } /** @@ -250,7 +250,7 @@ class BankAccounts extends DolibarrApi */ if (!$error) { - $bank_line_id_from = $accountfrom->addline($date, $typefrom, $description, -1*price2num($amount), '', '', $user); + $bank_line_id_from = $accountfrom->addline($date, $typefrom, $description, -1 * price2num($amount), '', '', $user); } if (!($bank_line_id_from > 0)) { $error++; @@ -312,13 +312,13 @@ class BankAccounts extends DolibarrApi */ public function put($id, $request_data = null) { - if (! DolibarrApiAccess::$user->rights->banque->configurer) { + if (!DolibarrApiAccess::$user->rights->banque->configurer) { throw new RestException(401); } $account = new Account($this->db); $result = $account->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'account not found'); } @@ -345,12 +345,12 @@ class BankAccounts extends DolibarrApi */ public function delete($id) { - if (! DolibarrApiAccess::$user->rights->banque->configurer) { + if (!DolibarrApiAccess::$user->rights->banque->configurer) { throw new RestException(401); } $account = new Account($this->db); $result = $account->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'account not found'); } @@ -378,7 +378,7 @@ class BankAccounts extends DolibarrApi { $account = array(); foreach (BankAccounts::$FIELDS as $field) { - if (! isset($data[$field])) + if (!isset($data[$field])) throw new RestException(400, "$field field missing"); $account[$field] = $data[$field]; } @@ -417,13 +417,13 @@ class BankAccounts extends DolibarrApi { $list = array(); - if (! DolibarrApiAccess::$user->rights->banque->lire) { + if (!DolibarrApiAccess::$user->rights->banque->lire) { throw new RestException(401); } $account = new Account($this->db); $result = $account->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'account not found'); } @@ -433,12 +433,12 @@ class BankAccounts extends DolibarrApi // Add sql filters if ($sqlfilters) { - if (! DolibarrApi::_checkFilters($sqlfilters)) + if (!DolibarrApi::_checkFilters($sqlfilters)) { throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); } - $regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; - $sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; + $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= " ORDER BY rowid"; @@ -455,7 +455,7 @@ class BankAccounts extends DolibarrApi } } } else { - throw new RestException(503, 'Error when retrieving list of account lines: ' . $accountLine->error); + throw new RestException(503, 'Error when retrieving list of account lines: '.$accountLine->error); } return $list; @@ -479,13 +479,13 @@ class BankAccounts extends DolibarrApi */ public function addLine($id, $date, $type, $label, $amount, $category = 0, $cheque_number = '', $cheque_writer = '', $cheque_bank = '') { - if (! DolibarrApiAccess::$user->rights->banque->modifier) { + if (!DolibarrApiAccess::$user->rights->banque->modifier) { throw new RestException(401); } $account = new Account($this->db); $result = $account->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'account not found'); } @@ -500,7 +500,7 @@ class BankAccounts extends DolibarrApi $cheque_writer, $cheque_bank ); if ($result < 0) { - throw new RestException(503, 'Error when adding line to account: ' . $account->error); + throw new RestException(503, 'Error when adding line to account: '.$account->error); } return $result; } @@ -520,25 +520,25 @@ class BankAccounts extends DolibarrApi */ public function addLink($id, $line_id, $url_id, $url, $label, $type) { - if (! DolibarrApiAccess::$user->rights->banque->modifier) { + if (!DolibarrApiAccess::$user->rights->banque->modifier) { throw new RestException(401); } $account = new Account($this->db); $result = $account->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'account not found'); } $accountLine = new AccountLine($this->db); $result = $accountLine->fetch($line_id); - if (! $result) { + if (!$result) { throw new RestException(404, 'account line not found'); } $result = $account->add_url_line($line_id, $url_id, $url, $label, $type); if ($result < 0) { - throw new RestException(503, 'Error when adding link to account line: ' . $account->error); + throw new RestException(503, 'Error when adding link to account line: '.$account->error); } return $result; } diff --git a/htdocs/compta/bank/class/bankcateg.class.php b/htdocs/compta/bank/class/bankcateg.class.php index 92e16211ce0..c7e86e51cfb 100644 --- a/htdocs/compta/bank/class/bankcateg.class.php +++ b/htdocs/compta/bank/class/bankcateg.class.php @@ -33,7 +33,7 @@ class BankCateg // extends CommonObject /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png */ - public $picto='generic'; + public $picto = 'generic'; /** * @var int ID @@ -211,10 +211,10 @@ class BankCateg // extends CommonObject $this->db->begin(); // Delete link between tag and bank account - if (! $error) + if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_account"; - $sql.= " WHERE fk_categorie = ".$this->id; + $sql .= " WHERE fk_categorie = ".$this->id; $resql = $this->db->query($sql); if (!$resql) @@ -225,10 +225,10 @@ class BankCateg // extends CommonObject } // Delete link between tag and bank lines - if (! $error) + if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class"; - $sql.= " WHERE fk_categ = ".$this->id; + $sql .= " WHERE fk_categ = ".$this->id; $resql = $this->db->query($sql); if (!$resql) @@ -239,7 +239,7 @@ class BankCateg // extends CommonObject } // Delete bank categ - if (! $error) + if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_categ"; $sql .= " WHERE rowid=".$this->id; diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php index 58e01ec2f28..6af394ad4b4 100644 --- a/htdocs/compta/bank/class/paymentvarious.class.php +++ b/htdocs/compta/bank/class/paymentvarious.class.php @@ -23,7 +23,7 @@ */ // Put here all includes required by your class file -require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; /** @@ -34,12 +34,12 @@ class PaymentVarious extends CommonObject /** * @var string ID to identify managed object */ - public $element='variouspayment'; + public $element = 'variouspayment'; /** * @var string Name of table without prefix where object is stored */ - public $table_element='payment_various'; + public $table_element = 'payment_various'; /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png @@ -118,12 +118,12 @@ class PaymentVarious extends CommonObject { global $conf, $langs; - $error=0; + $error = 0; // Clean parameters - $this->amount=trim($this->amount); - $this->label=trim($this->label); - $this->note=trim($this->note); + $this->amount = trim($this->amount); + $this->label = trim($this->label); + $this->note = trim($this->note); $this->fk_bank = (int) $this->fk_bank; $this->fk_user_author = (int) $this->fk_user_author; $this->fk_user_modif = (int) $this->fk_user_modif; @@ -132,40 +132,40 @@ class PaymentVarious extends CommonObject // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."payment_various SET"; - if ($this->tms) $sql.= " tms='".$this->db->idate($this->tms)."',"; - $sql.= " datep='".$this->db->idate($this->datep)."',"; - $sql.= " datev='".$this->db->idate($this->datev)."',"; - $sql.= " sens=".(int) $this->sens.","; - $sql.= " amount=".price2num($this->amount).","; - $sql.= " fk_typepayment=".(int) $this->fk_typepayment.","; - $sql.= " num_payment='".$this->db->escape($this->num_payment)."',"; - $sql.= " label='".$this->db->escape($this->label)."',"; - $sql.= " note='".$this->db->escape($this->note)."',"; - $sql.= " accountancy_code='".$this->db->escape($this->accountancy_code)."',"; - $sql.= " subledger_account='".$this->db->escape($this->subledger_account)."',"; - $sql.= " fk_projet='".$this->db->escape($this->fk_project)."',"; - $sql.= " fk_bank=".($this->fk_bank > 0 ? $this->fk_bank:"null").","; - $sql.= " fk_user_author=".(int) $this->fk_user_author.","; - $sql.= " fk_user_modif=".(int) $this->fk_user_modif; - $sql.= " WHERE rowid=".$this->id; + if ($this->tms) $sql .= " tms='".$this->db->idate($this->tms)."',"; + $sql .= " datep='".$this->db->idate($this->datep)."',"; + $sql .= " datev='".$this->db->idate($this->datev)."',"; + $sql .= " sens=".(int) $this->sens.","; + $sql .= " amount=".price2num($this->amount).","; + $sql .= " fk_typepayment=".(int) $this->fk_typepayment.","; + $sql .= " num_payment='".$this->db->escape($this->num_payment)."',"; + $sql .= " label='".$this->db->escape($this->label)."',"; + $sql .= " note='".$this->db->escape($this->note)."',"; + $sql .= " accountancy_code='".$this->db->escape($this->accountancy_code)."',"; + $sql .= " subledger_account='".$this->db->escape($this->subledger_account)."',"; + $sql .= " fk_projet='".$this->db->escape($this->fk_project)."',"; + $sql .= " fk_bank=".($this->fk_bank > 0 ? $this->fk_bank : "null").","; + $sql .= " fk_user_author=".(int) $this->fk_user_author.","; + $sql .= " fk_user_modif=".(int) $this->fk_user_modif; + $sql .= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::update", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) + if (!$resql) { - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); return -1; } - if (! $notrigger) + if (!$notrigger) { // Call trigger - $result=$this->call_trigger('PAYMENT_VARIOUS_MODIFY', $user); + $result = $this->call_trigger('PAYMENT_VARIOUS_MODIFY', $user); if ($result < 0) $error++; // End call triggers } - if (! $error) + if (!$error) { $this->db->commit(); return 1; @@ -189,31 +189,31 @@ class PaymentVarious extends CommonObject { global $langs; $sql = "SELECT"; - $sql.= " v.rowid,"; - $sql.= " v.tms,"; - $sql.= " v.datep,"; - $sql.= " v.datev,"; - $sql.= " v.sens,"; - $sql.= " v.amount,"; - $sql.= " v.fk_typepayment,"; - $sql.= " v.num_payment,"; - $sql.= " v.label,"; - $sql.= " v.note,"; - $sql.= " v.accountancy_code,"; - $sql.= " v.subledger_account,"; - $sql.= " v.fk_projet as fk_project,"; - $sql.= " v.fk_bank,"; - $sql.= " v.fk_user_author,"; - $sql.= " v.fk_user_modif,"; - $sql.= " b.fk_account,"; - $sql.= " b.fk_type,"; - $sql.= " b.rappro"; - $sql.= " FROM ".MAIN_DB_PREFIX."payment_various as v"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank as b ON v.fk_bank = b.rowid"; - $sql.= " WHERE v.rowid = ".$id; + $sql .= " v.rowid,"; + $sql .= " v.tms,"; + $sql .= " v.datep,"; + $sql .= " v.datev,"; + $sql .= " v.sens,"; + $sql .= " v.amount,"; + $sql .= " v.fk_typepayment,"; + $sql .= " v.num_payment,"; + $sql .= " v.label,"; + $sql .= " v.note,"; + $sql .= " v.accountancy_code,"; + $sql .= " v.subledger_account,"; + $sql .= " v.fk_projet as fk_project,"; + $sql .= " v.fk_bank,"; + $sql .= " v.fk_user_author,"; + $sql .= " v.fk_user_modif,"; + $sql .= " b.fk_account,"; + $sql .= " b.fk_type,"; + $sql .= " b.rappro"; + $sql .= " FROM ".MAIN_DB_PREFIX."payment_various as v"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank as b ON v.fk_bank = b.rowid"; + $sql .= " WHERE v.rowid = ".$id; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); - $resql=$this->db->query($sql); + $resql = $this->db->query($sql); if ($resql) { if ($this->db->num_rows($resql)) @@ -247,7 +247,7 @@ class PaymentVarious extends CommonObject } else { - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); return -1; } } @@ -263,22 +263,22 @@ class PaymentVarious extends CommonObject { global $conf, $langs; - $error=0; + $error = 0; // Call trigger - $result=$this->call_trigger('PAYMENT_VARIOUS_DELETE', $user); + $result = $this->call_trigger('PAYMENT_VARIOUS_DELETE', $user); if ($result < 0) return -1; // End call triggers $sql = "DELETE FROM ".MAIN_DB_PREFIX."payment_various"; - $sql.= " WHERE rowid=".$this->id; + $sql .= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) + if (!$resql) { - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); return -1; } @@ -295,20 +295,20 @@ class PaymentVarious extends CommonObject */ public function initAsSpecimen() { - $this->id=0; + $this->id = 0; - $this->tms=''; - $this->datep=''; - $this->datev=''; - $this->sens=''; - $this->amount=''; - $this->label=''; - $this->accountancy_code=''; - $this->subledger_account=''; - $this->note=''; - $this->fk_bank=''; - $this->fk_user_author=''; - $this->fk_user_modif=''; + $this->tms = ''; + $this->datep = ''; + $this->datev = ''; + $this->sens = ''; + $this->amount = ''; + $this->label = ''; + $this->accountancy_code = ''; + $this->subledger_account = ''; + $this->note = ''; + $this->fk_bank = ''; + $this->fk_user_author = ''; + $this->fk_user_modif = ''; } /** @@ -319,38 +319,38 @@ class PaymentVarious extends CommonObject */ public function create($user) { - global $conf,$langs; + global $conf, $langs; - $error=0; - $now=dol_now(); + $error = 0; + $now = dol_now(); // Clean parameters - $this->amount=price2num(trim($this->amount)); - $this->label=trim($this->label); - $this->note=trim($this->note); + $this->amount = price2num(trim($this->amount)); + $this->label = trim($this->label); + $this->note = trim($this->note); $this->fk_bank = (int) $this->fk_bank; $this->fk_user_author = (int) $this->fk_user_author; $this->fk_user_modif = (int) $this->fk_user_modif; // Check parameters - if (! $this->label) + if (!$this->label) { - $this->error=$langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")); + $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")); return -3; } if ($this->amount < 0 || $this->amount == '') { - $this->error=$langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")); + $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")); return -5; } - if (! empty($conf->banque->enabled) && (empty($this->accountid) || $this->accountid <= 0)) + if (!empty($conf->banque->enabled) && (empty($this->accountid) || $this->accountid <= 0)) { - $this->error=$langs->trans("ErrorFieldRequired", $langs->transnoentities("Account")); + $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Account")); return -6; } - if (! empty($conf->banque->enabled) && (empty($this->type_payment) || $this->type_payment <= 0)) + if (!empty($conf->banque->enabled) && (empty($this->type_payment) || $this->type_payment <= 0)) { - $this->error=$langs->trans("ErrorFieldRequired", $langs->transnoentities("PaymentMode")); + $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("PaymentMode")); return -7; } @@ -358,39 +358,39 @@ class PaymentVarious extends CommonObject // Insert into llx_payment_various $sql = "INSERT INTO ".MAIN_DB_PREFIX."payment_various ("; - $sql.= " datep"; - $sql.= ", datev"; - $sql.= ", sens"; - $sql.= ", amount"; - $sql.= ", fk_typepayment"; - $sql.= ", num_payment"; - if ($this->note) $sql.= ", note"; - $sql.= ", label"; - $sql.= ", accountancy_code"; - $sql.= ", subledger_account"; - $sql.= ", fk_projet"; - $sql.= ", fk_user_author"; - $sql.= ", datec"; - $sql.= ", fk_bank"; - $sql.= ", entity"; - $sql.= ")"; - $sql.= " VALUES ("; - $sql.= "'".$this->db->idate($this->datep)."'"; - $sql.= ", '".$this->db->idate($this->datev)."'"; - $sql.= ", '".$this->db->escape($this->sens)."'"; - $sql.= ", ".price2num($this->amount); - $sql.= ", '".$this->db->escape($this->type_payment)."'"; - $sql.= ", '".$this->db->escape($this->num_payment)."'"; - if ($this->note) $sql.= ", '".$this->db->escape($this->note)."'"; - $sql.= ", '".$this->db->escape($this->label)."'"; - $sql.= ", '".$this->db->escape($this->accountancy_code)."'"; - $sql.= ", '".$this->db->escape($this->subledger_account)."'"; - $sql.= ", ".($this->fk_project > 0? $this->fk_project : 0); - $sql.= ", ".$user->id; - $sql.= ", '".$this->db->idate($now)."'"; - $sql.= ", NULL"; - $sql.= ", ".$conf->entity; - $sql.= ")"; + $sql .= " datep"; + $sql .= ", datev"; + $sql .= ", sens"; + $sql .= ", amount"; + $sql .= ", fk_typepayment"; + $sql .= ", num_payment"; + if ($this->note) $sql .= ", note"; + $sql .= ", label"; + $sql .= ", accountancy_code"; + $sql .= ", subledger_account"; + $sql .= ", fk_projet"; + $sql .= ", fk_user_author"; + $sql .= ", datec"; + $sql .= ", fk_bank"; + $sql .= ", entity"; + $sql .= ")"; + $sql .= " VALUES ("; + $sql .= "'".$this->db->idate($this->datep)."'"; + $sql .= ", '".$this->db->idate($this->datev)."'"; + $sql .= ", '".$this->db->escape($this->sens)."'"; + $sql .= ", ".price2num($this->amount); + $sql .= ", '".$this->db->escape($this->type_payment)."'"; + $sql .= ", '".$this->db->escape($this->num_payment)."'"; + if ($this->note) $sql .= ", '".$this->db->escape($this->note)."'"; + $sql .= ", '".$this->db->escape($this->label)."'"; + $sql .= ", '".$this->db->escape($this->accountancy_code)."'"; + $sql .= ", '".$this->db->escape($this->subledger_account)."'"; + $sql .= ", ".($this->fk_project > 0 ? $this->fk_project : 0); + $sql .= ", ".$user->id; + $sql .= ", '".$this->db->idate($now)."'"; + $sql .= ", NULL"; + $sql .= ", ".$conf->entity; + $sql .= ")"; dol_syslog(get_class($this)."::create", LOG_DEBUG); $result = $this->db->query($sql); @@ -401,19 +401,19 @@ class PaymentVarious extends CommonObject if ($this->id > 0) { - if (! empty($conf->banque->enabled) && ! empty($this->amount)) + if (!empty($conf->banque->enabled) && !empty($this->amount)) { // Insert into llx_bank require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); - $result=$acc->fetch($this->accountid); + $result = $acc->fetch($this->accountid); if ($result <= 0) dol_print_error($this->db); // Insert payment into llx_bank // Add link 'payment_various' in bank_url between payment and bank transaction - $sign=1; - if ($this->sens == '0') $sign=-1; + $sign = 1; + if ($this->sens == '0') $sign = -1; $bank_line_id = $acc->addline( $this->datep, @@ -433,38 +433,38 @@ class PaymentVarious extends CommonObject } else { - $this->error=$acc->error; + $this->error = $acc->error; $error++; } - if (! $error) + if (!$error) { // Add link 'payment_various' in bank_url between payment and bank transaction - $url=DOL_URL_ROOT.'/compta/bank/various_payment/card.php?id='; + $url = DOL_URL_ROOT.'/compta/bank/various_payment/card.php?id='; - $result=$acc->add_url_line($bank_line_id, $this->id, $url, "(VariousPayment)", "payment_various"); + $result = $acc->add_url_line($bank_line_id, $this->id, $url, "(VariousPayment)", "payment_various"); if ($result <= 0) { - $this->error=$acc->error; + $this->error = $acc->error; $error++; } } if ($result <= 0) { - $this->error=$acc->error; + $this->error = $acc->error; $error++; } } // Call trigger - $result=$this->call_trigger('PAYMENT_VARIOUS_CREATE', $user); + $result = $this->call_trigger('PAYMENT_VARIOUS_CREATE', $user); if ($result < 0) $error++; // End call triggers } else $error++; - if (! $error) + if (!$error) { $this->db->commit(); return $this->id; @@ -477,7 +477,7 @@ class PaymentVarious extends CommonObject } else { - $this->error=$this->db->error(); + $this->error = $this->db->error(); $this->db->rollback(); return -1; } @@ -494,7 +494,7 @@ class PaymentVarious extends CommonObject { // phpcs:enable $sql = 'UPDATE '.MAIN_DB_PREFIX.'payment_various SET fk_bank = '.$id_bank; - $sql.= ' WHERE rowid = '.$this->id; + $sql .= ' WHERE rowid = '.$this->id; $result = $this->db->query($sql); if ($result) { @@ -542,27 +542,27 @@ class PaymentVarious extends CommonObject } elseif ($mode == 2) { - if ($status==0) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts_short[$status]); - elseif ($status==1) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts_short[$status]); - elseif ($status==2) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts_short[$status]); + if ($status == 0) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts_short[$status]); + elseif ($status == 1) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts_short[$status]); + elseif ($status == 2) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts_short[$status]); } elseif ($mode == 3) { - if ($status==0 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); - elseif ($status==1 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); - elseif ($status==2 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); + if ($status == 0 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); + elseif ($status == 1 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); + elseif ($status == 2 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); } elseif ($mode == 4) { - if ($status==0 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts[$status]); - elseif ($status==1 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts[$status]); - elseif ($status==2 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); + if ($status == 0 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts[$status]); + elseif ($status == 1 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts[$status]); + elseif ($status == 2 && !empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); } elseif ($mode == 5) { - if ($status==0 && ! empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); - elseif ($status==1 && ! empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); - elseif ($status==2 && ! empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); + if ($status == 0 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); + elseif ($status == 1 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); + elseif ($status == 2 && !empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); } } @@ -581,34 +581,34 @@ class PaymentVarious extends CommonObject global $db, $conf, $langs, $hookmanager; global $langs; - if (! empty($conf->dol_no_mouse_hover)) $notooltip=1; // Force disable tooltips + if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips - $result=''; + $result = ''; - $label=''.$langs->trans("ShowVariousPayment").''; - $label.= '
    '; - $label.= '' . $langs->trans('Ref') . ': ' . $this->ref; + $label = ''.$langs->trans("ShowVariousPayment").''; + $label .= '
    '; + $label .= ''.$langs->trans('Ref').': '.$this->ref; $url = DOL_URL_ROOT.'/compta/bank/various_payment/card.php?id='.$this->id; if ($option != 'nolink') { // Add param to save lastsearch_values or not - $add_save_lastsearch_values=($save_lastsearch_value == 1 ? 1 : 0); - if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) $add_save_lastsearch_values=1; - if ($add_save_lastsearch_values) $url.='&save_lastsearch_values=1'; + $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0); + if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) $add_save_lastsearch_values = 1; + if ($add_save_lastsearch_values) $url .= '&save_lastsearch_values=1'; } - $linkclose=''; + $linkclose = ''; if (empty($notooltip)) { - if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label=$langs->trans("ShowMyObject"); - $linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"'; + $label = $langs->trans("ShowMyObject"); + $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } - $linkclose.=' title="'.dol_escape_htmltag($label, 1).'"'; - $linkclose.=' class="classfortooltip'.($morecss?' '.$morecss:'').'"'; + $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; + $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; /* $hookmanager->initHooks(array('myobjectdao')); @@ -617,22 +617,22 @@ class PaymentVarious extends CommonObject if ($reshook > 0) $linkclose = $hookmanager->resPrint; */ } - else $linkclose = ($morecss?' class="'.$morecss.'"':''); + else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = ''; - $linkend=''; + $linkstart .= $linkclose.'>'; + $linkend = ''; $result .= $linkstart; - if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1); - if ($withpicto != 2) $result.= $this->ref; + if ($withpicto) $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); + if ($withpicto != 2) $result .= $this->ref; $result .= $linkend; //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); global $action; $hookmanager->initHooks(array('variouspayment')); - $parameters=array('id'=>$this->id, 'getnomurl'=>$result); - $reshook=$hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) $result = $hookmanager->resPrint; else $result .= $hookmanager->resPrint; @@ -648,8 +648,8 @@ class PaymentVarious extends CommonObject public function info($id) { $sql = 'SELECT v.rowid, v.datec, v.fk_user_author'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'payment_various as v'; - $sql.= ' WHERE v.rowid = '.$id; + $sql .= ' FROM '.MAIN_DB_PREFIX.'payment_various as v'; + $sql .= ' WHERE v.rowid = '.$id; dol_syslog(get_class($this).'::info', LOG_DEBUG); $result = $this->db->query($sql); diff --git a/htdocs/compta/bank/document.php b/htdocs/compta/bank/document.php index 022e1ceea5a..9fd2207f3ec 100644 --- a/htdocs/compta/bank/document.php +++ b/htdocs/compta/bank/document.php @@ -67,7 +67,7 @@ if (!$sortfield) $sortfield = "name"; $object = new Account($db); -if ($id > 0 || ! empty($ref)) $object->fetch($id, $ref); +if ($id > 0 || !empty($ref)) $object->fetch($id, $ref); $result = restrictedArea($user, 'banque', $object->id, 'bank_account', '', ''); @@ -97,7 +97,7 @@ $form = new Form($db); if ($id > 0 || !empty($ref)) { if ($object->fetch($id, $ref)) { - $upload_dir = $conf->bank->dir_output . '/' . $object->ref; + $upload_dir = $conf->bank->dir_output.'/'.$object->ref; // Onglets $head = bank_prepare_head($object); diff --git a/htdocs/compta/bank/graph.php b/htdocs/compta/bank/graph.php index ccf677fa2b8..347353be84f 100644 --- a/htdocs/compta/bank/graph.php +++ b/htdocs/compta/bank/graph.php @@ -257,7 +257,7 @@ else $show1 = $px1->show(); $px1 = null; - $graph_datas =null; + $graph_datas = null; $datas = null; $datamin = null; $dataall = null; @@ -395,7 +395,7 @@ else $show2 = $px2->show(); $px2 = null; - $graph_datas =null; + $graph_datas = null; $datas = null; $datamin = null; $dataall = null; @@ -509,7 +509,7 @@ else $show3 = $px3->show(); $px3 = null; - $graph_datas =null; + $graph_datas = null; $datas = null; $datamin = null; $dataall = null; diff --git a/htdocs/compta/bank/info.php b/htdocs/compta/bank/info.php index 0ed5b4ff003..abab3b4ff9c 100644 --- a/htdocs/compta/bank/info.php +++ b/htdocs/compta/bank/info.php @@ -43,7 +43,7 @@ $object->fetch($id); $object->info($id); -$h=0; +$h = 0; $head[$h][0] = DOL_URL_ROOT.'/compta/bank/line.php?rowid='.$id; $head[$h][1] = $langs->trans("Card"); diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index d98a37594b0..515759547a6 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -35,27 +35,27 @@ require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; // Load translation files required by the page $langs->loadLangs(array('banks', 'categories', 'compta', 'bills', 'other')); -if (! empty($conf->adherent->enabled)) $langs->load("members"); -if (! empty($conf->don->enabled)) $langs->load("donations"); -if (! empty($conf->loan->enabled)) $langs->load("loan"); -if (! empty($conf->salaries->enabled)) $langs->load("salaries"); +if (!empty($conf->adherent->enabled)) $langs->load("members"); +if (!empty($conf->don->enabled)) $langs->load("donations"); +if (!empty($conf->loan->enabled)) $langs->load("loan"); +if (!empty($conf->salaries->enabled)) $langs->load("salaries"); $id = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('account', 'int')); $ref = GETPOST('ref', 'alpha'); -$action=GETPOST('action', 'alpha'); -$confirm=GETPOST('confirm', 'alpha'); -$rowid=GETPOST("rowid", 'int'); -$orig_account=GETPOST("orig_account"); -$backtopage=GETPOST('backtopage', 'alpha'); -$cancel=GETPOST('cancel', 'alpha'); +$action = GETPOST('action', 'alpha'); +$confirm = GETPOST('confirm', 'alpha'); +$rowid = GETPOST("rowid", 'int'); +$orig_account = GETPOST("orig_account"); +$backtopage = GETPOST('backtopage', 'alpha'); +$cancel = GETPOST('cancel', 'alpha'); // Security check -$fieldvalue = (! empty($id) ? $id : (! empty($ref) ? $ref :'')); -$fieldtype = (! empty($ref) ? 'ref' :'rowid'); -if ($user->socid) $socid=$user->socid; -$result=restrictedArea($user, 'banque', $fieldvalue, 'bank_account', '', '', $fieldtype); -if (! $user->rights->banque->lire && ! $user->rights->banque->consolidate) accessforbidden(); +$fieldvalue = (!empty($id) ? $id : (!empty($ref) ? $ref : '')); +$fieldtype = (!empty($ref) ? 'ref' : 'rowid'); +if ($user->socid) $socid = $user->socid; +$result = restrictedArea($user, 'banque', $fieldvalue, 'bank_account', '', '', $fieldtype); +if (!$user->rights->banque->lire && !$user->rights->banque->consolidate) accessforbidden(); /* @@ -92,10 +92,10 @@ if ($user->rights->banque->consolidate && $action == 'donext') if ($action == 'confirm_delete_categ' && $confirm == "yes" && $user->rights->banque->modifier) { - $cat1=GETPOST("cat1", 'int'); + $cat1 = GETPOST("cat1", 'int'); if (!empty($rowid) && !empty($cat1)) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid = ".$rowid." AND fk_categ = ".$cat1; - if (! $db->query($sql)) + if (!$db->query($sql)) { dol_print_error($db); } @@ -108,7 +108,7 @@ if ($action == 'confirm_delete_categ' && $confirm == "yes" && $user->rights->ban if ($user->rights->banque->modifier && $action == "update") { - $error=0; + $error = 0; $acline = new AccountLine($db); $acline->fetch($rowid); @@ -117,7 +117,7 @@ if ($user->rights->banque->modifier && $action == "update") $acsource->fetch($id); $actarget = new Account($db); - if (GETPOST('accountid', 'int') > 0 && ! $acline->rappro && ! $acline->getVentilExportCompta()) // We ask to change bank account + if (GETPOST('accountid', 'int') > 0 && !$acline->rappro && !$acline->getVentilExportCompta()) // We ask to change bank account { $actarget->fetch(GETPOST('accountid', 'int')); } @@ -132,52 +132,52 @@ if ($user->rights->banque->modifier && $action == "update") $error++; } - if (! $error) + if (!$error) { $db->begin(); $amount = price2num($_POST['amount']); $dateop = dol_mktime(12, 0, 0, $_POST["dateomonth"], $_POST["dateoday"], $_POST["dateoyear"]); - $dateval= dol_mktime(12, 0, 0, $_POST["datevmonth"], $_POST["datevday"], $_POST["datevyear"]); + $dateval = dol_mktime(12, 0, 0, $_POST["datevmonth"], $_POST["datevday"], $_POST["datevyear"]); $sql = "UPDATE ".MAIN_DB_PREFIX."bank"; - $sql.= " SET "; + $sql .= " SET "; // Always opened - if (isset($_POST['value'])) $sql.=" fk_type='".$db->escape($_POST['value'])."',"; - if (isset($_POST['num_chq'])) $sql.=" num_chq='".$db->escape($_POST["num_chq"])."',"; - if (isset($_POST['banque'])) $sql.=" banque='".$db->escape($_POST["banque"])."',"; - if (isset($_POST['emetteur'])) $sql.=" emetteur='".$db->escape($_POST["emetteur"])."',"; + if (isset($_POST['value'])) $sql .= " fk_type='".$db->escape($_POST['value'])."',"; + if (isset($_POST['num_chq'])) $sql .= " num_chq='".$db->escape($_POST["num_chq"])."',"; + if (isset($_POST['banque'])) $sql .= " banque='".$db->escape($_POST["banque"])."',"; + if (isset($_POST['emetteur'])) $sql .= " emetteur='".$db->escape($_POST["emetteur"])."',"; // Blocked when conciliated - if (! $acline->rappro) + if (!$acline->rappro) { - if (isset($_POST['label'])) $sql.=" label='".$db->escape($_POST["label"])."',"; - if (isset($_POST['amount'])) $sql.=" amount='".$amount."',"; - if (isset($_POST['dateomonth'])) $sql.=" dateo = '".$db->idate($dateop)."',"; - if (isset($_POST['datevmonth'])) $sql.=" datev = '".$db->idate($dateval)."',"; + if (isset($_POST['label'])) $sql .= " label='".$db->escape($_POST["label"])."',"; + if (isset($_POST['amount'])) $sql .= " amount='".$amount."',"; + if (isset($_POST['dateomonth'])) $sql .= " dateo = '".$db->idate($dateop)."',"; + if (isset($_POST['datevmonth'])) $sql .= " datev = '".$db->idate($dateval)."',"; } - $sql.= " fk_account = ".$actarget->id; - $sql.= " WHERE rowid = ".$acline->id; + $sql .= " fk_account = ".$actarget->id; + $sql .= " WHERE rowid = ".$acline->id; $result = $db->query($sql); - if (! $result) + if (!$result) { $error++; } - if (! $error) + if (!$error) { - $arrayofcategs=GETPOST('custcats', 'array'); + $arrayofcategs = GETPOST('custcats', 'array'); $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid = ".$rowid; - if (! $db->query($sql)) + if (!$db->query($sql)) { $error++; dol_print_error($db); } if (count($arrayofcategs)) { - foreach($arrayofcategs as $val) + foreach ($arrayofcategs as $val) { $sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_class (lineid, fk_categ) VALUES (".$rowid.", ".$val.")"; - if (! $db->query($sql)) + if (!$db->query($sql)) { $error++; dol_print_error($db); @@ -187,7 +187,7 @@ if ($user->rights->banque->modifier && $action == "update") } } - if (! $error) + if (!$error) { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); $db->commit(); @@ -203,8 +203,8 @@ if ($user->rights->banque->modifier && $action == "update") // Reconcile if ($user->rights->banque->consolidate && ($action == 'num_releve' || $action == 'setreconcile')) { - $num_rel=trim($_POST["num_rel"]); - $rappro=$_POST['reconciled']?1:0; + $num_rel = trim($_POST["num_rel"]); + $rappro = $_POST['reconciled'] ? 1 : 0; // Check parameters if ($rappro && empty($num_rel)) @@ -213,15 +213,15 @@ if ($user->rights->banque->consolidate && ($action == 'num_releve' || $action == $error++; } - if (! $error) + if (!$error) { $db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."bank"; - $sql.= " SET num_releve=".($num_rel?"'".$num_rel."'":"null"); - if (empty($num_rel)) $sql.= ", rappro = 0"; - else $sql.=", rappro = ".$rappro; - $sql.= " WHERE rowid = ".$rowid; + $sql .= " SET num_releve=".($num_rel ? "'".$num_rel."'" : "null"); + if (empty($num_rel)) $sql .= ", rappro = 0"; + else $sql .= ", rappro = ".$rappro; + $sql .= " WHERE rowid = ".$rowid; dol_syslog("line.php", LOG_DEBUG); $result = $db->query($sql); @@ -267,11 +267,11 @@ $tabs = array( $sql = "SELECT b.rowid,b.dateo as do,b.datev as dv, b.amount, b.label, b.rappro,"; -$sql.= " b.num_releve, b.fk_user_author, b.num_chq, b.fk_type, b.fk_account, b.fk_bordereau as receiptid,"; -$sql.= " b.emetteur,b.banque"; -$sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; -$sql.= " WHERE rowid=".$rowid; -$sql.= " ORDER BY dateo ASC"; +$sql .= " b.num_releve, b.fk_user_author, b.num_chq, b.fk_type, b.fk_account, b.fk_bordereau as receiptid,"; +$sql .= " b.emetteur,b.banque"; +$sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; +$sql .= " WHERE rowid=".$rowid; +$sql .= " ORDER BY dateo ASC"; $result = $db->query($sql); if ($result) { @@ -282,14 +282,14 @@ if ($result) $total = $total + $objp->amount; - $acct=new Account($db); + $acct = new Account($db); $acct->fetch($objp->fk_account); $account = $acct->id; $bankline = new AccountLine($db); $bankline->fetch($rowid, $ref); - $links=$acct->get_url($rowid); + $links = $acct->get_url($rowid); $bankline->load_previous_next_ref('', 'rowid'); // Confirmations @@ -321,7 +321,7 @@ if ($result) // Bank account print '
    '; print ''; print ''; } @@ -532,13 +532,13 @@ if ($result) { print ''; } @@ -555,7 +555,7 @@ if ($result) if ($user->rights->banque->modifier || $user->rights->banque->consolidate) { print ''; } else @@ -601,12 +601,12 @@ if ($result) print ""; // Categories - if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) + if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) { $langs->load('categories'); // Bank line - print '"; @@ -647,12 +647,12 @@ if ($result) print ''; @@ -667,7 +667,7 @@ if ($result) if ($user->rights->banque->consolidate) { print ''; } else diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index 82cdd4e826a..c737af4a89e 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -205,9 +205,9 @@ $paymentvatstatic = new TVA($db); $bankstatic = new Account($db); $banklinestatic = new AccountLine($db); $remisestatic = new RemiseCheque($db); -$paymentdonationstatic=new PaymentDonation($db); -$paymentloanstatic=new PaymentLoan($db); -$paymentvariousstatic=new PaymentVarious($db); +$paymentdonationstatic = new PaymentDonation($db); +$paymentloanstatic = new PaymentLoan($db); +$paymentvariousstatic = new PaymentVarious($db); // Must be before button action $param = ''; @@ -518,28 +518,28 @@ else print ''; $newline = 0; } - elseif ($links[$key]['type']=='payment_donation') + elseif ($links[$key]['type'] == 'payment_donation') { - $paymentdonationstatic->id=$links[$key]['url_id']; - $paymentdonationstatic->ref=$langs->trans("Payment"); + $paymentdonationstatic->id = $links[$key]['url_id']; + $paymentdonationstatic->ref = $langs->trans("Payment"); print ' '.$paymentdonationstatic->getNomUrl(1); $newline = 0; } - elseif ($links[$key]['type']=='payment_loan') + elseif ($links[$key]['type'] == 'payment_loan') { - $paymentloanstatic->id=$links[$key]['url_id']; - $paymentloanstatic->ref=$langs->trans("Payment"); + $paymentloanstatic->id = $links[$key]['url_id']; + $paymentloanstatic->ref = $langs->trans("Payment"); print ' '.$paymentloanstatic->getNomUrl(1); $newline = 0; } - elseif ($links[$key]['type']=='payment_various') + elseif ($links[$key]['type'] == 'payment_various') { - $paymentvariousstatic->id=$links[$key]['url_id']; - $paymentvariousstatic->ref=$langs->trans("Payment"); + $paymentvariousstatic->id = $links[$key]['url_id']; + $paymentvariousstatic->ref = $langs->trans("Payment"); print ' '.$paymentvariousstatic->getNomUrl(1); $newline = 0; } - elseif ($links[$key]['type']=='banktransfert') { + elseif ($links[$key]['type'] == 'banktransfert') { // Do not show link to transfer since there is no transfer card (avoid confusion). Can already be accessed from transaction detail. if ($objp->amount > 0) { diff --git a/htdocs/compta/bank/transfer.php b/htdocs/compta/bank/transfer.php index 611d2fc42b0..cb6073f1109 100644 --- a/htdocs/compta/bank/transfer.php +++ b/htdocs/compta/bank/transfer.php @@ -34,7 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // Load translation files required by the page $langs->loadLangs(array("banks", "categories", "multicurrency")); -if (! $user->rights->banque->transfer) +if (!$user->rights->banque->transfer) accessforbidden(); $action = GETPOST('action', 'alpha'); @@ -51,46 +51,46 @@ if ($action == 'add') $dateo = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); $label = GETPOST('label', 'alpha'); - $amount= GETPOST('amount', 'alpha'); - $amountto= GETPOST('amountto', 'alpha'); + $amount = GETPOST('amount', 'alpha'); + $amountto = GETPOST('amountto', 'alpha'); - if (! $label) + if (!$label) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Description")), null, 'errors'); } - if (! $amount) + if (!$amount) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")), null, 'errors'); } - if (! GETPOST('account_from', 'int')) + if (!GETPOST('account_from', 'int')) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("TransferFrom")), null, 'errors'); } - if (! GETPOST('account_to', 'int')) + if (!GETPOST('account_to', 'int')) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("TransferTo")), null, 'errors'); } - if (! $error) + if (!$error) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; - $accountfrom=new Account($db); + $accountfrom = new Account($db); $accountfrom->fetch(GETPOST('account_from', 'int')); - $accountto=new Account($db); + $accountto = new Account($db); $accountto->fetch(GETPOST('account_to', 'int')); if ($accountto->currency_code == $accountfrom->currency_code) { - $amountto=$amount; + $amountto = $amount; } else { - if (! $amountto) + if (!$amountto) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AmountTo")), null, 'errors'); @@ -101,31 +101,31 @@ if ($action == 'add') { $db->begin(); - $bank_line_id_from=0; - $bank_line_id_to=0; - $result=0; + $bank_line_id_from = 0; + $bank_line_id_to = 0; + $result = 0; // By default, electronic transfert from bank to bank - $typefrom='PRE'; - $typeto='VIR'; + $typefrom = 'PRE'; + $typeto = 'VIR'; if ($accountto->courant == Account::TYPE_CASH || $accountfrom->courant == Account::TYPE_CASH) { // This is transfer of change - $typefrom='LIQ'; - $typeto='LIQ'; + $typefrom = 'LIQ'; + $typeto = 'LIQ'; } - if (! $error) $bank_line_id_from = $accountfrom->addline($dateo, $typefrom, $label, -1*price2num($amount), '', '', $user); - if (! ($bank_line_id_from > 0)) $error++; - if (! $error) $bank_line_id_to = $accountto->addline($dateo, $typeto, $label, price2num($amountto), '', '', $user); - if (! ($bank_line_id_to > 0)) $error++; + if (!$error) $bank_line_id_from = $accountfrom->addline($dateo, $typefrom, $label, -1 * price2num($amount), '', '', $user); + if (!($bank_line_id_from > 0)) $error++; + if (!$error) $bank_line_id_to = $accountto->addline($dateo, $typeto, $label, price2num($amountto), '', '', $user); + if (!($bank_line_id_to > 0)) $error++; - if (! $error) $result=$accountfrom->add_url_line($bank_line_id_from, $bank_line_id_to, DOL_URL_ROOT.'/compta/bank/line.php?rowid=', '(banktransfert)', 'banktransfert'); - if (! ($result > 0)) $error++; - if (! $error) $result=$accountto->add_url_line($bank_line_id_to, $bank_line_id_from, DOL_URL_ROOT.'/compta/bank/line.php?rowid=', '(banktransfert)', 'banktransfert'); - if (! ($result > 0)) $error++; + if (!$error) $result = $accountfrom->add_url_line($bank_line_id_from, $bank_line_id_to, DOL_URL_ROOT.'/compta/bank/line.php?rowid=', '(banktransfert)', 'banktransfert'); + if (!($result > 0)) $error++; + if (!$error) $result = $accountto->add_url_line($bank_line_id_to, $bank_line_id_from, DOL_URL_ROOT.'/compta/bank/line.php?rowid=', '(banktransfert)', 'banktransfert'); + if (!($result > 0)) $error++; - if (! $error) + if (!$error) { $mesgs = $langs->trans("TransferFromToDone", ''.$accountfrom->label."", ''.$accountto->label."", $amount, $langs->transnoentities("Currency".$conf->currency)); setEventMessages($mesgs, null, 'mesgs'); @@ -214,17 +214,17 @@ print ' '; -$form=new Form($db); +$form = new Form($db); -$account_from=''; -$account_to=''; -$label=''; -$amount=''; +$account_from = ''; +$account_to = ''; +$label = ''; +$amount = ''; if ($error) { - $account_from = GETPOST('account_from', 'int'); - $account_to = GETPOST('account_to', 'int'); + $account_from = GETPOST('account_from', 'int'); + $account_to = GETPOST('account_to', 'int'); $label = GETPOST('label', 'alpha'); $amount = GETPOST('amount', 'alpha'); } @@ -246,17 +246,17 @@ print ''; print ''; -$var=false; +$var = false; print '"; print "\n"; print "\n"; print ''; print ''; diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php index 6573207a117..ccd6b24c6b9 100644 --- a/htdocs/compta/bank/various_payment/card.php +++ b/htdocs/compta/bank/various_payment/card.php @@ -40,37 +40,37 @@ if (!empty($conf->projet->enabled)) $langs->loadLangs(array("compta", "banks", "bills", "users", "accountancy", "categories")); // Get parameters -$id = GETPOST('id', 'int'); +$id = GETPOST('id', 'int'); $action = GETPOST('action', 'alpha'); $cancel = GETPOST('cancel', 'aZ09'); -$backtopage = GETPOST('backtopage', 'alpha'); +$backtopage = GETPOST('backtopage', 'alpha'); -$accountid = GETPOST("accountid") > 0 ? GETPOST("accountid", "int") : 0; -$label = GETPOST("label", "alpha"); -$sens = GETPOST("sens", "int"); -$amount = price2num(GETPOST("amount", "alpha")); -$paymenttype = GETPOST("paymenttype", "int"); -$accountancy_code = GETPOST("accountancy_code", "alpha"); -$subledger_account = GETPOST("subledger_account", "alpha"); -$projectid = (GETPOST('projectid', 'int') ? GETPOST('projectid', 'int') : GETPOST('fk_project', 'int')); +$accountid = GETPOST("accountid") > 0 ? GETPOST("accountid", "int") : 0; +$label = GETPOST("label", "alpha"); +$sens = GETPOST("sens", "int"); +$amount = price2num(GETPOST("amount", "alpha")); +$paymenttype = GETPOST("paymenttype", "int"); +$accountancy_code = GETPOST("accountancy_code", "alpha"); +$subledger_account = GETPOST("subledger_account", "alpha"); +$projectid = (GETPOST('projectid', 'int') ? GETPOST('projectid', 'int') : GETPOST('fk_project', 'int')); // Security check $socid = GETPOST("socid", "int"); -if ($user->socid) $socid=$user->socid; +if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'banque', '', '', ''); $object = new PaymentVarious($db); // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -$hookmanager->initHooks(array('variouscard','globalcard')); +$hookmanager->initHooks(array('variouscard', 'globalcard')); /** * Actions */ -$parameters=array(); -$reshook=$hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +$parameters = array(); +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if (empty($reshook)) @@ -429,44 +429,44 @@ if ($id) { $alreadyaccounted = $object->getVentilExportCompta(); - $head=various_payment_prepare_head($object); + $head = various_payment_prepare_head($object); dol_fiche_head($head, 'card', $langs->trans("VariousPayment"), -1, $object->picto); - $morehtmlref='
    '; + $morehtmlref = '
    '; // Project - if (! empty($conf->projet->enabled)) + if (!empty($conf->projet->enabled)) { $langs->load("projects"); - $morehtmlref.=$langs->trans('Project') . ' '; + $morehtmlref .= $langs->trans('Project').' '; if ($user->rights->banque->modifier) { if ($action != 'classify') { - $morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; + $morehtmlref .= ''.img_edit($langs->transnoentitiesnoconv('SetProject')).' : '; } if ($action == 'classify') { //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects(0, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.=''; + $morehtmlref .= '
    '; + $morehtmlref .= ''; + $morehtmlref .= ''; + $morehtmlref .= $formproject->select_projects(0, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref .= ''; + $morehtmlref .= ''; } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); } } else { - if (! empty($object->fk_project)) { + if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref.=$proj->getNomUrl(1); + $morehtmlref .= $proj->getNomUrl(1); } else { - $morehtmlref.=''; + $morehtmlref .= ''; } } } - $morehtmlref.='
    '; - $linkback = ''.$langs->trans("BackToList").''; + $morehtmlref .= '
    '; + $linkback = ''.$langs->trans("BackToList").''; dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlright); diff --git a/htdocs/compta/bank/various_payment/info.php b/htdocs/compta/bank/various_payment/info.php index f0f584ca99b..05a7d28c8c8 100644 --- a/htdocs/compta/bank/various_payment/info.php +++ b/htdocs/compta/bank/various_payment/info.php @@ -30,12 +30,12 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; // Load translation files required by the page $langs->loadLangs(array("compta", "banks", "bills", "users", "accountancy")); -$id=GETPOST('id', 'int'); -$action=GETPOST('action', 'aZ09'); +$id = GETPOST('id', 'int'); +$action = GETPOST('action', 'aZ09'); // Security check $socid = GETPOST("socid", "int"); -if ($user->socid) $socid=$user->socid; +if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'banque', '', '', ''); /* @@ -53,40 +53,40 @@ $head = various_payment_prepare_head($object); dol_fiche_head($head, 'info', $langs->trans("VariousPayment"), -1, $object->picto); -$morehtmlref='
    '; +$morehtmlref = '
    '; // Project -if (! empty($conf->projet->enabled)) +if (!empty($conf->projet->enabled)) { $langs->load("projects"); - $morehtmlref.=$langs->trans('Project') . ' : '; + $morehtmlref .= $langs->trans('Project').' : '; if ($user->rights->banque->modifier && 0) { if ($action != 'classify') { - $morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; + $morehtmlref .= ''.img_edit($langs->transnoentitiesnoconv('SetProject')).' : '; } if ($action == 'classify') { //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects(0, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.=''; + $morehtmlref .= '
    '; + $morehtmlref .= ''; + $morehtmlref .= ''; + $morehtmlref .= $formproject->select_projects(0, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref .= ''; + $morehtmlref .= ''; } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); } } else { - if (! empty($object->fk_project)) { + if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref.=$proj->getNomUrl(1); + $morehtmlref .= $proj->getNomUrl(1); } else { - $morehtmlref.=''; + $morehtmlref .= ''; } } } -$morehtmlref.='
    '; -$linkback = ''.$langs->trans("BackToList").''; +$morehtmlref .= '
    '; +$linkback = ''.$langs->trans("BackToList").''; dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlright); diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index a6f68b31330..70a26d231e1 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -184,7 +184,7 @@ elseif ($action == "add") $action = "view"; } } - if ($contextpage == 'takepos'){ + if ($contextpage == 'takepos') { print " '; + $out .= ''; } else { - $out.= ''; + $out .= ''; } } diff --git a/htdocs/core/boxes/box_activity.php b/htdocs/core/boxes/box_activity.php index 40bfe965c60..65051b3c05b 100644 --- a/htdocs/core/boxes/box_activity.php +++ b/htdocs/core/boxes/box_activity.php @@ -30,9 +30,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_activity extends ModeleBoxes { - public $boxcode="activity"; - public $boximg="object_bill"; - public $boxlabel='BoxGlobalActivity'; + public $boxcode = "activity"; + public $boximg = "object_bill"; + public $boxlabel = 'BoxGlobalActivity'; public $depends = array("facture"); /** @@ -60,11 +60,11 @@ class box_activity extends ModeleBoxes $this->db = $db; // FIXME: Pb into some status - $this->enabled = ($conf->global->MAIN_FEATURES_LEVEL); // Not enabled by default due to bugs (see previous comments) + $this->enabled = ($conf->global->MAIN_FEATURES_LEVEL); // Not enabled by default due to bugs (see previous comments) - $this->hidden = ! ((! empty($conf->facture->enabled) && $user->rights->facture->lire) - || (! empty($conf->commande->enabled) && $user->rights->commande->lire) - || (! empty($conf->propal->enabled) && $user->rights->propale->lire) + $this->hidden = !((!empty($conf->facture->enabled) && $user->rights->facture->lire) + || (!empty($conf->commande->enabled) && $user->rights->commande->lire) + || (!empty($conf->propal->enabled) && $user->rights->propale->lire) ); } @@ -84,11 +84,11 @@ class box_activity extends ModeleBoxes $totalnb = 0; $line = 0; $cachetime = 3600; - $fileid = '-e'.$conf->entity.'-u'.$user->id.'-s'.$user->socid.'-r'.($user->rights->societe->client->voir?'1':'0').'.cache'; + $fileid = '-e'.$conf->entity.'-u'.$user->id.'-s'.$user->socid.'-r'.($user->rights->societe->client->voir ? '1' : '0').'.cache'; $now = dol_now(); - $nbofperiod=3; + $nbofperiod = 3; - if (! empty($conf->global->MAIN_BOX_ACTIVITY_DURATION)) $nbofperiod=$conf->global->MAIN_BOX_ACTIVITY_DURATION; + if (!empty($conf->global->MAIN_BOX_ACTIVITY_DURATION)) $nbofperiod = $conf->global->MAIN_BOX_ACTIVITY_DURATION; $textHead = $langs->trans("Activity").' - '.$langs->trans("LastXMonthRolling", $nbofperiod); $this->info_box_head = array( 'text' => $textHead, @@ -96,14 +96,14 @@ class box_activity extends ModeleBoxes ); // compute the year limit to show - $tmpdate= dol_time_plus_duree(dol_now(), -1*$nbofperiod, "m"); + $tmpdate = dol_time_plus_duree(dol_now(), -1 * $nbofperiod, "m"); // list the summary of the propals - if (! empty($conf->propal->enabled) && $user->rights->propale->lire) + if (!empty($conf->propal->enabled) && $user->rights->propale->lire) { include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; - $propalstatic=new Propal($this->db); + $propalstatic = new Propal($this->db); $cachedir = DOL_DATA_ROOT.'/propale/temp'; $filename = '/boxactivity-propal'.$fileid; @@ -112,29 +112,29 @@ class box_activity extends ModeleBoxes if ($refresh) { $sql = "SELECT p.fk_statut, SUM(p.total) as Mnttot, COUNT(*) as nb"; - $sql.= " FROM (".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as p"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= ")"; - $sql.= " WHERE p.entity IN (".getEntity('propal').")"; - $sql.= " AND p.fk_soc = s.rowid"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - $sql.= " AND p.datep >= '".$this->db->idate($tmpdate)."'"; - $sql.= " AND p.date_cloture IS NULL"; // just unclosed - $sql.= " GROUP BY p.fk_statut"; - $sql.= " ORDER BY p.fk_statut DESC"; + $sql .= " FROM (".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as p"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= ")"; + $sql .= " WHERE p.entity IN (".getEntity('propal').")"; + $sql .= " AND p.fk_soc = s.rowid"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + $sql .= " AND p.datep >= '".$this->db->idate($tmpdate)."'"; + $sql .= " AND p.date_cloture IS NULL"; // just unclosed + $sql .= " GROUP BY p.fk_statut"; + $sql .= " ORDER BY p.fk_statut DESC"; $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); - $j=0; + $j = 0; while ($j < $num) { - $data[$j]=$this->db->fetch_object($result); + $data[$j] = $this->db->fetch_object($result); $j++; } - if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) { + if (!empty($conf->global->MAIN_ACTIVATE_FILECACHE)) { dol_filecache($cachedir, $filename, $data); } $this->db->free($result); @@ -147,9 +147,9 @@ class box_activity extends ModeleBoxes $data = dol_readcachefile($cachedir, $filename); } - if (! empty($data)) + if (!empty($data)) { - $j=0; + $j = 0; while ($j < count($data)) { $this->info_box_contents[$line][0] = array( @@ -188,9 +188,9 @@ class box_activity extends ModeleBoxes } // list the summary of the orders - if (! empty($conf->commande->enabled) && $user->rights->commande->lire) { + if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; - $commandestatic=new Commande($this->db); + $commandestatic = new Commande($this->db); $langs->load("orders"); @@ -201,26 +201,26 @@ class box_activity extends ModeleBoxes if ($refresh) { $sql = "SELECT c.fk_statut, sum(c.total_ttc) as Mnttot, count(*) as nb"; - $sql.= " FROM (".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."commande as c"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= ")"; - $sql.= " WHERE c.entity = ".$conf->entity; - $sql.= " AND c.fk_soc = s.rowid"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - $sql.= " AND c.date_commande >= '".$this->db->idate($tmpdate)."'"; - $sql.= " GROUP BY c.fk_statut"; - $sql.= " ORDER BY c.fk_statut DESC"; + $sql .= " FROM (".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."commande as c"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= ")"; + $sql .= " WHERE c.entity = ".$conf->entity; + $sql .= " AND c.fk_soc = s.rowid"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + $sql .= " AND c.date_commande >= '".$this->db->idate($tmpdate)."'"; + $sql .= " GROUP BY c.fk_statut"; + $sql .= " ORDER BY c.fk_statut DESC"; $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); - $j=0; + $j = 0; while ($j < $num) { - $data[$j]=$this->db->fetch_object($result); + $data[$j] = $this->db->fetch_object($result); $j++; } - if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) { + if (!empty($conf->global->MAIN_ACTIVATE_FILECACHE)) { dol_filecache($cachedir, $filename, $data); } $this->db->free($result); @@ -231,8 +231,8 @@ class box_activity extends ModeleBoxes $data = dol_readcachefile($cachedir, $filename); } - if (! empty($data)) { - $j=0; + if (!empty($data)) { + $j = 0; while ($j < count($data)) { $this->info_box_contents[$line][0] = array( 'td' => 'class="left" width="16"', @@ -271,10 +271,10 @@ class box_activity extends ModeleBoxes // list the summary of the bills - if (! empty($conf->facture->enabled) && $user->rights->facture->lire) + if (!empty($conf->facture->enabled) && $user->rights->facture->lire) { include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; - $facturestatic=new Facture($this->db); + $facturestatic = new Facture($this->db); // part 1 $cachedir = DOL_DATA_ROOT.'/facture/temp'; @@ -285,26 +285,26 @@ class box_activity extends ModeleBoxes if ($refresh) { $sql = "SELECT f.fk_statut, SUM(f.total_ttc) as Mnttot, COUNT(*) as nb"; - $sql.= " FROM (".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= ")"; - $sql.= " WHERE f.entity IN (".getEntity('invoice').')'; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - $sql.= " AND f.fk_soc = s.rowid"; - $sql.= " AND f.datef >= '".$this->db->idate($tmpdate)."' AND f.paye=1"; - $sql.= " GROUP BY f.fk_statut"; - $sql.= " ORDER BY f.fk_statut DESC"; + $sql .= " FROM (".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= ")"; + $sql .= " WHERE f.entity IN (".getEntity('invoice').')'; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + $sql .= " AND f.fk_soc = s.rowid"; + $sql .= " AND f.datef >= '".$this->db->idate($tmpdate)."' AND f.paye=1"; + $sql .= " GROUP BY f.fk_statut"; + $sql .= " ORDER BY f.fk_statut DESC"; $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); - $j=0; + $j = 0; while ($j < $num) { - $data[$j]=$this->db->fetch_object($result); + $data[$j] = $this->db->fetch_object($result); $j++; } - if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) { + if (!empty($conf->global->MAIN_ACTIVATE_FILECACHE)) { dol_filecache($cachedir, $filename, $data); } $this->db->free($result); @@ -315,10 +315,10 @@ class box_activity extends ModeleBoxes $data = dol_readcachefile($cachedir, $filename); } - if (! empty($data)) { - $j=0; + if (!empty($data)) { + $j = 0; while ($j < count($data)) { - $billurl="search_status=2&paye=1&year=".$data[$j]->annee; + $billurl = "search_status=2&paye=1&year=".$data[$j]->annee; $this->info_box_contents[$line][0] = array( 'td' => 'class="left" width="16"', 'tooltip' => $langs->trans('Bills').' '.$facturestatic->LibStatut(1, $data[$j]->fk_statut, 0), @@ -353,7 +353,7 @@ class box_activity extends ModeleBoxes $line++; $j++; } - if (count($data)==0) + if (count($data) == 0) $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoRecordedInvoices"), @@ -369,22 +369,22 @@ class box_activity extends ModeleBoxes $data = array(); if ($refresh) { $sql = "SELECT f.fk_statut, SUM(f.total_ttc) as Mnttot, COUNT(*) as nb"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; - $sql.= " WHERE f.entity IN (".getEntity('invoice').')'; - $sql.= " AND f.fk_soc = s.rowid"; - $sql.= " AND f.datef >= '".$this->db->idate($tmpdate)."' AND f.paye=0"; - $sql.= " GROUP BY f.fk_statut"; - $sql.= " ORDER BY f.fk_statut DESC"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; + $sql .= " WHERE f.entity IN (".getEntity('invoice').')'; + $sql .= " AND f.fk_soc = s.rowid"; + $sql .= " AND f.datef >= '".$this->db->idate($tmpdate)."' AND f.paye=0"; + $sql .= " GROUP BY f.fk_statut"; + $sql .= " ORDER BY f.fk_statut DESC"; $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); - $j=0; + $j = 0; while ($j < $num) { - $data[$j]=$this->db->fetch_object($result); + $data[$j] = $this->db->fetch_object($result); $j++; } - if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) { + if (!empty($conf->global->MAIN_ACTIVATE_FILECACHE)) { dol_filecache($cachedir, $filename, $data); } $this->db->free($result); @@ -395,12 +395,12 @@ class box_activity extends ModeleBoxes $data = dol_readcachefile($cachedir, $filename); } - if (! empty($data)) { - $alreadypaid=-1; + if (!empty($data)) { + $alreadypaid = -1; - $j=0; + $j = 0; while ($j < count($data)) { - $billurl="search_status=".$data[$j]->fk_statut."&paye=0"; + $billurl = "search_status=".$data[$j]->fk_statut."&paye=0"; $this->info_box_contents[$line][0] = array( 'td' => 'class="left" width="16"', 'tooltip' => $langs->trans('Bills').' '.$facturestatic->LibStatut(0, $data[$j]->fk_statut, 0), @@ -431,7 +431,7 @@ class box_activity extends ModeleBoxes $line++; $j++; } - if (count($data)==0) { + if (count($data) == 0) { $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoRecordedInvoices"), diff --git a/htdocs/core/boxes/box_birthdays.php b/htdocs/core/boxes/box_birthdays.php index 05d4e1d3ac0..7c8c110db88 100644 --- a/htdocs/core/boxes/box_birthdays.php +++ b/htdocs/core/boxes/box_birthdays.php @@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_birthdays extends ModeleBoxes { - public $boxcode="birthdays"; - public $boximg="object_user"; - public $boxlabel="BoxTitleUserBirthdaysOfMonth"; + public $boxcode = "birthdays"; + public $boximg = "object_user"; + public $boxlabel = "BoxTitleUserBirthdaysOfMonth"; public $depends = array("user"); /** @@ -60,7 +60,7 @@ class box_birthdays extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->user->user->lire && empty($user->socid)); + $this->hidden = !($user->rights->user->user->lire && empty($user->socid)); } /** @@ -74,24 +74,24 @@ class box_birthdays extends ModeleBoxes global $user, $langs; $langs->load("boxes"); - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; include_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; - $userstatic=new User($this->db); + $userstatic = new User($this->db); $this->info_box_head = array('text' => $langs->trans("BoxTitleUserBirthdaysOfMonth")); if ($user->rights->user->user->lire) { - $tmparray=dol_getdate(dol_now(), true); + $tmparray = dol_getdate(dol_now(), true); $sql = "SELECT u.rowid, u.firstname, u.lastname, u.birth"; - $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; - $sql.= " WHERE u.entity IN (".getEntity('user').")"; - $sql.= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], $tmparray['year']); - $sql.= " ORDER BY u.birth ASC"; - $sql.= $this->db->plimit($max, 0); + $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; + $sql .= " WHERE u.entity IN (".getEntity('user').")"; + $sql .= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], $tmparray['year']); + $sql .= " ORDER BY u.birth ASC"; + $sql .= $this->db->plimit($max, 0); dol_syslog(get_class($this)."::loadBox", LOG_DEBUG); $result = $this->db->query($sql); @@ -107,7 +107,7 @@ class box_birthdays extends ModeleBoxes $userstatic->firstname = $objp->firstname; $userstatic->lastname = $objp->lastname; $userstatic->email = $objp->email; - $dateb=$this->db->jdate($objp->birth); + $dateb = $this->db->jdate($objp->birth); $age = date('Y', dol_now()) - date('Y', $dateb); $this->info_box_contents[$line][] = array( @@ -118,7 +118,7 @@ class box_birthdays extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'class="right"', - 'text' => dol_print_date($dateb, "day") . ' - ' . $age . ' ' . $langs->trans('DurationYears') + 'text' => dol_print_date($dateb, "day").' - '.$age.' '.$langs->trans('DurationYears') ); /*$this->info_box_contents[$line][] = array( @@ -129,7 +129,7 @@ class box_birthdays extends ModeleBoxes $line++; } - if ($num==0) $this->info_box_contents[$line][0] = array('td' => 'class="center opacitymedium"','text'=>$langs->trans("None")); + if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center opacitymedium"', 'text'=>$langs->trans("None")); $this->db->free($result); } diff --git a/htdocs/core/boxes/box_birthdays_members.php b/htdocs/core/boxes/box_birthdays_members.php index e48271c4d84..96fc97f2e37 100644 --- a/htdocs/core/boxes/box_birthdays_members.php +++ b/htdocs/core/boxes/box_birthdays_members.php @@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_birthdays_members extends ModeleBoxes { - public $boxcode="birthdays_members"; - public $boximg="object_user"; - public $boxlabel="BoxTitleMemberNextBirthdays"; + public $boxcode = "birthdays_members"; + public $boximg = "object_user"; + public $boxlabel = "BoxTitleMemberNextBirthdays"; public $depends = array("adherent"); /** @@ -60,7 +60,7 @@ class box_birthdays_members extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->adherent->lire && empty($user->socid)); + $this->hidden = !($user->rights->adherent->lire && empty($user->socid)); } /** @@ -74,25 +74,25 @@ class box_birthdays_members extends ModeleBoxes global $user, $langs; $langs->load("boxes"); - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; include_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; - $memberstatic=new Adherent($this->db); + $memberstatic = new Adherent($this->db); $this->info_box_head = array('text' => $langs->trans("BoxTitleMemberNextBirthdays")); if ($user->rights->adherent->lire) { - $tmparray=dol_getdate(dol_now(), true); + $tmparray = dol_getdate(dol_now(), true); $sql = "SELECT u.rowid, u.firstname, u.lastname, u.birth"; - $sql.= " FROM ".MAIN_DB_PREFIX."adherent as u"; - $sql.= " WHERE u.entity IN (".getEntity('adherent').")"; - $sql.= " AND u.statut = 1"; - $sql.= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], $tmparray['year']); - $sql.= " ORDER BY u.birth ASC"; - $sql.= $this->db->plimit($max, 0); + $sql .= " FROM ".MAIN_DB_PREFIX."adherent as u"; + $sql .= " WHERE u.entity IN (".getEntity('adherent').")"; + $sql .= " AND u.statut = 1"; + $sql .= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], $tmparray['year']); + $sql .= " ORDER BY u.birth ASC"; + $sql .= $this->db->plimit($max, 0); dol_syslog(get_class($this)."::loadBox", LOG_DEBUG); $result = $this->db->query($sql); @@ -108,7 +108,7 @@ class box_birthdays_members extends ModeleBoxes $memberstatic->firstname = $objp->firstname; $memberstatic->lastname = $objp->lastname; $memberstatic->email = $objp->email; - $dateb=$this->db->jdate($objp->birth); + $dateb = $this->db->jdate($objp->birth); $age = date('Y', dol_now()) - date('Y', $dateb); $this->info_box_contents[$line][] = array( @@ -119,7 +119,7 @@ class box_birthdays_members extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'class="right"', - 'text' => dol_print_date($dateb, "day") . ' - ' . $age . ' ' . $langs->trans('DurationYears') + 'text' => dol_print_date($dateb, "day").' - '.$age.' '.$langs->trans('DurationYears') ); /*$this->info_box_contents[$line][] = array( @@ -130,7 +130,7 @@ class box_birthdays_members extends ModeleBoxes $line++; } - if ($num==0) $this->info_box_contents[$line][0] = array('td' => 'class="center opacitymedium"','text'=>$langs->trans("None")); + if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center opacitymedium"', 'text'=>$langs->trans("None")); $this->db->free($result); } diff --git a/htdocs/core/boxes/box_boms.php b/htdocs/core/boxes/box_boms.php index 44102f0aab1..57c5ce2e2e2 100644 --- a/htdocs/core/boxes/box_boms.php +++ b/htdocs/core/boxes/box_boms.php @@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_boms extends ModeleBoxes { - public $boxcode="lastboms"; - public $boximg="object_bom"; - public $boxlabel="BoxTitleLatestModifiedBoms"; + public $boxcode = "lastboms"; + public $boximg = "object_bom"; + public $boxlabel = "BoxTitleLatestModifiedBoms"; public $depends = array("bom"); /** @@ -60,7 +60,7 @@ class box_boms extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->bom->read); + $this->hidden = !($user->rights->bom->read); } /** @@ -87,18 +87,18 @@ class box_boms extends ModeleBoxes if ($user->rights->bom->read) { $sql = "SELECT p.ref as product_ref, p.tobuy, p.tosell"; - $sql.= ", c.rowid"; - $sql.= ", c.date_creation"; - $sql.= ", c.tms"; - $sql.= ", c.ref"; - $sql.= ", c.status"; - $sql.= ", c.fk_user_valid"; - $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; - $sql.= ", ".MAIN_DB_PREFIX."bom_bom as c"; - $sql.= " WHERE c.fk_product = p.rowid"; - $sql.= " AND c.entity = ".$conf->entity; - $sql.= " ORDER BY c.tms DESC, c.ref DESC"; - $sql.= " ".$this->db->plimit($max, 0); + $sql .= ", c.rowid"; + $sql .= ", c.date_creation"; + $sql .= ", c.tms"; + $sql .= ", c.ref"; + $sql .= ", c.status"; + $sql .= ", c.fk_user_valid"; + $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; + $sql .= ", ".MAIN_DB_PREFIX."bom_bom as c"; + $sql .= " WHERE c.fk_product = p.rowid"; + $sql .= " AND c.entity = ".$conf->entity; + $sql .= " ORDER BY c.tms DESC, c.ref DESC"; + $sql .= " ".$this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) { @@ -108,7 +108,7 @@ class box_boms extends ModeleBoxes while ($line < $num) { $objp = $this->db->fetch_object($result); - $datem=$this->db->jdate($objp->tms); + $datem = $this->db->jdate($objp->tms); $bomstatic->id = $objp->rowid; $bomstatic->ref = $objp->ref; @@ -131,11 +131,11 @@ class box_boms extends ModeleBoxes 'asis' => 1, ); - if (! empty($conf->global->BOM_BOX_LAST_BOMS_SHOW_VALIDATE_USER)) { + if (!empty($conf->global->BOM_BOX_LAST_BOMS_SHOW_VALIDATE_USER)) { if ($objp->fk_user_valid > 0) $userstatic->fetch($objp->fk_user_valid); $this->info_box_contents[$line][] = array( 'td' => 'class="right"', - 'text' => (($objp->fk_user_valid > 0)?$userstatic->getNomUrl(1):''), + 'text' => (($objp->fk_user_valid > 0) ? $userstatic->getNomUrl(1) : ''), 'asis' => 1, ); } @@ -153,7 +153,7 @@ class box_boms extends ModeleBoxes $line++; } - if ($num==0) $this->info_box_contents[$line][0] = array('td' => 'class="center"','text'=>$langs->trans("NoRecordedOrders")); + if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedOrders")); $this->db->free($result); } else { diff --git a/htdocs/core/boxes/box_commandes.php b/htdocs/core/boxes/box_commandes.php index 10b9c52acb0..37a25c8084d 100644 --- a/htdocs/core/boxes/box_commandes.php +++ b/htdocs/core/boxes/box_commandes.php @@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_commandes extends ModeleBoxes { - public $boxcode="lastcustomerorders"; - public $boximg="object_order"; - public $boxlabel="BoxLastCustomerOrders"; + public $boxcode = "lastcustomerorders"; + public $boximg = "object_order"; + public $boxlabel = "BoxLastCustomerOrders"; public $depends = array("commande"); /** @@ -60,7 +60,7 @@ class box_commandes extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->commande->lire); + $this->hidden = !($user->rights->commande->lire); } /** @@ -83,35 +83,35 @@ class box_commandes extends ModeleBoxes $societestatic = new Societe($this->db); $userstatic = new User($this->db); - $this->info_box_head = array('text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."CustomerOrders", $max)); + $this->info_box_head = array('text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE ? "" : "Modified")."CustomerOrders", $max)); if ($user->rights->commande->lire) { $sql = "SELECT s.nom as name"; - $sql.= ", s.rowid as socid"; - $sql.= ", s.code_client"; - $sql.= ", s.logo, s.email"; - $sql.= ", c.ref, c.tms"; - $sql.= ", c.rowid"; - $sql.= ", c.date_commande"; - $sql.= ", c.ref_client"; - $sql.= ", c.fk_statut"; - $sql.= ", c.fk_user_valid"; - $sql.= ", c.facture"; - $sql.= ", c.total_ht"; - $sql.= ", c.tva as total_tva"; - $sql.= ", c.total_ttc"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql.= ", ".MAIN_DB_PREFIX."commande as c"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE c.fk_soc = s.rowid"; - $sql.= " AND c.entity = ".$conf->entity; - if (! empty($conf->global->ORDER_BOX_LAST_ORDERS_VALIDATED_ONLY)) $sql.=" AND c.fk_statut = 1"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($user->socid) $sql.= " AND s.rowid = ".$user->socid; - if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql.= " ORDER BY c.date_commande DESC, c.ref DESC "; - else $sql.= " ORDER BY c.tms DESC, c.ref DESC "; - $sql.= $this->db->plimit($max, 0); + $sql .= ", s.rowid as socid"; + $sql .= ", s.code_client"; + $sql .= ", s.logo, s.email"; + $sql .= ", c.ref, c.tms"; + $sql .= ", c.rowid"; + $sql .= ", c.date_commande"; + $sql .= ", c.ref_client"; + $sql .= ", c.fk_statut"; + $sql .= ", c.fk_user_valid"; + $sql .= ", c.facture"; + $sql .= ", c.total_ht"; + $sql .= ", c.tva as total_tva"; + $sql .= ", c.total_ttc"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql .= ", ".MAIN_DB_PREFIX."commande as c"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE c.fk_soc = s.rowid"; + $sql .= " AND c.entity = ".$conf->entity; + if (!empty($conf->global->ORDER_BOX_LAST_ORDERS_VALIDATED_ONLY)) $sql .= " AND c.fk_statut = 1"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY c.date_commande DESC, c.ref DESC "; + else $sql .= " ORDER BY c.tms DESC, c.ref DESC "; + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) { @@ -121,8 +121,8 @@ class box_commandes extends ModeleBoxes while ($line < $num) { $objp = $this->db->fetch_object($result); - $date=$this->db->jdate($objp->date_commande); - $datem=$this->db->jdate($objp->tms); + $date = $this->db->jdate($objp->date_commande); + $datem = $this->db->jdate($objp->tms); $commandestatic->id = $objp->rowid; $commandestatic->ref = $objp->ref; $commandestatic->ref_client = $objp->ref_client; @@ -152,11 +152,11 @@ class box_commandes extends ModeleBoxes 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); - if (! empty($conf->global->ORDER_BOX_LAST_ORDERS_SHOW_VALIDATE_USER)) { + if (!empty($conf->global->ORDER_BOX_LAST_ORDERS_SHOW_VALIDATE_USER)) { if ($objp->fk_user_valid > 0) $userstatic->fetch($objp->fk_user_valid); $this->info_box_contents[$line][] = array( 'td' => 'class="right"', - 'text' => (($objp->fk_user_valid > 0)?$userstatic->getNomUrl(1):''), + 'text' => (($objp->fk_user_valid > 0) ? $userstatic->getNomUrl(1) : ''), 'asis' => 1, ); } @@ -174,7 +174,7 @@ class box_commandes extends ModeleBoxes $line++; } - if ($num==0) $this->info_box_contents[$line][0] = array('td' => 'class="center"','text'=>$langs->trans("NoRecordedOrders")); + if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedOrders")); $this->db->free($result); } else { diff --git a/htdocs/core/boxes/box_comptes.php b/htdocs/core/boxes/box_comptes.php index 00f5722076c..b3f23817712 100644 --- a/htdocs/core/boxes/box_comptes.php +++ b/htdocs/core/boxes/box_comptes.php @@ -33,10 +33,10 @@ include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; */ class box_comptes extends ModeleBoxes { - public $boxcode="currentaccounts"; - public $boximg="object_bill"; - public $boxlabel="BoxCurrentAccounts"; - public $depends = array("banque"); // Box active if module banque active + public $boxcode = "currentaccounts"; + public $boximg = "object_bill"; + public $boxlabel = "BoxCurrentAccounts"; + public $depends = array("banque"); // Box active if module banque active /** * @var DoliDB Database handler. @@ -63,10 +63,10 @@ class box_comptes extends ModeleBoxes $this->db = $db; // disable module for such cases - $listofmodulesforexternal=explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); - if (! in_array('banque', $listofmodulesforexternal) && ! empty($user->socid)) $this->enabled=0; // disabled for external users + $listofmodulesforexternal = explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); + if (!in_array('banque', $listofmodulesforexternal) && !empty($user->socid)) $this->enabled = 0; // disabled for external users - $this->hidden = ! ($user->rights->banque->lire); + $this->hidden = !($user->rights->banque->lire); } /** @@ -79,25 +79,25 @@ class box_comptes extends ModeleBoxes { global $user, $langs, $conf; - $this->max=$max; + $this->max = $max; $this->info_box_head = array('text' => $langs->trans("BoxTitleCurrentAccounts")); if ($user->rights->banque->lire) { $sql = "SELECT b.rowid, b.ref, b.label, b.bank,b.number, b.courant, b.clos, b.rappro, b.url"; - $sql.= ", b.code_banque, b.code_guichet, b.cle_rib, b.bic, b.iban_prefix as iban"; - $sql.= ", b.domiciliation, b.proprio, b.owner_address"; - $sql.= ", b.account_number, b.currency_code"; - $sql.= ", b.min_allowed, b.min_desired, comment"; - $sql.= ', b.fk_accountancy_journal'; - $sql.= ', aj.code as accountancy_journal'; - $sql.= " FROM ".MAIN_DB_PREFIX."bank_account as b"; - $sql.= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'accounting_journal as aj ON aj.rowid=b.fk_accountancy_journal'; - $sql.= " WHERE b.entity = ".$conf->entity; - $sql.= " AND clos = 0"; + $sql .= ", b.code_banque, b.code_guichet, b.cle_rib, b.bic, b.iban_prefix as iban"; + $sql .= ", b.domiciliation, b.proprio, b.owner_address"; + $sql .= ", b.account_number, b.currency_code"; + $sql .= ", b.min_allowed, b.min_desired, comment"; + $sql .= ', b.fk_accountancy_journal'; + $sql .= ', aj.code as accountancy_journal'; + $sql .= " FROM ".MAIN_DB_PREFIX."bank_account as b"; + $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'accounting_journal as aj ON aj.rowid=b.fk_accountancy_journal'; + $sql .= " WHERE b.entity = ".$conf->entity; + $sql .= " AND clos = 0"; //$sql.= " AND courant = 1"; - $sql.= " ORDER BY label"; - $sql.= $this->db->plimit($max, 0); + $sql .= " ORDER BY label"; + $sql .= $this->db->plimit($max, 0); dol_syslog(get_class($this)."::loadBox", LOG_DEBUG); $result = $this->db->query($sql); @@ -118,7 +118,7 @@ class box_comptes extends ModeleBoxes $account_static->account_number = $objp->account_number; $account_static->currency_code = $objp->currency_code; $account_static->accountancy_journal = $objp->accountancy_journal; - $solde=$account_static->solde(0); + $solde = $account_static->solde(0); $solde_total[$objp->currency_code] += $solde; diff --git a/htdocs/core/boxes/box_contracts.php b/htdocs/core/boxes/box_contracts.php index 36a4f5416f9..75fbc207134 100644 --- a/htdocs/core/boxes/box_contracts.php +++ b/htdocs/core/boxes/box_contracts.php @@ -31,10 +31,10 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_contracts extends ModeleBoxes { - public $boxcode="lastcontracts"; - public $boximg="object_contract"; - public $boxlabel="BoxLastContracts"; - public $depends = array("contrat"); // conf->contrat->enabled + public $boxcode = "lastcontracts"; + public $boximg = "object_contract"; + public $boxlabel = "BoxLastContracts"; + public $depends = array("contrat"); // conf->contrat->enabled /** * @var DoliDB Database handler. @@ -59,7 +59,7 @@ class box_contracts extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->contrat->lire); + $this->hidden = !($user->rights->contrat->lire); } /** @@ -72,7 +72,7 @@ class box_contracts extends ModeleBoxes { global $user, $langs, $conf; - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; @@ -80,27 +80,27 @@ class box_contracts extends ModeleBoxes if ($user->rights->contrat->lire) { - $contractstatic=new Contrat($this->db); - $thirdpartytmp=new Societe($this->db); + $contractstatic = new Contrat($this->db); + $thirdpartytmp = new Societe($this->db); $sql = "SELECT s.nom as name, s.rowid as socid, s.email, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,"; - $sql.= " c.rowid, c.ref, c.statut as fk_statut, c.date_contrat, c.datec, c.fin_validite, c.date_cloture"; - $sql.= ", c.ref_customer, c.ref_supplier"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE c.fk_soc = s.rowid"; - $sql.= " AND c.entity = ".$conf->entity; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql.= " ORDER BY c.date_contrat DESC, c.ref DESC "; - else $sql.= " ORDER BY c.tms DESC, c.ref DESC "; - $sql.= $this->db->plimit($max, 0); + $sql .= " c.rowid, c.ref, c.statut as fk_statut, c.date_contrat, c.datec, c.fin_validite, c.date_cloture"; + $sql .= ", c.ref_customer, c.ref_supplier"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE c.fk_soc = s.rowid"; + $sql .= " AND c.entity = ".$conf->entity; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY c.date_contrat DESC, c.ref DESC "; + else $sql .= " ORDER BY c.tms DESC, c.ref DESC "; + $sql .= $this->db->plimit($max, 0); $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); - $now=dol_now(); + $now = dol_now(); $line = 0; @@ -110,17 +110,17 @@ class box_contracts extends ModeleBoxes { $objp = $this->db->fetch_object($resql); - $datec=$this->db->jdate($objp->datec); - $dateterm=$this->db->jdate($objp->fin_validite); - $dateclose=$this->db->jdate($objp->date_cloture); + $datec = $this->db->jdate($objp->datec); + $dateterm = $this->db->jdate($objp->fin_validite); + $dateclose = $this->db->jdate($objp->date_cloture); $late = ''; - $contractstatic->statut=$objp->fk_statut; - $contractstatic->id=$objp->rowid; - $contractstatic->ref=$objp->ref; + $contractstatic->statut = $objp->fk_statut; + $contractstatic->id = $objp->rowid; + $contractstatic->ref = $objp->ref; $contractstatic->ref_customer = $objp->ref_customer; $contractstatic->ref_supplier = $objp->ref_supplier; - $result=$contractstatic->fetch_lines(); + $result = $contractstatic->fetch_lines(); $thirdpartytmp->name = $objp->name; $thirdpartytmp->id = $objp->socid; @@ -162,7 +162,7 @@ class box_contracts extends ModeleBoxes $line++; } - if ($num==0) + if ($num == 0) $this->info_box_contents[$line][0] = array( 'td' => 'class="center opacitymedium"', 'text'=>$langs->trans("NoRecordedContracts"), diff --git a/htdocs/core/boxes/box_external_rss.php b/htdocs/core/boxes/box_external_rss.php index e0ac847c6f0..93ac43d6c22 100644 --- a/htdocs/core/boxes/box_external_rss.php +++ b/htdocs/core/boxes/box_external_rss.php @@ -34,9 +34,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_external_rss extends ModeleBoxes { - public $boxcode="lastrssinfos"; - public $boximg="object_rss"; - public $boxlabel="BoxLastRssInfos"; + public $boxcode = "lastrssinfos"; + public $boximg = "object_rss"; + public $boxlabel = "BoxLastRssInfos"; public $depends = array("externalrss"); /** @@ -44,7 +44,7 @@ class box_external_rss extends ModeleBoxes */ public $db; - public $paramdef; // Params of box definition (not user params) + public $paramdef; // Params of box definition (not user params) public $info_box_head = array(); public $info_box_contents = array(); @@ -58,8 +58,8 @@ class box_external_rss extends ModeleBoxes */ public function __construct($db, $param) { - $this->db=$db; - $this->paramdef=$param; + $this->db = $db; + $this->paramdef = $param; } /** @@ -74,93 +74,93 @@ class box_external_rss extends ModeleBoxes global $user, $langs, $conf; $langs->load("boxes"); - $this->max=$max; + $this->max = $max; // On recupere numero de param de la boite preg_match('/^([0-9]+) /', $this->paramdef, $reg); - $site=$reg[1]; + $site = $reg[1]; // Create dir nor required // documents/externalrss is created by module activation // documents/externalrss/tmp is created by rssparser - $keyforparamurl="EXTERNAL_RSS_URLRSS_".$site; - $keyforparamtitle="EXTERNAL_RSS_TITLE_".$site; + $keyforparamurl = "EXTERNAL_RSS_URLRSS_".$site; + $keyforparamtitle = "EXTERNAL_RSS_TITLE_".$site; // Get RSS feed - $url=$conf->global->$keyforparamurl; + $url = $conf->global->$keyforparamurl; - $rssparser=new RssParser($this->db); + $rssparser = new RssParser($this->db); $result = $rssparser->parser($url, $this->max, $cachedelay, $conf->externalrss->dir_temp); // INFO on channel - $description=$rssparser->getDescription(); - $link=$rssparser->getLink(); + $description = $rssparser->getDescription(); + $link = $rssparser->getLink(); - $title=$langs->trans("BoxTitleLastRssInfos", $max, $conf->global->$keyforparamtitle); - if ($result < 0 || ! empty($rssparser->error)) + $title = $langs->trans("BoxTitleLastRssInfos", $max, $conf->global->$keyforparamtitle); + if ($result < 0 || !empty($rssparser->error)) { // Show warning - $title.=" ".img_error($langs->trans("FailedToRefreshDataInfoNotUpToDate", ($rssparser->getLastFetchDate()?dol_print_date($rssparser->getLastFetchDate(), "dayhourtext"):$langs->trans("Unknown")))); - $this->info_box_head = array('text' => $title,'limit' => 0); + $title .= " ".img_error($langs->trans("FailedToRefreshDataInfoNotUpToDate", ($rssparser->getLastFetchDate() ?dol_print_date($rssparser->getLastFetchDate(), "dayhourtext") : $langs->trans("Unknown")))); + $this->info_box_head = array('text' => $title, 'limit' => 0); } else { $this->info_box_head = array( 'text' => $title, 'sublink' => $link, - 'subtext'=>$langs->trans("LastRefreshDate").': '.($rssparser->getLastFetchDate()?dol_print_date($rssparser->getLastFetchDate(), "dayhourtext"):$langs->trans("Unknown")), + 'subtext'=>$langs->trans("LastRefreshDate").': '.($rssparser->getLastFetchDate() ?dol_print_date($rssparser->getLastFetchDate(), "dayhourtext") : $langs->trans("Unknown")), 'subpicto'=>'globe', 'target'=>'_blank', ); } // INFO on items - $items=$rssparser->getItems(); + $items = $rssparser->getItems(); //print '
    '.print_r($items,true).'
    '; - $nbitems=count($items); - for($line = 0; $line < $max && $line < $nbitems; $line++) + $nbitems = count($items); + for ($line = 0; $line < $max && $line < $nbitems; $line++) { $item = $items[$line]; // Feed common fields - $href = $item['link']; + $href = $item['link']; $title = urldecode($item['title']); - $date = $item['date_timestamp']; // date will be empty if conversion into timestamp failed + $date = $item['date_timestamp']; // date will be empty if conversion into timestamp failed if ($rssparser->getFormat() == 'rss') // If RSS { - if (! $date && isset($item['pubdate'])) $date=$item['pubdate']; - if (! $date && isset($item['dc']['date'])) $date=$item['dc']['date']; + if (!$date && isset($item['pubdate'])) $date = $item['pubdate']; + if (!$date && isset($item['dc']['date'])) $date = $item['dc']['date']; //$item['dc']['language'] //$item['dc']['publisher'] } if ($rssparser->getFormat() == 'atom') // If Atom { - if (! $date && isset($item['issued'])) $date=$item['issued']; - if (! $date && isset($item['modified'])) $date=$item['modified']; + if (!$date && isset($item['issued'])) $date = $item['issued']; + if (!$date && isset($item['modified'])) $date = $item['modified']; //$item['issued'] //$item['modified'] //$item['atom_content'] } - if (is_numeric($date)) $date=dol_print_date($date, "dayhour"); + if (is_numeric($date)) $date = dol_print_date($date, "dayhour"); $isutf8 = utf8_check($title); - if (! $isutf8 && $conf->file->character_set_client == 'UTF-8') $title=utf8_encode($title); - elseif ($isutf8 && $conf->file->character_set_client == 'ISO-8859-1') $title=utf8_decode($title); + if (!$isutf8 && $conf->file->character_set_client == 'UTF-8') $title = utf8_encode($title); + elseif ($isutf8 && $conf->file->character_set_client == 'ISO-8859-1') $title = utf8_decode($title); - $title=preg_replace("/([[:alnum:]])\?([[:alnum:]])/", "\\1'\\2", $title); // Gere probleme des apostrophes mal codee/decodee par utf8 - $title=preg_replace("/^\s+/", "", $title); // Supprime espaces de debut - $this->info_box_contents["$href"]="$title"; + $title = preg_replace("/([[:alnum:]])\?([[:alnum:]])/", "\\1'\\2", $title); // Gere probleme des apostrophes mal codee/decodee par utf8 + $title = preg_replace("/^\s+/", "", $title); // Supprime espaces de debut + $this->info_box_contents["$href"] = "$title"; $tooltip = $title; - $description = ! empty($item['description'])?$item['description']:''; + $description = !empty($item['description']) ? $item['description'] : ''; $isutf8 = utf8_check($description); - if (! $isutf8 && $conf->file->character_set_client == 'UTF-8') $description=utf8_encode($description); - elseif ($isutf8 && $conf->file->character_set_client == 'ISO-8859-1') $description=utf8_decode($description); - $description=preg_replace("/([[:alnum:]])\?([[:alnum:]])/", "\\1'\\2", $description); - $description=preg_replace("/^\s+/", "", $description); - $description=str_replace("\r\n", "", $description); - $tooltip.= '
    '.$description; + if (!$isutf8 && $conf->file->character_set_client == 'UTF-8') $description = utf8_encode($description); + elseif ($isutf8 && $conf->file->character_set_client == 'ISO-8859-1') $description = utf8_decode($description); + $description = preg_replace("/([[:alnum:]])\?([[:alnum:]])/", "\\1'\\2", $description); + $description = preg_replace("/^\s+/", "", $description); + $description = str_replace("\r\n", "", $description); + $tooltip .= '
    '.$description; $this->info_box_contents[$line][0] = array( 'td' => 'class="left" width="16"', diff --git a/htdocs/core/boxes/box_factures.php b/htdocs/core/boxes/box_factures.php index 65724f5fa4b..ebaff31268d 100644 --- a/htdocs/core/boxes/box_factures.php +++ b/htdocs/core/boxes/box_factures.php @@ -30,9 +30,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_factures extends ModeleBoxes { - public $boxcode="lastcustomerbills"; - public $boximg="object_bill"; - public $boxlabel="BoxLastCustomerBills"; + public $boxcode = "lastcustomerbills"; + public $boximg = "object_bill"; + public $boxlabel = "BoxLastCustomerBills"; public $depends = array("facture"); /** @@ -58,7 +58,7 @@ class box_factures extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->facture->lire); + $this->hidden = !($user->rights->facture->lire); } /** @@ -71,7 +71,7 @@ class box_factures extends ModeleBoxes { global $conf, $user, $langs; - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; @@ -81,7 +81,7 @@ class box_factures extends ModeleBoxes $langs->load("bills"); - $text = $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."CustomerBills", $max); + $text = $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE ? "" : "Modified")."CustomerBills", $max); $this->info_box_head = array( 'text' => $text, 'limit'=> dol_strlen($text) @@ -89,29 +89,29 @@ class box_factures extends ModeleBoxes if ($user->rights->facture->lire) { $sql = "SELECT f.rowid as facid"; - $sql.= ", f.ref, f.type, f.total as total_ht"; - $sql.= ", f.tva as total_tva"; - $sql.= ", f.total_ttc"; - $sql.= ", f.datef as df"; - $sql.= ", f.paye, f.fk_statut, f.datec, f.tms"; - $sql.= ", s.rowid as socid, s.nom as name, s.code_client, s.email, s.tva_intra, s.code_compta, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6"; - $sql.= ", f.date_lim_reglement as datelimite"; - $sql.= " FROM (".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= ")"; - $sql.= " WHERE f.fk_soc = s.rowid"; - $sql.= " AND f.entity IN (".getEntity('invoice').")"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql.= " ORDER BY f.datef DESC, f.ref DESC "; - else $sql.= " ORDER BY f.tms DESC, f.ref DESC "; - $sql.= $this->db->plimit($max, 0); + $sql .= ", f.ref, f.type, f.total as total_ht"; + $sql .= ", f.tva as total_tva"; + $sql .= ", f.total_ttc"; + $sql .= ", f.datef as df"; + $sql .= ", f.paye, f.fk_statut, f.datec, f.tms"; + $sql .= ", s.rowid as socid, s.nom as name, s.code_client, s.email, s.tva_intra, s.code_compta, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6"; + $sql .= ", f.date_lim_reglement as datelimite"; + $sql .= " FROM (".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= ")"; + $sql .= " WHERE f.fk_soc = s.rowid"; + $sql .= " AND f.entity IN (".getEntity('invoice').")"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY f.datef DESC, f.ref DESC "; + else $sql .= " ORDER BY f.tms DESC, f.ref DESC "; + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); - $now=dol_now(); + $now = dol_now(); $line = 0; $l_due_date = $langs->trans('Late').' ('.$langs->trans('DateDue').': %s)'; @@ -179,7 +179,7 @@ class box_factures extends ModeleBoxes $line++; } - if ($num==0) + if ($num == 0) $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoRecordedInvoices"), diff --git a/htdocs/core/boxes/box_factures_fourn.php b/htdocs/core/boxes/box_factures_fourn.php index 9eb836fe1e2..30f3cd503c2 100644 --- a/htdocs/core/boxes/box_factures_fourn.php +++ b/htdocs/core/boxes/box_factures_fourn.php @@ -31,10 +31,10 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_factures_fourn extends ModeleBoxes { - public $boxcode="lastsupplierbills"; - public $boximg="object_bill"; - public $boxlabel="BoxLastSupplierBills"; - public $depends = array("facture","fournisseur"); + public $boxcode = "lastsupplierbills"; + public $boximg = "object_bill"; + public $boxlabel = "BoxLastSupplierBills"; + public $depends = array("facture", "fournisseur"); /** * @var DoliDB Database handler. @@ -59,7 +59,7 @@ class box_factures_fourn extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->fournisseur->facture->lire); + $this->hidden = !($user->rights->fournisseur->facture->lire); } /** @@ -72,7 +72,7 @@ class box_factures_fourn extends ModeleBoxes { global $conf, $user, $langs; - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; @@ -81,32 +81,32 @@ class box_factures_fourn extends ModeleBoxes $thirdpartytmp = new Fournisseur($this->db); $this->info_box_head = array( - 'text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."SupplierBills", $max) + 'text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE ? "" : "Modified")."SupplierBills", $max) ); if ($user->rights->fournisseur->facture->lire) { $sql = "SELECT s.nom as name, s.rowid as socid,"; - $sql.= " s.code_fournisseur, s.email,"; - $sql.= " s.logo,"; - $sql.= " f.rowid as facid, f.ref, f.ref_supplier,"; - $sql.= " f.total_ht,"; - $sql.= " f.total_tva,"; - $sql.= " f.total_ttc,"; - $sql.= " f.paye, f.fk_statut,"; - $sql.= ' f.datef as df,'; - $sql.= ' f.datec as datec,'; - $sql.= ' f.date_lim_reglement as datelimite, f.tms, f.type'; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql.= ", ".MAIN_DB_PREFIX."facture_fourn as f"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE f.fk_soc = s.rowid"; - $sql.= " AND f.entity = ".$conf->entity; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql.= " ORDER BY f.datef DESC, f.ref DESC "; - else $sql.= " ORDER BY f.tms DESC, f.ref DESC "; - $sql.= $this->db->plimit($max, 0); + $sql .= " s.code_fournisseur, s.email,"; + $sql .= " s.logo,"; + $sql .= " f.rowid as facid, f.ref, f.ref_supplier,"; + $sql .= " f.total_ht,"; + $sql .= " f.total_tva,"; + $sql .= " f.total_ttc,"; + $sql .= " f.paye, f.fk_statut,"; + $sql .= ' f.datef as df,'; + $sql .= ' f.datec as datec,'; + $sql .= ' f.date_lim_reglement as datelimite, f.tms, f.type'; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql .= ", ".MAIN_DB_PREFIX."facture_fourn as f"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE f.fk_soc = s.rowid"; + $sql .= " AND f.entity = ".$conf->entity; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY f.datef DESC, f.ref DESC "; + else $sql .= " ORDER BY f.tms DESC, f.ref DESC "; + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) @@ -114,13 +114,13 @@ class box_factures_fourn extends ModeleBoxes $num = $this->db->num_rows($result); $line = 0; - $l_due_date = $langs->trans('Late').' ('.$langs->trans('DateDue').': %s)'; + $l_due_date = $langs->trans('Late').' ('.$langs->trans('DateDue').': %s)'; while ($line < $num) { $objp = $this->db->fetch_object($result); - $datelimite=$this->db->jdate($objp->datelimite); - $date=$this->db->jdate($objp->df); - $datem=$this->db->jdate($objp->tms); + $datelimite = $this->db->jdate($objp->datelimite); + $date = $this->db->jdate($objp->df); + $datem = $this->db->jdate($objp->tms); $facturestatic->id = $objp->facid; $facturestatic->ref = $objp->ref; @@ -141,7 +141,7 @@ class box_factures_fourn extends ModeleBoxes $late = ''; if ($facturestatic->hasDelay()) { - $late=img_warning(sprintf($l_due_date, dol_print_date($datelimite, 'day'))); + $late = img_warning(sprintf($l_due_date, dol_print_date($datelimite, 'day'))); } $this->info_box_contents[$line][] = array( @@ -154,7 +154,7 @@ class box_factures_fourn extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'class="tdoverflowmax150"', 'text' => $objp->ref_supplier, - 'tooltip' => $langs->trans('SupplierInvoice').': '.($objp->ref?$objp->ref:$objp->facid).'
    '.$langs->trans('RefSupplier').': '.$objp->ref_supplier, + 'tooltip' => $langs->trans('SupplierInvoice').': '.($objp->ref ? $objp->ref : $objp->facid).'
    '.$langs->trans('RefSupplier').': '.$objp->ref_supplier, 'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid, ); @@ -176,7 +176,7 @@ class box_factures_fourn extends ModeleBoxes $fac = new FactureFournisseur($this->db); $fac->fetch($objp->facid); - $alreadypaid=$fac->getSommePaiement(); + $alreadypaid = $fac->getSommePaiement(); $this->info_box_contents[$line][] = array( 'td' => 'class="right" width="18"', 'text' => $facturestatic->LibStatut($objp->paye, $objp->fk_statut, 3, $alreadypaid, $objp->type), @@ -185,7 +185,7 @@ class box_factures_fourn extends ModeleBoxes $line++; } - if ($num==0) + if ($num == 0) $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoModifiedSupplierBills"), diff --git a/htdocs/core/boxes/box_factures_fourn_imp.php b/htdocs/core/boxes/box_factures_fourn_imp.php index b1b108931b1..c2b5e7c705e 100644 --- a/htdocs/core/boxes/box_factures_fourn_imp.php +++ b/htdocs/core/boxes/box_factures_fourn_imp.php @@ -33,7 +33,7 @@ class box_factures_fourn_imp extends ModeleBoxes public $boxcode = "oldestunpaidsupplierbills"; public $boximg = "object_bill"; public $boxlabel = "BoxOldestUnpaidSupplierBills"; - public $depends = array("facture","fournisseur"); + public $depends = array("facture", "fournisseur"); /** * @var DoliDB Database handler. @@ -58,7 +58,7 @@ class box_factures_fourn_imp extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->fournisseur->facture->lire); + $this->hidden = !($user->rights->fournisseur->facture->lire); } /** @@ -71,35 +71,35 @@ class box_factures_fourn_imp extends ModeleBoxes { global $conf, $user, $langs; - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; - $facturestatic=new FactureFournisseur($this->db); + $facturestatic = new FactureFournisseur($this->db); include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; - $thirdpartytmp=new Fournisseur($this->db); + $thirdpartytmp = new Fournisseur($this->db); $this->info_box_head = array('text' => $langs->trans("BoxTitleOldestUnpaidSupplierBills", $max)); if ($user->rights->fournisseur->facture->lire) { $sql = "SELECT s.nom as name, s.rowid as socid,"; - $sql.= " f.rowid as facid, f.ref, f.ref_supplier, f.date_lim_reglement as datelimite,"; - $sql.= " f.datef as df,"; - $sql.= " f.total_ht as total_ht,"; - $sql.= " f.tva as total_tva,"; - $sql.= " f.total_ttc,"; - $sql.= " f.paye, f.fk_statut, f.type"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql.= ",".MAIN_DB_PREFIX."facture_fourn as f"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE f.fk_soc = s.rowid"; - $sql.= " AND f.entity = ".$conf->entity; - $sql.= " AND f.paye=0"; - $sql.= " AND fk_statut = 1"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - $sql.= " ORDER BY datelimite DESC, f.ref_supplier DESC "; - $sql.= $this->db->plimit($max, 0); + $sql .= " f.rowid as facid, f.ref, f.ref_supplier, f.date_lim_reglement as datelimite,"; + $sql .= " f.datef as df,"; + $sql .= " f.total_ht as total_ht,"; + $sql .= " f.tva as total_tva,"; + $sql .= " f.total_ttc,"; + $sql .= " f.paye, f.fk_statut, f.type"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql .= ",".MAIN_DB_PREFIX."facture_fourn as f"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE f.fk_soc = s.rowid"; + $sql .= " AND f.entity = ".$conf->entity; + $sql .= " AND f.paye=0"; + $sql .= " AND fk_statut = 1"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + $sql .= " ORDER BY datelimite DESC, f.ref_supplier DESC "; + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) @@ -114,9 +114,9 @@ class box_factures_fourn_imp extends ModeleBoxes while ($line < $num) { $objp = $this->db->fetch_object($result); - $datelimite=$this->db->jdate($objp->datelimite); - $date=$this->db->jdate($objp->df); - $datem=$this->db->jdate($objp->tms); + $datelimite = $this->db->jdate($objp->datelimite); + $date = $this->db->jdate($objp->df); + $datem = $this->db->jdate($objp->tms); $facturestatic->id = $objp->facid; $facturestatic->ref = $objp->ref; $facturestatic->total_ht = $objp->total_ht; @@ -130,12 +130,12 @@ class box_factures_fourn_imp extends ModeleBoxes $thirdpartytmp->code_fournisseur = $objp->code_fournisseur; $thirdpartytmp->logo = $objp->logo; - $late=''; + $late = ''; if ($facturestatic->hasDelay()) { - $late=img_warning(sprintf($l_due_date, dol_print_date($datelimite, 'day'))); + $late = img_warning(sprintf($l_due_date, dol_print_date($datelimite, 'day'))); } - $tooltip = $langs->trans('SupplierInvoice') . ': ' . ($objp->ref?$objp->ref:$objp->facid) . '
    ' . $langs->trans('RefSupplier') . ': ' . $objp->ref_supplier; + $tooltip = $langs->trans('SupplierInvoice').': '.($objp->ref ? $objp->ref : $objp->facid).'
    '.$langs->trans('RefSupplier').': '.$objp->ref_supplier; $this->info_box_contents[$line][] = array( 'td' => 'class="nowraponall"', @@ -162,7 +162,7 @@ class box_factures_fourn_imp extends ModeleBoxes $fac = new FactureFournisseur($this->db); $fac->fetch($objp->facid); - $alreadypaid=$fac->getSommePaiement(); + $alreadypaid = $fac->getSommePaiement(); $this->info_box_contents[$line][] = array( 'td' => 'class="right" width="18"', 'text' => $facturestatic->LibStatut($objp->paye, $objp->fk_statut, 3, $alreadypaid, $objp->type), @@ -171,7 +171,7 @@ class box_factures_fourn_imp extends ModeleBoxes $line++; } - if ($num==0) + if ($num == 0) $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoUnpaidSupplierBills"), diff --git a/htdocs/core/boxes/box_ficheinter.php b/htdocs/core/boxes/box_ficheinter.php index a81b0cf3b86..e289c83d541 100644 --- a/htdocs/core/boxes/box_ficheinter.php +++ b/htdocs/core/boxes/box_ficheinter.php @@ -31,10 +31,10 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_ficheinter extends ModeleBoxes { - public $boxcode="ficheinter"; - public $boximg="object_intervention"; - public $boxlabel="BoxFicheInter"; - public $depends = array("ficheinter"); // conf->contrat->enabled + public $boxcode = "ficheinter"; + public $boximg = "object_intervention"; + public $boxlabel = "BoxFicheInter"; + public $depends = array("ficheinter"); // conf->contrat->enabled /** * @var DoliDB Database handler. @@ -59,7 +59,7 @@ class box_ficheinter extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->ficheinter->lire); + $this->hidden = !($user->rights->ficheinter->lire); } /** @@ -72,37 +72,37 @@ class box_ficheinter extends ModeleBoxes { global $user, $langs, $conf; - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php'; - $ficheinterstatic=new Fichinter($this->db); + $ficheinterstatic = new Fichinter($this->db); $companystatic = new Societe($this->db); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastFicheInter", $max)); - if (! empty($user->rights->ficheinter->lire)) + if (!empty($user->rights->ficheinter->lire)) { $sql = "SELECT f.rowid, f.ref, f.fk_soc, f.fk_statut,"; - $sql.= " f.datec,"; - $sql.= " f.date_valid as datev,"; - $sql.= " f.tms as datem,"; - $sql.= " s.nom as name, s.rowid as socid, s.client, s.email as semail"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - if (! $user->rights->societe->client->voir) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= ", ".MAIN_DB_PREFIX."fichinter as f"; - $sql.= " WHERE f.fk_soc = s.rowid "; - $sql.= " AND f.entity = ".$conf->entity; - if (! $user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - $sql.= " ORDER BY f.tms DESC"; - $sql.= $this->db->plimit($max, 0); + $sql .= " f.datec,"; + $sql .= " f.date_valid as datev,"; + $sql .= " f.tms as datem,"; + $sql .= " s.nom as name, s.rowid as socid, s.client, s.email as semail"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + if (!$user->rights->societe->client->voir) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= ", ".MAIN_DB_PREFIX."fichinter as f"; + $sql .= " WHERE f.fk_soc = s.rowid "; + $sql .= " AND f.entity = ".$conf->entity; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + $sql .= " ORDER BY f.tms DESC"; + $sql .= $this->db->plimit($max, 0); dol_syslog(get_class($this).'::loadBox', LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); - $now=dol_now(); + $now = dol_now(); $i = 0; @@ -111,9 +111,9 @@ class box_ficheinter extends ModeleBoxes $objp = $this->db->fetch_object($resql); $datec = $this->db->jdate($objp->datec); - $ficheinterstatic->statut=$objp->fk_statut; - $ficheinterstatic->id=$objp->rowid; - $ficheinterstatic->ref=$objp->ref; + $ficheinterstatic->statut = $objp->fk_statut; + $ficheinterstatic->id = $objp->rowid; + $ficheinterstatic->ref = $objp->ref; $companystatic->id = $objp->socid; $companystatic->name = $objp->name; @@ -145,7 +145,7 @@ class box_ficheinter extends ModeleBoxes $i++; } - if ($num==0) $this->info_box_contents[$i][] = array('td' => 'class="center"','text'=>$langs->trans("NoRecordedInterventions")); + if ($num == 0) $this->info_box_contents[$i][] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedInterventions")); $this->db->free($resql); } diff --git a/htdocs/core/boxes/box_members.php b/htdocs/core/boxes/box_members.php index 242f26e5d60..2b2d8418e47 100644 --- a/htdocs/core/boxes/box_members.php +++ b/htdocs/core/boxes/box_members.php @@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_members extends ModeleBoxes { - public $boxcode="lastmembers"; - public $boximg="object_user"; - public $boxlabel="BoxLastMembers"; + public $boxcode = "lastmembers"; + public $boximg = "object_user"; + public $boxlabel = "BoxLastMembers"; public $depends = array("adherent"); /** @@ -62,10 +62,10 @@ class box_members extends ModeleBoxes $this->db = $db; // disable module for such cases - $listofmodulesforexternal=explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); - if (! in_array('adherent', $listofmodulesforexternal) && ! empty($user->socid)) $this->enabled=0; // disabled for external users + $listofmodulesforexternal = explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); + if (!in_array('adherent', $listofmodulesforexternal) && !empty($user->socid)) $this->enabled = 0; // disabled for external users - $this->hidden = ! ($user->rights->adherent->lire); + $this->hidden = !($user->rights->adherent->lire); } /** @@ -79,23 +79,23 @@ class box_members extends ModeleBoxes global $user, $langs, $conf; $langs->load("boxes"); - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; - $memberstatic=new Adherent($this->db); + $memberstatic = new Adherent($this->db); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedMembers", $max)); if ($user->rights->adherent->lire) { $sql = "SELECT a.rowid, a.lastname, a.firstname, a.societe as company, a.fk_soc,"; - $sql.= " a.datec, a.tms, a.statut as status, a.datefin as date_end_subscription,"; - $sql.= " t.subscription"; - $sql.= " FROM ".MAIN_DB_PREFIX."adherent as a, ".MAIN_DB_PREFIX."adherent_type as t"; - $sql.= " WHERE a.entity IN (".getEntity('member').")"; - $sql.= " AND a.fk_adherent_type = t.rowid"; - $sql.= " ORDER BY a.tms DESC"; - $sql.= $this->db->plimit($max, 0); + $sql .= " a.datec, a.tms, a.statut as status, a.datefin as date_end_subscription,"; + $sql .= " t.subscription"; + $sql .= " FROM ".MAIN_DB_PREFIX."adherent as a, ".MAIN_DB_PREFIX."adherent_type as t"; + $sql .= " WHERE a.entity IN (".getEntity('member').")"; + $sql .= " AND a.fk_adherent_type = t.rowid"; + $sql .= " ORDER BY a.tms DESC"; + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) @@ -106,21 +106,21 @@ class box_members extends ModeleBoxes while ($line < $num) { $objp = $this->db->fetch_object($result); - $datec=$this->db->jdate($objp->datec); - $datem=$this->db->jdate($objp->tms); + $datec = $this->db->jdate($objp->datec); + $datem = $this->db->jdate($objp->tms); - $memberstatic->lastname=$objp->lastname; - $memberstatic->firstname=$objp->firstname; + $memberstatic->lastname = $objp->lastname; + $memberstatic->firstname = $objp->firstname; $memberstatic->id = $objp->rowid; $memberstatic->ref = $objp->rowid; $memberstatic->company = $objp->company; - if (! empty($objp->fk_soc)) { + if (!empty($objp->fk_soc)) { $memberstatic->socid = $objp->fk_soc; $memberstatic->fetch_thirdparty(); - $memberstatic->name=$memberstatic->thirdparty->name; + $memberstatic->name = $memberstatic->thirdparty->name; } else { - $memberstatic->name=$objp->company; + $memberstatic->name = $objp->company; } $this->info_box_contents[$line][] = array( @@ -148,7 +148,7 @@ class box_members extends ModeleBoxes $line++; } - if ($num==0) + if ($num == 0) $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoRecordedCustomers"), diff --git a/htdocs/core/boxes/box_mos.php b/htdocs/core/boxes/box_mos.php index 949f63776f6..9b863aa2d5a 100644 --- a/htdocs/core/boxes/box_mos.php +++ b/htdocs/core/boxes/box_mos.php @@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_mos extends ModeleBoxes { - public $boxcode="lastmos"; - public $boximg="object_mrp"; - public $boxlabel="BoxTitleLatestModifiedMos"; + public $boxcode = "lastmos"; + public $boximg = "object_mrp"; + public $boxlabel = "BoxTitleLatestModifiedMos"; public $depends = array("mrp"); /** @@ -60,7 +60,7 @@ class box_mos extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->bom->read); + $this->hidden = !($user->rights->bom->read); } /** @@ -87,18 +87,18 @@ class box_mos extends ModeleBoxes if ($user->rights->mrp->read) { $sql = "SELECT p.ref as product_ref"; - $sql.= ", c.rowid"; - $sql.= ", c.date_creation"; - $sql.= ", c.tms"; - $sql.= ", c.ref"; - $sql.= ", c.status"; + $sql .= ", c.rowid"; + $sql .= ", c.date_creation"; + $sql .= ", c.tms"; + $sql .= ", c.ref"; + $sql .= ", c.status"; //$sql.= ", c.fk_user_valid"; - $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; - $sql.= ", ".MAIN_DB_PREFIX."mrp_mo as c"; - $sql.= " WHERE c.fk_product = p.rowid"; - $sql.= " AND c.entity = ".$conf->entity; - $sql.= " ORDER BY c.tms DESC, c.ref DESC"; - $sql.= " ".$this->db->plimit($max, 0); + $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; + $sql .= ", ".MAIN_DB_PREFIX."mrp_mo as c"; + $sql .= " WHERE c.fk_product = p.rowid"; + $sql .= " AND c.entity = ".$conf->entity; + $sql .= " ORDER BY c.tms DESC, c.ref DESC"; + $sql .= " ".$this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) { @@ -108,7 +108,7 @@ class box_mos extends ModeleBoxes while ($line < $num) { $objp = $this->db->fetch_object($result); - $datem=$this->db->jdate($objp->tms); + $datem = $this->db->jdate($objp->tms); $mostatic->id = $objp->rowid; $mostatic->ref = $objp->ref; $mostatic->id = $objp->socid; @@ -127,11 +127,11 @@ class box_mos extends ModeleBoxes 'asis' => 1, ); - if (! empty($conf->global->MRP_BOX_LAST_MOS_SHOW_VALIDATE_USER)) { + if (!empty($conf->global->MRP_BOX_LAST_MOS_SHOW_VALIDATE_USER)) { if ($objp->fk_user_valid > 0) $userstatic->fetch($objp->fk_user_valid); $this->info_box_contents[$line][] = array( 'td' => 'class="right"', - 'text' => (($objp->fk_user_valid > 0)?$userstatic->getNomUrl(1):''), + 'text' => (($objp->fk_user_valid > 0) ? $userstatic->getNomUrl(1) : ''), 'asis' => 1, ); } @@ -149,7 +149,7 @@ class box_mos extends ModeleBoxes $line++; } - if ($num==0) $this->info_box_contents[$line][0] = array('td' => 'class="center"','text'=>$langs->trans("NoRecordedOrders")); + if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedOrders")); $this->db->free($result); } else { diff --git a/htdocs/core/boxes/box_produits.php b/htdocs/core/boxes/box_produits.php index 5cccd24ad6a..374e9ab1bae 100644 --- a/htdocs/core/boxes/box_produits.php +++ b/htdocs/core/boxes/box_produits.php @@ -33,9 +33,9 @@ include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; */ class box_produits extends ModeleBoxes { - public $boxcode="lastproducts"; - public $boximg="object_product"; - public $boxlabel="BoxLastProducts"; + public $boxcode = "lastproducts"; + public $boximg = "object_product"; + public $boxlabel = "BoxLastProducts"; public $depends = array("produit"); /** @@ -59,11 +59,11 @@ class box_produits extends ModeleBoxes { global $conf, $user; - $this->db=$db; + $this->db = $db; - $listofmodulesforexternal=explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); - $tmpentry=array('enabled'=>(! empty($conf->product->enabled) || ! empty($conf->service->enabled)), 'perms'=>(! empty($user->rights->produit->lire) || ! empty($user->rights->service->lire)), 'module'=>'product|service'); - $showmode=isVisibleToUserType(($user->socid > 0 ? 1 : 0), $tmpentry, $listofmodulesforexternal); + $listofmodulesforexternal = explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); + $tmpentry = array('enabled'=>(!empty($conf->product->enabled) || !empty($conf->service->enabled)), 'perms'=>(!empty($user->rights->produit->lire) || !empty($user->rights->service->lire)), 'module'=>'product|service'); + $showmode = isVisibleToUserType(($user->socid > 0 ? 1 : 0), $tmpentry, $listofmodulesforexternal); $this->hidden = ($showmode != 1); } @@ -77,29 +77,29 @@ class box_produits extends ModeleBoxes { global $user, $langs, $conf, $hookmanager; - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; - $productstatic=new Product($this->db); + $productstatic = new Product($this->db); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastProducts", $max)); if ($user->rights->produit->lire || $user->rights->service->lire) { $sql = "SELECT p.rowid, p.label, p.ref, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.fk_price_expression, p.entity"; - $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; - $sql.= ' WHERE p.entity IN ('.getEntity($productstatic->element).')'; - if (empty($user->rights->produit->lire)) $sql.=' AND p.fk_product_type != 0'; - if (empty($user->rights->service->lire)) $sql.=' AND p.fk_product_type != 1'; + $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; + $sql .= ' WHERE p.entity IN ('.getEntity($productstatic->element).')'; + if (empty($user->rights->produit->lire)) $sql .= ' AND p.fk_product_type != 0'; + if (empty($user->rights->service->lire)) $sql .= ' AND p.fk_product_type != 1'; // Add where from hooks if (is_object($hookmanager)) { - $parameters=array('boxproductlist'=>1); - $reshook=$hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook - $sql.=$hookmanager->resPrint; + $parameters = array('boxproductlist'=>1); + $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook + $sql .= $hookmanager->resPrint; } - $sql.= $this->db->order('p.datec', 'DESC'); - $sql.= $this->db->plimit($max, 0); + $sql .= $this->db->order('p.datec', 'DESC'); + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) @@ -109,16 +109,16 @@ class box_produits extends ModeleBoxes while ($line < $num) { $objp = $this->db->fetch_object($result); - $datem=$this->db->jdate($objp->tms); + $datem = $this->db->jdate($objp->tms); // Multilangs - if (! empty($conf->global->MAIN_MULTILANGS)) // si l'option est active + if (!empty($conf->global->MAIN_MULTILANGS)) // si l'option est active { $sqld = "SELECT label"; - $sqld.= " FROM ".MAIN_DB_PREFIX."product_lang"; - $sqld.= " WHERE fk_product=".$objp->rowid; - $sqld.= " AND lang='". $langs->getDefaultLang() ."'"; - $sqld.= " LIMIT 1"; + $sqld .= " FROM ".MAIN_DB_PREFIX."product_lang"; + $sqld .= " WHERE fk_product=".$objp->rowid; + $sqld .= " AND lang='".$langs->getDefaultLang()."'"; + $sqld .= " LIMIT 1"; $resultd = $this->db->query($sqld); if ($resultd) @@ -147,8 +147,8 @@ class box_produits extends ModeleBoxes $price = ''; $price_base_type = ''; if (empty($conf->dynamicprices->enabled) || empty($objp->fk_price_expression)) { - $price_base_type=$langs->trans($objp->price_base_type); - $price=($objp->price_base_type == 'HT')?price($objp->price):$price=price($objp->price_ttc); + $price_base_type = $langs->trans($objp->price_base_type); + $price = ($objp->price_base_type == 'HT') ?price($objp->price) : $price = price($objp->price_ttc); } else //Parse the dynamic price { @@ -158,14 +158,14 @@ class box_produits extends ModeleBoxes if ($price_result >= 0) { if ($objp->price_base_type == 'HT') { - $price_base_type=$langs->trans("HT"); + $price_base_type = $langs->trans("HT"); } else { $price_result = $price_result * (1 + ($productstatic->tva_tx / 100)); - $price_base_type=$langs->trans("TTC"); + $price_base_type = $langs->trans("TTC"); } - $price=price($price_result); + $price = price($price_result); } } $this->info_box_contents[$line][] = array( @@ -197,7 +197,7 @@ class box_produits extends ModeleBoxes $line++; } - if ($num==0) + if ($num == 0) $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoRecordedProducts"), diff --git a/htdocs/core/boxes/box_produits_alerte_stock.php b/htdocs/core/boxes/box_produits_alerte_stock.php index 3c674cd32c0..f4a433c013d 100644 --- a/htdocs/core/boxes/box_produits_alerte_stock.php +++ b/htdocs/core/boxes/box_produits_alerte_stock.php @@ -35,9 +35,9 @@ include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; */ class box_produits_alerte_stock extends ModeleBoxes { - public $boxcode="productsalertstock"; - public $boximg="object_product"; - public $boxlabel="BoxProductsAlertStock"; + public $boxcode = "productsalertstock"; + public $boximg = "object_product"; + public $boxlabel = "BoxProductsAlertStock"; public $depends = array("produit"); /** @@ -59,13 +59,13 @@ class box_produits_alerte_stock extends ModeleBoxes */ public function __construct($db, $param = '') { - global $conf,$user; + global $conf, $user; $this->db = $db; - $listofmodulesforexternal=explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); - $tmpentry=array('enabled'=>((! empty($conf->product->enabled) || ! empty($conf->service->enabled)) && ! empty($conf->stock->enabled)), 'perms'=>($user->rights->stock->lire), 'module'=>'product|service|stock'); - $showmode=isVisibleToUserType(($user->socid > 0 ? 1 : 0), $tmpentry, $listofmodulesforexternal); + $listofmodulesforexternal = explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); + $tmpentry = array('enabled'=>((!empty($conf->product->enabled) || !empty($conf->service->enabled)) && !empty($conf->stock->enabled)), 'perms'=>($user->rights->stock->lire), 'module'=>'product|service|stock'); + $showmode = isVisibleToUserType(($user->socid > 0 ? 1 : 0), $tmpentry, $listofmodulesforexternal); $this->hidden = ($showmode != 1); } @@ -79,34 +79,34 @@ class box_produits_alerte_stock extends ModeleBoxes { global $user, $langs, $conf, $hookmanager; - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; - $productstatic=new Product($this->db); + $productstatic = new Product($this->db); $this->info_box_head = array('text' => $langs->trans("BoxTitleProductsAlertStock", $max)); if (($user->rights->produit->lire || $user->rights->service->lire) && $user->rights->stock->lire) { $sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity,"; - $sql.= " SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") as total_stock"; - $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product"; - $sql.= ' WHERE p.entity IN ('.getEntity($productstatic->element).')'; - $sql.= " AND p.tosell = 1 AND p.seuil_stock_alerte > 0"; - if (empty($user->rights->produit->lire)) $sql.=' AND p.fk_product_type != 0'; - if (empty($user->rights->service->lire)) $sql.=' AND p.fk_product_type != 1'; + $sql .= " SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") as total_stock"; + $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product"; + $sql .= ' WHERE p.entity IN ('.getEntity($productstatic->element).')'; + $sql .= " AND p.tosell = 1 AND p.seuil_stock_alerte > 0"; + if (empty($user->rights->produit->lire)) $sql .= ' AND p.fk_product_type != 0'; + if (empty($user->rights->service->lire)) $sql .= ' AND p.fk_product_type != 1'; // Add where from hooks if (is_object($hookmanager)) { - $parameters=array('boxproductalertstocklist'=>1); - $reshook=$hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook - $sql.=$hookmanager->resPrint; + $parameters = array('boxproductalertstocklist'=>1); + $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook + $sql .= $hookmanager->resPrint; } - $sql.= " GROUP BY p.rowid, p.ref, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity"; - $sql.= " HAVING SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") < p.seuil_stock_alerte"; - $sql.= $this->db->order('p.seuil_stock_alerte', 'DESC'); - $sql.= $this->db->plimit($max, 0); + $sql .= " GROUP BY p.rowid, p.ref, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity"; + $sql .= " HAVING SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") < p.seuil_stock_alerte"; + $sql .= $this->db->order('p.seuil_stock_alerte', 'DESC'); + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) @@ -116,18 +116,18 @@ class box_produits_alerte_stock extends ModeleBoxes $line = 0; while ($line < $num) { $objp = $this->db->fetch_object($result); - $datem=$this->db->jdate($objp->tms); + $datem = $this->db->jdate($objp->tms); $price = ''; $price_base_type = ''; // Multilangs - if (! empty($conf->global->MAIN_MULTILANGS)) // si l'option est active + if (!empty($conf->global->MAIN_MULTILANGS)) // si l'option est active { $sqld = "SELECT label"; - $sqld.= " FROM ".MAIN_DB_PREFIX."product_lang"; - $sqld.= " WHERE fk_product=".$objp->rowid; - $sqld.= " AND lang='". $langs->getDefaultLang() ."'"; - $sqld.= " LIMIT 1"; + $sqld .= " FROM ".MAIN_DB_PREFIX."product_lang"; + $sqld .= " WHERE fk_product=".$objp->rowid; + $sqld .= " AND lang='".$langs->getDefaultLang()."'"; + $sqld .= " LIMIT 1"; $resultd = $this->db->query($sqld); if ($resultd) @@ -156,8 +156,8 @@ class box_produits_alerte_stock extends ModeleBoxes if (empty($conf->dynamicprices->enabled) || empty($objp->fk_price_expression)) { - $price_base_type=$langs->trans($objp->price_base_type); - $price=($objp->price_base_type == 'HT')?price($objp->price):$price=price($objp->price_ttc); + $price_base_type = $langs->trans($objp->price_base_type); + $price = ($objp->price_base_type == 'HT') ?price($objp->price) : $price = price($objp->price_ttc); } else //Parse the dynamic price { @@ -167,14 +167,14 @@ class box_produits_alerte_stock extends ModeleBoxes if ($price_result >= 0) { if ($objp->price_base_type == 'HT') { - $price_base_type=$langs->trans("HT"); + $price_base_type = $langs->trans("HT"); } else { $price_result = $price_result * (1 + ($productstatic->tva_tx / 100)); - $price_base_type=$langs->trans("TTC"); + $price_base_type = $langs->trans("TTC"); } - $price=price($price_result); + $price = price($price_result); } } @@ -190,7 +190,7 @@ class box_produits_alerte_stock extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'class="center"', - 'text' => $objp->total_stock . ' / '.$objp->seuil_stock_alerte, + 'text' => $objp->total_stock.' / '.$objp->seuil_stock_alerte, 'text2'=>img_warning($langs->transnoentitiesnoconv("StockLowerThanLimit", $objp->seuil_stock_alerte)), ); @@ -208,7 +208,7 @@ class box_produits_alerte_stock extends ModeleBoxes $line++; } - if ($num==0) + if ($num == 0) $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoTooLowStockProducts"), diff --git a/htdocs/core/boxes/box_project.php b/htdocs/core/boxes/box_project.php index 9fffc92963f..c99f07ff311 100644 --- a/htdocs/core/boxes/box_project.php +++ b/htdocs/core/boxes/box_project.php @@ -31,8 +31,8 @@ include_once DOL_DOCUMENT_ROOT."/core/boxes/modules_boxes.php"; */ class box_project extends ModeleBoxes { - public $boxcode="project"; - public $boximg="object_projectpub"; + public $boxcode = "project"; + public $boximg = "object_projectpub"; public $boxlabel; //var $depends = array("projet"); @@ -62,7 +62,7 @@ class box_project extends ModeleBoxes $this->db = $db; $this->boxlabel = "OpenedProjects"; - $this->hidden = ! ($user->rights->projet->lire); + $this->hidden = !($user->rights->projet->lire); } /** @@ -75,11 +75,11 @@ class box_project extends ModeleBoxes { global $conf, $user, $langs; - $this->max=$max; + $this->max = $max; $totalMnt = 0; $totalnb = 0; - $totalnbTask=0; + $totalnbTask = 0; $textHead = $langs->trans("OpenedProjects"); $this->info_box_head = array('text' => $textHead, 'limit'=> dol_strlen($textHead)); @@ -89,20 +89,20 @@ class box_project extends ModeleBoxes include_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $projectstatic = new Project($this->db); - $socid=0; + $socid = 0; //if ($user->socid > 0) $socid = $user->socid; // For external user, no check is done on company because readability is managed by public status of project and assignement. // Get list of project id allowed to user (in a string list separated by coma) - $projectsListId=''; - if (! $user->rights->projet->all->lire) $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1, $socid); + $projectsListId = ''; + if (!$user->rights->projet->all->lire) $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1, $socid); $sql = "SELECT p.rowid, p.ref, p.title, p.fk_statut as status, p.public"; - $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; - $sql.= " WHERE p.entity IN (".getEntity('project').")"; // Only current entity or severals if permission ok - $sql.= " AND p.fk_statut = 1"; // Only open projects - if (! $user->rights->projet->all->lire) $sql.= " AND p.rowid IN (".$projectsListId.")"; // public and assigned to, or restricted to company for external users + $sql .= " FROM ".MAIN_DB_PREFIX."projet as p"; + $sql .= " WHERE p.entity IN (".getEntity('project').")"; // Only current entity or severals if permission ok + $sql .= " AND p.fk_statut = 1"; // Only open projects + if (!$user->rights->projet->all->lire) $sql .= " AND p.rowid IN (".$projectsListId.")"; // public and assigned to, or restricted to company for external users - $sql.= " ORDER BY p.datec DESC"; + $sql .= " ORDER BY p.datec DESC"; //$sql.= $this->db->plimit($max, 0); $result = $this->db->query($sql); @@ -130,10 +130,10 @@ class box_project extends ModeleBoxes 'text' => $objp->title, ); - $sql ="SELECT count(*) as nb, sum(progress) as totprogress"; - $sql.=" FROM ".MAIN_DB_PREFIX."projet as p LEFT JOIN ".MAIN_DB_PREFIX."projet_task as pt on pt.fk_projet = p.rowid"; - $sql.= " WHERE p.entity IN (".getEntity('project').')'; - $sql.=" AND p.rowid = ".$objp->rowid; + $sql = "SELECT count(*) as nb, sum(progress) as totprogress"; + $sql .= " FROM ".MAIN_DB_PREFIX."projet as p LEFT JOIN ".MAIN_DB_PREFIX."projet_task as pt on pt.fk_projet = p.rowid"; + $sql .= " WHERE p.entity IN (".getEntity('project').')'; + $sql .= " AND p.rowid = ".$objp->rowid; $resultTask = $this->db->query($sql); if ($resultTask) { $objTask = $this->db->fetch_object($resultTask); @@ -141,10 +141,10 @@ class box_project extends ModeleBoxes 'td' => 'class="right"', 'text' => $objTask->nb." ".$langs->trans("Tasks"), ); - if ($objTask->nb > 0) + if ($objTask->nb > 0) $this->info_box_contents[$i][] = array( 'td' => 'class="right"', - 'text' => round($objTask->totprogress/$objTask->nb, 0)."%", + 'text' => round($objTask->totprogress / $objTask->nb, 0)."%", ); else $this->info_box_contents[$i][] = array('td' => 'class="right"', 'text' => "N/A "); diff --git a/htdocs/core/boxes/box_prospect.php b/htdocs/core/boxes/box_prospect.php index 9d6a10b6225..54ed1c76051 100644 --- a/htdocs/core/boxes/box_prospect.php +++ b/htdocs/core/boxes/box_prospect.php @@ -34,9 +34,9 @@ include_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php'; */ class box_prospect extends ModeleBoxes { - public $boxcode="lastprospects"; - public $boximg="object_company"; - public $boxlabel="BoxLastProspects"; + public $boxcode = "lastprospects"; + public $boximg = "object_company"; + public $boxlabel = "BoxLastProspects"; public $depends = array("societe"); /** @@ -63,9 +63,9 @@ class box_prospect extends ModeleBoxes $this->db = $db; // disable box for such cases - if (! empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) $this->enabled=0; // disabled by this option + if (!empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) $this->enabled = 0; // disabled by this option - $this->hidden = ! ($user->rights->societe->lire && empty($user->socid)); + $this->hidden = !($user->rights->societe->lire && empty($user->socid)); } /** @@ -78,29 +78,29 @@ class box_prospect extends ModeleBoxes { global $user, $langs, $conf; - $this->max=$max; + $this->max = $max; - $thirdpartystatic=new Client($this->db); + $thirdpartystatic = new Client($this->db); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedProspects", $max)); if ($user->rights->societe->lire) { $sql = "SELECT s.nom as name, s.rowid as socid"; - $sql.= ", s.code_client"; - $sql.= ", s.client, s.email"; - $sql.= ", s.code_fournisseur"; - $sql.= ", s.fournisseur"; - $sql.= ", s.logo"; - $sql.= ", s.fk_stcomm, s.datec, s.tms, s.status"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE s.client IN (2, 3)"; - $sql.= " AND s.entity IN (".getEntity('societe').")"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($user->socid) $sql.= " AND s.rowid = ".$user->socid; - $sql.= " ORDER BY s.tms DESC"; - $sql.= $this->db->plimit($max, 0); + $sql .= ", s.code_client"; + $sql .= ", s.client, s.email"; + $sql .= ", s.code_fournisseur"; + $sql .= ", s.fournisseur"; + $sql .= ", s.logo"; + $sql .= ", s.fk_stcomm, s.datec, s.tms, s.status"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE s.client IN (2, 3)"; + $sql .= " AND s.entity IN (".getEntity('societe').")"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + $sql .= " ORDER BY s.tms DESC"; + $sql .= $this->db->plimit($max, 0); dol_syslog(get_class($this)."::loadBox", LOG_DEBUG); $resql = $this->db->query($sql); @@ -112,8 +112,8 @@ class box_prospect extends ModeleBoxes while ($line < $num) { $objp = $this->db->fetch_object($resql); - $datec=$this->db->jdate($objp->datec); - $datem=$this->db->jdate($objp->tms); + $datec = $this->db->jdate($objp->datec); + $datem = $this->db->jdate($objp->tms); $thirdpartystatic->id = $objp->socid; $thirdpartystatic->name = $objp->name; $thirdpartystatic->email = $objp->email; @@ -147,7 +147,7 @@ class box_prospect extends ModeleBoxes $line++; } - if ($num==0) { + if ($num == 0) { $this->info_box_contents[$line][0] = array( 'td' => 'class="center"', 'text'=>$langs->trans("NoRecordedProspects"), diff --git a/htdocs/core/boxes/box_services_contracts.php b/htdocs/core/boxes/box_services_contracts.php index 5b40fc61436..f8e6dd22452 100644 --- a/htdocs/core/boxes/box_services_contracts.php +++ b/htdocs/core/boxes/box_services_contracts.php @@ -32,10 +32,10 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; */ class box_services_contracts extends ModeleBoxes { - public $boxcode="lastproductsincontract"; - public $boximg="object_product"; - public $boxlabel="BoxLastProductsInContract"; - public $depends = array("service","contrat"); + public $boxcode = "lastproductsincontract"; + public $boximg = "object_product"; + public $boxlabel = "BoxLastProductsInContract"; + public $depends = array("service", "contrat"); /** * @var DoliDB Database handler. @@ -60,7 +60,7 @@ class box_services_contracts extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->service->lire && $user->rights->contrat->lire); + $this->hidden = !($user->rights->service->lire && $user->rights->contrat->lire); } /** @@ -73,7 +73,7 @@ class box_services_contracts extends ModeleBoxes { global $user, $langs, $conf; - $this->max=$max; + $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; @@ -83,52 +83,52 @@ class box_services_contracts extends ModeleBoxes if ($user->rights->service->lire && $user->rights->contrat->lire) { - $contractstatic=new Contrat($this->db); - $contractlinestatic=new ContratLigne($this->db); + $contractstatic = new Contrat($this->db); + $contractlinestatic = new ContratLigne($this->db); $thirdpartytmp = new Societe($this->db); $productstatic = new Product($this->db); $sql = "SELECT s.nom as name, s.rowid as socid, s.email, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,"; - $sql.= " c.rowid, c.ref, c.statut as contract_status, c.ref_customer, c.ref_supplier,"; - $sql.= " cd.rowid as cdid, cd.label, cd.description, cd.tms as datem, cd.statut, cd.product_type as type,"; - $sql.= " p.rowid as product_id, p.ref as product_ref, p.label as plabel, p.fk_product_type as ptype, p.entity, p.tobuy, p.tosell"; - $sql.= " FROM (".MAIN_DB_PREFIX."societe as s"; - $sql.= " INNER JOIN ".MAIN_DB_PREFIX."contrat as c ON s.rowid = c.fk_soc"; - $sql.= " INNER JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " INNER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - $sql.= ")"; - $sql.= " WHERE c.entity = ".$conf->entity; - if($user->socid) $sql.= " AND s.rowid = ".$user->socid; - $sql.= $this->db->order("c.tms", "DESC"); - $sql.= $this->db->plimit($max, 0); + $sql .= " c.rowid, c.ref, c.statut as contract_status, c.ref_customer, c.ref_supplier,"; + $sql .= " cd.rowid as cdid, cd.label, cd.description, cd.tms as datem, cd.statut, cd.product_type as type,"; + $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as plabel, p.fk_product_type as ptype, p.entity, p.tobuy, p.tosell"; + $sql .= " FROM (".MAIN_DB_PREFIX."societe as s"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."contrat as c ON s.rowid = c.fk_soc"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + $sql .= ")"; + $sql .= " WHERE c.entity = ".$conf->entity; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + $sql .= $this->db->order("c.tms", "DESC"); + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); - $now=dol_now(); + $now = dol_now(); $i = 0; while ($i < $num) { $objp = $this->db->fetch_object($result); - $datem=$this->db->jdate($objp->datem); + $datem = $this->db->jdate($objp->datem); - $contractlinestatic->id=$objp->cdid; - $contractlinestatic->fk_contrat=$objp->rowid; - $contractlinestatic->label=$objp->label; - $contractlinestatic->description=$objp->description; - $contractlinestatic->type=$objp->type; - $contractlinestatic->product_id=$objp->product_id; - $contractlinestatic->product_ref=$objp->product_ref; + $contractlinestatic->id = $objp->cdid; + $contractlinestatic->fk_contrat = $objp->rowid; + $contractlinestatic->label = $objp->label; + $contractlinestatic->description = $objp->description; + $contractlinestatic->type = $objp->type; + $contractlinestatic->product_id = $objp->product_id; + $contractlinestatic->product_ref = $objp->product_ref; - $contractstatic->statut=$objp->contract_status; - $contractstatic->id=$objp->rowid; - $contractstatic->ref=$objp->ref; - $contractstatic->ref_customer=$objp->ref_customer; - $contractstatic->ref_supplier=$objp->ref_supplier; + $contractstatic->statut = $objp->contract_status; + $contractstatic->id = $objp->rowid; + $contractstatic->ref = $objp->ref; + $contractstatic->ref_customer = $objp->ref_customer; + $contractstatic->ref_supplier = $objp->ref_supplier; $thirdpartytmp->name = $objp->name; $thirdpartytmp->id = $objp->socid; @@ -141,13 +141,13 @@ class box_services_contracts extends ModeleBoxes $thirdpartytmp->code_compta_fournisseur = $objp->code_compta_fournisseur; // Multilangs - if (! empty($conf->global->MAIN_MULTILANGS) && $objp->product_id > 0) // if option multilang is on + if (!empty($conf->global->MAIN_MULTILANGS) && $objp->product_id > 0) // if option multilang is on { $sqld = "SELECT label"; - $sqld.= " FROM ".MAIN_DB_PREFIX."product_lang"; - $sqld.= " WHERE fk_product=".$objp->product_id; - $sqld.= " AND lang='". $langs->getDefaultLang() ."'"; - $sqld.= " LIMIT 1"; + $sqld .= " FROM ".MAIN_DB_PREFIX."product_lang"; + $sqld .= " WHERE fk_product=".$objp->product_id; + $sqld .= " AND lang='".$langs->getDefaultLang()."'"; + $sqld .= " LIMIT 1"; $resultd = $this->db->query($sqld); if ($resultd) @@ -160,11 +160,11 @@ class box_services_contracts extends ModeleBoxes // Label if ($objp->product_id > 0) { - $productstatic->id=$objp->product_id; - $productstatic->type=$objp->ptype; - $productstatic->ref=$objp->product_ref; - $productstatic->entity=$objp->pentity; - $productstatic->label=$objp->plabel; + $productstatic->id = $objp->product_id; + $productstatic->type = $objp->ptype; + $productstatic->ref = $objp->product_ref; + $productstatic->entity = $objp->pentity; + $productstatic->label = $objp->plabel; $productstatic->status = $objp->tosell; $productstatic->status_buy = $objp->tobuy; @@ -179,13 +179,13 @@ class box_services_contracts extends ModeleBoxes $description = $objp->description; // Add description in form - if (! empty($conf->global->PRODUIT_DESC_IN_FORM)) + if (!empty($conf->global->PRODUIT_DESC_IN_FORM)) { //$text .= (! empty($objp->description) && $objp->description!=$objp->plabel)?'
    '.dol_htmlentitiesbr($objp->description):''; - $description = ''; // Already added into main visible desc + $description = ''; // Already added into main visible desc } - $s = $form->textwithtooltip($text, $description, 3, '', '', $cursorline, 0, (!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):'')); + $s = $form->textwithtooltip($text, $description, 3, '', '', $cursorline, 0, (!empty($line->fk_parent_line) ?img_picto('', 'rightarrow') : '')); } else { @@ -223,7 +223,7 @@ class box_services_contracts extends ModeleBoxes $i++; } - if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'class="center"','text'=>$langs->trans("NoContractedProducts")); + if ($num == 0) $this->info_box_contents[$i][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoContractedProducts")); $this->db->free($result); } diff --git a/htdocs/core/boxes/box_supplier_orders.php b/htdocs/core/boxes/box_supplier_orders.php index 881e17f73ec..c019062313c 100644 --- a/htdocs/core/boxes/box_supplier_orders.php +++ b/htdocs/core/boxes/box_supplier_orders.php @@ -33,7 +33,7 @@ class box_supplier_orders extends ModeleBoxes public $boxcode = "latestsupplierorders"; public $boximg = "object_order"; - public $boxlabel="BoxLatestSupplierOrders"; + public $boxlabel = "BoxLatestSupplierOrders"; public $depends = array("fournisseur"); /** @@ -58,7 +58,7 @@ class box_supplier_orders extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->fournisseur->commande->lire); + $this->hidden = !($user->rights->fournisseur->commande->lire); } /** @@ -75,32 +75,32 @@ class box_supplier_orders extends ModeleBoxes $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; - $supplierorderstatic=new CommandeFournisseur($this->db); + $supplierorderstatic = new CommandeFournisseur($this->db); include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; $thirdpartytmp = new Fournisseur($this->db); - $this->info_box_head = array('text' => $langs->trans("BoxTitleLatest".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."SupplierOrders", $max)); + $this->info_box_head = array('text' => $langs->trans("BoxTitleLatest".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE ? "" : "Modified")."SupplierOrders", $max)); if ($user->rights->fournisseur->commande->lire) { $sql = "SELECT s.nom as name, s.rowid as socid,"; - $sql.= " s.code_client, s.code_fournisseur,"; - $sql.= " s.logo, s.email,"; - $sql.= " c.rowid, c.ref, c.tms, c.date_commande,"; - $sql.= " c.total_ht,"; - $sql.= " c.tva as total_tva,"; - $sql.= " c.total_ttc,"; - $sql.= " c.fk_statut"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql.= ", ".MAIN_DB_PREFIX."commande_fournisseur as c"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE c.fk_soc = s.rowid"; - $sql.= " AND c.entity = ".$conf->entity; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($user->socid) $sql.= " AND s.rowid = ".$user->socid; - if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql.= " ORDER BY c.date_commande DESC, c.ref DESC "; - else $sql.= " ORDER BY c.tms DESC, c.ref DESC "; - $sql.= $this->db->plimit($max, 0); + $sql .= " s.code_client, s.code_fournisseur,"; + $sql .= " s.logo, s.email,"; + $sql .= " c.rowid, c.ref, c.tms, c.date_commande,"; + $sql .= " c.total_ht,"; + $sql .= " c.tva as total_tva,"; + $sql .= " c.total_ttc,"; + $sql .= " c.fk_statut"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql .= ", ".MAIN_DB_PREFIX."commande_fournisseur as c"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE c.fk_soc = s.rowid"; + $sql .= " AND c.entity = ".$conf->entity; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY c.date_commande DESC, c.ref DESC "; + else $sql .= " ORDER BY c.tms DESC, c.ref DESC "; + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) @@ -110,8 +110,8 @@ class box_supplier_orders extends ModeleBoxes $line = 0; while ($line < $num) { $objp = $this->db->fetch_object($result); - $date=$this->db->jdate($objp->date_commande); - $datem=$this->db->jdate($objp->tms); + $date = $this->db->jdate($objp->date_commande); + $datem = $this->db->jdate($objp->tms); $supplierorderstatic->id = $objp->rowid; $supplierorderstatic->ref = $objp->ref; diff --git a/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php b/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php index 416dc7f2f2a..f70f5bef450 100644 --- a/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php +++ b/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php @@ -33,7 +33,7 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes public $boxcode = "supplierordersawaitingreception"; public $boximg = "object_order"; - public $boxlabel="BoxLatestSupplierOrdersAwaitingReception"; + public $boxlabel = "BoxLatestSupplierOrdersAwaitingReception"; public $depends = array("fournisseur"); /** @@ -58,7 +58,7 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes $this->db = $db; - $this->hidden = ! ($user->rights->fournisseur->commande->lire); + $this->hidden = !($user->rights->fournisseur->commande->lire); } /** @@ -75,7 +75,7 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes $this->max = $max; include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; - $supplierorderstatic=new CommandeFournisseur($this->db); + $supplierorderstatic = new CommandeFournisseur($this->db); include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; $thirdpartytmp = new Fournisseur($this->db); @@ -84,25 +84,25 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes if ($user->rights->fournisseur->commande->lire) { $sql = "SELECT s.nom as name, s.rowid as socid,"; - $sql.= " s.code_client, s.code_fournisseur, s.email,"; - $sql.= " s.logo,"; - $sql.= " c.rowid, c.ref, c.tms, c.date_commande, c.date_livraison, "; - $sql.= " c.total_ht,"; - $sql.= " c.tva as total_tva,"; - $sql.= " c.total_ttc,"; - $sql.= " c.fk_statut"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql.= ", ".MAIN_DB_PREFIX."commande_fournisseur as c"; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE c.fk_soc = s.rowid"; - $sql.= " AND c.entity = ".$conf->entity; + $sql .= " s.code_client, s.code_fournisseur, s.email,"; + $sql .= " s.logo,"; + $sql .= " c.rowid, c.ref, c.tms, c.date_commande, c.date_livraison, "; + $sql .= " c.total_ht,"; + $sql .= " c.tva as total_tva,"; + $sql .= " c.total_ttc,"; + $sql .= " c.fk_statut"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql .= ", ".MAIN_DB_PREFIX."commande_fournisseur as c"; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE c.fk_soc = s.rowid"; + $sql .= " AND c.entity = ".$conf->entity; - $sql.= " AND c.fk_statut = ".CommandeFournisseur::STATUS_ORDERSENT; - if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($user->socid) $sql.= " AND s.rowid = ".$user->socid; - if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql.= " ORDER BY c.date_commande DESC, c.ref DESC "; - else $sql.= " ORDER BY c.date_livraison ASC, c.fk_statut ASC "; - $sql.= $this->db->plimit($max, 0); + $sql .= " AND c.fk_statut = ".CommandeFournisseur::STATUS_ORDERSENT; + if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($user->socid) $sql .= " AND s.rowid = ".$user->socid; + if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY c.date_commande DESC, c.ref DESC "; + else $sql .= " ORDER BY c.date_livraison ASC, c.fk_statut ASC "; + $sql .= $this->db->plimit($max, 0); $result = $this->db->query($sql); if ($result) @@ -112,9 +112,9 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes $line = 0; while ($line < $num) { $objp = $this->db->fetch_object($result); - $date=$this->db->jdate($objp->date_commande); - $date_livraison=$this->db->jdate($objp->date_livraison); - $datem=$this->db->jdate($objp->tms); + $date = $this->db->jdate($objp->date_commande); + $date_livraison = $this->db->jdate($objp->date_livraison); + $datem = $this->db->jdate($objp->tms); $supplierorderstatic->date_livraison = $date_livraison; $supplierorderstatic->statut = $objp->fk_statut; @@ -153,7 +153,7 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'class="right"', - 'text' => $delayIcon.' '. dol_print_date($date_livraison, 'day').'', + 'text' => $delayIcon.' '.dol_print_date($date_livraison, 'day').'', 'asis' => 1 ); diff --git a/htdocs/core/boxes/box_task.php b/htdocs/core/boxes/box_task.php index f8888c71a4b..f9a974ae1c5 100644 --- a/htdocs/core/boxes/box_task.php +++ b/htdocs/core/boxes/box_task.php @@ -127,7 +127,7 @@ class box_task extends ModeleBoxes $boxcontent .= ''; $boxcontent .= ''."\n"; $boxcontent .= ''."\n"; - if (! empty($conf->use_javascript_ajax)) { + if (!empty($conf->use_javascript_ajax)) { $boxcontent .= '' ; - exit ; + $rpl = array('\\' => '\\\\', '"' => '\\"'); + echo 'window.parent.OnUploadCompleted('.$errorNumber.',"'.strtr($fileUrl, $rpl).'","'.strtr($fileName, $rpl).'", "'.strtr($customMsg, $rpl).'");'; + echo ''; + exit; } @@ -403,9 +403,9 @@ function SendCKEditorResults($callback, $sFileUrl, $customMsg = '') { echo ''; } diff --git a/htdocs/core/filemanagerdol/connectors/php/upload.php b/htdocs/core/filemanagerdol/connectors/php/upload.php index 9364f3bd540..b1f97d10395 100644 --- a/htdocs/core/filemanagerdol/connectors/php/upload.php +++ b/htdocs/core/filemanagerdol/connectors/php/upload.php @@ -41,22 +41,22 @@ function SendError($number, $text) // Check if this uploader has been enabled. -if ( !$Config['Enabled'] ) +if (!$Config['Enabled']) SendUploadResults('1', '', '', 'This file uploader is disabled. Please check the "filemanagerdol/connectors/php/config.php" file'); -$sCommand = 'QuickUpload' ; +$sCommand = 'QuickUpload'; // The file type (from the QueryString, by default 'File'). -$sType = isset($_GET['Type']) ? $_GET['Type'] : 'File' ; +$sType = isset($_GET['Type']) ? $_GET['Type'] : 'File'; -$sCurrentFolder = "/" ; +$sCurrentFolder = "/"; // Is enabled the upload? -if (! IsAllowedCommand($sCommand)) - SendUploadResults('1', '', '', 'The ""' . $sCommand . '"" command isn\'t allowed'); +if (!IsAllowedCommand($sCommand)) + SendUploadResults('1', '', '', 'The ""'.$sCommand.'"" command isn\'t allowed'); // Check if it is an allowed type. -if (! IsAllowedType($sType)) +if (!IsAllowedType($sType)) SendUploadResults(1, '', '', 'Invalid type specified'); diff --git a/htdocs/core/filemanagerdol/connectors/php/util.php b/htdocs/core/filemanagerdol/connectors/php/util.php index 9f80b96b2fd..3ea4baf8c87 100644 --- a/htdocs/core/filemanagerdol/connectors/php/util.php +++ b/htdocs/core/filemanagerdol/connectors/php/util.php @@ -31,7 +31,7 @@ */ function RemoveFromStart($sourceString, $charToRemove) { - $sPattern = '|^' . $charToRemove . '+|' ; + $sPattern = '|^'.$charToRemove.'+|'; return preg_replace($sPattern, '', $sourceString); } @@ -44,7 +44,7 @@ function RemoveFromStart($sourceString, $charToRemove) */ function RemoveFromEnd($sourceString, $charToRemove) { - $sPattern = '|' . $charToRemove . '+$|' ; + $sPattern = '|'.$charToRemove.'+$|'; return preg_replace($sPattern, '', $sourceString); } @@ -67,7 +67,7 @@ function FindBadUtf8($string) '|(.{1}))'; while (preg_match('/'.$regex.'/S', $string, $matches)) { - if ( isset($matches[2])) { + if (isset($matches[2])) { return true; } $string = substr($string, strlen($matches[0])); @@ -84,9 +84,9 @@ function FindBadUtf8($string) */ function ConvertToXmlAttribute($value) { - if ( defined('PHP_OS') ) + if (defined('PHP_OS')) { - $os = PHP_OS ; + $os = PHP_OS; } else { @@ -112,9 +112,9 @@ function ConvertToXmlAttribute($value) */ function IsHtmlExtension($ext, $formExtensions) { - if (!$formExtensions || !is_array($formExtensions) ) + if (!$formExtensions || !is_array($formExtensions)) { - return false ; + return false; } $lcaseHtmlExtensions = array(); foreach ($formExtensions as $key => $val) @@ -137,9 +137,9 @@ function DetectHtml($filePath) $fp = @fopen($filePath, 'rb'); //open_basedir restriction, see #1906 - if ( $fp === false || !flock($fp, LOCK_SH) ) + if ($fp === false || !flock($fp, LOCK_SH)) { - return -1 ; + return -1; } $chunk = fread($fp, 1024); @@ -150,47 +150,47 @@ function DetectHtml($filePath) if (!$chunk) { - return false ; + return false; } $chunk = trim($chunk); - if ( preg_match("/setDefaultLang(GETPOST('lang', 'aZ09')); // If language was forced on URL by the main.inc.php +if (GETPOST('lang', 'aZ09')) $langs->setDefaultLang(GETPOST('lang', 'aZ09')); // If language was forced on URL by the main.inc.php $langs->load("main"); -$right=($langs->trans("DIRECTION")=='rtl'?'left':'right'); -$left=($langs->trans("DIRECTION")=='rtl'?'right':'left'); +$right = ($langs->trans("DIRECTION") == 'rtl' ? 'left' : 'right'); +$left = ($langs->trans("DIRECTION") == 'rtl' ? 'right' : 'left'); /* * View */ -$title=$langs->trans("Menu"); +$title = $langs->trans("Menu"); // URL http://mydolibarr/core/get_menudiv.php?dol_use_jmobile=1 can be used for tests -$head=''."\n"; -$arrayofjs=array(); -$arrayofcss=array(); +$head = ''."\n"; +$arrayofjs = array(); +$arrayofcss = array(); top_htmlhead($head, $title, 0, 0, $arrayofjs, $arrayofcss); print ''."\n"; @@ -176,34 +176,34 @@ $(document).ready(function(){ if (empty($user->socid)) // If internal user or not defined { - $conf->standard_menu=(empty($conf->global->MAIN_MENU_STANDARD_FORCED)?(empty($conf->global->MAIN_MENU_STANDARD)?'eldy_menu.php':$conf->global->MAIN_MENU_STANDARD):$conf->global->MAIN_MENU_STANDARD_FORCED); + $conf->standard_menu = (empty($conf->global->MAIN_MENU_STANDARD_FORCED) ? (empty($conf->global->MAIN_MENU_STANDARD) ? 'eldy_menu.php' : $conf->global->MAIN_MENU_STANDARD) : $conf->global->MAIN_MENU_STANDARD_FORCED); } else // If external user { - $conf->standard_menu=(empty($conf->global->MAIN_MENUFRONT_STANDARD_FORCED)?(empty($conf->global->MAIN_MENUFRONT_STANDARD)?'eldy_menu.php':$conf->global->MAIN_MENUFRONT_STANDARD):$conf->global->MAIN_MENUFRONT_STANDARD_FORCED); + $conf->standard_menu = (empty($conf->global->MAIN_MENUFRONT_STANDARD_FORCED) ? (empty($conf->global->MAIN_MENUFRONT_STANDARD) ? 'eldy_menu.php' : $conf->global->MAIN_MENUFRONT_STANDARD) : $conf->global->MAIN_MENUFRONT_STANDARD_FORCED); } // Load the menu manager (only if not already done) -$file_menu=$conf->standard_menu; -if (GETPOST('menu')) $file_menu=GETPOST('menu'); // example: menu=eldy_menu.php -if (! class_exists('MenuManager')) +$file_menu = $conf->standard_menu; +if (GETPOST('menu')) $file_menu = GETPOST('menu'); // example: menu=eldy_menu.php +if (!class_exists('MenuManager')) { - $menufound=0; - $dirmenus=array_merge(array("/core/menus/"), (array) $conf->modules_parts['menus']); - foreach($dirmenus as $dirmenu) + $menufound = 0; + $dirmenus = array_merge(array("/core/menus/"), (array) $conf->modules_parts['menus']); + foreach ($dirmenus as $dirmenu) { - $menufound=dol_include_once($dirmenu."standard/".$file_menu); + $menufound = dol_include_once($dirmenu."standard/".$file_menu); if ($menufound) break; } - if (! $menufound) // If failed to include, we try with standard + if (!$menufound) // If failed to include, we try with standard { dol_syslog("You define a menu manager '".$file_menu."' that can not be loaded.", LOG_WARNING); - $file_menu='eldy_menu.php'; + $file_menu = 'eldy_menu.php'; include_once DOL_DOCUMENT_ROOT."/core/menus/standard/".$file_menu; } } -$menumanager = new MenuManager($db, empty($user->socid)?0:1); -$menumanager->loadMenu('all', 'all'); // Load this->tabMenu with sql menu entries +$menumanager = new MenuManager($db, empty($user->socid) ? 0 : 1); +$menumanager->loadMenu('all', 'all'); // Load this->tabMenu with sql menu entries //var_dump($menumanager);exit; $menumanager->showmenu('jmobile'); diff --git a/htdocs/core/js/lib_foot.js.php b/htdocs/core/js/lib_foot.js.php index c40dd571190..40596596b97 100644 --- a/htdocs/core/js/lib_foot.js.php +++ b/htdocs/core/js/lib_foot.js.php @@ -21,13 +21,13 @@ * \brief File that include javascript functions (included if option use_javascript activated) */ -if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); -if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); -if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); -if (! defined('NOLOGIN')) define('NOLOGIN', 1); -if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); -if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); +if (!defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); +if (!defined('NOLOGIN')) define('NOLOGIN', 1); +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); +if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); session_cache_limiter('public'); @@ -62,7 +62,7 @@ if (empty($conf->dol_no_mouse_hover)) print ' jQuery(".classfortooltiponclicktext").dialog( { closeOnEscape: true, classes: { "ui-dialog": "highlight" }, - maxHeight: window.innerHeight-60, width: '.($conf->browser->layout == 'phone' ? max($_SESSION['dol_screenwidth']-20, 320) : 700).', + maxHeight: window.innerHeight-60, width: '.($conf->browser->layout == 'phone' ? max($_SESSION['dol_screenwidth'] - 20, 320) : 700).', modal: true, autoOpen: false }).css("z-index: 5000"); jQuery(".classfortooltiponclick").click(function () { @@ -79,7 +79,7 @@ print "});\n"; // Wrapper to manage dropdown -if (! defined('JS_JQUERY_DISABLE_DROPDOWN')) +if (!defined('JS_JQUERY_DISABLE_DROPDOWN')) { print "\n/* JS CODE TO ENABLE dropdown (hamburger, linkto, ...) */\n"; print ' @@ -151,7 +151,7 @@ if (! defined('JS_JQUERY_DISABLE_DROPDOWN')) // Wrapper to manage document_preview if ($conf->browser->layout != 'phone') { - print "\n/* JS CODE TO ENABLE document_preview */\n"; // Function document_preview is into header + print "\n/* JS CODE TO ENABLE document_preview */\n"; // Function document_preview is into header print ' jQuery(document).ready(function () { jQuery(".documentpreview").click(function () { diff --git a/htdocs/core/js/lib_gravatar.js.php b/htdocs/core/js/lib_gravatar.js.php index 9e1a85b57c4..59a1e5fddb5 100644 --- a/htdocs/core/js/lib_gravatar.js.php +++ b/htdocs/core/js/lib_gravatar.js.php @@ -24,14 +24,14 @@ //if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Not disabled cause need to load personalized language //if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); -if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +if (!defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); //if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Not disabled cause need to do translations -if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); -if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); -if (! defined('NOLOGIN')) define('NOLOGIN', 1); -if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); -if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); +if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); +if (!defined('NOLOGIN')) define('NOLOGIN', 1); +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); +if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); session_cache_limiter('public'); diff --git a/htdocs/core/js/lib_head.js.php b/htdocs/core/js/lib_head.js.php index a35fee85d0a..1efa4c88771 100644 --- a/htdocs/core/js/lib_head.js.php +++ b/htdocs/core/js/lib_head.js.php @@ -24,13 +24,13 @@ * JQuery (providing object $) and JQuery-UI (providing $datepicker) libraries must be loaded before this file. */ -if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); -if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); -if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); -if (! defined('NOLOGIN')) define('NOLOGIN', 1); -if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); -if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); +if (!defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); +if (!defined('NOLOGIN')) define('NOLOGIN', 1); +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); +if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); session_cache_limiter('public'); @@ -45,7 +45,7 @@ else header('Cache-Control: no-cache'); // Define tradMonths javascript array (we define this in datepicker AND in parent page to avoid errors with IE8) -$tradMonths=array( +$tradMonths = array( dol_escape_js($langs->transnoentitiesnoconv("Month01")), dol_escape_js($langs->transnoentitiesnoconv("Month02")), dol_escape_js($langs->transnoentitiesnoconv("Month03")), @@ -60,7 +60,7 @@ dol_escape_js($langs->transnoentitiesnoconv("Month11")), dol_escape_js($langs->transnoentitiesnoconv("Month12")) ); -$tradMonthsShort=array( +$tradMonthsShort = array( $langs->trans("MonthShort01"), $langs->trans("MonthShort02"), $langs->trans("MonthShort03"), @@ -75,7 +75,7 @@ $langs->trans("MonthShort11"), $langs->trans("MonthShort12") ); -$tradDays=array( +$tradDays = array( $langs->trans("Sunday"), $langs->trans("Monday"), $langs->trans("Tuesday"), @@ -85,7 +85,7 @@ $langs->trans("Friday"), $langs->trans("Saturday") ); -$tradDaysShort=array( +$tradDaysShort = array( $langs->trans("ShortSunday"), $langs->trans("ShortMonday"), $langs->trans("ShortTuesday"), @@ -95,7 +95,7 @@ $langs->trans("ShortFriday"), $langs->trans("ShortSaturday") ); -$tradDaysMin=array( +$tradDaysMin = array( $langs->trans("SundayMin"), $langs->trans("MondayMin"), $langs->trans("TuesdayMin"), @@ -139,8 +139,8 @@ jQuery(function($){ dayNamesMin: tradDaysMin, weekHeader: 'trans("Week"); ?>', dateFormat: 'trans("FormatDateShortJQuery"); ?>', /* Note dd/mm/yy means year on 4 digit in jquery format */ - firstDay: global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:'1'); ?>, - isRTL: trans("DIRECTION")=='rtl'?'true':'false'); ?>, + firstDay: global->MAIN_START_WEEK) ? $conf->global->MAIN_START_WEEK : '1'); ?>, + isRTL: trans("DIRECTION") == 'rtl' ? 'true' : 'false'); ?>, showMonthAfterYear: false, /* TODO add specific to country */ yearSuffix: '' /* TODO add specific to country */ }; @@ -1060,8 +1060,8 @@ function price2numjs(amount) { if ($langs->transnoentitiesnoconv("SeparatorThousand") != "SeparatorThousand") { $thousand = $langs->transnoentitiesnoconv("SeparatorThousand"); } - if ($thousand == 'Space') $thousand=' '; - print "var dec='" . dol_escape_js($dec) . "'; var thousand='" . dol_escape_js($thousand) . "';\n"; // Set var in javascript + if ($thousand == 'Space') $thousand = ' '; + print "var dec='".dol_escape_js($dec)."'; var thousand='".dol_escape_js($thousand)."';\n"; // Set var in javascript ?> var main_max_dec_shown = global->MAIN_MAX_DECIMALS_SHOWN); ?>; @@ -1093,7 +1093,7 @@ function price2numjs(amount) { global->MAIN_DISABLE_JQUERY_JNOTIFY) && ! defined('DISABLE_JQUERY_JNOTIFY')) { +if (empty($conf->global->MAIN_DISABLE_JQUERY_JNOTIFY) && !defined('DISABLE_JQUERY_JNOTIFY')) { ?> // Defined properties for JNotify $(document).ready(function() { diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index e78161d167d..3e4f838fe33 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -29,15 +29,15 @@ if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); require_once '../../main.inc.php'; -if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/index.php' +if (!($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root.'/' || $_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root.'/index.php' || preg_match('/getmenu_div\.php/', $_SERVER['HTTP_REFERER']))) { global $langs, $conf; top_httphead('text/javascript; charset=UTF-8'); - print 'var login = \'' . $_SESSION['dol_login'] . '\';' . "\n"; - print 'var time_auto_update = '.$conf->global->MAIN_BROWSER_NOTIFICATION_FREQUENCY.';'."\n"; // Always defined + print 'var login = \''.$_SESSION['dol_login'].'\';'."\n"; + print 'var time_auto_update = '.$conf->global->MAIN_BROWSER_NOTIFICATION_FREQUENCY.';'."\n"; // Always defined print 'var time_js_next_test = (Date.now() + time_auto_update);'."\n"; ?> @@ -74,7 +74,7 @@ if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['H if (arr.length > 0) { var audio = null; global->AGENDA_REMINDER_BROWSER_SOUND)) { + if (!empty($conf->global->AGENDA_REMINDER_BROWSER_SOUND)) { print 'audio = new Audio(\''.DOL_URL_ROOT.'/theme/common/sound/notification_agenda.wav'.'\');'; } ?> diff --git a/htdocs/core/js/timepicker.js.php b/htdocs/core/js/timepicker.js.php index e47c06cfd91..158c755935f 100644 --- a/htdocs/core/js/timepicker.js.php +++ b/htdocs/core/js/timepicker.js.php @@ -21,13 +21,13 @@ * \brief File that include javascript functions for timepicker */ -if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); -if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); -if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); -if (! defined('NOLOGIN')) define('NOLOGIN', 1); -if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); -if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); +if (!defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); +if (!defined('NOLOGIN')) define('NOLOGIN', 1); +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); +if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); session_cache_limiter('public'); @@ -55,7 +55,7 @@ jQuery(function($){ timeFormat: 'HH:mm', amNames: ['AM', 'A'], pmNames: ['PM', 'P'], - isRTL: trans("DIRECTION")=='rtl'?'true':'false'); ?> + isRTL: trans("DIRECTION") == 'rtl' ? 'true' : 'false'); ?> }; $.timepicker.setDefaults($.timepicker.regional['defaultlang ?>']); }); diff --git a/htdocs/core/lib/accounting.lib.php b/htdocs/core/lib/accounting.lib.php index 0200fbc5b91..21682a4abe6 100644 --- a/htdocs/core/lib/accounting.lib.php +++ b/htdocs/core/lib/accounting.lib.php @@ -53,12 +53,12 @@ function accounting_prepare_head(AccountingAccount $object) global $langs, $conf; $h = 0; - $head = array (); + $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/accountancy/admin/card.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/accountancy/admin/card.php?id='.$object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; - $h ++; + $h++; // Show more tabs from modules // Entries must be declared in modules descriptor with line @@ -96,18 +96,18 @@ function length_accountg($account) if ($account < 0 || is_empty($account)) return ''; - if (! is_empty($conf->global->ACCOUNTING_MANAGE_ZERO)) return $account; + if (!is_empty($conf->global->ACCOUNTING_MANAGE_ZERO)) return $account; $g = $conf->global->ACCOUNTING_LENGTH_GACCOUNT; - if (! is_empty($g)) { + if (!is_empty($g)) { // Clean parameters $i = strlen($account); if ($i >= 1) { - while ( $i < $g ) { + while ($i < $g) { $account .= '0'; - $i ++; + $i++; } return $account; @@ -131,18 +131,18 @@ function length_accounta($accounta) if ($accounta < 0 || is_empty($accounta)) return ''; - if (! is_empty($conf->global->ACCOUNTING_MANAGE_ZERO)) return $accounta; + if (!is_empty($conf->global->ACCOUNTING_MANAGE_ZERO)) return $accounta; $a = $conf->global->ACCOUNTING_LENGTH_AACCOUNT; - if (! is_empty($a)) { + if (!is_empty($a)) { // Clean parameters $i = strlen($accounta); if ($i >= 1) { - while ( $i < $a ) { + while ($i < $a) { $accounta .= '0'; - $i ++; + $i++; } return $accounta; @@ -177,10 +177,10 @@ function journalHead($nom, $variante, $period, $periodlink, $description, $build print "\n\n\n"; - if(! is_empty($varlink)) $varlink = '?'.$varlink; + if (!is_empty($varlink)) $varlink = '?'.$varlink; - $head=array(); - $h=0; + $head = array(); + $h = 0; $head[$h][0] = $_SERVER["PHP_SELF"].$varlink; $head[$h][1] = $langs->trans("Journalization"); $head[$h][2] = 'journal'; @@ -190,7 +190,7 @@ function journalHead($nom, $variante, $period, $periodlink, $description, $build dol_fiche_head($head, 'journal'); - foreach($moreparam as $key => $value) + foreach ($moreparam as $key => $value) { print ''; } @@ -209,7 +209,7 @@ function journalHead($nom, $variante, $period, $periodlink, $description, $build { print '
    '; print ''; - if (! $variante) print ''; print ''; - if (! $periodlink) print ''; if ($conf->resource->enabled) { - include_once DOL_DOCUMENT_ROOT . '/resource/class/html.formresource.class.php'; - $formresource=new FormResource($db); + include_once DOL_DOCUMENT_ROOT.'/resource/class/html.formresource.class.php'; + $formresource = new FormResource($db); // Resource print ''; @@ -103,16 +103,16 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print ''; } - if (! empty($conf->societe->enabled) && $user->rights->societe->lire) + if (!empty($conf->societe->enabled) && $user->rights->societe->lire) { print ''; print ''; } - if (! empty($conf->projet->enabled) && $user->rights->projet->lire) + if (!empty($conf->projet->enabled) && $user->rights->projet->lire) { require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; - $formproject=new FormProjets($db); + $formproject = new FormProjets($db); print ''; print ''; } - if ($canedit && ! preg_match('/list/', $_SERVER["PHP_SELF"])) + if ($canedit && !preg_match('/list/', $_SERVER["PHP_SELF"])) { // Status print ''; @@ -188,7 +188,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print '
    '.$langs->trans("Categories").''; if (!empty($conf->use_javascript_ajax)) { - print ''; + print ''; } print '
    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 diff --git a/htdocs/theme/common/devices/media-optical-video.png b/htdocs/theme/common/devices/media-optical-video.png index 1dfc0ee2bc4bde1087c898f1143a629f8f018b2e..6348b452194e787cb474f1a7d8a56c0d2517d16c 100644 GIT binary patch literal 5663 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 FV1g+M9vJ`t literal 5888 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 Wh2o$sS+8yY0000& z413=O19FV@X@m`6*WWtu{B}FtXbO;ZLv@G!2u{F2Qt0Jq)y$gS;m+VPeh+HR*B9~<__l4f+FBW312F3eUdb_#%Xw5(ScpBlbl&yiv(Fy)>6atN<$SaNuxSFY zeY?)6Sg@dI;KQ#^I`W_+Ufph+wuzkQgP8ya7GhoCqf+)7ptVmasUZjT?X%CVH(x*R zv1ebr7-GHp^xe1t=-zYx?&n>2?ZS>7yLV^hAk26>zXf64;H`I@{IwMoSkBAQHd}7V zXPd%K2KrLm7{RPK?n4nF!`(5x88hH;~@_|ykP@y_mEqzIB41=yj|A{JjHXX6)U)TdTY7xP9h?Nnf>k_=%@C%qno_kn1n%yHAft z5{V=;JH$v}SuTm3j)TZSDh?!L1jqi;F$Yj;jp6MwNHzc~KEJ}V5dyi--~Ic?+G}pO zX`3E-u3TUD0CelVJB~m3;BEKo(fyO+!W1LV1Vs$T(TKSo zifs_s27wU=FBqZ_}~~ z6X(bw1`(hX#ItyVL@XbKm}B5EkkbTMAkdn_H$3uKDSXtYGa2mPyH~F#o_p~!til|u z!k!#>=g_XZcRbMNT$uJYJws7=jL^p&z>yQ59cWR^k!yBUa4gWO(>}WV)dx@Y!HbOb z3?kwd&6*!Ld)~a~ii?Vt%&90}vjDVd)dqd{?6qzG-bcKZPz4~)!{&p)0u~vyKsE?U zu6gXjKq29fEoS1wpfv~|fmQ1S&xWCmp|Y|PZq;gwE(7nr^My6efThcp;@V5Ee0QfE zcG}kXOv<=WTG=4z(2JG>P(DC0HxK0*2P{4wvq0g& zRY{X(lcxXwY10=iTC{orNF)-}@35oxIP`#n2DyoV!0ztYf%08YSP2=*Wjh6;RU1gS zfPn)~yKsmkDE2;ycSI|NkM8|dJ@8RTw#NpHm0S-M42a9c#l;=&8#?&$)y@Ek94^1$ zlBagwZigMU$?vux5ac*v5XcuW697T38Jh_a2=Q?j@S%`1F5-@Y8^|T`4wyB3-xqnI zH^zit7mvrn&JU;$J~HaY!bgBtfEVSbLTPbH^H{2AWz>Sk2fCn_Gi^C znl%H!cAf(Yc{!Tl7$etwP|^dE;^PE3u3U=&N<77(O#v2Wl2CG7nslJO47_Y6#354j zUzf)q`%)+=DVAV4uDgf%5 zD{r{+%mJqi_Hx<$k_VgS))UwU!ax}f74v{XQ2~QuEx`mYY#|i zAffYh!cjnWG2j{Ybdub7>f7zNZvBO%xxd2nW6?Cxu*Hj)Y>`ga9iL98n`N_EG-}j1 z3cu2n*IGkCg;S_Nz>U!YU591M>fq&aVRp1?-U6qdbKy}hKlAt-%xoIUfZ{K{7`LQN z%T^%fe6@!aA%BfX#3I-XF;H60jW5umLLW!~9x>|ba?BK`#*KG;wsE6IGcEY4EHiK3 zyne=TSEUGz8#f6c?c9&RYld2AU0w{Tit~{MoSK?_7G(*(U%n z^<{wScl;^6TeJ{(6&>opTgM`@8NqfxARdkh*~qw1X$|;UWcOE=Q*dHeqAP;U0$3(cKd5b9wdT@LDq-oWWwOMU@Tiy z17or%ZqxkBMy+?69NBhzm6etMPkbXHiiw2Fu&f5T=FOY`>^P1WnHHHDGiF{zL`};Y zH6hobU|9n*5d41GOb)*G^93-3*TJ#K2ExK?@es{jumJn_-KQyl>UwLy)?07&FKrA9 ztXQN%Q|R-V0W9~SI8=B}2ENho9EV*eRV(o00mSY0)GseD@4dwqTg(73D>4Wy(ls?T z9i@OxEh#Cfw%3zV2;cTR|3ZQRk&9)u>2UcpCam;!lpBWUPzGhir8wZwe(i^S`oU-b zW@Q1OveMGF08@hvj0mFWIt}8`DG<_i%K#@%g-x3V@G&5K&di-Vx0}FE1rUGWfd`8p zedN)Z6%})G`|PuCvmrwUHQA&6?lU9^J8G@JQ%dKt0=S#hfGPHC3kdj0pnA!w z5U%YOY7OA6XGXIo&D+@Ns8`kwI|T)avQ@*YNFyZP$qSAHa$R^V=ZQpctqRs;1hF=y@G;Vo~GDF{d`mWlizru>eArca*{Kv#%r?I;*gPE4fCJ4EC}cWjR9 zr1NuLuRT0-;3YAgf|Uoro--R>J9t{Lt&K$?V2?|R%Up43dmc5vXU`rw`m8n9+Qc*q zut=LgM#Q4khu20tm~vT9HxvMPzE`(a@R8@7u;F0`KmqbbVzuHEyY1etW$UKfw&=Of zeptcGMHgS#O}u7iFY>!luq%XZnAjLQ`X+?;!$3r;eLe8@9x~ZXy1rLp94MQ~ELwYb z0&}o4iyN8xZk&1$blM8O&cWuNnZ?mjS$J@xlsOi`N+5 zJ{vY5jT$wQ03=unUwgT(k++yMK!3`$R=e!F6DCX<{=o0Q{B`%=e@?q${=5Y*b?De( zj{sIyfL0Q$sj!yIr4yc6vO~DXN&{G`!D)f^0!Uj2bRdCWVdQ;dA~nLGE}cbnWo0=4 zu5TIS+2!T`$Zo5PF?yBoL=Y)~b;7NwZCC&hGMO~Vz3t_^WiX;5$SP1N0f1z}&MjKB zn6=BUJC*?mv~1zRgWcoC5m*YX&QZA%<24 z2DVue88Db5BX5lOa3#X;zy16dfO?yuWdCDNy8OvU9=ki|WmgVw-`WIOQcw^N&wW2X zC!_E1WZjoWsFoeasg)5OZ1?%F=2cZy?O=>4A~7Q-yPUscu~;^em0VRdecQQn{x}Va zP*_w9osGd{3!uFOj0UuU9bpkf%0Mge7M^W}um}vyET6@vpL$Gd01N8d3HoEljF`Nj zx(bcUO6>?!C?J4#1UeSBoyIVve}{mrbgC2=7X{rJ$=Y2cd;bfXHEZ^GBnUAH%8W=V z(h5`3EUKw#Q!#tiX-p26qzZ_@fSU#*9oAOn0zfyf@jaE z_z6I+p&FoTD(C+_bJonoGRpSVl!H{NKw8pbN#Q~;1GTjo8R0CLIRszXR58YcwE&=? zJ#9H>&fIGyQdcqC!iFr;^7Db405tST!c6v(*h<2FfGpn&Ct9&{i|xKF>?54p8?3N>Xle( zhn?H?|LgZ(Uy)H3@O;Jy>>9y`sb@R3z-pH*!;+;-gL^CxBo0K1^PR94Gujp{@vaj? zDw(uJRfCZOC=I5%{4x6>oZa0)=M;2U8{+VN7ut}BVXR0I|M=^V<=0(*es=)#M7p83 z!dz2TxoD40-3M&F-{&Ln>O{gQ8w$)U;sqQ)4KGi ze*O0Z7({CYZ@tcgaQ>P^6Y+RlifJ+oNI_D3K`OlFDrfntZ@a?_&oyjns{qW-`TRu= zgCYXMkO#m6LxT;6B33+O_H2Ie!P_qaFh`_U`BGF=`~KT+ynMm=7o6X%bEhP;q4fYC zdX6?R(Z(jaoP~gPbTz}Sm%!s&p(UQcm#~iii`hvHht7vJh*U?Rkefwj?Ghno`(}6|)@~>fgO}v4IQkwsn zHQgIH=-vx#>+P+{Ux)S7zy6rnZudP7Z@>F)#abKMpz!r{b;dR^5ZS_J@7atncI_9z zW>Hvo^E(H6;_2reoc_&AJ^_=$hN^!!`b+w}L==JNr5CY@d=Z&OQ;?$@tzUIWsSS+y=S*p8v{P{ zIs^?f0#W$rvEfi!6SNHik>c8PE!}kUy*JfVEgTM@N@UjMQ(|O0w%uQQ^PN`*9Cvh^ zU}tEI*>LdDml=@_5=17HeI^iW&rjjXzy@g=bl;$-CybqVKY$sc?7DtRjBNq={lw#s zx!|1-KB@|~#};J6!W)}uw#aFF9Q|3^P7`8c&nJ5Dk;mT>_{Z$a*6jNFn4A{Xh`v9z z|B+|E`05*T60sP-ykX%ZX>Z}hBlHGrzg~l&IFt2g=mP^^9Xb4q!2qU{+PdGkoNv0)I_JACv$TaSD;5E!nC;hTSdzwo?^PPzQg-+z9_ z{(WJoh&S{BnzB0^nEM<)t^~e~geQDQY3wanBw-kH7Zn>yGW(u~W+TJkHrbtQUCeUDpj;>QQ4x z{`u5X4?W}OvJ-8kUnuf6)xXTRHXB-tcHFyH-~Q*EdCvZwI(BSYQe231T{iz=C}Y+D z-X3c}DPkf;6?5le{KV0}yz$1%?<`%kaH1`Am3Gw4rv9HH620b0#_r+4An`)X1fsf32Jgw`sfmLjX<}9U$6Ww1ueHX540P zWPj0=sHtdcQ9DsL(SD-CMaPIv5DgF=FFHzeh^U9Cqi9Dvtx9cB)rR>+H;yThBXT2h qB2aASu^*8Z8LR)%M%Z-rfA$|D5Nx~BLmrU;0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L05@F#05@F$8GuGz00007bV*G`2iXM& z5i5WDOnx=s?s~EPZfIvbLlZZNw zlld~^jDAK1O=4njK@&Am&@pZ^MvXJh=VXF`xJ60QvWlo6OITDEk#6Xn>Yc9jEqDI& z>K3oMw7cnMGxPb1pYz^*+x^cu_ndQYRkJU)FSgIe=5RR9%6s{leAzWO+)@$<1jhRP zS;O;lbBjD)Z~nPC`$GZUN@#yJBxQxqs=50>?SFeBTmW9_{ z^W^L~bJ_Z}YtEbkzPIqM=`&``+E_NMOm*=%cS(z@=%ho11O`r?q}`UO0NF-ELogxu zpVqEjciA`Q&)d9nk2!7PxYMtICHF76X3CVWKJWGx3f)w=6Xg9a!CVg6xs(!4g1odo zq#}V_blluIb6Riv;fV)GrN88V`S3kInLlUN^Mmu}a8l$Yl=OCq?$4%;#@>a~rw#taefJ)I`l4;!S5yXy%oJ{REDj}@E)Z8(z|Alel1jiK zh5|_RlRWmN`=1zj@&MBmw2Lg^5F0kV+c^88ubhW=o%7x)_E~^Wn?8XJD;qL=-puK* z2mC&P_i)83W&}E7AmwQ+z*Tqx_JqRX22vG0m2(UD^qV~P`%OM24I{>9PM<#brPtng z6W3kR7eBSH3ugJPDz|%|b|F@|VCePPJ0$y*X#&XZ3%bb@Qndk*?45jiY8yCt zz(hNw%jFdBZrS$E+}Rgh)Nc_G+ZRDE)=s=dAa#OeUI+s&`M z?5c_7<)h{#6qB272NSS3H#|%U`;cdm`_WCeJTrR4$a2Gk9jyYN zCOEK+fV=Asrkdy|bXE!{bu)v!?HLl%3rv#-1KEX6U)Gwfn>W`QhTeA!P+hLP$`z|xiV6zo)yd9)B>q`Y z4FLt1XwwlFG*my3E{+opv^jARBzNKE9@ZA~G6nlVFZ@M|F)bdm=y15gr_&>OpO0l{ z2cRsK6p%sQloD;JeE>&NF*XdtByYm=T+EO3y>I`=uZ|gAeg$3JR~?}I_~xHnd+xdC zGA$9OjuB~FqO(F343CE*(8(CZ1}MP~cno-ibak#n9|@M{cd(XYj5UNJm@jZEMS9$h z175H904&~&=V~D4)3iiMBB71b^>{&RYh3vKevaicn=~Xuk|;rB!d4QkFJ@)=sVHLc zc!GsOt^8X{uyjias{jyy4kd&UBS;ZG1FwN1 z=tDy%-oX$Ng=ToU!{vLwY-q`!;pTeA@Dsp6pt7T*^PFfja&HuY$GLSO3!`MMZ-_Fx}KZN(g`pKzas^Uq}Q6ix;PK88zS)aTe1% zkUTgqE~$9R>&tD*Ag%+ZG=ilRbWS0?L%N}aSL^EP7-Hm9cm=~svNi5aX*`M%POlT^ zVeQT^i^gKiG>9y&$;=G!hy;RpNlD4Yea!`wveJ>$0$Dy5i^uJJol<}zH6RVfkH-@s zGo6_%j&R)79)(U^JTRp2FJ50>W16>Vp-|{ckhyra696w$AR8nK3k!F{Lo}WY{jMQH zhP+%|eYn&x!uc+@hf}%jcDhLKR{y%-=DMLLlMoeDu-B0wYSxT0L%G!@Rlkjh%npH7GAHuNt0Ej-cj9jnzSe@@fze zTN@jjSR@i>nx-*B6182tSMu0Tws{dCgSj~)>HR$p0iV}b2-(-{O-jWsRsb|v3eqC5 zjOt`Lg+(8wUKWeR{Mbx7UcC7B$U_e;ds@1pzGiJ@VAA=O6L;<0^Ud)S#vW{JY#fgm zuwCBk!GF6zU^Zn1%I%WWiITS^6jm^(aELU#@mU_AdOYr&zRBBbb<#5|FzFGRz_Hs+ zZOu$>ot>Q{;Mz5NKiZcA@=u{@FK`&B1;{HlEPY@ZDNM!Yg4EMW^Lipc);9-8-ZZ2a zxIH=P9-w5TB79TlR0p<(XHStiDa7fFrM*aSTtLTFRnf}PW#AO{#A3BJe4ixVVoV4voviMVF;-~lp6=~|@!mhXNYT$siiS<#d7E^K6R z_xK4F#U=T}i)LLkFZ0#rqMH{^gEVljmew~;RUwlTCIM+#U)BUVc}9A)?}5BLhx8eX z_B0(9gm^60K5+6J#5u;S6J@D`W_lGuhV%UV{QXT$O+&MTfzCDS|9n?_W4JKABipxa zzhUaMFAss6d-1I1H1E`-p~y%x0?#y6B5c6`c_Jn)4@pQV1m`lyn{tZWbhNRBc=j{| zM0-bD9da=`qW6Qmtti}!`aPH7`#XWaHwme2mwb;C6QF%)J9o_3Q4MczfAi6r!*$gN zIpJVV_Nc<5f+&$i1~>-=&_;O=%Gsz}Gdo9e)5|zrLB);&V%CIA&Jm2HbqygsAk*@) zI*df)tR)nx?NtFawY7(w4#yN|womfd1!xkYQfYd8!h%+$y(q=KG8`9^MFEB^5P||2 zJYjTEQPGhxW6LQb6S~^k+J+*{=^+0WEajBz07g~y_HQ$9gt=9C6r*w%X;3FU2ul$r z2T_Go!Q|MdeIlK*ylg|?=-nTExO+cc+LHo|-Me=0LC3G|k-Yp4pDgY1xaiob$2HC9 zwuXlvM4)g93siU4!2KVRbv}m@nt}Dr&CMgx;X-PIG~p>b;W=^iAw^y^H&=~F#5&Jc z9T-+wF=oUKw9;(P4T@HEYZpZHQA{W!MOpwx@;pE{w6?X1P-Fd}-V~s3Sikz+qbdw7!hUjdjPDp+JWdZM;-5KGs8g^gJ%bh{ zitFne7Q<60@M#&f2hRw^iNjSj7grrT@_j?|3a=}VTdPaDDc2<+on4H%+M$rJ#Ru$V zEkGd80O>fC5rs?u2BYaa-?jU%Z`1pGivcDO+q!M*hPkt6eurL0t12`vk49r~b+ga! z>PXU-s=wjdtfi%eyv0{jQ+pGtx$tu1WLo2ypQtNL0K^o<-{ zaryp_KKLJ48N}&&Y3Y8Dx4)`N4!3Yu7wbHBjLr#=;1Co*MRF#rIZZNAgmUnIFNbh*%xyxvGC%zzRM%>^Sl5dFEG8Ue0wvGaqSwYT4K<8*YT5iojN z5lVc#@54>6t*Sf<%L~q_I3F1K)IOzDSf1q%%4b>rEbef+ENf{A4KX6&BqAz;s@sFv zS}@mI;W1@;18~0za&7WtHEMlo5hZLZ3%gr^*6PyT)O1JmXCKSWU7K#HN zp+=d@Y4EihRxQV=1|V^wUyWIMZfWmyU-fra%s5r#CZW z`vTp*N2J<_02OkEICP{+Te|GQo8;76JJFxW2%vM-YcDKkv=VkJeKA@Z`ex9>Hi zWPsIf5E!iQu;PLakV0@f8fD-G&`GKi`SO)7K8Z8cK)k=d5sCwi3vc-TlEbxi2wV_aD4g+>tEuX%81)_2y!@AG$kJtHRZQ{$NvaAcKcoTW4sh zpg)i>fy9S0<1 z{_M_eyZ%cqy=epgiHyBzR%-mi%3T!`Ce0gH@g*OMq|-;uy){KW~$e`G<^7k+97*;mw;>i=n2Xx)ana~XKR*Gw0CuVrK$|Hw+Wy)rFTJmN{NtugnNq|#7Y5w!bda|T zB3TR_FMpH!j3#Rir)X*k@p~V*>+v1i-g~+qpIv>bcUi3`|C!sDh%imNA;DNs!5xXkSW_s(_U`-O@Va%Yx4*M-T_v8oAE=eZO&HKWUw<`bDcXxNc zQ9>L|aCS%fO=tVenLR^*Ky>X87W0VcBu5vx6QO|*%Q#ldTvEFt{lM)?7K!zAzyTUN`3!ujW zg5I;XY`prkx4rZw$JGH(U%e#1b!Ugbbs~g~2uUq~2n8tQG2#LdB^)C!h?|Ur#j(^F z6#_LL6+ohMi7-s_nakV!<6Z(UUA6GQnb+NkJ8*bH0e?iS6LhZrp<~b(8IN)nV(RLL zP((N)h#uF3b>%}*>`aE0O|=8ZEx`TT_HJybD&yeTaGd-^A|Q&p!zdC!hbO!Q!Z0d; z^c6-3M`Mk%E6X_J`g=ERc-?b_3~X8geBjUbC#>|L`q`Bk`g`q=EQS#wZ)l8>)^m|1 z5XN!RB7Z(c{5qo*4r9&T2Z)f4qR*^~442=0XFbn&M-mvHmH?!?){Nx*q@A)z*)~EG z#?XXCREVe`gmLUfC`5b-Fj*H&v;^WeKt&Q6iV+jSP9!+keK?t(-?AFGb6Ntp4o}eeSF6uTP5gm zj4jg^;Nb49uNm#$g*SIDsiX~xWTE{dgrnUM?*uX7y#d7Z)_?rY53#i_nZS&)2?pya>JSOS#wC52@E?@{QwC?P#76Ugk#Z1;eVlN;vmD;4+RLv z3=d2@Nu`_5q~80(*73i7amSiAL9QKi;-8jv~51S@9U)8_uD7^7<%uy zS7%4>zpYQLnPu(I#&x|IaYGR{%&;SrPi1PGbkZhm+awZJ;3l?}zz$-8!1F!wu78K; zy5t;}(eWH3W8?Tzo}dWP8={X0@Y)N`zyt2dS5^=F^&9;Yc0eL8+NGDLZplV01a`9U z1TajqK;A5>{-oqnc7mGn60)TwRF$O}9?h|*_XzzXJViE> zqOGx-vW(5)pOs`<@bk=d?eKyJU{!{hcp4rhfq5aQ_Pz zo%AB4?~$}^6j4=mLl^;0PQE;4vv_V517qX->hfE;^ued_d_gLmWNvi@Yv3_M`jOWR_E}kdxq>nGb_k6s_+nWT?2%tnN%_K>rGk6J`9>=0%z+pvA zny)-#F}b|Uz9U27cM)P5o#6TW@th0YTRTQeBSM>{|mrA^OS(|=H6m1Qy{lSxd| z#IyoeNdlNKAYW%wAp@4P#B@A@{Lv9JNh_i?qbo<7b|^aDg96-rqU z+;e!_t6pjux7`06;D0JWst({cJ9Z>*I_KIe_U-O?w!~0tRIks-T8-wW5w7LooXhOl zRV-|*V{jx-KJTC|N(Syr6p=V_KN5#dkq|N_2pCH6gvFfdGKP&514HAa4T7S%3A-jjFPdj~I|Blqi&H zTuL>sTNX^iL{+X7?V_c+f{{@#z;Y^%bka7b3{}Ue>kD zMgXtaw4K*){3x$#--#0K)mwJ)wk@CFbtiQI@P?=F=DpAS3~zd7CjxlyqCI>y{RQ5) zc%RywXD@H$xwAcfP4O&Lc|e3-5vugMNEyE4s)bBL||E!0;Z3g%al z^Sas5*MCAob$4*g)j0AV9_?+RvAUNPP3thn@8v*u1$J#Wo7y(uOIIB~X!$yxy{s9- zDCBc%>UqhUR+a1X*Ym2i3&C(udEKlA-rBw#-D%;=n9z9Z){Y857QHoHw{3s^uXk^i zQUBug@0HIur%B<_{AIuUr+of9-mUOx{)*q9EPr3{&i5#c=kfig%zyOP_sDO2x<+CA zcqfn_%fEcyHF?b&0|33&k_oHGS7!}=9<--Im9LsrOgrBLNqhQ;39yA-ONq@Cd4zP$?L zd4GKWDf2$r$mtJODU2WQ1oFwe=tW2bcH>jKb6q(S{0rDU58Rvo`MX}1l7U%h+jh&f zbnHJc?GFtA&+}BQP&uyaDi3pDT3?IPJ)dcs%CRgfbVGlYs`2TbYjAK-#5&-UpZw$< zqobpnR6d!h6RMLb)F%%Sh~j^`0286_`+p%SSHdftg2Ziq`O}}CUep1<{N*p71R)^8f$<07*qoM6N<$ Eg5#H1N&o-= delta 2975 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 P015yANkvXXu0mjfsXeW= delta 2561 zcmV+c3jXz)6N(g&BYyw{b3#c}2nYxWdFOIrMEE?D&hdW% ze4eR;De1<|+dmx)2jA}`$)-{o1cFiuZMl>}Iag+~rwj87Kfn5oD?h;$G*t}P-rjzn zfIIW^3!1xIvVQ(M9ojEpI*eb-+vbi{T^0UR`kxJoeu$grxgK^r88{qnKAh24>z&! z-c{(eo@xt^?DCxSOtEx4%3(xC>vV|q<^!kxPP)7!<3L3lC`v(2#G0JtB_{&I+F;>+Gp5V1fu6->(MH* zfUzZ>ChFl6PPDV<1|lD(ywUKl6q5{0w5`-#<_qNbN4k)(XK$X z=1#6oS#b+nG46z`q_5(3a-C=40>pm^Fa|CUa7-ErXz_MP!976QJz7}@U{IPm`Ib@x zYk$iZB5L0SWV*}=06NsVXpBikj4L2u&=8P{#$(2{l#AY0`6_8s0797syFg{45GG3s z&0R}9!xDpFpuzweGjHYIwPF}f8SIMxZ83ZDqS-&j7Q)zc^ z-MzPaSR;ERqjd`)qCyL4DS$xhR0T3}ntwJV<}KP4|F1Q7+h7$S7Xwq{VYdnT-U_2JUj1nPYP;q^6m|-rloRs(pjc71LvyV&JHZd;36bm4?o*C@| z*1ZcrM@&p+yb>14^RnMhupWY;+3y0dq{}=YiI|?uke;CNCIM==AUG=*kWv-$Uw=Cn zRgDSERE#qa^b-NhiyZhx}WF(Om@^RiSmn)}!Ngu3yq4w~p3bKp6er zH<$6tk9V9dS9PUe|{qum(-{V7WZl5fS$==gA3(X`E zA_1hVYL}=QSdbQ)VDe4Pn&%a?CV*HNHb?D3Rnymxn6-)8q)@Ce)9nj@7~&2da|+Em z*Gl75zmHzO3#RcX#qnqaOLn5k$4xW~7w~fdaS2gRVEisJTqp?#pP(>5W6iHm^~(|N!+i(CV~oe+ zh(EqdJlCUEe-SMdM@L8aji1Y=7|Ee7AY<-~mRX5eLI!%;Vz|?~|L%KbsSw+DuT&O*EHl8bsl% zq146HG_K4IS7=WFzS+wkN4e&QxcJ^>)X_>F(9&@VKt%&~b2Inp!i5V}`IEcbzWAF0 zfBT6LSqGwur{mEH-`B>0FPuA%r_Y|%TEOPUMx*w5Os%#5&VM2EQfrA&>;mxPfGy#y zfa@Z3yB)lbcPlOm26f8(` z^M8E$DU30gl7F}_kKyJE8JD@+e;1(WRzL;ZfvC!po4+$7Q!&qdiIf`)B_QyqWf!0v z)h=L5kPit?N5f;>`qQ2Klqb&RA3l7D`}gl7AbytnaNlYkffZOc7ux?iO!9gfBq<8D z@9uZE|B1ELm3$lA%2VG3-Xe=rp_7x7YO6as8sOoh$A8#+xzAgkJNUE>C+;QFwwk-m zL`W$kHc6m{b35f-6RkO*709v_{azpI>uX@TdHc^8jYsHox`2DOpb2R%$r_3^{m%rT za`JB(e);;1TUnZBg`Zk$N>hwafEyQ{mMkK(zDHI!?ynNq6j zhX^T)-G9ac5T<=bwJU262^@yQqjWGF=2}aU83W^dapLE|IQfgqlLMOk&d8Wz4LV;7 zuL;0%4&%XkpuCUueYg^UFds48ap*eqa`YcRezJe+)B;B77`Z9HxNV7tXp4BoCQ~pb z!+6vKuL;0Lj!}+rj?^JzgaUErl++RC8Nz%W<9`nGzxe29zyHCHe*8h2risbe0!;7? z=q<>C;-R%pkaQA0Wj4Gf085^wYT+v)a*8h=3%-K8q}&KoS8oNz!IH(n!NI?7T)+OS-~Q&;cUbeW3;3Fk(+K6>+Ct_NfmnfeJ>_A} z)p~aV=}Rn`&L+saS}+MijLez%NseQIGk>|Ju~1xQos-HD2Ep2R5TGM)_wuX?fawJw zow;ToJIvMhu#PWx9E3T8e7 XZ=_$&-B08k00000NkvXXu0mjf*qGNg diff --git a/htdocs/theme/common/devices/multimedia-player.png b/htdocs/theme/common/devices/multimedia-player.png index 00777e9a481656680471d779ffc6832031d69e6e..92ca65c2651e04ba0144763bebf37ad247e4c430 100644 GIT binary patch delta 3500 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 diff --git a/htdocs/theme/common/devices/network-wired.png b/htdocs/theme/common/devices/network-wired.png index 2981c5b9e90b36e74060500d2708e857bfe0449b..9d061858c01c4470ca703770517720ef6d060917 100644 GIT binary patch delta 2592 zcmV+*3g7jw6{r-DBYz3+Nklg?d&C)@r+!G@K@Xnjs_H4<`ZR8O#pk?>6-vYLNb{QkV>VLPN$X0WPg;+W|hn349?W)GsnE)glCUe z0*=R{?)SSRfj|ZU^ZC3Ag@Q_@lFH?>19ke$nGpCE-ai3{!$G&(&5^*rG{Qi!SQH^^ zwVLYnx|+?VTCJABnL2&unCBjU!wJtGq2#{uY{oBV z>hzgo-b7e%3(p?E1nhP@T`m`RNdTTS5T?`Vh;ZZaScIO>=UOZlS}vF3mos(x%rVcs z&1UloZsFO3bZ-P~w_Bah=YRzGqShRMWIcj79)FwVIAzAR@od}HDNfF|ZF8TkQ=HS{ z@NC=a^na?RlDT}T_15?1s@HS<{r)@X?%5xH_(8(c*ioN}Z+QBYK{RLPaGE@MGA&s+ zp1c-Kpy|`6(}KC9#p@$Sj--j>`d~^(5hS>T7Y5OFBS3R=GfG+zK@kE&83vedz1|i> zJ%8xCPbloCFKFh>nUoMQgc2i%(){`JDLS~nczw*6G4!L~`!sOiKq-O(E`30BJqaM| ze2Nel$}lW)8Bx#E@ZrNLFX2@xPJN5!&YerO`Jd3zqR+|O+nXw~-WRWr9Xpn?V_(8( zK|l0Yz@-oP)RO?R@TmwfXwV>O0tf;C5P!oT*`JS(5B>DhPq@c(ypH$rIecFBRlubW zT?x?C)Fi9GiV!lTmGuBSP4-p5r4RV@m;nC%{&y7@7e852Qu636x7>1T@An%U8)aEs z5yDy-+=^+I$fXbX^oRg?d3pCRe1DF-4pdiH8@Mw2Bt(Fvq@+9$78dqsLqh`ukbh?7 zT)>K1ITw&VJR$(#^Yiojaq;085g{wPZZH_u#>B)t6%i5fcy@Mn$*NVWwyjvPg1WoA z6%ni*lvp#_r#HB#1i-MrhXv@%@JHbZ^*RYrUS3|$X8?6vsJMpr)~s107NykGRFtmO zi`5pys%iC4OH0H5cfSCDXTUyObbnCb<%L*wS!nOcz1Qhq4Mj}^KI_)4!)M%Lfq{Xv ze*Jp)3LxR@>+6qe!JBrNC}DR3CGSh78~i8RjT<*;`SRtob?a6+9o%Ye5diQ!jQgxz zyY`&XXr!K=9tGaG-6-ILcLme73)=|o!WB|P;DwTEYHA1zBQDZi#@Fat0e=9Wl$0dk zO(qjUO)=ceX0w3r*w#V*t^V|l=^NU9aXX={HWI~c_^$}Lxw+doka^^$IUWamTwGiq zUd$xCn9Fr_byQkfO24-JD&W2T@}ezWTSSFsRR@v(av_4!xOj2R%gd{TbNL7KFMt(z z4tyv%Ia!3L0Yw3T7o#C({eMC7Ek7qj5RGg1#QFJ&g9ooKUc9)DQ`^T8C+J=Pz(+?% z_u&=%f8i%hnk4e|mX;O~egb|`;R)P}ks#pf>**R&;%(coQrB||`;-m@a2dS(F#=t^ zdX-9+{|0z5685yU(K+7!0KdDZNAC654%hM&c+yiMI0PRa9^QweIDebrWrGM93A-8o zxWPb2SFNI5|7?2@02Q3;JZ%gwzWCxJx)T8KAt51F;gOcMF{D<*bXb~^A>em*bt&+O z8_+mUIPm=Q&p)Xv0RSHm5YT7k%9U2(@gpRyh7p00F=fgW>R=(X;0p^2kMZF~Kb``2 z>O}y+-w_lP^tmhGv41OMWMp8AM4X_&7Zem6<0Gzq&p!L?J@Bh10UqM)twjr-Q(RPJ zL{+x3vQmp3(?NkpKSX^9e=QaZq5WOH89+o5MsfW1ilXe)uvaCMszenEBmg)aKp0Sv z5~(BsfeI8g8wh}+*kBg`a0iy+K!AXtbHHY|UCnpDKbD*9?td;|W*5&i8~DBNd+&Si zd;g(x{6pOT2*QWN0o&W#9gLlqudlD)KEqQ18v1&(va(Wf2k4#OE5fTF9~$%e|U~V!>M2hk$@8#g(u<00)OyjQ@_2sx+-XeLqqUWQ&U0susMKL?IHv&fPa@0QmK@$%*|04fajLS zoSmKNsf4JUP!}G3PY^zA4p2454sbR%H+R<8*Kcq_Nw8X7wY=Q=1mMrl&rLF!G@j>~ zt*x!9@SGaCv9Ylrd>9=-=8m)aKLIZi|F4_?ABufJ3xDqN^3oh09tPlbwI$grS-mR! z@bGXb;AQm^pvCCv0bpO-UqeMDHi63t8cb+5hjSW&CvVh;4_OF&WhOUG7(B@Vg62|F zu*&*+ml8`87(`cy;Y*hOl_oZ*y~VcLM_h%WG?Ezir$89)OR61Ama1+1$z=16~mx;Xxh&;uX&)fPH#| zA`Q&W#Kgn}Dy_%C!NGZ;JAjY#Y>(7OQ^5DIjgM-RvF@EmVV2`^K|w}4*&-UWUicn|n{;Ila9 zd2({{s9E7R*9JHRgj@1n2URl5p&cguV` z415fD2lxf5xf$R)Tkhj&@iPXGG=00007IVSZ@POrkxN9rYyIDV|Md^JdiAPAMn+0h zR8$(>yLV5tqNAhJC?+PxTGnxl=|6ck^E8bC*RNlf=g*(Zix)4HUcP)OuU@^9*RNm8 zn>TMHF)>l;?SI?1O7Gsilcc01YcX8M(P@~T&*Agbb9Elb(>w-Tx^zjNK7A@{*RGYh zbLUEYe7qziB+!)f4AG!Q=yZYk96oQ|x^?RL&z?P#%a<>k&j4?4Z#j1CSXK?tC4uKG z8NlZsKYrZ22JnZ)#l>Zp0emi>pQ8+*zCQyF9y};hr+-d0ieWk10BZ8&$ueci6d5{n zsFW^U+9-zc9;M;GNdq!8p={Z*Sy5(h-+TsKym(QbJbCg-DVR8MqSB;Ela$JrFP|l` zr06tEZ*2hcf$8Qnz-U6HN|nBZtl`aRKx}NRu@op(ty8#(^J1O`0^3rcIkl^XAQ^MT-_%ykGalnJ9eE<%v;lqd4Ch(0aHEPsI z8aHk%&6+inmMvRK>(;Hs)zwwnwr#7$Yliba<1s$dF}*ds$_IIx$AHk#P#Rz~fg*$k zS8v&3u}GUXZKOko4$`SpC+Xa|vvlp+m1kZvoc9@z@wE{eT*EUTa~W{%+&Ovh-~pvg zpnq7TDFxH2RVxM8v13OC-MxEv>D8;3^zPl8XI?X$_Zg4zRk~@@rfF~uukwNE<}u*x z*|T#0{(YkfN;7865Dnkct+{%`g9fyhq3&IzfB*h6c2sZi7~Mw(4H_gPhjmxs-MV#? zzP&80650d}uHltnx_JyZbLI@Ev}l6S2!9r3O2JI^a8X6wYg$v8H?yU-(opozm0dwv3<%@!2w_x1JtHo?pj+ zjT<-S0elZQ#v1&q z8Ngzn2L`kTd>pRTe4T~}3=9mx8o+K$RD9&ULx&EjMrqZmRh+ukKhl;VS$~zy^s85| z=JT`P0Kx;%f=LGrpXNv1ioPWeUOY$=&%h97pv)2F(9}*Ih zU<*DxDqQ?x{A9($6_Sd7`bbSpm3{m6$%zvubalusWuF0rM=`b>K72SaEG$g!-o2X! zJ}fd!!Fxx0OT@bf1^(`Xq<=914W;bbwM)=2@<(Qy@EgCZ0fb+^e7S-T4-aQoQx&(H zH*YHV8xc3e^Qxyz37;a7Ns*$8eVB;Pe?B!~!-fqJ=*Z;zW|qeZ@8jcRL1U)jRbAe_ zd$(-cwoO8>gerKC%O3K_?LX8EP4Ep7&wa`SN`N$!0LKa8gihf+|<8oX>Oy5Pr^_Ihn$9Sb7bRwhmT@J!{q|_bSBozJ&#%H7lmLDr*-tRSZ{EB)9!p%V#flZn!+gzTfIUWUS8Ty!h|3unH7mP) z`*xe~tPVzarem*<-QQccZV3;J9OF>$TWfez88C9>$RDxn+!nYh zKDJ5#uNiI&o`1bXc6&KeOQ=wxf(6B1!JEneyxAWnOqfs=Ywdw!$By*_bg~g1pF_b{ zK~P1ECS(vE@Jp926+b^e@%8nU;lqcg2hXoYV#$&v4e%y404=vY z-hK$cKcN0U!xtchb)V3LTefVOOrJj82+yf4ZhK{`o-TaRqD4&sPi58sI$-JPB7jp_ z{JE&ehJTIV2;;(pTAPD8S%GJ}VH4iWRp2jJllv9b;3fjiLI@Z5Nigbj$l;d~Ro zsec$Fe82!^RH;&>e6UOFQjsD>ssj2)z}w@T+syEkHGDo4_-??DHfzh}>$(SY{_{7%4!0{)SP$LB3a z!c%PV9ROb&@NR$~2Y6q=?*x1(jEO2!rp#;&pCb(bydB`30q+8MH^7eryf5H?N6YRG z_^ i*}>l4UUy(}y#5P|uM_tQ#4DaOBA8S^t0k z|NrObpZ|&3h5ws7d;T9fa&*=}xrd3~7GAw_Cl$b+IRMLUg@1AU|Ha7$Z#R2=Z*8~3 z8e_XQ$LyHx*fX^;s%^Wywx4aSvdB4Kv$xjhX{VcC?Bti@GdsVGCRbm230ALLk5xf% z4~`KUjxq;IB{Uih5D`q%fQSVQO~bK5Id%_Z@XGwyqM*%51*8JnoK!$6pv_4IqypNU zR6r`A%}E8M0)N_^R6r`A%}E8M0**35h=1;r^8X=VaBvEL=G(8wjh_amPahndzWT?( z>FZ`^*52NT<9`t#@b%YYw7D%?^f>^@jd^v$*HCL6wsA%EH08# z&~JZS1t3HnwR(*y0U!_nqUL_VmZ?5ZU^F2Bx~XA&Y<~forcFpGzcCEsX#n#$%n%ME zqhpKgyA}Y3kPMa*41k%@L{l|<_3a?eKl@aiar(*l@QW|;&5u9go|~^n#>s({zr7d} zcx3<_+ro(_^-)WQfYs}^V*kE9uyq9;VGdzF2j9=YGA-!33e(Wh*%89?T$q-Ld>G=S z>3`UFa3A7E1C2)fYdXO&3=M9^hHYE0YzIwRIt0A@+810d9z?lVV8=2k%x94g zvj~$ZpR9-Z5CouBYet1S7=TKIw?Fy__doC;j_d8iaeciwu0L7!_Mksm@9*j2AXr5~ zHb8%GAGLHMxM}nHhu3ddJ-2o1roxV$+qqCU2!CdVX<0B$3yMY{g`nwrvTZ_DRWMPq zZa32pc&-b_$*k-zm&@3`eLJsSy}CFvGc&(1zwmg=CxXWxcjAksTsT~>M0w&k8%0re za%wV|TbOZk*}(CA&jg?eA(Kfcu@E4F93PvA%lr4oyNGL|T8`?KV#z%Dqyr}$cijHd zPk%dkzngLQdV#mp@&Zt(jR7=8%$AdJog}_zIyyr;n+@#Ts=)LE*N}qsSPDgmSZOo_ z7%Zb0!u#wCk?-oP5A^od`g?n#o}TWC>$+utA^=gnT947{JoDU}_%C+t*o~+p(WsUn zBvUP_Q|VxZiiHZj_Vx$(c?Nc_3^r~)I3D$1zI=riP96mSn4 z@z5J`!C){s;)Fqvu;j3yK#Wkm>?7EC#O(Q#jKNs0%`I$6a(xnLx?c?rA-J17moNHq zIp_GhXbk2H=-~b%1aRcHgRp(~{!7>6Xmnk*5kqrY!p zVsvJDa@1}c9~~KYOiVeUnc1A&QiH)Lm8fO)8s-yDlTww>5{k+y9%W`%RlYHxosF=r zS&4w+=IuMYlG={;F5=nfuI>-kLEFy#hi0Z{R&Uw{!#V(mC;B|;93HYwj!#*K>|^$E zIjjTMb66rULLzBK^p*@pVUtqHe3D42O;`~DXGp?YBU&{pu%6M};FBXUd!dD_eRYh5?xT;QE^}4EB z@~T=|TPJ-DN#xSkaJ@uP-=LJsRE-TSaHB>6YZVG*6L6vlQ7I8sb8E9&qgEkvk7!1< z8lz69*XaR>UfZhInh>N7)tgbof}#c#ZAVdyL2ovo?FLX7EJn1$2%@p0)!5o<>@=GI zZ`;l9Ep6{RJD~1&o!uXLx_f(j`?~x4dk2OFhJk<9A=}81eZ)Fy8@Ag<#(Zb z82$nBS<;$LSL41Y^1Tylt$|~y&qJWC%C&y13vV3bs*8)49ISgwJTB*A3+B<5`kj|> zu}QMqVGps1uhrOtl2C06SgFOhlg>dB^r zUr)vR_+9Qz6ZjZ}#Fw?_&Fr2U6aUwX=87|R`L(!|%`8s2Flws!MBLX`*F!r^r#3+S z&piIA{Wfa7=|BZmP5?h5R(9~Om`d;0c2 zjh(mq?$oPeON;kz(9!d^<9#HatJyallN5@p+ZON474etM{xZz$>C)SSloZRHgTaJQ JyfBcI_%9sSw=w_# diff --git a/htdocs/theme/common/devices/network-wireless-connected-100.png b/htdocs/theme/common/devices/network-wireless-connected-100.png index 747edc90be4bb46fd580794811f626cab2cf0ed8..3ed3b9d5b8eee309194f79a37399a3295a04bd87 100644 GIT binary patch literal 6807 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 bK^7MKxP*~7Am{Si6`qounrx}G$(#QN7Neu} diff --git a/htdocs/theme/common/devices/network-wireless-connected-25.png b/htdocs/theme/common/devices/network-wireless-connected-25.png index d72df1bdbfef35c11c43db0b29f66f1bcf6f17c4..729953b183d62b92c02c35edf21a6a218e7a2263 100644 GIT binary patch delta 1692 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 diff --git a/htdocs/theme/common/devices/network-wireless-connected-50.png b/htdocs/theme/common/devices/network-wireless-connected-50.png index 7fb79b280f28fc9d3aab1a95586f9fb4e96eb0cd..e50e653a6e8850767467166384ed18a0eac18b93 100644 GIT binary patch literal 3006 zcmZWrc{mhWA0CaRo3x`0LLs{lBhsjlVKDYBDza0!X6)-Hm&uSN%QRz6)v#ti2Y^HoTzg)S{|j;wm?$JnODu~KJWQtEK?Q5V&y$CoY^?T)du%dvhYjn zP~2>7-Rj&;ZQ=(O-of6-sO>(%BFk4=m|GZ?qjLUv+>%h%Bi>Cpbgh|x&RU)+ja(L8 zQJ}!|-s>&-9Pwg*nPchhpVdh>uCNmY`l$+EsWRqnzc^ttS6*y7`&g#U3BD)@ZM1B` zgsvBw?ySnP8L@Ia)*>zGpb>HsBV3~W`4NKFPlpiriI>V=9<{TMQ(L{$vaQ_QRSrE9 zA)GkxcvX&+PW0xtyXlv$ujcgdK&P@9{{53%1WUZ?ko>jvh5|K-ZW?Uau{+Ygs4C zVcP_>$4MD)%>b{En5F#6vk|38&@>-F794- z=8+bv8MRJw`hpd4JLfHTF{0Fy{q0xQ_I9HL$6;6_OTVJoB~X5UfHh$;j^&ufG`K7| zY{!iHPdzNY!yJFpb{WH!%4+#Z5_9RQx`w=AM{0?L(NB!Pphei_o3HCkuto6exkUdT zllcIga8izB7+Wz|<1>#+treE7NJVj}r^IsJqQGf||XGty*MbYD$u?KM!`VIV3@F5A7=AJ4V4lsfc2!6mTnaDl#3XL&#hO zs%#Y22cjZyzE*%k1N}`{Zg^_yxvu&ckM$1~QbUHNTPYZx7!k1A56Fvmpy57MYNg~f z&qMpvtb_vZInTUBHb+DKnufw^R%SF5##*=0`YA)Ve)}PxO`hY0P$1_%U>P$Wo-e;k z&CF4U6Ru<G5@P1zLZ{_j4y?%sq4xkN*o>J^cQ9CWVctZOl@L7nu|~) z3@ZI`mSS0gfRTV8hyy8r}Mh|LkJdN5dj^Gft{_+SW)AfUOG$Vz!P2`6vyE~j~Pzyg`JR~ zY6if8iayy^nFR1XR}&f_LnNG>7&lAW;otIM7p>XP56%PL7ob7)u^*wF$XQ0~C`7*L z&XAdW5+rAc{wJ{KAp45s9OK*h4gr$MrZgh>);y4jXB}@&UsJ11RLqH8?V6y0ThlUd zkF<&vKXmDLL+}sfZ|tlq03^A}y~o1seT5?rU6!i`iSZhz=m98`0bBw}LL}YsU4q_<7$CAl90RqQ^wKm3OyTm0W zhnO4o^U>y4K57zDL1%U1zPnUcg9a669sMZS(d8-&Ki!02DYG{#laf4~yJv#;eA2M@ z94!eoFQtmd4B09u6*l&6X|%jLMQhF*={)yAORLZoe{b&mQdvqvtwr-F<2Yd70j#>U z2UlouoDjf|Cpnp+}Oi>eC<*?EmL9qB( zgn_Tm=;AM!W8r%+%N+`9G?x9|b&n~3{PJD7g-JQ{;#aX)v0t$EV;_l%zzR?TFT4H_ zPBOU9(X`-i$AGyJh36JSR*4w7(f*W|2ii5w)mTRkge-yUDwajXv z)#o+R!1-A}F2#A}lkA*=@s2By%ymgfnARP8JtnrMKar}fJG1`NZ}hl^+=Np5L-%>< z3&XzHK2>M3e6G=pG;HsYcv85LGlHZZ2Gp_z)+pXGq!fke7ri!ut}J*(id9hNxTRBu z)KLQ!V&_(I>Q{N}P&}m$0Mgy|&C@3~|5^#v=2e}5`p{@~dhN8kJIRa@@85rOt`CJ4 z-OB@sR4-n%Y}2J~oj$&CxBh{iwg#v3xockH<#L|rz06* zo&E_)6}{248>beZ@?m-#99JfOJ`QZ?ZIXEriIM2w$94#)SqdfIw%`P5U=i|?H9t6p z=#!q_>+w=0Wwpm#aDZdsafCshzwTspj0Q^#&V8&mt)T3-zn_x<_04Avnwuu$^cokU z`Qkem%HhEc}vdvH#_o@C` zO2^R9z{mRW1Qfn%Eq`#Kdb^a<`t4X&aUagg*dRz;mrq5zh{Ssf*Dw+SiG8Tdh1sOz zWw+N@oCpvDlqZwZ19zX8l&0^zDTaYD+Slt@G(PKMJt@&-c7@@k;(1qjB^n(FTs$jb XB-iUoWP7&vF9&F<>DC)CI`glt)^?X!hMg~-^KG@7w5 zL-tXP>|>h{8tX^yefsYG?sJ~^yytzN^PKuaBpQSrb2LJ%hLUq8#N3;6z zpamV>i=Dl{98FX{#@ZTyvOXTt(c-k1j=2v2@Y(NpP?bKxK0ex{@rCL^XvXPySwM<3 z6Jl~lTOd1_HW+YteC54+nG68Xk3hjUZXpRP<^hH&qvzBb1tyhU1fc{RPR^yX5?<)f zd3R7ncj7<39|>`Az7^e%*GNJcy2ChO9D)VzR{GlvGZj@R4J!TfHhP_XJ=0^-wuj#YJLK)F-Hq&V zmiAI9I2#mo3l;pDU;Cg=FOpZr-J$B`RZ^EX$X~Lb& zajc^$3lAQl$#2I*f9CBZfJ3327OPsrVN83Ol+{b}J&a08miRRC?5mVtanRu>(>b;s zF2+@l*fjQvL)v(!s(eQ2C?M#L7m7Z6a?2Tezj}7?mUsgDch2C0?11la4t25@`kJ1k z-Bi)RtL93b>jY-n4;l;ny<*GRv&3xwtB%iTay4UjvPPRpe9qG2Fvr6*Rz_^FBO@B2 zb&h zw0d54;RYX0Z~4L;*jVl`c^VDv3{V=g(2+$Jl}|TwPa?IrcbFdExrYMM)L~A0Ak^tI zt!p#S3Ewqf)|&!{jG63rELP+bK&qWs%C@0+uIPB}8m4k4)L^b=sZow?Bm=y?c`Lk} zq_)=f{@*_KjHgLuw=)}|YK0AWP!UkKCd}{1Xv>t1%=;k=!oV_j3*G3JRI9#i7xYa# z*!4Jaaqktk4F~Daw969upK#)+PhC>L0QJ2zPg(SbU-KVa^tiA%Vv?8wtF2!qeC~^! zx0#y_q{rXu9~To;9ikqa_xiA1S6VL)*L1(Q8?U-w+h_j>MdOnolK$b}+UwV1_#(6H z91)(;@mvJHe{L6FvcRB!znJ19NT2pD-Z9gJv})uu+|p7xkficTL?w9xX(&q>%5|HL zW%$1XMBHE{bc8n9N-qbR(BrO-IGBFo(1cdCr4>QTd2iKl`Gp*L{^?eGxt5Ekns(ux=Qg z?QhkwXlQLS8;KDI@5zomFPhK_V6e{^T+^By}h@&X4-w)De+?(ES&puJ)YDq)hKnN>#MoMWa>JX z(Y)jHA-S_H62)R?h<}AJb$w9j%!0|eLj^WLW5gTfFl#J)R)Y9 znm6ed`94dmh$^nZPRAB10NkpmTx)#^B76xjpL(cpkGdXq2i+xGFK~)I&6Hb(+=)srrmw;FX;28Hnh5&xODs4Mz`Ra?A zEk*3SolW&QJY70tvpZ4cH5~pCqPY*1mQfI7F_wY!%=1Ux#2R^fpZV!5lT|6n=*=L( zKe0s?0-8AH<8_=}@giMBvdN}$R71&3s&qh|?5c=$S?pWioZ%M;x;_4_X@e=8G`zs; zY&|$q$qd};!O~XH4)i}$fdSAnc&*i6nb-k}#|lNCz+BFj$4!%(R>n&r>`U0#%}vAJ zq;7kdv4|_a=GvEZHB(?9Qdob_U2x|Q@&UT-3m+V^13)JpX0AEj^py5kHTTt}$F{ovmfZb62A6j==AlXrp~=~H_=~Nx z?0^$6LRo|QQS5U0Pk9o%!zUcq1D6rr9LV|fKp1^B$2Xu@P6rSEF(x9y#%g(Vx|>0k zkSY^Q^$#;UDxK8{8=1}!KM2nu-rer8QmB@c!0S5v5k|uj9@;UFiZA-kW`aQi)sI5v zm@yjsb$_xjv9>gDI6|Z|!0$GBAl0_Xtb7(L(ZQyN_H&%Hz8un~k1dI%;keHQq&C|t6PhNe&XwSOy3+w{hQE{c@Kb2%sWi9 zs&k?ygewVWW|ZB=5`xhQgky>8UKUGyg5wPz6^jy6-ib_mQXM-!=ZPg^i{X-z;`u9n zvSdM}{f4G<)GDx`YZqf+utZ$IXkhN1lk9l$p~At1h3F*d<2d}QzumZ;gg>?s0*+5u zbDU>)8$@yqJbA?*O-DB`L1_OcPoR}JZ{{D?@%!T5=;h=$oG2%#{HH5_$M{Fp)x!w- zmR*yEZ&HkN`#f%gU3e<1N5*kxfM4M>F|XGpaGsK~pnHZ9j6c;vq#yxKRcs1|x?O8@ zs9!E`!+e`dAI<9@^XhsgTfB@hfg$l@pw}L?0O%(p80S-+S~s9I^5ehXW{!?q!~ZP7 z*gkAO%`s`b!GW;>gi!4Pzi~`1q9ys;t&LHOnGGcc0FdT&E4M-#m#}8Ba;rPm){WUA z2l>rql-6E;EgNHi=CHK)x4bn-ynh;;A5^rQDE))Q!$#gjyE|-WhxM@R`c`U1QA4Md z1A-~CYlq(2=(0;f4ihtXZDRtjJ4=Bj>U*grGjA>Q7H8aQSBw%aXa#fLH52T^1GDbhMR*+4`5=Kd1Q~&xt5=I29eppU`ZSI`;Hu*Drlt>{$Hs(}bVZ4mG3^smLd5tnLS67@ z(RP}wn#Sa08Hl;FNI8n(>)TDbuk0Febkb9lZDaygoI|~EBnAlMW9!Zh)GGC-n69-& z(pHcP-U!OLyi`_HEW9Y|<7wgz?bKiQgW)fkXD6mqii#@jSC1{EJgrcEsI3KQ6KQW1 zMWAJdA+34+|7zD-s`w*wd`W-OQ;`Ho9JGX!gjpI$yPP)_&Kn zaR!M>KfG+IS&+c6$*9)ngke?LH5hY?Z{L1}<~L_+_NAb0)b=MA)2%5a!b9SFxVG-z zn@pY+OHI>F-!IgmFZHXF@DpXYWzUt$>~uswNpv(ZS<4b0Lp7iG!Io^I(6Gy9UJvvo qqqUt$@b{G4fts2^l$C(Dht!g$av$k70d+_J`~WCKA6%w!FYLckL-^DH diff --git a/htdocs/theme/common/devices/network-wireless-connected-75.png b/htdocs/theme/common/devices/network-wireless-connected-75.png index c7c8aa4fdb6112e42f5e02cb7ee0cca0583b9304..064b0f184696cd58f29b7eb45cd1429277d7f4bb 100644 GIT binary patch literal 4972 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 AUH||9 literal 5121 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 R^7kBty0R7!ao6(c{{ilI7XSbN diff --git a/htdocs/theme/common/devices/network-wireless-disconnected.png b/htdocs/theme/common/devices/network-wireless-disconnected.png index ef64662cf1fbc3139507ab814d56877b1137e2b6..3062bffd7459cd4033770abca413c605134588ea 100644 GIT binary patch delta 856 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 bK^7MKxP*~7Am{Si6`qounrx}G$(#QN7Neu} diff --git a/htdocs/theme/common/devices/pda.png b/htdocs/theme/common/devices/pda.png index 7ed9c20760a10e758ed9a0e2efde6900bded42a6..17a675520715de41dcec655ef01e165d51e18698 100644 GIT binary patch delta 3072 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 diff --git a/htdocs/theme/common/devices/phone-openmoko-freerunner.png b/htdocs/theme/common/devices/phone-openmoko-freerunner.png index 2a957c3f894f93e7f3594e091921952b11129e2f..fe3a64f0ba8d5dd18f5cefe3ae333673ae06b03e 100644 GIT binary patch delta 2773 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

    +BlULnBwA3G4qqL8@f0dXx^y^dO*qjN|b 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 aKmG-sYL#Gt(|X?k0000e9X+uS8&YC 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 N002ovPDHLkV1n)R7|H+u diff --git a/htdocs/theme/common/devices/printer.png b/htdocs/theme/common/devices/printer.png index fd48f9f7c734b3f9a120a9a6048044f1c9e0a3c1..eb8a5640faf354cf73fe0155c050e0c07dc65826 100644 GIT binary patch delta 2645 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 diff --git a/htdocs/theme/common/devices/scanner.png b/htdocs/theme/common/devices/scanner.png index 78a2430ab33bc423de92b7f922b04267fc001dc5..48a4917604ebac7c110c3e5f2cc249926d10488c 100644 GIT binary patch delta 3082 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 RHUR(t002ovPDHLkV1mCwX^H>< diff --git a/htdocs/theme/common/devices/video-projector.png b/htdocs/theme/common/devices/video-projector.png index 05e3877c9b254e47357e335eeccd4eb83ecd6477..184ce1c54c577ed5fb2323820b1a3549b65da957 100644 GIT binary patch literal 4065 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 TQ_NTE00000NkvXXu0mjfoA9~v literal 4164 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 O0000MmsB5I{p9 zde%#vQjZHNCZZ*QP-jIK;9EQ3HX9iU3_3AXGR?Attk0SSVlx!G!+LZG1`U@e<+;58 zz$a%wx8wj7T!|r2A9^FJj}x~z1XJ-46!KMM8E8>dqVbp^*ep6#Cp^@y4zFFdfVJxa z80u^G#D6aLx6craHZ&8Z^)p4HjHIgqv{e?80)k6cH7gcq#iHO4CG|Ld3$^N_%?W_ z04+bqjb-P1Bo4hxv3u)8?(G<0syZakqEQ6^s()}ULQ%vS!oa)D&Bo}1{3nOtjPk^y z;NWIaN<7vfw``NdiFJq~6OoFG5|8dcaTwk`IlMaVZUK7tPX`!k{$S~jXz`FxA9}+G z*3~x!VjCw(xYUJU!n8Sn!(ifoCX~1?z{|@EudlEC{qN-ItN89KjQj()y<9p$!?Ea@ z>3`(|Q5>_4lVt!VVj89=v(A+&vMJ^jF~c~cXh=CHy2zLphY1H8yk)ZZvwp?Rq4|m1IG9eN(}kLu{(f( zWIA|=b=|G2O%)FlOs|`YFAC6)!3M)t>3`|0E_0LDmmeqYdtI}UtK`R~>kj$#S&i#M z@UG)ij3~XgV7IK@$X8)n*Mhxq!2p8$|MJBlcv%Pms|DAtjtv>-x_33=cd@#uAXGxRp`a2N9N0<5k$SS{Uz*~TNpuf}66bL3G1T!@D|nSX*u zn_+&@>HZXJ@-{@M7l)kwXtX z3{1;{PU5Vy&IDc8VP@t7=p-E5{(U2O;U$+irfH?6T9icS0Q&lRDJS5{uQYj$BaV&KWGHJS1d@BH(2oNAbQ#t}bY=RJhWK$pu zkR+2f$0lPyl5Fz(9GS}i8h@M%R}l zb@KT5_ysbDuaolDiHV7Oq#HQ4e1CN9;)^eSkM3Q6 zhMv83{aqK(yXhPBEoc$`whExcdSj`rlXU&$lTUpyh{7WqwOX!TubI*}NZ0;qcQ&8T z!%;^awd$i|Yqac6xu3~oAeYOnR)rsa_<_##(RVlb2Z$vXGr648*Jm^b1_nR<;k4nO?J8~aW3+~JV}4<8yDv9h^B5=LQCuP$dD zdm+2xH_}lUvb7VZ;y=w5I8VU$eF{h%MR5}t^V51dD3yBCg+f6Ch83RhA2{bT-+ukg z`}MlhpalN`qwTg3B2ojO=DM~m!Q1se@@d3ljyb_N;k45aw0}%%IF7<0-*bmN*B$Y_ z`e;gHrGCT8_ZvpqFszhe4zNDMVEujlj0*uv&Jtg8D%^1@iDOq{+pdImrQ*-c&DLgT zf1MMYFUp`V>Y2=l`Wmp*%!TmS$707*qoM6N<$f`_ZDLI3~& delta 2111 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

    g>XnPRG=GPN>IkcRt_mu*)Usj;dfCtk($i}6 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 Hu0mjf6-o*L diff --git a/htdocs/theme/common/emotes/face-angel.png b/htdocs/theme/common/emotes/face-angel.png index 96be1f7750b3689c9c029767550184c3266f7877..27988f2495116059d1e3644becb9c5501158a00a 100644 GIT binary patch literal 17856 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 literal 18255 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⁡e59&CiQrMhd0kHPi1DF}j+j zQwaUQU)8^F3}?*ug)*EMW2gRp@(FJEq|E4^bz87TX%haS*b~PGm!;pEiQO7|>D@+H z&NaW%>|Er#WM)-(&%bWZA*w8qxKo?YT_5rQz*bt#-)Pj2e%zODv$TmxyQ9K@*8XfX zuT9PzIvG`jl-A_E$eFGG1}%Lg&7h*QMq5t?FI4CGdV(dYN*hq6YNXdjKREfwx1L@x z<+B`4R%(r;=Q0JqLf0qQW`OhMuF7-ttAr`eaB!Cv;O4c%A;U3M1-o1J^VNg2&~)6) zmx&XdE6g9Z`N@-@+-C!$*V>riVY`ZPg$tu~a1D0hPWaz&fS_CS>)B-r)M8uT@KN;Y;fhX|wU3k!GkdLTJZ5SDN8{$OkSi^nI-tONxSj+pC}XCh%0?Yb|mG zmB=<%S1_Gv^-aNCX7L)RXeyFuoh;TF{d@ezY~nTJlbpg(Ll()sjf}ret$mAc!QPm3 zvDHn~7|tR0_9>`+E7I-5#1owNKNrwX@oND=0a!OTyVclYhJuBW?4XdXrxLcw|5lIr zQ^Gt*^E6G%Lciueh82&)9NK?#Rryb_=UvZY4LP~?NNqN+0q&it+VxPvIR4sIj*LTU z$Ot)ZTtNQxhAaaEwDG>lB=?X%AP(?7BChx8`vljNp8B?tql`+{S3EoP8iKz~)JCc@ zn+qPss^|)+u`JIvuuxp4@tUd1u!x!A027Ty<67{PILM${|L*8q^S*g!n;_dl%MFik zZV-FhR*1>3Pc^3guOonl4+S)K5P?*Z)NXtg9ni=9kA{IJv27peoD?Iz&iC^qCoOlj zOQYrXlne7*SgW_Xv0IEp!RPFq~j~ux771I?@#*r-1`Flh+4Pj16~+9F4u~@N)KhWpS0sN?j?%8dT8r^hwzL1C9zn3m8i*Wi21$= zv|KFklu(51?xhsLZq_?_D>aUJAWcw;!JDs3L62>*IJ9`_iq`O`nHWb+HEaW&~vmZya_IN03cVh19N*@BHN#6qQ5J*t#G-(5M`J12QI7q zUA-vBsg8F@-smtvUZJHrx6y{`3imqyOQ2Td02ff~km0@SImDjcr-;*iam0(V?B`_S z2Wk&k%^sS|-}W^td!kj#Pxz11ZAA@xS+RVXy3*1)b+F)z6#K))nz;}S=Op>P~%wJw>$?ot$*T$loK?L zO~%2x;gz=jw}D>~2l|%M@zK5jVy!opnC=+{lnT2&cwViBrFlFQ39{Vd$-U1xJ_1A3 z5sqzOhO*pYBt6DEpCmocajc3e@)t9}z<`DM?N!%{lSY@e{7iIp_ZhzYGf7n(3 z{0j%TYSLeiXeE5DDrd-8+}M89cB)N;d!gB460>WWv;m`$fojyVE*CMF22`rfaa(vu zQ{!npU#RtWyU3$QxDW7*t8Kt}?%5mNG2mgX#Qm=RO2_pzG0%0JnCt4|-!E84w7cCL zLMd-At`_gqqqv*3f7YzwP_U&-NI|&7e`*{?Z|{4z%*q^&5Zv*%_D4g``wcLg*wZ_a zc+~ed;%4Mz{rrnW!3VW<8rwdZ|6dI+T+0p}eg^%{38TfE0V3$MZ}uI-^<}S?f9@KGo1abo@GfL6sebZzdd?lLCD3&Vg5Y2F{Xj$lr}H6f z1u;RJiB?I<#@jePZ`XU*hd^}~!*BI_3p2cNaLm`%FBl7Rt8LfZLu=;U;n25=U-KO% zhWO%$nzs*eqt`=h=Osr}H+tTokUzp#4kAHlU1-7_(s*i`hXgm0j_=YeWatoDos3l5 ziC@t58$>VhKid25=&Gu%-@W(gCpqV&L4X8O=rsvVkrs+5H9VnDFb0-~sw7C@BV zQNcox-b}!PAS6M+8c0A4B7`&o354YIy33n$?j7&IKfcR-4t|ZO`AO2RTtTfCo7 z`t55VBvu{tb`@fyXB!pa{j9OYDRiCBBo2X1Wm^E?G|Nb3KxPaf9b}UV31`XE#bTzE zi`TKm?f~qR+~}+LV>omhh^~Gd@5`^MdReYV;77}~gMnT$!6*PE2-^v3{YJtBf2CYr z?i(yu916=&!@+|W5W#&IFDe8$nBU35K1T&5eZ`yXFtVT*MLD+kjO#)cWH;AL7FddH zN|{%se9X3_1~WN=EDQquHl z(Ij>!30=gX0ECG<$OLVaT1u%T7(htGX-I>wHp5K~i96MNc|Ekz1k^cEnR# zCX@oh zWa0yrgw6cz2ygh`0Z11`{t)^6KFmRM5Ml~5hln<_g=h%?^XdEu_G3H`QU6Y|pk}U| zN>fY7lGTF6%_Mb;h z;mnyI+W5gTc;E6?@oUKhJ|`DOh@HG%LeaffZY#x{X4gDI(e)x>ovTQ$$#cF&?ONwn zr3iGi+;-7?Q|-5ML~!1c}wLwFA!dE%GVK<>tA&3R_?!CxxVsT%5yez zS1S01@*ZE4W+z~<7l;asl&9Kc9a zH0a66)ZbZ*6;U{XL(tHxX;K1Uos@_!L_Ee+NJ+qx!dpF$^}Ier3~+IcQV$S^DLS{0 zi^W0_xXEzoN8d>)7j89M%SfxFX%ZHW%@x)Y;da490~DKp@Fny@#~3r*yD&~ZAfFKN2pb*5Ftvf z2rbe&`E#+B+GbIdHCt#y?KI&@rPQpNFp!D`%VIHxZ3yz6uFe5G61hwP={}p@GmStTR)CNVHiY33rBGX(W8UT zA0u|M*&yV|q8qJOvi%K$iA_RDgffaVB%!%%CTV^;Aa+1HbCiOfRHbw(9n-M>OM3V; zE(oe>nrz2OoptG%voXq*)`8FKPa|m-DVpFDC4voFDwB?;jw{@&8U(r=aBz?5W&8pb#IWR1-(b#FJ+C zm5CQj!bjMnE8f~3z^taps>oLOp2HXPe_s0z#ZIY8Kcy?BW+^PTGo?usyIaBWA};1< z5b^7U3tSTFHY~JD#?TmCa9_YICQ*#G+3I<#=dqsGhj0NG1la=c5?1JH=BXhDcB;h& z>}6p{%^^_~`=H4Y&G0}W_&^{4oe}vO(zNyBXYvXhc*yj z3oPYYHehxJR>GWZo*#|A@s;h1cKE<#dfxE;sF_C{XptmE5PB&c&C8m}-%|)UMJVw< zD>z@l@iGS5D;Omc`A54~Ju2sWD(&DueIBLY8X1-QS$O_|`^O;RM0~JJya+*>cd-8- zxMFhJhZ%7`hy}joe!hpld;8q0$AZRTwPoa3)n)m2)IS@TzJ#UHBqSUH)5Q$+qm<4q zp`!I8TtC95?5h|7h$6ZO;H4AtBD}@EAT+KyRL@&IkM+DhgaEvVh7cDaZiD|0Ycf^f z0UhC@njJ5ORqhdUfcgUXWTIG0mLOFqW<&9T_pw zUWiO4YsK2)@K15SkJUkMXt4zK%gWqX96uPx-VfNv=!p9;;twVKks4cZNLS1a))L&kyMVcZhvCj!at$+mB2cNw|~; zNWKfw7aM&}dHIw3dJV_)?#)N14~YW{a%u9_eSR1y8W1s2uz?TU`qgeV6680+Fiwf= zBE;d!vTj}>a)CnBY6Yh&IP^h66-}?>zfthi1K)o@PzZ-TC{W7vEfmdXNFl;0jFS96 z;rz!3uk0I(0y6O2#F@5B@E%969>)bF^BCu&gXN)DIa<0w8LB z0xAeZ_(&eKyLa;5-{zSIa<%Y_P;_p=bk?PI7h%wQu>zq88uoMrs+lxd|f@4USJW|nM_*@O$Vog#+OlBCL{$qAXKU1KT69v zPFX<%W?dYANVo{uLD-5nQ{ei>A%<4Il_i&biyA6S;Dd!;WP$3)N9U2HAVdp5cwI)Cx6hWpCpHxhWAItgzhXCT z9FbM`LV?YcRd*_Q=rjXxcMouPye%EMukX_8a17G&$5m2lWYCx~`g*0v2IL zhiAQfG->V)TbXP*$h4;chN6!LWbyeFOOOZs^Qk;J%{@;Jt*3f7wt1eW-xK*^YH*d} zME;1l1HHR&8aIOR-V}fEcPu_t&r>~b^*sLDn?%8iq2uz9aI2NLVB~%~E6^JkS5jGW zSU-23CZdds3wiqaDaN}&-x%A$i?| zFhBp?uLTy`%q9gx8`blW1?N%)LmHC@ST4~Nk9MDWDvn1qTN~XTO=;t|8a+zWrxj37 zluXaDlfgK-x3Cs}fBTWDmvMHj;@e6MrhUG~px>Do^kQ-gXn~M65pXR;Jg9+~tR;gW ze)?FCPEePy{QMGIav|LBIZOJvEm#laTUohWE-RN3iTFAsT*?Fmh$GFf=Ie@5F1KlgaFKqpKMUBTz_zT|A_7yx#%_s4tHE?QoMp0JLFBv zV$Y`$gSIR;6&iI$Hh7p}aPS1&7)G}*D9HF2&Q9sy6h5XZ{U1DI0a^WTKFo{DR1Us9 z-8zpi#?L_jo|B6vr4mID0GXrEO%@WEI3$ow)%+S>0mzzXJ-!E`=`KIEwLqHqiFwnf zN8v55dh*v4Vy)aSkPKy`U`VMX5MfL@Qwn%l${@j*jAv==ypXVd!z4(b*0oX{fPy+gP2GVRzB?^LXzwRnp4)03+O29>)*0_Qy5OB7@ zs%iH=R|6|p7)OQcu=_{n7j=jAC+?NZn4fUF`J2pvuU6>J2E!=GeG|*}>_QttD98VX z0OYl!x%gE=8>|evx%UpdUWdcAS8h)YdVl%rk%E4W4cmiFW{^z7f#Ccw)Uaj7 zgR~|mG_vtg z=bibhMDdP05Acg^>s{)Bq9?lb=?+|5t8Z!E>SA0bDL9dt?P#^NN(&cJ(Y zcP#VJrZ7*E$vetSr=roF0tRb4ftFc#9yC-UYD#F%AdStH=1`1b@};1QaJzqPg#)qP zHpSo~; z^sRv3zb5n+({QIk)4Mv*tkC2}okBqRs04X2>_&z7=5)SPvj@-f`T8nE zVHg#MW{82H85CO$#`1UG6gcNO17aNEf65Ck)w?U;4vh9b;R;oqadkU(yj4cn8s^xo zIyP16j&BXT;c(Py~beo^K2d$shEt z!3VAYh}W;Ql;EaKn#!QZa7!09PBYJc7jU+Em%Rclfci@pW(`L*uTz1@BqmeN%h_bX zL_7MFiPWLY8D$z5kSxPdnl7CKiDWAN4!UzOxr$6CSuVIxb*19*aKj3;D5}lo68ye8 zBBBc|65j>SgTSt1%r?$GVkxWi==ZMYNcT;c74`yad4AJ}g1?0Z+g zqVpzIrTPcgPZ2KFc3m#61yp^Y>lmB|xLaLkk_#VVH1RZs-BEo8C7qw5>WR~s>NJmz z2)Fv%$;Fw%MOs2uAj{GC|HQ;r?g(0L`B~jLKdZ!F-|oS%pY*l zet`a+x0j#>1LdiT^zTzv3`HwKzJ{O`Wy|X&uM|fS!VETvi2j(N%~~PbA4%;@t{-W5 zE`^6_FnPm~>Ca^+lg}@qC_fu&jN<7!R@G?wot3Jc*9#pCsWg;+KiEQ9K#4h?1gO9O zv5`2FFY?3n{Rcd6I$i@D>;2XZf?)s7yUN?HCdd_}N_BTXpl^GCc<9UdO~i}B(@cf5 ze<=Xm!_v>fA(u_!WUJ68q^AiCv~6dzt_?n5Dt`FjRs-J%$JB%Oyw`k-ymi7F|0);l zf9ap^-s>2JrdlXgpQV*Ni6Qc`>B5HHN%L-o&Bc!87n*Cygj$RTsl!HUU1TaZsMUbz zGdIz^c`mn;(zaYqj>~h{{xq;sz|Em*+AM0vNEe9+3z*)gmwv<-z50Hy=b@gLdY=Acn?);C!y(83E_Cz^@`1Dkul?Eb8^~wZvw^{O zui@wU1!LTSF)_yn#y)()Z$n#5gpHI|TIEzoyvB_MR_c$Vxh?6fg5qg*~L=-8AOOzH<9l;V2{`fWhcp~)CZIxk_aZzcQR>KE*t(GB}=fLwGq*UD3DasR8E+znnG7g z*6u|VbMUK1o)IkXBoQn&baNtf60PBBzw{S_yy-Tz( z9_Uup7u8ulc+K$Ve_B=)39<61uoUSDvv$#l=v4Fb=6P-OdcDaMaRoP>4f{0Kiu+}n zM>Kg1MMyUYHH3|2mwLY@dP;4m=~lpOst}5EIFMLwr`t`wp7ouOzlXsl>ZDK%Kvi?~ zYx(5b7eHtM(FuV4;0$y){vS~IUmXQx0Se#=CXZB+DXlQEB=|(bf50@naeL5c{#)8iw(0t1Bq$ zhr~M^HN!x!SJ z#%GX;4+Ifr@HK>4f;^93iqo+~WflTU0wIgepE_d_owc%;lr|C0)^9^MQZ<)?&`ia& z$7veS)pzJT@?us)TSO);NFGvNVlm4baZb94o zXl>3-5Kv#Wqj?QH|D9F#GW(AeOG~OeKI{3FKXv)O_2*2*vCZ+X#KKjpblhq;ILtsk z%MLn=j_oi1gAtPSeI&;EqKKQTXkF>>S2XU6L*_I}D%X0IL zs8hPg;5Ff(Ir?sqgWeRg4tkOsG8QP#Ei%a*`sq^zP}@I)dy%-oSI+T`G93R?3(S24|7fLV+n zcm~xK;70IPTWK;7exml1(n)|m=a%~>NLM%8I@?Ps2Nq9rwz4kUVCz^H-@#C6n(vV1FfJ?qMPCN59X0<-x6)sj=;0mX zrWtEZM`oOgnH4hD>}Wnp_g>I9xQDpT1Kau^0YMlW+An@7bb43Q!bU(SXV*R*G@W+$ z?k_EtO){+~D1kEavDE&|^&Me>N7l#~PaC;Z#aE5U;8se?f@>vqm?fVV>tg~sfOy5k zbDIcL)h$TlleL40$T_-5A~sY{d;PLW#-9L_xTk`~lcpycWY?6WyGpfxM=;+PJNd7> z;raL*j=6XC0d-C4EG22UyxSU5{wm;G?x(FFY-PRb((KoZkKFv(HN@`PGO)wXu^pLP zpa0U)8&d{iv0OLCHd@}o=UF>e8rN_8{ucC)kw z5Mp)TE7-gl>RsbMY(F);p*d#olMzv-jG!9RMa>vP4@)g>VryF1_!YpGmV%~WV%4L~ zy`#RtEvpRM!>8a%Anono)np+?Y2Kqn<6o;v^&|Pm_q>oWI(`SNX&%>R zWwXn;H-p;F>am0rlw};6`g)E3fA)_?Nz$g5si3o0yHh}8^UCA3kmUvk7xe!POk0aB z<>zYBn5ZZBH(eEU*l=;w=GMEz@=RGB<_8TmK==eL%tz)J5CCDzPb<3!w+*Vuet{Kk@H+NQZ~W$ zIBq1tulBBRbcO`&gr|l3EtmOf?Sf@ePm|S1X#3Q`Sr_5Ic>mI-k1?J zI1IOPbE?i24Mh9Fva>LviTO|SqW(W60QD~f)6Co81yh?bF;I$Ww_Ca=IAI90Wznb# zj;XAQy*jqMp(nDS!--ubIUezet8u$vM~)qj>za=bjdTxbKE?F9D`3snyr(*E-&5HH zUSOF{FhQ`UdQIOqWHzA6@Iy!n`rmPlNNr2Q5DQV3hE-eVjB_z%@Ln&l)2OH}&$ z#i3MQy;!KEMcWetlK>y(AMto_ftLRZryB5AUzjZvD{wsNRvWy*a_?B{FVJ4#JK+$Z zz1JV)f#@CP>I~kXz_c5C>YBK|FaEfs#1`dNe{;ipE%*cG`iZt(2DM7YdZ%_VO`Tv5 zT3Spx=m&pi=3MdXIOz=i^b!&OKjY8FVb`B?Q@Mk~u>)vx-Z45L#4@b7dcF)ienaie zR=2^xwx4dValxc}@8U+`LHl&S_v{(d%OdDATfZ3jUGVez8=)ihk=pmPTe!KZQR-!w zo^fHSTiQW@m(*|Ld^$T))m-}yU>Mg~-4!sKOCnbhiqAkJhy~(jfRb3tA4ZKAiv9C3 zh!Z~Y`vFDXnEwNg={pf(dMWtjRy?3HAYn@ty>dN6>)0LuHMV3*yZd<`JO<< zbg@{P4{P>Y2t&na(d>>6xP@>1M#nq;(R@euSo>A)ZeC+ezc<%?+~2lrY0Y#`cp&fU zi`up7c&6~u<*+Z!uLIHNn_3#q!b#{Brf3+=sH4U52=)jkzVipr8Nbl`p5%89=&Y{S}PVXnY~09|GxS%|WO4l#=)25u{|JV*vdLHuqD#^m0E3~(bQJjJf0!EU z5`oY|mZOH}0jHZbMvTE-KP`2*?KnPV{{yzRb{yzRb{yzRb{{J}s z7nHmKWnYAX-2eapB6?I2D?NY%?PN(TTo*alb- SQ_5Tb0000_wYWPGAcPQ- zqr2bE?96p{Yk~i7R%YILp7))Zvm*ZY-+%Rg|8WT*%Lily8M3_UfWnQkeD;FE*Rs5I zGayWr<)bMIAIb8484yKIew{zZ-{bx8e*c#M|8#?8SwVs~O5FitW1!?qzCad{j( zuKy*#-^}PK1R=6~Fi_zkSw1}k5WfcY_XG6p0n-}5L;34A9WX1`ts{YQdjQQqAWUfs z(Ll8FSDFbVYydC|sMQC1gd0Gz4WG$2Al1&vuk+{ld%PdsFCT}G%j4j2@i=+hd>;Qx zfIr#rZ}tI#ACUS2&^`f>3>Z5BZ*737E+FIsmIA=F5r{5_GSW(9Cfkb4k1TFGvv%jb zy!e^#(Fx6RZ=GHnSYg5X+zY4rmTS6hM_%_+-obY^<>VhYGcwe*^=5v*GoImxcf{t; zIn$ide70OzymGz#>CljBn{x6FojzOcf%0Dd+4R6Q3)bg9zVytm@`PqZ9Ujea`zdQT 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 diff --git a/htdocs/theme/common/emotes/face-kiss.png b/htdocs/theme/common/emotes/face-kiss.png index 4fa05fadfc39e5da02b710a690deeaa4f75608f6..43748104bce155e4e0dd8b88bde27f658b1a97bc 100644 GIT binary patch literal 15589 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 NDKUA`YGK3R{{t*`2$KK+ diff --git a/htdocs/theme/common/emotes/face-laugh.png b/htdocs/theme/common/emotes/face-laugh.png index 7a22b0702714f7195264d2307ff8c3d9eeecebef..0d8e7a1243cafc6f245b75f4a1bc901f3baac9b6 100644 GIT binary patch literal 16041 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 diff --git a/htdocs/theme/common/emotes/face-plain.png b/htdocs/theme/common/emotes/face-plain.png index f267d0343e070b30006c9253132b4c98a947a0c2..5c2f01d6d3bee07e162990b3b0b1435ebd9c69f6 100644 GIT binary patch literal 14596 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%0D!Ut0Ih0`cH=GSOgI^_f=^N6Ns5QDl$ftqxQR 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 E0fmya;s5{u diff --git a/htdocs/theme/common/emotes/face-raspberry.png b/htdocs/theme/common/emotes/face-raspberry.png index 5854a729ef3e2b1e7c72119744c241f4188c4372..55ba53a61fecdd964668bc282251b26e1f71e968 100644 GIT binary patch literal 15456 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 Us63(buQotZR8FKu$RObV0FY~awEzGB diff --git a/htdocs/theme/common/emotes/face-sad.png b/htdocs/theme/common/emotes/face-sad.png index cf00aafe1f82e79a8364907cefa0ad395c9e969b..77626ba47b0e18b5859c8703763d2c1413f187a4 100644 GIT binary patch literal 14644 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 diff --git a/htdocs/theme/common/emotes/face-smile-big.png b/htdocs/theme/common/emotes/face-smile-big.png index f9c2335df5f16266e233b3d21facdfa0bea4be30..b0168200e817ba256ab3e508c66ee4e05ca5b03c 100644 GIT binary patch literal 13667 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 aa(|r_Po&lG{u`bGla*AGs1`E{{{H}xo%)sl literal 13810 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

    XmJ8EY&&0)yL?H9{<7T3{u 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 diff --git a/htdocs/theme/common/emotes/face-smile.png b/htdocs/theme/common/emotes/face-smile.png index 3d66d725781730c7a9376a25113164f8882d9795..5271e86ccb872b47b279abdc971c1b33a6f92de6 100644 GIT binary patch literal 15224 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 V#o_?te?MwLq{QS!tA!1M{y&E(&fx$6 literal 15408 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 SNxgs4ATkn);&q}%LH`e8$k9yz diff --git a/htdocs/theme/common/emotes/face-surprise.png b/htdocs/theme/common/emotes/face-surprise.png index 021f7cde5c2f5234a7636d7c893d4f35313e2a8b..02d6ac599569542512fdb8ddefccb5fa52218b26 100644 GIT binary patch literal 14983 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 z zCH*p*I;;(M_V9G>+Mn?ZmE+OZmZB1p8ywAZgpEeJv+e1yeFUP&vb=Lg<`T8*iKRnA z{Of+S53eozHCo#2xrxTBI8`o} z0C6y`?B_SMoeob0QHWwTWC7?^vv2VA5upJP)_sFtVNVkECEqrg9@gXcGz{Qch22gG ze3*D(f$ zfzYPRGSK!^qJE8WkefNSyd1`V^!$sfeDd5SeRuy2`}lh-Z_5>QGi?m~p{!}Vi&c4> z?d}%4rvFF?cCt!+^&9!A)_kR9$b=yp_SGTo(f+{Di7GBR_c%5RU4k*zw0f+4{vu;) zDX^c$O3Fw{K_Kb^b8x7q_x5P8WTP9S3dj6vzagmec=9rHrON;DiUpG|Zx%0AfMO~_b&}XiC^KlG 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 literal 15166 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 diff --git a/htdocs/theme/common/emotes/face-wink.png b/htdocs/theme/common/emotes/face-wink.png index 1e962e980c3f4cab44b4ecd4a507ad100106339b..df5256ba794d19f51ecf452dcc770b7b6255cf12 100644 GIT binary patch literal 15254 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 V{&ao#@4qcTMnX}%R@6B7{{c=zkQV>| literal 15438 zcmX|o1CVAhv-a4wZF5KO*fTq}wPV}1ZQC^S3uiIXgL1+zx*Epjo`p-ufJ3-U` zwEQofKfLPyt3Vh^i;MjH_kmV_*#rXOsgx8ERCZgx^mKJo8CrhHN^qQ)qsbVBLWdRC8GC3FQSIWq ztm4}_nPv}a-9ks@S^^iTTerqxOxr=+^HVk6J^2~{UtL9&z+ez7t zdKKm(%3q+zjKEy;uUG!)Q?wu^6<$5?+kgt)9E1Vh{?)dzsB{Qm4K3`4fZUIdC~%>! zFZ^MP9Fs|)qF`Z-m9)CyTcs3WMgbPBY4ysx%f@R4BWpaX)N}o+Y^DDjvd&!Wsalk9 zlysC*l-A@y56o>TG`|N%&^2NaT0k+caW9PeuKX|!9?|8>t_H9Xv8aChhJRW{Rl8>9 zllcJ^EFIpSkKJndXDV01j_ZRbZ_kgNW%9b^e2$*4U7^X$;@6ubqHPG@=2sQb!`xZ> z{kA7~BB8Ok_9mgq-~D((gWbaJy*YV3T1!FohOL=(;b`EtGrv$)U zI;O&du-5l=)swU4H9^wO^_)M=$O-|S3p$z`JQga^F!eC~G4V0^G4(P1;Voey(BHCk zxY^LUM6OwH)?qxy-fUSgLF`@!?mpZOK|9dHt{U`q+$&jhG5|w!l=n!6=i&FjIyR3D z4SyT=;ugDW4SCVAczjMZ2RH;<=I6P>40<yews2wykPp)LN0H~PuISeWYKPFGFS*5c zYr8;p!&{;O(wFy6*w$7hM3j>{t5(NM-cE9pxTw#zM#vu3jzlE5f~Q z)g)5yG)MXADwB?X#%r}+RrUOrQh2%hmN{uX$kDqkdopOI7K#?Z#WQKx^`C{I0nI?p z*riGq8o02J0+WNiT%$*Lf|XJ%`J0=SGc~g>Yr^6u8-eVVqcnD`WL^r6b~v|DZ;h`t zyb-0ZqL9?HE~PnWKX2~{!@CX^{^fGKbuE;~##q8AFRSQtQV&62>46FHYH;v1tR@RH z+_bTP;~f{?=``PikdTr-|EVc)fKPdcr^s^Tr4c1(r`gHczeL^4^Lp47;_0(fT)N%Zt82s#Z$%)+og?hQ(Z3KQi~C< z5Ke3tx?A;jEc1dlYZqyz&ZP?o-FxUTV@R_Y@=^{z6x6~DoZF^5lFe#o%dm*B+{I*F zej@^h7}&4U@~?AzXds&1YeBaKYtlX977fj{zy5z0^O9HEq8G+XZlJ|GIv!js?py}S z314P^d!28w4kPBoz^iX!oBTP|d+6$8Qfk?S=m-T0&apN!Y|qdyF|QruD8I=x-^}|V zCv&~5HdR2}uJt)wC|zzSewZBVI{uGjp}3&izAA--zV+&53W0O4LJR|T2=Z!S0l;-& zSARwpU$86}pND4TdhWTn_Cn_yz;9IL)K#Zgn$Mp-SO;9+vmz^&_K?GNLx(*-YC!v3 zD%!}2(IGTfIO?7#w8heImi<*VIt>E#D3G1!*s$X1mkIZcPKD!2UQu$?rWLKj6Qo)t zWXYmbr;#<0%K6f7LppKdkEm9l5NU|L93oG97M$f8eWn`h@rJW~PVBX>`GdRQ58!UE zW+6;0sA~Br4TyvDWV}CEj@kLgOTW;D=_V?k!v2QbRIRFT<{i6ERCHyF`pBdAK(3dvH}1VX9~Cu}?%VyS%=$J6c_(ioDk94oKW?Xtaw}HA<1r zHpR+2>n?{mZ&OCuv(M-7obg~>af@P|-_M5~9pTo1^mFPGMqep(Xt{Y_K@DWFH{N9D ze7=G92i~73_sFUR94z|owV_+DZ05N@(bODiW*TF0TUcMPgRD?Qw>W(Rq2;S=!NN0U zc2tmRJ6kpq_@1;e^KdY^=cL9Z#%0D8##P2W^yEWwHo!utht|>H8)Q(VIZ#{Fdx>t> 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 O0000J*qtbOaPggnXY|PTDDsKjgI_;g!_Da zzn67qy=VCW0dExm0Biunv8PG^004nWL_t&t9RtT`s8dpNauB+%8EFh6+9tC4U8MSo#K zC6`E}<)mNT*Tq1Xv3x)JJ_IS6naJc@N7Y7NWDHwbNGYMDQC6y|sI&qg2up^)Kfl5* UWpB6qM*si-07*qoM6N<$f`3h=e*gdg diff --git a/htdocs/theme/common/flags/ag.png b/htdocs/theme/common/flags/ag.png index 60a62e5383259815406bb2ab4579c454738e87e5..0801997cae7d993f785317043790ed8133a3e370 100644 GIT binary patch delta 352 zcmV-m0iXW<0`LNm8Gix*008-bnr;990XIoRK~#7Fl#qjNMqvyfn!K63+ZKzNXYgRQlRi7{fMsTl(a zXN1g$h0;FkjO(`*s$NX~0XGMu5`4VeNQ0hUGbC&gauX5=4}X}D9;E~7$AJQHJt-dL zC5UzspY(w!UmqqsB*k6(xW~2b1vl-Fk4D4Uw{8n?t=#JFbhF4?w#=CU``pZso^a)2 zzh-UcSiEUbbfA;9izuXQ0gCany&PhYaICLMNw|v%hlFc8%VrB-EDyB-%*SE2`8oEr z)!JzZU_(dXs#&b`nITT{^U>bqWZP3!Xs0cWHZ%nurl-+{n`vfdv@wDHmtbiC2E%2Z y?(P7%fqa+*ROEM14JT324pg)ejMf4Xm;nH6Y3Pl)l0BOM0000Tzu8 zX=K%4WA*Lr;#5xFP)prPMdn*p@5;*d_V&soB-%7B*e)mSfqd#?Ug@Bpz7n2KjV9{{e1r2?9zRWKNEdD z9oBR#i^nT-T1<_C_r*}(t4t;j=!{0nPW@#A;PP(|L zm!FV;;Qum!<^Kr}aTI-(7*DOtw#!{vv?d7L0lWc>8HpiT-ZL7700000NkvXXu0mjf D`DwkC delta 367 zcmV-#0g(QM1CIlcDSrSGiU0s}002|~06PF9nRKkzaH-U4rqpAj(Osa>TAt5XoX%63 z%}|xgOq9w;k;zAq$9%BaM~cQiiN`vH#58}yGK0n|Zn;mj2304}0|v)g37=2>E} zh^Wr5f}B>B$B~=8_U5Pl`1kqTbp%+s`|IwWvC`j^q2-gEn}5pf_OrZNhPe0Qmek7J z`n-7rh-RSA`P}8J&+h-l%B@&|$!v*S zE<;uT004?fL_t&t9R(!XXaNN>-KPIwHsA6;y0E_ z>geBwajmjANS*Bm9U|%-nwDG4YDhHG$D@K87Bx{SJu0fI2m%5K@DEk&F--U_dh`GQ N002ovPDHLkV1gK(!;k;~ diff --git a/htdocs/theme/common/flags/al.png b/htdocs/theme/common/flags/al.png index 997f3f1b748a223f4c15d786ce72e75892bce3f5..fcf85b42f9bac284aa068b6927afd5c14f671bc9 100644 GIT binary patch delta 358 zcmV-s0h#`l1BL^TDSy-m0M`is+XDdA007MZ0K@UeMFbZX~rW8`XI?tgWVY-zu3W?x%dTT)W9TT|j(QE*2?;!;K2Oh4jfSyWR} zT}ntsMn*(EJ*!AT+D16zU{tCA0PA&Xk7HkXSyya0Guc2g;D1?7?Tmx$aAvb(T*O>b zw@N^jIWgNmG1xgP-Bn1_T~mNdNX$Yt&pj~KG$q_nMC*im(^5w{F)-CF9-IIG*-1Q) zpRBV0004nWL_t(|0WFCGl0#7xMEiU^j6HE7-2Z~<p(sm}jw% zc}y3%7=shQ)?Y#pivO=K1t5DF5mwsSOEuwrH1C;}iDSyNO0Ji`DssI3-007MZ0P1{m>UeMFbZX~rW8`XI;$>OmU{vB< zQQ%ok-Bn23P(<8JKiNq<+D16*gnQyrMQk`T+dnbbIV;vQCDkn+T}nvPQb##4Fw8|eykM4hUkZfsNQc|;9Q*cK^@sEd%ethDFeSmOp+XDb9 zKZC0P0059lL_t&t9RyM(Nw1xOZ?)tT*xn( z&sYV)#lB}C*XLzAN&>&4ReqX5W!6Ort7#gmN3SI((8!1?lK4}Ls;USeAb{`>N2@c; TdYe}d00000NkvXXu0mjf08Xn; diff --git a/htdocs/theme/common/flags/am.png b/htdocs/theme/common/flags/am.png index e25bc21af0f597af07769b53eb3cc0dc660a3368..20c4acbc219a65a59ff7938ced7dc98ce3c7393c 100644 GIT binary patch delta 290 zcmV+-0p0%S0-8Gix*008-bnr;990QpHoK~#7FV*IVD3TTX~5dsKeVD4~t=NWj% z&v31ATJ&4EJKV*VO>ig0>}*`%@)DjzRS}grB|>KSD0hwtH8iB7qp#Y4Xpf_2nW4vv z$6w9P7DAdvCa0$k#`@_ zgJnX+Tq4Ply$g-#Uy1tms)`l3F9esLymK^7)Favy*319AjYOq2c0UhA15yygP!`1cY3V(WoOHmOd*HchBIPCkzAZU@CSp&8P7s_q#YIwM~Z2_iy oxpijbgL^#A|>07*qoM6N<$f{I#$;{X5v delta 344 zcmV-e0jK`50_Xye8Gi!+002Qe{R;p90Kia8R7LWL0PT1HY&sf=*|0000*2!a4e(ZXFp>PjWqnVs#6iB0p2=iR<PZcJ7exV2DH)WWh6ms8;M!_gWh%?^aN&$b`20xB7=MY;r;~_CM0}=mFj{vz zk8mzkCFh<;qsOxR6#*8pX1|x==n6N-;|2Vu-oiuRPN$g9r`~oO9YUPVZdi0WSr|Q? zTpPXJ3bTWbZ!j8YzyEgs(7n5DYt)z5YA~3i1r29rIBhoH&1Rvh`EO{icgP`N+-il& z-bO_4>$MkQLqW5QwlO+OVr-z!>z%3H#>2@u&&)U^M9i_Jud0fArqJ!8Fooq(i4d^c aPW}L_BP6HBvLc@V0000gwwI`}_L(`uX|!`1ttuOH21eMEO5I^z!oa^YilZ^YZfY{r&y-FfjHi zD)l5J^d27Z@$v5N@AdWd004G!a>Y+iwn<5|L`AVcK&yy~&VSF)>CMgOAt9X@7@0OU zrT_peR8+aw*X=tyt2H*Owzl0TC!$zbx=>KJy1U~3{{H+-O#4Si_xJbq_V(A;*Z=?j z{ZUcb+1dSYar|j%?EnCF=W5dc004eTL_t&t9RnbWKDJelgK{`4*Ha0f1vM+*xE^TcuFfcGLFE2AQGa(@% z&(16y92`wUdw>7{09{E$K~#7FJ$%=+>o4wq*K b0~34$vCcv;oE%!!`Uw*HUzG?1QVv&+xNA3-j4$Yr)0^tIX8Gix*008-bnr;990VqjCK~#7FVvGc|Mb!w|#6WZ+zu@j(!U5>0 z@N>{19k<{t+az?}+rUCCsa+2HWvnI|jDbnoCD&yK?8K1z6gaFkuTD8&TnuThrS zLv8Sm)I&h*tRo^&-g_jSqA14}?k!s~=_+{>pcgiR%t9ijI)6{G!|FWEmuhbJyuGm^ zc{66eY$k4D!#gCgH%iT~?W@z%)2gbf&uo00^p82-=z>A~)59Cepp@F*-DK zg!04NH;%GRWlFxCST41a0#x%KkSKg?=XGF~{RQ-L6aO_JkiF{6Mdwi(eq`kQQxsf* jo>N(pMCP|k_^)38cj)!(q3RYx00000NkvXXu0mjf#L}t+ delta 353 zcmV-n0iOQh0`UTn8Gi!+002Qe{R;p90Kia8R7Ezo_#vApWXYM+xnT>`IOiAkk$8#)AxqZ^@Gmze9QEn-TZ~q`hd{+e9riF%Jpf* z^I^d8zuM>N_Wa}Y{NeKZ-|_j~@A%y9_u1_B)#>w=z0T?B>3{zI{`~y>`}_O)`uh3t zvi9R%_4W1i^z`%d^V8GQ`s;P}<4O1CY4-N^!rbfY`2OYg{-46tL%;s2;{KT2{*&4K zjMn^2!~d`3|D)dgS;zkr6#bk4003-BL_t&t9R$JWN){72nlL+kr|SGLQweeGfFQzgq7 z*B;bd;#XrL&EF7G#kvWlbl&HF5RpotBsKm4d)pnTXk?wU00000NkvXXu0mjf(Lmww diff --git a/htdocs/theme/common/flags/as.png b/htdocs/theme/common/flags/as.png index 8a2bfdaee5fa5aa844f11d148b5bec2986898d15..4c34432aad7bb75921213c3c2a975992adc7da97 100644 GIT binary patch delta 369 zcmV-%0gnEP1AzmO8Gix*008-bnr;990Z2(iK~#7FVo+54FDM8oiyUAiiJ~a_cRRMd zv9U47ipREX+eS3D6^w1$wr!)`x2?)aMfdzCF%$}u5ULy%QRMG1A%Gy%SkIKCFrO}B zHooybHy6A&RDLf`RcFNugs?CHZmu-Y?AyNS6@4A(c^en?)_>jnvOT}plHZpb6zQNV zCFBLHAcqjZlfQ3wR4NtGj#%Ry-T!0NQI(bD0s*B(IqKyha`;4Pyv-NVGO~!*zYes> zkJ8>=sS@AwVaoT{=k3+(<>`5)ld7P?AM#k7a)+kjaGTDG#&F0%!2k8K1sWWrFZMUM z0=9;2U{GVD?`lxv#R1clV>{bZYkioQ70%s;%l(oLfGHM`=A)tZ0nlfks`HMP;(?Aj zOjH1`x8njKHI)e@*9!Q4rD5x;MIZ{ITkKaL@WC*W5OO9#1%(hCyMz!9IPE&gr9F52 P00000NkvXXu0mjfG{UkH delta 378 zcmV-=0fqj71BwHX8Gi!+002Qe{R;p90Kia8R7C&)`2hgz007|t0G|T@0DJ%fn*acZ zhy8eX{b*0SBBnTU+>n+_Vx7X(`M?;PVU@>nuh7FZ?fose1G=L#rgU9@Z_(-qI~1p z)9RFz@~5Es@$lr};-F+e5fT5Wrv1o)sQKjF%&(TSe^t4Zbdygmh>DDra?jLkefaU| zdty(bjDaB`{{sX4z5oEpMnI1M004zaL_t&t*Dc7+3IS07fYI+8}3uCJry-czpeNW=6@GRxqLhsYDiZ>|-NKsXMNk9buCm?@R Yf3E=}Uok(1RsaA107*qoM6N<$f-=y(7XSbN diff --git a/htdocs/theme/common/flags/at.png b/htdocs/theme/common/flags/at.png index 49326161af69ae7f869808075b5883e8b8526bdc..2218dc3e1f9bff812833540e4a78ec1b9816204f 100644 GIT binary patch delta 297 zcmV+^0oMNW0=WW^8Gix*008-bnr;990RTxvK~#7FeUUXn13?r(-wIBLdkI~toGcym zaH73IE|3G@?hd1W$Y0#@#^rmK_(b?5yl>q5#-gYIYpb9nA9Qve@6e;y9)ix!C2Jq6 zszf2}9{|)ph_O41F+eglv&M@Q&at=%l)l+4mRGWgDU#@K5P$Eb7KC{*4mNL(W}eL9O&^|=kMgbf6M1li7{rr(a2jZIXMCN z>Am*oJs|+)_{7=9dMTYw)^4Y*tz;~aSrd&R1gY}~r2Bgm!qSq8f##c;8B|jgiCCL; vJIM1hP#6QKWg>`>-G3JH8}9oiz8_xzUBUK1cDFcM00000NkvXXu0mjfo_CFh delta 355 zcmV-p0i6E10`mfp8Gi!+002Qe{R;p90Kia8R7LXu0PFw&<^TZT007+p0Qmp_`(a`F zU0wNDSou^{_)=2$OH21eMD;s6^fNQ^E-w6LX8J@#`8+-PH8uAwE%qrX^&=zn931fv z5Bo1K{i34#ii-P%h53Mh`F(x%d3yJDcJ^{|^=@wRX=(ChWq;}E>HYov{QUg;`}_L( z`uO{$5`GSy}y5RQ*v= z{7g*#c6R-6as6v+{Qv;3dj%5!003@DL_t&t9R z!4qi0#vmz#5?t^-pVdqCRcmSUhT&Q7r~5d~^E#I9`1Wd@FWGMobOhXfee7C9+H~Dc zLoFhyYG@IO)MGpofc}0=I|8Z8d29iaM5Rhe{R5t77&A3D@b)cX}58Q00LzI08&X}p8xwT~ z=H0Bb+@z}A!_4j2+^n|Kc8j}lg}7*avc${Z$XymYu2QyA#GxiNi6RPP*(K4(9R~bfHC{s+Izf(rzxP(ajC@ P00000NkvXXu0mjfcc{JI delta 373 zcmV-*0gC>S1C;}iDSrR}QUCxl000srL5gvOxM+Q{m88bR%imgZtW#>HN@JoyT%EMN z)ZXFikDbCgR+;DN@SCa2K3SVJQI{}Hlto{j00L!pi@T+=(83%aMRk{tvWs?| zNn)RWiMQy?(V?Qk$%&Sqx!c~jzNC<>y2IL!D@f?MzVW7{rVV-K?|Rq^jM+%{tK-ZWHCrS5IbK zQ?*%Ihvl%c_)LPAD?n!4N8}{<7(b}YD5U6x%z7cTM&W!rE|CEU{Xa-Tf9Rwi#F;W2 TJ$o0u00000NkvXXu0mjfzfZiw diff --git a/htdocs/theme/common/flags/aw.png b/htdocs/theme/common/flags/aw.png index 2c4a2a4ade6ffaa6c41dfcf6e5f5ca8a8fbb178e..836e9ff97ae3dde9540ecbacfcea8b2c3f07e90c 100644 GIT binary patch delta 347 zcmV-h0i^ze1M32i8Gix*008-bnr;990WwKMK~#7FZBZrEl|c}_&mWr5NTNqP;4_QouX^|3{)(+A5J&+;CIBQz#6dxwoI>MlGx3#KihrC$4YY z6H{u{qA0PDu_j}lJ);Sr{3oQxOSS;Gv3C1db>w^@&p)&u=$5fXk?09l)s{{0+wZ2VUUNkN*W`SU4HQPzeA4002ovPDHLkV1hu`sagO4 delta 371 zcmV-(0gV3Z0)qpP8Gi!+002Qe{R;p90Kia8R7C)8w*X_W09dmCSE>L=sQ^8q06LZc zGL!%*l=;{I{O)%8>umYyWB2A-_Ty6Y;!5)0MBcFgg1_EqvDjj+)LyI8S*g-hrq5HP z&Q77sNuJ9?o5?zs#sD9M`|4c#=~emWOZVeL_ToJB-!$^vD}Mldyo|)+a<|%TwAfpx z&jx|NcDmbYv)5*@)m^I5Sg6nqhQgD`<9xs14~oQ|#NFaQ?yh-`1zb-%0J)iF{YadI!*z36&zm*S$TiLeQ`na03 zQXW!Iwr(|PGxw$LedwyGnbDSd=sqbk(u7EY{U9 RU{C-6002ovPDHLkV1nq;yhi{4 diff --git a/htdocs/theme/common/flags/ax.png b/htdocs/theme/common/flags/ax.png index 0d1009b3e2cca70e650614dde07cc78d1279f193..cb32922f510964ae850a8f98885c8a36e194a97b 100644 GIT binary patch delta 355 zcmV-p0i6Di1A_yQDSszuxgTP^^u8$l7!3Ka69Y=B05+lkB$ogUi=MpV_u``cl#l$| zm65X8hN{?nqtbMo%x9F!003k?SH{q)@=axTUGQ@N%KiV z@k2cBG%W2(LfQZT_PSu{u{6tB0PxalH*K~kVy*xHPV38N9$T$Ea<%QzdGu&s&y4^w zF}$?^004eTL_t(|0X4`qq5@F>#n79lqwQB*D{9z($4Z74cbB9)2nj&1g;I%+ARzJb za16%)oR28ILtMg&;-Qxnrn!(Q0mL(#q%kVflLWXsBuQKf$h9i*iPd0pSOt9x&3^G| zLU(!Ce``9i;!H@zh-!a`$57MJ5J2PQzLJJ|bOZR69l-Tzp0G_|0tgx?t?PN$a>k>3^{_%UJ;Z7!3WCkNkUd z`*m;nXJzwAL-9jA?ldgzN<#F$DE#4__}Yf~#Bc4vTAsY(XOzlfkHsHiy-$I|_u``Y zNSVa|004?fL_t&tTRp+M4#8jmfYI-(CaO^}V6jPQu%}h+rNJ;eK;_%MS0A|C4N3&`@uwpi-Kn1PXJCK zL0$j=0BuP`K~#7FHHcM01uy`BV7=L0_rIOp`Z|Fx1VC`>LJH_EG|@#SLIx&3UMTKi zngfT1Fvj@re@fOS0n|nQxm;XU6WeiqI5~du*%T!_V0-2Nt9z1SkQB}o??jZ6(}4(I j9Da#FV!|gd?R* z8=^-OpFjiYi!wQXw_n2*Ir=LTU^msSI|;X%}h+rNJ+~?Man-x$2>ff z006=P0o-tK+h=L+!NKs(&fa@_>bSVvbaeFM;?`$p^V-|ws(-5AcX#ENm;j2!d(G%x z!Q)rH;a0iZNwwNEuGauqsCvrecgW*%#^Pto@&BHRaMnG pMYSe$K$Kc!KoAw72q1s}@CSz|CPf4zov#1@002ovPDHLkV1g7upPT>y diff --git a/htdocs/theme/common/flags/ba.png b/htdocs/theme/common/flags/ba.png index 8daf16f80adb8a58a55ef4b1108abcb4de3ca3ae..0ab4af02b3419915ec5a2de0e1e622690d308a86 100644 GIT binary patch delta 367 zcmV-#0g(QU1OEb$8Gix*008-bnr;990Y*tgK~#7FU62E8Wf-c4lB`fJH|s3#!W58WhH1$ z2(bVx@K4!m>b%_Ad#JCieOhxTSh2#nU(f|KotIVYm+8PVaDOAd=n$InvN9My&dUS$ z(^B`-LU$9~x8rPo6sP2^8G)Y127ovDxw)V+?VHhG-y|oc%$A72I{^zcUDj0`)`HXb zS2ix8xfvIx?5m;g5QrKrAe4;-?y*BdOk6OCYXJ& z0l2iW_bT4t0W8u1%;4SlXH%!arQvQX8`#~zrUMezd$LJbesQDJ${VR-5Ja6>mk#qR)y#V^S0QR#0^REED26To1004+dL_t&t9Rp zX)mCi7+T^7t9D+Qc#iv{s)%@!mdCpEf)MoP1m`73{nU4U=Zz#tzsu)UtHshtqHwt7 zOD@F{XtPZ}G2VCO+Rwopkr-pt_#du8Fp$`e+C7`U)hj9>ZD;39GYx89WaDC_ai>HU^WJ71IGe(=XH5f;@*$)|CIE;HKwIG_05unN)jXVohEMFPQJPFE(6vP3 z%NNbDx=3D5Tcx2{Fo2>YFTA&A{-~~>3^;-b&+mtqr61@=_sqe_B%`#D6#xLNNdV)U S9`y$R0000~XgatMkF3*U#n)G9v{OSCIclW5RwN5r9-L$pezno31dj51VJ nL`apy?-9*Ot&gfb0e&6)++L zYKVPcly(qhY<>ly0fCUbA6R^}u{_Ur(XeTN<3dA6l>U^P6A&Dh+hQ9$FEkVG)Pk!- z?EfGuSMi{lS4U&^b(ZbYmpQQ90_zP%NiZaoF-0}0_+ng?+`NfUJluF!T1<$^rO*D? ga+!fa7>bAl0Ma!}A365Y)Bpeg07*qoM6N<$f}XCF#Q*>R delta 389 zcmV;00eb%40+j=h8Gi!+002Qe{R;p90Kia8R7C(20000004D%opI}^_Tv(b}RF_py zlTb>LN<@uBKZ-v)g*!HbHZp)REqpCzqGo+$Gu1pU_9`m$BqYx*9&1n;6KxX>X$@+n zYK3h+_B=ZHH8uAyFYzEB05K zNsmc%t8`qOTv(V_PLoc5Ka3{;0059lL_t&tTRp?O3c^4XMbWb}Q-m~vij{(jorR^1 z|KAAu2_jfTuzm@~BscTGLU6(2D5-0thmHrbcVyMx9#l;a}`~H z1HIXE<=I{26(C^7&~6x!D>bc1#xSX?Y;7oHR+}+UW7Z(|E?@YR=%_wM934ew%rQa& j#nGz;B7gu1{r-IcnrcDYZfBP+00000NkvXXu0mjfzk!{x diff --git a/htdocs/theme/common/flags/be.png b/htdocs/theme/common/flags/be.png index 7c0329e97557fb99cacddfd8ed621ba6ee78eb7e..13813a3118558c0f93caf35086995d6812c451bc 100644 GIT binary patch delta 288 zcmV+*0pI?E1F!;+8Gix*008-bnr;990QX5mK~#7FRgXbx^Dq!bpB(Z3p@bH?@+Q0P zdz{`S7t3KvAQ0%XB_Tx0j6AA6M!0!=%Qt!`@W}axjR2GiFL37G)8GaX*zI;Ws`|7s zgRaXFYL)t||34CrT`uhR5$AL|0a}X4ZN2VlRiD(M3`a4MpnuwJw|K#EyQl(-Jxxt? zw892`$iPk;0CK>7JQ_U|a@004D$ zb^7{2_xCXMBqa4cJ^TAd_wg`#dV2i)O!)FP_en|p{ZaYzJ^TA}{rzkF{AK(0VEI>9 z@$Ufr=>YlY0QvU-@&Ew$+{8!#004eTL_t&t9R13?0Kx9HIV2oFaKUDTq~!en z6G%J&BqC&C?`+PTuSx)JqFVu;BUe~EqQc4ucPy98m>znj07_;=YK6k8m5k_V{Wc0% z!-#%Z>K7Q8jxqmkeOdO6_MQe#+wA9OQEkL)psBl5^G|ylVOB*|L;zG(z<=g#%OLoo=KG??vR z7wlLpW|JBWhU;LDHhaEkuwONcaDr77Z+G5&Isf%o?+iYM$G(~0+huz}zj9hpvl_oz zZwupbw+%+|rf$7doOw+(RHbP?CzEQy&1S_#^3YQYL6`=ljDNs@0M_?*lj&2df9OCv z%%WBbo+#rFU0!)=r6U_o&Vq8j$t5phJC0Kf0mI zW4wM48;c8q>51+R3vn_9E>ujQny3A3OrNQuRvoP{I8Gl-T|sDRSa2K zq?ve`7FUf@s5|JLQlpJg`g}0&zGiCqkP!|yOIlqs_UN37zV`|>R$n5q-=W9=0Gc== U^aJCAjQ{`u07*qoM6N<$f_TrC0RR91 delta 348 zcmV-i0i*uX0_*~i8Gi!+002Qe{R;p90Kia8R7C)0002+`0672vCjex>WLvviQMXY_ zv`R&?MMADZJF7c2sWmgEGB2esE2Ap_b^t%IJ|v?gAD|x@oEa3F6cCpW3zZ9P#ckN> zGAgDjy#N5{e{Hq-$0094bdj4Hq`a(kaJU#d~H}*tC z{cCIdV`KVUT=z^&^#B0e^19^!003u6L_t&t9RJ{18Gix*008-bnr;990SHM%K~#7FeNi=913?s?*`&eU-Hwq%QPSXN z;5eyLaRS_>jw~ZjmiN9DoY5!0tk^V7&8I;`d4PzYg9wnPb=m#>{c>hmR?(RGTbv8M zzP>6UNB<8MfVEZ~t~yt9cCK(I%mZTj2sp!x6l!bd>A5w>W`C!#eH&gQN2vx1zyJh* z5KW8_C5;rNvN*KZI%yS;Bxta}$bX?7yBt{%DzxB07Yc%z1?{X;RMe>i(=?`Gw(d3Y zL1moxa;CnJ?7sOtm>tK{D^vGPQ(y1mLzXxP%(W0OfV6FogMz2{zl%V!tZ3ck5^RR?5b*n&XL+h1JglP`PS0q^bpQYW07*qoM6N<$f>)HMZvX%Q diff --git a/htdocs/theme/common/flags/bh.png b/htdocs/theme/common/flags/bh.png index 07b64394023c277290b230499fa3eceb4934185f..75f25bf49456480de3e95499c1486708f05530ed 100644 GIT binary patch delta 320 zcmV-G0l)r=1JDAH8Gix*008-bnr;990T)R`K~#7FU64C!0$~(|&mU~3)y@@YA-EWq zU}-A}m^4-*RziZ?5ceQG=7{O@f@!v;&=gv$fIb066_zw5s&gU~qMVpNb1}Md< z08$k4x!(d&6d{+2=<(=QD}DcfFvu$rzGLfD; SI8VU<0000htsS@$vERhllO}0O|k$<^TZV z007?r0Nnrp`}_O)`uh3z_xae^`Bzu>OH21fMfO5M^*%oHH8t}xGV(4i?Ck9P{QUdI z#`#iG_%=58EiLvcD)l8L^dBGc6cq9h5b+HS@bK{Z;^O!;G=KLnF!LE1{r&y=K|%OC zJM=a-{{H^`>gxPvW&Y66{9Ii8OH2DlNAw^d^78Wj{r&xJZvX%P{c36bS6BT}QT~R8 z{cv&rsj2+|0r~&{^8f$`52#@P004zaL_t&tTRq1+Zo)tq0O6V6JOZoGAr8X*OU{ul zQjidKjJ@DpBXbHQMqe`?fsKF&Cl)ktzwex4jGvUo1q?LlX|entMhFI24Rbb|a%fzE zsVQc=>^=yn^>3cDUDDfupth}-VwbXC4-MMB@3+6@{b!q{#qYYVRc9@eY{gI9#5Y8R Y7s-=32+n)eMF0Q*07*qoM6N<$f-UaB-v9sr diff --git a/htdocs/theme/common/flags/bi.png b/htdocs/theme/common/flags/bi.png index 8dcc9a50b65c46c8f7748c398f9e9efbbc1e0f5b..33c53a3026d2cf4288403e57e2e4fc2ef236bd82 100644 GIT binary patch delta 390 zcmV;10eSwP1C|4j8Gix*008-bnr;990bNN%K~#7FR8a#=g;5y2VO~R=Ra5hFbFMMl z#t_GB+vb>U+qP|+=l$C2+xhRk-+Koaj0<(Cs)O{J3o%y=-VCvQ;v_ zR6Pz4pT)#n<>UZZaM<(m0`KkZ?e+DQL=qyEEReLExca;W4S#+;3Sv^N%L;SIJyhav2E0>KhNT7VvZ zz;ZP`4hg3_tAALaRjQX)uT^IRPLu$LhBtNvW5%1U2dY5DWjggZ@&vdkY!1;h71sjX z&duJ;&S9~nqm7NB8unU|LrfvaCbTi$VcXS}zE&&%Tq{Os@D6koPtd>HzdgHJN(etv k|09G#|KFCcoqljS0D@^kQjzx3Gynhq07*qoM6N<$f*2pSQvd(} delta 400 zcmV;B0dM}61D^ws8Gi!+002Qe{R;p90Kia8R7Jtx!QIc-p#T7p004jh0KuoNm%*0+ zmjL?u`t!xb-DhXxc6Q)wY}80c>$0=*^6~&z004ymbH{SW>&p1}_}p7t@6gZg&(Qbm z^0MH!L$5;upaPE7jb6WAhSG-j_xEeWYAU8AWWHknWB``gmVbWGe^|a)?D_TAlZxlp z&gb6OH?cHQx>F;Y4LYtlo7=gp&xRL|0oV21|NsB|*4)hR(ddYX z?3kF<1OwL-6UhJo@3qG^KJ1ME005dvL_t&tTP?&%3c@e|10onfk0=5E>8Gix*008-bnr;990R2fsK~#7FVr1xKK!86``ga+i?XgCxE(oG< zU;7nuBw{Z_Ea|O@kdWm(B3!Pu(x)1SuBmVAd?T*|0aZaYu+PxucvIUJ)-_!Y+V(!_ zJ`MxcyKYPlK0iL5^{HfSpSDh(!q5ykh`5W8K;vvRXquzC0e?cJ#e_Nvx36h%C0fj= zua{I>Twojhl*VEbg1Av0VSgtYxwAq8UO$Q07*qoM6N<$f&;*U<^TWy delta 366 zcmV-!0g?W;0{#M!8Gi!+002Qe{R;p90Kia8R7C)K003wJ08{|w007_s0NnrpV!vWu zy8S)bo@eK`a#BEBo zN<*zc_b)F`w@*m0M)o!~0EGZ@#&cA;R8F!>_e44OJ23V$D1Y=R9e2ogS-e^L`a=2n zJoxxF_xCaO_AB-EB=z+_=jQ-=$$DJ9Tv)nR`};@s_Cx@Q0Q~$+_xDWd>Hz)yYy10P z`T14*`vCU#0P^wx?(YEC)Oaxf004POL_t&t*DcO5j>13y1i>kR!G|*vvLz?y|IZ-h zl9PAU%$Vg8i(F-t+J{ zgP<_?%}$8)UpZ}iJ#6&`OaK4? diff --git a/htdocs/theme/common/flags/bm.png b/htdocs/theme/common/flags/bm.png index 86b1e3e2008f91d1bab7f8087b4b67f91391bf6e..a54f33c288168e0666e392b87aa1242b062a4f95 100644 GIT binary patch delta 351 zcmV-l0igbe1OEb$DSyXdZIN-9003)$6+MF&Jpce%bsN0mF0zn<8pA~Yij6xdEaEHM25XDWDPQh x3O?G;Sm1z7z%VE}TD>`cDJ~fVMqn8j0-A#Q8E-BB7dHR^002ovPDHLkV1i~bqx}E? delta 359 zcmV-t0hs>(0*3>TDSx&A0IC20nE(Ke004&o0N!I`+gn@MRaMwePt{6F(?vzpLPFC! zJkL5h&^0yAF)__7EY?Lu)IdPXAtB2b7sd__;%jQyN=bylZhE?7<8pA>8x_NRj*U%n z$6;-+XMge9*)%3inTv~MXQSW2%aMk$xr3UIpv~5)*!jP&Q{=aiM`e0kq^dfseo;?>{Tp{m-q!RXJ{qoBh80Be60J%blL003D* zC>P)W004qXL_t&t*ENno3jt9824~*3CAJVbAd+(O|Nn+N7je`oo2T7p!(sDXrl~o6 zt_BmetS*3nn_!~<7^&|AiplA^y|pVnC4)ANdzEkS=nm?0?N&v-hNZ;n;i4{I(IBRjOEJ zoV0Nhw0VP>GPZ5owyxtfp8c)i-Rn>&D?(Xtb35zcW=dR*SvebUu-9fqJlk@ARSCvf zwkO(AI;i_`AnnG0TX=Hj;r^H^&n{-e<(&X|%L{JSzk<9Mv42q~M0shctNrNA>gLvZ zO*H~gh0EnPx0|6>fn;T6$Hm3_lD61yA$x{Bdio8F)cD}x4;RqOZ6yPzX)N) zn4RW7Q~}523|a$OEEd-65I6za(xI1f`0IS>*YV^hm~8lB^2qDguLa?1w3Bpj9X7ME z#jCX-e89(KTDRbNk+4zcc;`%jFN@6%>Pp26<^)h~DDCM*00000NkvXXu0mjf>MpSe delta 383 zcmV-_0f7GT0*?cb8Gi!+002Qe{R;p90Kia8R7LO00PDp71y`mVe{fz_UBaa-B9n_OY`PK?AJZcwKu-0KQ1mV0002;(g6AEb@by=^x;YM<~``n zH5C;V`0Y*9!cW&{{GyWk@4I(?$|H?|Ns2^=J6;Kog;4jHD+^KM>n1Ma$ zsIvu5gWD36bo3bocX)FB;%>*!FH3#b3V;?XP~HK6X$N2c7q0`$v=A|%rwEHVHiZT7 z?(F3OP@g;o+Gj3ApwDM$pKL2Tc406-QAbB}+a1ws?j@tu*netWDgh--ft8K3m-`Lg zowRxHqU0%hOP^ZynpTf+7|;b x%~OOPN-MF)&m?|?5`oVKFa>zyr+DR;cn@h>Iq3> z0QBg8@#16f;9c(CSMA+W?AuN2*-7cyL+IB&=hZpo(lhATPJhUt0QTvI^5kjh*iq@) zRrPHE`@xU-vUT{caQCZg^{8a?rD61;S@4-n+aCb`6$AgAl>CK!`h9cyb!_=-VfSKJ z?EnD%l#Tq3hW!oz`2hefKGo*{003A?L_t&t9RQIFU-K-b65sPYZrN2;ZR>3&&F))xXOrT6+ zu~f~3*)%Sj%+4S@scDFkK z0057avoCA+t*oIpmlQUNHgB|VuH8fV@H#DE_w?x>q|_N2gBm%cH1_gI_3cEk;X+yb z`XB%R0DnnDK~#7FMT#{-1W^FRl0QDv;O-7J_rC)T*5K~WHtY6Y(nSCqDlv#6s(%v4 zYOoPhYq`XUm0XJYU-&1<>>FdEichg_-ZAIJL|HH(FbeZ@)&%nT7y>rXsc8TJ002ovPDHLkV1kIc Btd#%& delta 364 zcmV-y0h9iO1C0ZaDt|-(04o3h5&!@I0BEpjWUgdit6y8FTT`P`uH8eh;X*~6ML(E8 zJCr*$k~MF%Z%m*}Iixi9_9^!AN%ieS^zq|_O9 zxOQT(RQ&u(`};(Xl(RW<`9pU4FKhRy!1b-Hp*NQlHi|Zt%71hG{8C(l>2sR-xz+c6 zpV@Y|I{;$Z&cX#9X?>3&&F))xX{QO$A;%og_ zN%{Z)0EkIMK~xAG1;NV>!9V~&(RR(%5PE=71+^uLe5 zERQ_Zm!*|~QEDRhl%=84w6gm4QU<>1s4A32q)@-8q96ze0>B^7NiXys(|w@;0000< KMNUMnLSTaRva#0y diff --git a/htdocs/theme/common/flags/bs.png b/htdocs/theme/common/flags/bs.png index 3d62217f02ee7fe25fff47e431e1ead08db494fa..7ef4b87bc6c64f2373c4ca3212dcc6004c67f379 100644 GIT binary patch delta 333 zcmV-T0kZz=0^I_T8Gix*008-bnr;990VGL8K~#7Fb8@cR#R%J@2Vs%_i0 zt+j5)T6?_)Yo^+6Y&)52<9>~GzhCln&LcoU0i2$~?JfRW?Cn|5>2?%~1j#AmL*i8B!9jvk|RL@3_+ei2J2Ky zp{Aw=JEyeDZ%Hxw6lJ1!e!?3k>XjAx!U%Z2^?T-|=$FA>z-g~5J);$POg~-wx)urx z3e4ntsqbRfv{RwKzuz3KD$Ls1N_9UsdN?ONF(RD`Sq%+4TPfbst_4h|93IBYRpu9B zMqF_b>4N2R%0@uA2WJ0YYunUx6PIg#-}tf%1cFQ+4<)eKD3ZZI!8bPu=H>th0w@&w fw_IIyf(d7T{qYmzr9?dX00000NkvXXu0mjfRC1T0 delta 348 zcmV-i0i*ui0_*~i8Gi!+002Qe{R;p90Kia8R7C(A8vv-N0JF0InVA5HhyVZpVT6TU z($ZPn+*H`uPuJH=)zw7P(>u`6G|kN}%F1eLYDHUHKfk{^+}||O*(=S}8_3cV#?KAI z%>aj)OiN3;o64^_0d0KSy05POZ(SETy%89s#N{iPF&B=S>)$X+Tlgk-aXXYN!8l`o2h%Ao^|5l zW!~NZOG^O5!vM?60KB{aIvW!J003u6L_t&t9R%%`qX!W^;9-<=X$OK>nL+o3_SR%DooS+&*ikd utF$%ns;Y#+tKTAJ8y%}ENtV>^0D*rUkQptTrT0ky00005EP0Ra8lQuX%t?CR|7*I(beR`qEn_K8IN-$?t_N6u|N^l}~L008{kO7hZ8 z<;`K}+o#;*?YftI&)41L)5O)<=-uGq=j7w`ggWTtyXxE1+JD&D=7>b|WEb&j4*cR~ z*y7IC(9h$=z45P()XvQFe>30!0QhM%*Na#3d@lK`U-6Mq-2eddp8)a%0Pht5?F|3{ zN`K=3004wZL_t(|0UgIPVgyhChQaTDj?n~dRHxtjw`*QtZClfgkl<)INCKS&Kp=GG zjyUivZ@7LfqGH1nwE?1b-T|I_De7z@jM4eK7y{lc{R>WTzkS(x{5rjAgW>nS|DHnX zC6gLFd>YaFG+`TP#q}Q!ci_L=<=g6E`+y@TBP4R%!zTewue=+m>NC}E00000NkvXX Hu0mjfMJ34a delta 365 zcmV-z0h0cS1C0ZaDSz{y0P+L??-c;;4FKu^0ObGx-~a&K008;F0Q}-+`Kw>}j8pNi zj`5LE_K8IFggWzoGxB^c^t1r|;&J5D#N)-i_-QoV;NjPcSM_No^l}~ZWEb&j4)(eL z{M$j~@y6hK3=vPQ_6nI6QNIa*ph%1nz6Vue3U9P+qiD&ih!c>W zap~nuWQW|9N~K(1e_gV}saIWgOWk-&*={|!fkarTu)SoFt^f4^9U(AgIQEZb00000 LNkvXXu0mjfEa%R_ diff --git a/htdocs/theme/common/flags/bv.png b/htdocs/theme/common/flags/bv.png index c403d06ad10a2719b643c87203e503c6ebeea323..cc0cabb4fb58b57751eda089a6cfd4f65910bf13 100644 GIT binary patch delta 362 zcmV-w0hRud1Ns7x8Gix*008-bnr;990YOPbK~#7FVtmK|1+xGCaYS7DzFhY%GcyAW z{DLul!Wb+-ELc+o;q)Z|*dS|zien&*Cr>-vU1}yk#-L*XTsl@@1S)!b1}a=D+}$;~ zFBdM)s()O5-&wuZx@vsPQy@K&2PsROSsie+xSYtMe0?qJ!+#sR_jGZtj8Om+L@9%< zWn&Y~&BDa80_U8p$gGjH2eFY4m1uBI!VpYsI}U5{+(P!6Z3T1EI(~k1s&`vLzj-!7 z10Kw9-clg`h%HzSzb0I(OVZPmJ36b*TAG--p6aWOw9Oope}8`oDPrZ&0M5=N60t4q zv8PMo)_}K$En|f=NLEU;w;!x+#Hq)$07*qo IM6N<$g3?)`S^xk5 delta 385 zcmV-{0e=4a0+9od8Gi!+002Qe{R;p90Kia8R7KPP0L=gZ^78Tk53cI!>cjv5y#N5U z006N70PSR9?Ot5@`T2UKge0u9iN9aF2=Q=m#G%?~SCh%cj zeyHc`R8sJAaqC)F=ul1zqcS`I004|hL_t&t*GA>08Gix*008-bnr;990S8G$K~#7FjFDr4T~Q2xzw>I__WoX%(Ejd1 zx`5j57HXTL!z42|W6yVS5GUcxbNknD5Va@_tR>3*6E?mC#YcHw4G0FL4S zhu#3Q_JiL1e%$(c+WB_b`E%I#Y}NN=()M7_^jyyKR?G5f*7{@A`drfZRnPZP&Gtyi z^gG1y?d|RT{r&p-`uOI2)7z003@DL_t&t9RX?IPV$J6-7n!o>1!gId*+RA|;U|)j$0s7#f8SIa~k$002ovPDHLkV1h{? BzcT;; diff --git a/htdocs/theme/common/flags/by.png b/htdocs/theme/common/flags/by.png index 20516d176f0186a1ca76d8e21b0a23bc33427871..262290af36cf31ca5af21f56b95025dd13ac90bf 100644 GIT binary patch delta 332 zcmV-S0ki)40^9$ZVR#r} zAwqk*uDMxVU$3gDAQL1K)8(a6AixDeLxZ8VR$pGOD=O0F=6`C^GgL`Qs+bsMcsP>) z^i=;xEByVH1qDQcfy*;)ZD9u@y1M4CXhLQtnLu{HDgTd_xwv4$M+dzBAC2%Qk)TUV z*UF@#_WF{mqJq;*lyQ)dx*Hq29Tu?}5WME?yX@*dZ-?+FL;`3yJlw}u*=xo{21+FEFf%j3%cR{#J<0021v04)IZ z008&&^67A9RJ>G3v_?F#JT$B{EvhZ~>FfM;bm#NuG_W)wry&-h77d*Z`!zfI^YZUo zQ$(*lJgPJ~r!g_5DlDTUC!il8of#XM68-Ay{-mV*OH2DkMt}N2LHRp8_ck{7FfjHj zEA=BI^B5TY0092=_4`*>{ZCN!Jw5*I?fq0#{{R5}VPXASTm4Z{_C!Sg@$vt&v-eC) z|M~gF#6j7004DKL_t&tTSdr03W87=0O6VVRYHh5L`&~~gbopH z+eAUALIR1idDkaZyN1#EvM4}|D&asU7T07*qo IM6N<$f~RY(M*si- diff --git a/htdocs/theme/common/flags/bz.png b/htdocs/theme/common/flags/bz.png index 6d7e706544fb0d237727cf1450cbeee947509c94..2a753bd88ad21ce86e442b317d40b69f24f587c3 100644 GIT binary patch delta 354 zcmV-o0iFJg1A+sPDS!C@0Pg?*=>Px#9O{Rj?}VG~d!zV-m+Xz6)14fZ=F+ z;a+#&00682F7$w>`(u^)UXb{p(a*E+&XL!`OojA6aqKp0>rQ;{007Xn_O#~w;qCJ7 zMLXGg|6Dw`ONd}<-O0hw6&?-)ziuKzHp?+Rey-}_xJa*ppJ;gt|MIO zaGdz2w7`>~vv#bz8CB=h>C)Ze;Y5A)py0tacj;w_?O=rLW`X5&kJ&Q&vw?me_M~R4G}Y+!+W$qZgKD$kL-l-4xx1-YL-beQ4K5DHH>}x>{Pt_p<)mi z*BEyi%$p|wmmePU&X$}TTvMv4uCV~zXUhNs00n~|406;H>i_@%07*qoM6N<$g233j AzW@LL delta 364 zcmV-y0h9iM1B?TZDSznz0L}ma007WzkM3oN?O=rLRfzRwf#r0M*}b}cC5Q2T{CVn0000< KMNUMnLSTZT-oLE? diff --git a/htdocs/theme/common/flags/ca.png b/htdocs/theme/common/flags/ca.png index 6aa3009bcaf247b18aae101e49c110855651ce73..95e8e87e65e44f7384693ef2e0e9c8cff74a2007 100644 GIT binary patch delta 367 zcmV-#0g(Ql1CIlcDSz=xQ}8@O>nJSr^z`!b^6u{L*#H2^008bVIryWe^p=?Y{r&aq z?fUxq`1knfX>9IucI|F+^^lbAeSzwSi1YRJ_4W1SMMvgNRP>9G@p^jo(9`bD&Fy7o z>Rw;yz`^XjzTrJUVH^R>QY_aYHQmoFWfge z;#FJeA1C5$ZQE5@?BnFvBq-iZQ|A*K>8z{k>+97S8KwXL=-u1Y)YQw%%f!UQzrVjH zTIVy{piL81v2*q{0}%yA)-(!4^{=R< zidC}M$wdDtB52X-jH-{DfAbcs`<(q~d%hqL8b!TqO1ad|Ult9~Ms{%bHbFIhysk%L zEl`Bi(#p*)&FfPG%h_dgBE43N-b4Jvu>IDIuL_+0Rar2A=Yn7Z=mL#)C?VD8QZfJl N002ovPDHLkV1iQh%5VSx delta 382 zcmV-^0fGLH1D*qrDSz1j0LcIV)YR0=%ge;X#J|74rT_r)go*Bbf$3>%_4W1i^z`!b z^6u{L>+9>>H#*xyN%V`5?QV1GSXk)Y+w9}y)fpMsBq-+-8}*Qs?sInPUSIh4`1S1V z>8z{UD=*$nQ|TWk^p=?IWoG*N`r>SD=1x@GRaxIMH@E-*>whRL^_iaPhluE1W9m{} z*= zEf=!@005auL_t&t9Ry_h_4;Y^`Bn1wRPgpo?({_M^E>ZX zBmQ_;`)Wt`U_H|ZS-@by6K@-yo2Df(kg^+_l4KNtG$K=|u3_2($`Jr3$#&!uS9H09HvvK~#7FMaqFj06_pi!Fji}ZdnBC|5JZ4pers32Vf=;5mm1s zNnP#dHh9`2l^jJdq7O`H{S4d$_ll|SFGwSdu=k6or>>2M@ zBlloK_*pmgNhk6@7wH`d^T#ak^+5XWK=|u3_2($`;6 z_4;Z2&@~tJIIjQz0ANW(K~xAG1;I;B!e9V^!TD;7EPe<#@Lm2_Gts!fMIWKe^aUF$ zztp@fSRB_ZYHvJ1{N*)$%(oZ%cDKv1H3s}kbWZc-fKN%zpGFXobDA&VnH1JWL`^gJ7$E zgSKeN-^ z&{L4DOf-*GC5laatzQ5D002)J{@qw)u5eePZO_S4sJczs$$vprmO9$XPi(Dm?9xw6 zonAzjTuhr%!oWTpghp+pR!pF2O`K!l%}UC|NIjEP(Y_}&l3M1>KGMWL5q&&Dmt}~3 z`cVJ?0EbCLK~#7FEr$bk1OWg;^T&9qZMXM7Nv*Z{u=Xepib1NCA&?CaeSozwM6SQI zqMM<`Nqb*IJYIl^Y(|}ELYHMdm|;1UU2UaS z(!@VwpieA}Qf97$HIiCAlT|d2RUCvy5q&&WmO5*(hfJVpL7HVmmt5w|J|&7x08;>Q zw2e)iW8uw8%EU;~z9($0aaW>kRG)0@(oamCUQC-(!oWTNPk$M(&5ZutSpDr*WUg@I z&{NOJQmDF3+Q~tXtxVd=PXJvP|MY&d!f)!-ReY^q09^z5=7V3NgM+qnceRn?(`5jX ze*XXf0G3HaK~xA^J;S*Q!ax)S(0gYF6AcN9wqmdeww6Nvzw-ygD&W#6!34)Qn~iwj z@BjcEZ~?-)19KI6PeaP8WV>xAFqo6iE9!0`M@>RG=LAs8rr+f(_cS9(ZVG#9QhgT} zbuRH-(0ir*!={@zK&OU`v}0*e1?VxGeWo$QcV$6=)k+UaQV1!5gcE9l;NOb?z~4mR Y3t;s=oq=CGJ^%m!07*qoM6N<$f@ZI%TL1t6 diff --git a/htdocs/theme/common/flags/cd.png b/htdocs/theme/common/flags/cd.png index 2c20c4578c0c1a531d3d4c7a8e11dd7d7c5d3cac..e01dbfbdcaed877315d83c1e663a3fdf1cb84d3f 100644 GIT binary patch delta 249 zcmV{T%^lK(%e# zbzMIUz&MRFwJggzZTkUC=Xu@KdOkw%kf;1nDcu9(eccz+D1ELL?aXu^`aokmA0><- zM$hBil>3nEL&D&kd-FebVx|JeqcoMX)+X)+GAs*Dw@0G900000NkvXXu0mjfxAb~h delta 312 zcmV-80muH80@DJJB!35VNliru*#!s<4G|-EjWhrN010qNS#tmY3labT3lag+-G2N4 z000DMK}|sb0I`n?{9y$E003Z6OjJe30078h07m4J0G7xAin;)Vvil_||798f{}96P zjAq2&V!hY=01r#J+DWt2|5Ydd01*EG5dp&d!27oUHx2dx4}Wmp{#MiawezV3&;RrP zc)iF3|Nbbo003>*_W-r-#@!^jCCChiAn0tx>s4uYKk0000< KMNUMnLSTYT*@Y1R diff --git a/htdocs/theme/common/flags/cf.png b/htdocs/theme/common/flags/cf.png index 4fe18833d6187edfdceebeeeac33895b94629396..2ed0c497f733acd1d9670bb6ee8c5b20e38c2299 100644 GIT binary patch delta 324 zcmV-K0lWU|0^|aaDSrkq;0itHySoDN0000Z-T)2K>FJdJ|9_aY`jf2s{cCH6ruTrM z_;<=;Qqmt5- zi^_|b&zJ;a1Z~J|OS(%%w?#d(J@zUpCY&Z1mKZdrGyos~bbq`6&gy2vND5?0000LJ* delta 331 zcmV-R0kr<)0_y^hDSyMm0M5<;)YJgq;sD;>0NDTl%*+7$`(XL`SNQl&`b91Z~J|OS(%%w?#d(Jv65@ zCY&Z1mKXpa0QopMN~cP>;<=;Qqmt5-i^_|b&zR)o=l%Wt`+xiW`1tts_4U5Kz6w3) zn6&!s?S6ov_FJdJ|9_LL`u%HbhNkxhFyOnp0`dR=03+Uk z6v93L003r5L_t&t9RpPBDT@G>5! zztiHqiD$;J)I`+p-BllL##(k*hz2`yAsB1H#VVS|vy{Vp7Tf29(oCSQN|I7JN)oX~ dmAu&x`~$c(8)XzmP!j+E002ovPDHLkV1n7et-$~Q diff --git a/htdocs/theme/common/flags/cg.png b/htdocs/theme/common/flags/cg.png index 23c51278c5cd1e5195815f5e8fa4a2e9674ba07e..0af8999914396affe5d9de6871a395e2c9b2059f 100644 GIT binary patch delta 315 zcmV-B0mS}-1Iq%C8Gix*008-bnr;990TM|>K~#7FT+x9>L_rh=;Qy|RHfp6-n}XgT z00KdQLINa+00P7kAo~VAK>~rWK|u5b^#uC}sha z>(OANaru?EP&C~NMha~MvI1O3pgMfV{a4>V5`YQfp5ODyhxj`f7XV3VKtM>9GyMPn N002ovPDHLkV1gkfi$nkb delta 370 zcmV-&0ge940)hjO8Gi!+002Qe{R;p90Kia8R7FkI0Q1WU@yP-1!~pHT0O|k$`d#_?SNQl+_sdK7Q%3eeLiIjA^g258G&J%qE@s_kp6EpS`ak*k zI{5fB_xCRLy(#r7CG;O3^BEcP6BF?b4FJ3VYT#;0*Gj1CMSu7AF!r-5aN==L*--lW zLHPJKRNGXu?MC*kD*(d)cH?$f+*wW7OZoXcdgOXt-d*;iEKt}?zwk%*M@MeoYs&Iv z`}<(`u1@#S7xm2%?MVP(^>NSu004bSL_t&tTSbaN3c@fDMgK!928u{;&&#m^3)Y3MiV3&V`fYQdW!&UWm&_u>?3Qqk{g?;p!%zxKXbn}i)tB4 Q&Hw-a07*qoM6N<$f=*Yo@&Et; diff --git a/htdocs/theme/common/flags/ch.png b/htdocs/theme/common/flags/ch.png index 0b5ec13d26c338eea9a6fd7c5e2008d8f639461c..155391649f1a5fceba0b178a4e2a0c82e3ee7a51 100644 GIT binary patch delta 214 zcmV;{04e|B0_Opc8Gix*001V=;Bf!|0Io?yK~#7FWsQw#fG`wPS7M$4uoQ$~2N9&ioRRanEGq^q@<7ixr1!!uU8mm24iSQErE795#;O+XEw#}~7P@{_*+q8 z7?3mf-Lt-@Na#8zJ~R`7$kVP!d z0089x0OJ4v_W%Is_b)H@Dk}F!M}PeQ0R3`u{QUg;{QLX+ z`~G@*{r&y;TU-8ldH(+X{rvs;TU-AC0RCKD{#jZ3M@RZWLi$@<|9g7=Utj!8O#5J9 z|9gA=b#?u1ZTx9z{AFb)V9P21003M`L_t&t9Rx95S+Eq(9hx5uS2c6a*Hwllq|x1X=K%B_1_Q>!%A;`tXvS%< z^q$qID8R0b*zY_ImPQDnjOIM*(s-fK#=1w0KpEZHjC}nzM?W8Rf^FNd`kRZJ5KHR{ u4qrYap5XD_&mrDB&|1U&*Lz`UulxmXygY<--C%0~0000(0)+#R8Gi!+002Qe{R;p90Kia8R7Li30P`Wu|@i< zJrl(f4Z{umeE|K$ZTqxI`T6-7$QkHx3+0I2}8;bDFN004kVL_t&t*Cozf4uUWc1mGDdLe<0&p5!Xr{|+93 zCpB0@IzXjA*=}TZzI|Gb9zQ<-U>=y)4Qw}$73#r#F;}Q&v=nwM7gYDPqHB`hv#tNZ z0GprMWDau8*?4k#WHTn7@$l(pn@k0LaRNFqn?WFrVna4mUa`z#S*{#oE6H#G(Ir7= TsF0xw00000NkvXXu0mjfg1@^{ diff --git a/htdocs/theme/common/flags/ck.png b/htdocs/theme/common/flags/ck.png index c3de282a2fa897644cd318504f0ae0dda24c969d..8de6a038d70dd8e2d92583ddbea71c398463b628 100644 GIT binary patch delta 357 zcmV-r0h<1b1BC;SDSx|Xdv8~d04aBiBuD@mYgiszrBiJH04)FjL;wI4H#dRi!^+*$ z-q)$K+P%o=&eWu=%5Z<7bcL*NfvIbKr)YYlV|Jooah}r~8R(UkZ0S1!bC+5sO zNx^r>CKvc7xn2pkT1n9wx=beYyieYKcZTTH2gZ!8*5li+n5JuUcp#J8`;Ws+0FU3_ z{0cfks+qd~{osCJa9PqtlKei9NN)f8f))?}N_fQ;gh?V>;4v$G00000NkvXXu0mjf Dx>>C9 delta 362 zcmV-w0hRuR1BwHXDSrR}EdT%&0000007P(sscU_wXnLe$cA{W$o?C95Rce}1WtL1~ zlSf^ULs^YMSBpMWiFAdmI8cT&OM@&#ee&}1BRqI}i?H_g_FrR*^rm7dzDIDi1_&U z(;FG+m6qmscjIhp*l%-BVT(66f#$=?-P7La&eWu=%5Z<7yJvfESC0TGcK{h{rBiL8 zNeP$$004zaL_t&tTRn$C3c@e|1a~&U7E!zi3W68$6~5koc<`(ug(4)OX+2aNn1SH} z5AAN}Yp9Y?*kh05XX*~)u^&Q=vBpAKGi8$-Rw?6@rkqmA*(WD&6f>m}0C$^SVL86q z`h2%FR72epw(bD1LHT2;o7W5ER#pKpW)Lch>iMBL(qBo^7YvUw38Q?50{{R307*qo IM6N<$f>1Q3TmS$7 diff --git a/htdocs/theme/common/flags/cl.png b/htdocs/theme/common/flags/cl.png index f6e756fda121640445e9e33936c0ecf6a8cbedeb..c4eb797ebe6bec6ed26ae46ebc2936b8a2bd48ef 100644 GIT binary patch delta 302 zcmV+}0nz^M0=@!}8Gix*008-bnr;990R>4!K~#7FVq}Op%76;~F0=rW|B%4nzkh)u zf50S2Lv@rwoQcq)Gw=TV{>#VBQsF4U!0;ak7=RQi`26`Z3s5x0T=>`D|3E!W+n#WL z`wdZs2^bj}fr^=cc-i@P|Nj5qaT8F-SR7Ui15t2RVK_SlxPLyEkj_$p+lVj0&mcDJ zXBe?|_KmI6)T_i8Z-Gg?d;jatM8Te_O3&Up}|DGX&t)!XxCO z0A#roz}o1XKqu;gpl=I7?F2FhWv$2A(}Su?3uml4h($wo3b(*Rt>cDd_RrQ~L( z-TV9d`uh6$`T6+x`1kks_V)Jm_4ViH=Y_oH*Xj0=!{=0*+Wh?d-|hI>>i7Nq{p#xK zd$#3wvEu#x{_^tj?(gq7*_Vv~003!8L_t&t9RKt-x|oV8 zC^L$>i|!(8$ST5#_`$I4>zlD0Jo?3-LHNhn_CNA~a}716(E~V?FE779PDSs0h!HL} z4ad!93&=UQYP&VZ1@gt+K};c{&2E3U7Yo6L5wOc@)|z>*fTGQMvk`DWul=NBiUFV60YqQbfOVZ!zG%QKdXIzLqz4@!mzGV@ znefr*N!S=OouUtkF>rS<>3;9P!_LQ9AB WeCoTX1Ib$e0000%6C}3S^7*u`o}@`_A7eHdi+dG`$R?e_c8bPNdSoe{ZUc)_&4_UEcbSE z{Ay?U`B&`i0Q&#{^YZ{(#y3d-0053jL_t&tTQ$zT3c^4X2GRMl3qc5IWnn4g6)b%J zTCmYVQdkIu9Xq7G_>qgUX6Y zJf3C^c&4%fQ^#Vl7oP6DM^X8~Vh^~_uCQ-j=c&yH%*o+h*bKHrP0ncR41xk11SScu hUXmpKB7wA?3VzwILgP>lcp002ovPDHLkV1j>vwEh49 diff --git a/htdocs/theme/common/flags/cn.png b/htdocs/theme/common/flags/cn.png index 45bdfe47cfa65b69e5395ecbfbb14a67aa563b78..3fd9a790dcc1a930a9615eebd8362741770b90d5 100644 GIT binary patch delta 324 zcmV-K0lWT(1JnYL8Gix*008-bnr;990UJp~K~#7FV!X-#0{<8on7|AHSB4k68Q|a- znEVYUzk^8@AeN}F=8gUPWi=y<+&>O;MuEqGzUbfQWoS`2RDja~ z72qx_xpy*5_PMP^&qVXzLs8I?0SKf5vF!cb@$s;YZF*?-!GF@%9SI3WS7mr5{XG^H zF{D0ML_IP;@2U&2vBQ`Ao(eMz%$W1?svSChz;|^?;agrdycH(bIJ|=FT9R{Ab;!Mv zu?!3Vt`?AsFjzgkrJIzmz08>)8oCJf^gaeyq7tJOJ|z6wLr)zGWKx|$!Kf{@F@WCM zy2#q5tyI;aL_OQe$=Z_44OJ>?sktfzh5->#k?6>(7Uu@8+b^>Ee7BU7B9$T?a_%4Y WR!%#RGT>7H0000T8Gi!+002Qe{R;p90Kia8R7J-C0KxzOxc~sG005x?0G2Gf2PfybT0DtOobL3J>?UP9Cd3NSl zR_%#U^~_7)LPFj=Jl7x~?uU8%VHSvF){kwc>VKV=UiFvn^gACQPltd z?SFgnrFZqeap6u*d37q7;#Uf^^K{2e|b6 z{R9U$7tLU3p>S!iwn%j;q6atJQRu!=a*|XEAqx6F>(bj018_KE*YtC!sx3Zub&FlX zdEccSK6lhDc8cJY-~n@aV7cxlxCH=&h*>ej=h%dZ$%uRj4Tc}o1T_0U2qBH4_XjY% VEij%E50?M{002ovPDHLkV1hlzr_%rc diff --git a/htdocs/theme/common/flags/co.png b/htdocs/theme/common/flags/co.png index 8933a71b5304bd10826012d51f13cb46ac8acdf1..0fdd29968ac9a60c7314cb374603a31c48a4a1ce 100644 GIT binary patch delta 283 zcmV+$0p$MV0;>X$8Gix*008-bnr;990P;yhK~#7FgpjpC1uzgm6Wp!A9crdRN?JBx z046~uz^#P_x9(Tpl2dZQ^+!(MUBnl*+~*-^lHk>a@^_;l?cTYSPZh?h1e0u1B&wh) zsl>~T&4#xQ4<;>&2~>qlpb8}03`XBFk&wC|KI1bs;w>-VBq-e*Alnog*bWl_0mpEa=SX+nLv!6fZ`(O)+B0U@En(LrTGSX( z&@*J!005o<4aZV{;7xnqR)XO?Y}V_r0RH58{@q#q-BkVDP=EZ{OZ(VI`qo1E)I9jp zHuupn_RuT!%_R2ILeGBy?X>{@-d+9MRQ=jf_RcKNfdKc`Ow@@0{^E1};A{NdWBS`% z`PosZm@kcLUA)1(xlXg)z5~CU zG(=Tx4z0|rM!9?9PJjcUj)fdoHF&NNaCvi+Qm<33`u)9|5r4)6FjW_YPz%dcF{87q z*xroxp>KRb4-Wt<3NK3+d9GNN0iI={Srl!R%1)yZE5X0BHP4%!K>FM4=2YNqHt@Vf zbhWh5F)$>zH?E4AJ?A2726&c3U{WUC-N)-|QI_XPnyLt|R22ey!Uv~kXA#WK*G9g7 uIgl3uJme*>>LK$p5sVU?^VKeo!v+9RWc_pNFZtd80000~1F42F}a)QzLjiJ;D=F?G}c003}FL_t&t9RFFFj08`h4WZ=v z#@-_k3M&eAqh8VM>Wov>OVv`zNhQyL?{T*-%li7Z-CYm&*D;QsxU`SX9xi(xKW>{r z_`TV@*9-zpH3K0{p8zTAn11|Ko1%&#kW^nvRjR6gYAG7SXBqeh00000NkvXXu0mjf D$~3?) diff --git a/htdocs/theme/common/flags/cs.png b/htdocs/theme/common/flags/cs.png index 8fde28a6dfd4a81716a78ab7e909f15725a12d8e..1d563737dd156259b9b56879ec3565134e8aab74 100644 GIT binary patch delta 288 zcmV+*0pI@L0+XEYZwGf?FfRWDcKL>Dc;$?Dgw?L!~kH8e}6r%x0Ck|M@IUJVlDAU zN6EwlN(cdn%5$nVDoK)Dx7#W3k7>`-+PCf`a&b zeD!#E_H%ReY;5vnW&P;r{{H^_{QUd-`}+F&`1ttt_V)Gl^?&sA^z-xc!9kkX2Z&x3=@etyV$ddYKh#cXWB004LZ0Eb{;yrqG7*r*SfDHfu002ovPDHLkV1oW^q7wiB diff --git a/htdocs/theme/common/flags/cu.png b/htdocs/theme/common/flags/cu.png index fe475e9b07034a0ffb5fabf3a8861a060e084a5e..15d653e5b953ee3d8af7a5befc2ebbdfb55ed5c3 100644 GIT binary patch delta 343 zcmV-d0jU0n1N#DyEq_0#07tU`G@}3}oB$Y>01=M>3z7f_tU7 zcEK}jyC`F|9a^zFaJm2hUrU3<0046NXlVGUsPpsl@$&N8+uiQ&@a*mHUy;uI6Y`D# z004GLL_t(|0X2&O2f|Po0PkL!-m+9d76`!5|Nk=~6hLgYXuSHUJK#9cLIOiAW|a_8 zM{^{8T9Vm43Q)o;!`po9SCs+ke6!Q%&Y}5Fc4OZURd(fS^Li pB(M~7J?r80keFD@G9kbPf)8I;9I5*s1Ni^|002ovPDHLkV1jXLxPJfu delta 356 zcmV-q0h|8&0*C{UEq@r601J`;0fztpa`gZJ?qXwcp44la(`J~`WR%cfk>k=_q@z#2WYj0000Ur1M>oqDt}@B09pM2N%;Uc^8hIChrR!Uy8e8&{&lhZaIX7otomrF`C+B` z02u3Tul{ST{%EWIWvTsHq54#w`A?hqN|^XWl=nZ8_MODb`SN<2!pD@p#5j!g01D@! z$IE=P-SzKpkGjE6n)Utt{rvmj`}_O(`T6(v_w@Ai<>lqx0Dl1YdwckqYWwbX^HNgr zNJ#O8PV?wp?|ww;EiLOtM)LCV-{0SAr`CS2wJU}5B7gBgkn#Wk;Y*kFMwImc0Np(U znxFsx0B%V{K~#7FMU2Hk1wa%7XVw=#;ZFZOQ3LYb{kbF&08b$q+_{Pgx;icBrcV=U zqv=@9vzs7ZSxd(`UuxzWzrbbK>w&4NM@bx{=^}9WU-ElpDCaHTeZNnth#IP1hGi%| kIfs;-;J9-$W4ScK3XGZ+So=wyTmS$707*qoM6N<$f&}5Z+5i9m delta 358 zcmV-s0h#{u0*3>TDt|ch04VPO80!EE=KuiV007+pN%?TD`)sWGXsP*~#LJq($NBPl zl)l7|y1`GH^-GuZMwInIkn(l0{8XO#_3v+Lr`A7__Vegney_DFh4UhR@%#Jx{r&y< z`T6(v_w@Ai^78WE-{0N<0QY-)_?c?^?soH1Qt?Pg@r6$Bet$&jEiLOtM*REW<>lo7 zS^a~${%EWIp~uU7v)x&t`b3oXIE?iGVgGBb{!g3vN|^YEz5i~n{$;8CVWs(ew*F?y zUoQXv0D?(GK~xAG1;IfIfi&9@_AaQs;a_EKtvFPKS&!WTp&D`a{vGU07*qoM6N<$ Ef_RU^z@we2}>;C>1fCwnD z;E6pD0o4J`RzIW;L_iHd5r#alhL)E5!C1;EDY5=1iY^VSkfzkvc0|0wD*v1HSQS1N!002ovPDHLkV1gJPn9KkG delta 370 zcmV-&0ge9a0)hjO8Gi!+002Qe{R;p90Kia8R7C&)qyPYn003|R3{U_80A*#@czE37 zMke3Cym@3goNKyQ_}4DLVteYJ3h)b#qKdX#yijM zNTB3D!RsSbXTVXnYfR8gMa@M$$~`y8H+|CpT#=z#(pyu~QOwCLHhyZ(q(|g00 zb=-Al*Jr8cQvj&|0GR+51r7TE004bSL_t&t9R38jZp}?0*?) z96B_dm}E@iUTf1IhxB8Gix*008-bnr;990TD?=K~#7FZBZp!L{Stz&v18l8Xc)r+^w<- zwu7yJMw$c}Ex3%k&)oYzw-5es+>e|}rN{%$4dO5xj5Ba(f~=vTp@E11Xw(*L>PIjb zlu5^*=>H%Hg5JR&%_;u~xgEhv8aPJj8^32@3}YvNNJLhGTYo!ygU}ggamt4&euX-v z(zYeFZEMkHQO208CAl-y&5%^4QV=x|H^~OTt`@GTDZ?d z9y77EHaHLfcL!??@b_%$Hk%o5dwxy6>4qUVUX!{bX;dKbXnN;2_j~;lIGWzN9KTJDl3~#_6TVlJ$gmJnp=cRhcC-W}Zcp&Dv&y3O9H&f}81eH~;_u M07*qoM6N<$g31VutpET3 delta 373 zcmV-*0gC?00)+#R8Gi!+002Qe{R;p90Kia8R7LCS>*?v~=jZ3;<>lhz;@{uj-QC^W z+uPXK*wxk5)6>(>&(H1c?fd)t`uh6$`T6+x`1kks_V)Jm_4V}h^z-xc^78ZY^78NR z@BIAy-|gR=)1u+*;qmeD`1$vR$Bw4guKoS}`~3U(`uV%xv48XBoA~k7&g8(Q*scEl z{`>jy``u*v(?I#tKl;~L^!4@q@x}bwYWmGW_|-@D_3-`u{QdLO{P*Ph-;DY4*7(_b z_ttp!_VfS$|L^bd;o;%m7_QX-004kVL_t&tTP?`F4go@T z(OjjYaM|K-?`{qS)BVOhz~Ndbs;9HtBXYCZ50D{ng)6N>N8j`Mtx1prMB)HYM@+ zT(wsu(-eSTQS(!$r>73iCTcmb@w9ySK*T4ee~RoJYEpsC9Dlsd?cGvLGz9_DkB%4b z6FV>S`*+b$tU2f2`ztedk|32%P^@oNB~FjFgDGvaCzo$F{AA@VL|=u}J3wG#oi8 Tq^Icf00000NkvXXu0mjf3MiX; delta 363 zcmV-x0hIpH0{a4x8Gi!+002Qe{R;p90Kia8R7C(pw8H=Z+5iC60RhSY0EDXE$Ay{j zR#)y&Q0+@g>_kNDJ38n#Hs~@k=PoXbui$Z=*spAf?KCv&E-vaSD(NI7=pP^E85!jh z6XOjH1yj9tpxW#&FOsz4dZXKyxa5AO-D92J^qZUUl$7v~kALrri|?744PC@-q~X2N z?ECxs`uh6$`T6+x`1kks_V)Jm_4U`+*PFWLcB|$6{r&v>{N3H%!qxBo{{E4?>dxKr z{r&#(^78KP?&|95EYpRWd*}rgf$h)dKmQh(UDLwch32l znd!YcoW zhlXaW)%^6-;Q(1SS+85O*{xJkr^AyVrz`_Hw7q@RXbkhZq(zlB1=sJJDruaan2Hnu z82jaAK6Wv5&O2{x$l{_ap8;N?$|cC%eEwx9^YZg^ytsIJpP}JT)Cm3yCYc!+019_8 UC<==Hj{pDw07*qoM6N<$f*gyQ1^@s6 delta 374 zcmV-+0g3+70)_*S8Gi!+002Qe{R;p90Kia8R7K_h0O0@t+W-L7008an?di|Y&Hw<& z006}R0PRQUM#_v`EKPEPDYL+d_1>Nz>+H8tomGUqNX^JZr7MMdvE zKJPm_`0DEHF)`{QBIq9<=NTF05)$MM4fJYi?@3Ad`T6ZPH-GCZE9oUA{r&y?{QUd- z`}+F&_xJbp_4V}h^z-xcdi7mh z?*IV&@$voi^zi@y`{(E7hFPcp004nWL_t&tTTQ_^3c^qnK+${igPKGTEW}EP3vvII zdq`^$A%hPxX>aQ}K30hF+Vez^eBHoev%U0c8gdZhn0@X|73Df)0h7$uO%W1@P52ut7qTTC;ib(Bf6{UtU_KDrB@BOkYs`Dg;f9OS2w*(^JAAkEX Uk diff --git a/htdocs/theme/common/flags/dm.png b/htdocs/theme/common/flags/dm.png index 687c73acb3324463d695815a442800bb4998d4c9..53fa1cc2d7e830abcb1145eb83ea4a170fd36388 100644 GIT binary patch delta 348 zcmV-i0i*to1N{P!Du0Op0Du7f+W-In0Q~&?0BZmMQviX@fq2Mx{_%r&cXDaMX=A@* zU%p*jx?EPdR=Sc{^oCLBZdLb$Vz7lpM6g6Ztv@-aIaIb(i_A+lqvYmtHmZF%HK{dC zv`zit0R8Q1;QCBF)l+n}F7tFY_2NPH;W+l?Tj;$2T3S@-aDP+ub3jd_<5b8p>T59X zW-H)UGb<`1OG-nPw>I%?L-h3Y?06q6&zlhghbnGf5*f z^q?Do7@9dcQB}mp<}D1e%z5rkm_C9B_+A9e$=_&WWcX8{+z2cIY$?G6W u6pbRf1O)Zc%Fk~;jX~h0TF;mR>}UWN+7v+J?V7m&0000I%@Ds;6j-C`g7{QUQXV)Jx1_Te~G$TE0$a#~tc=x|f?bALchqvPspFz;q7D=H)X z;Q;>egZ=Gl^oCK3%uC?>g zlnwv@0EtONK~xCWCCx1h!e9UZ;X5}6ev~l~#2|>pqG4tKAFJ8~gMz3-44U?Cx?)(p z@SFv}iS>4V0cONP;L493`}5&} zpzu$a)DIYg1&AkBn?g7MCdL|}fhY)|GjXYK=V+8^({T%K0S8D4C1;?)X>nf}&204R z*n3~pRV|Wk)3MQ88w{M;MZ6>vM%A0qs4+!fJ_?o!6|vAFF@HCCcu*oJa$^azes~!D z+EhqsW)*ig(=1!iRuoQDhMBV9*LX97vEoB zcnh#G9MaPhGC8plfynB`xzrj*$Ct#wqAVt2``i7qlhaydGp95NTUnIqDNU^L0%Q|G zB&9XWVX}yqbVih-7H^{rfw{J`gC$jRSpf4?*xBsy6cwA&vG8gQ7JSN=o+bXRV0ge=bG=t@yHjkr+W-LWW@hR{MCU#}=Q=v)HZ|ld zEJtFtLtnH%Te3M;ukUJV>q<#YXSqmYw(xIn`SkPk_V@k${eSxU`uOe<)P(a~a|g1K#APNIO}TTt9nNAU3Q^Yimzo`74Md(LiQ+kaS4RF!k+&&=j~boKD? z^78V|&dzjuVD-z(^y%r#%gX>u5KNJ7MUH7cg<$QuxOA$IRGfP2^zz2Z$N($=01p5h z)uu)O004kVL_t(|0X51sV#81r0Kwg_Cxw~Q1lsWZPZM%wW@dZp5kZ|LVMfAKfQT$P ziW#|E*dag{Os(az4!%gf7js*h}^iD;yTVV;0nn|oB1 zb5xvq>-6&T^YilZ^6>ERd9IX9k#0qfX+DKubbDa!xw!P{>GARL@9*ybTqu6BnA=!T z+*3#8a%lC-%Z9d}&Te7o&&=j~boKD?0%kRhx}##Dg1K#APJg0+;agDb?Cc9|Jans& zZ>Wsdd2VK!eCpZP=Z=T+?d|sV_7QPGlfS8rn1S-u)z;S5+S=Or`uZVxP2u9==H}*| zhCE~d0053jL_t&t*CofX4#7|WK+$^#ZC-6J5|T=6ViB9o|Bq%&B18--r0uIl7@Y06 z>7ecE;Y9fI!E9v#58jjjbeU_<&D8zM{wy(Mu02c*sTyVdB@zZM-?_U*71c{5Y@K^_ z))vaEPvxn$%&t1_tFhh+o7&R57P*>INZ&?cXRc}rDYUixry}wcK|oPH`~aqjGZsCH R(^~)l002ovPDHLkV1g+2$oK#N diff --git a/htdocs/theme/common/flags/ec.png b/htdocs/theme/common/flags/ec.png index 1588df6feb9ac57bb85ec89033f4fe7cb3d5f80c..ccc39baa594c86d46e855bdbb6812a744cfc4912 100644 GIT binary patch delta 313 zcmV-90mlB?0?7i98Gix*008-bnr;990T4+TTzS`}|@CG{fSz$j{x<1_96TJ#_Gq0VeLOo7HmeZxX} z!8&xlFm1ahX0`wTTM<)vR0+ zYx?J7_v2Uf-%R!5V(7g9`PUiz?U(!Lf%)cr`Q>%?;cfNbWb@ow;j#er;dA@zk^1S3 z_~(W9<9hef5A)6g?#2L~&vI}80031!#4r#5$59F%fRrv&yoC2a zbyR$dp74YGAjMr;Ktd$R#=FLL3>7F-SR?P)TF2cBzZguu_{UP@Jlo7003`q zZ%DGj38*@Dl$2B_NJn z#1q7>uj=txN=|yt^l(YvAAW4Jc6QiK+kD^dF97tq&ENZ22SC>~Y8?R4>;RB7*ZT}W n>pAuS7=zhKwW|J#BqgDLF3=qwV9$ue00000NkvXXu0mjf+hMJ1 diff --git a/htdocs/theme/common/flags/eg.png b/htdocs/theme/common/flags/eg.png index d3e678893054c12e0e0b31a69c7c3afc3a4e8103..b67a2c09402b42ca89fd70bfb02508a0c59ad17d 100644 GIT binary patch delta 321 zcmV-H0lxm}0?`7H8Gix*008-bnr;990T@X{K~#7Foz1mg!%!3k@cRno4cMD4-O7Z! zPjtcE-Q9I#MBjo(z!u!C?oD!W`Eu$R`F{WCJ;IzU%1+Gju49}ss#69Af_P64_&PeI z#zqKKR;o-UPiZN5b918&_#0AO3^?-Eme%ztAv_zi})-Ce%6##dI9 zg$0nOr@bR%fxR9K!ZvU>HmXKO)D7P;`J#M$d<4wv(&O;!o5U%KqR6t0yV-1Jn(EKb zPygc#_-?x(QY}eRq#>>v<1yQQIRj{jR3ms%8w5ev+}vECOi%^~2k#H6pslUFv9Sqi zYHBJfD)FBMgF5e&loTUH6h(oONYN$eBJeZRfbKF%QBg5uXJ?~7c0^hCYin%%{r&v>{QLX+`uh6w;eF}Z zhVb2V_4W1i^z`%d^X28`@!^K{_V)7Sm-qPd@ijI0q@?zckbm}$j`fO)^o51*et`13 zcJ+FC@N#nPYisR(e$@Z~>i_`qTwL-~Q}0bp?nOoHJU!|(H0dlX>q$w^008!OcJpg% z@?&G}RaNN#0ObGx+W-KO2(wH8003l3L_t&t9RVEg4OUz0Oow}ib$s$-P=3*(3Z0qjs!Y2c;amr-Cc$H{Cv9e)hdG>v_q*l4wy7znm$ z#;bK=S#cZ_+gB7A4PNn!*m;q|;3_n5o&@m2oh*axNm8KeC|KU-(Ab(ZJ=k>Wf>AQGD`21G*B_<%}3>FXmj zMDLCUqM&WTKsMyL(G!Ru`XNRbEi*D)tp7+y2ciLt0#K0^3~3=FP)q{=PbK~-%tNX6 P00000NkvXXu0mjf1AU9f delta 351 zcmV-l0igcP0`CHl8Gi!+002Qe{R;p90Kia8R7C)4002+`06G8wDgdF4q1;_l+(8XEEv67)1Q{{H^_{QUd;`}z6#`pL=pgM|2bd4Ko!_w4NK^BWuI008p& z^7>+8_ut^yEG+dTB=tQ#`jL_M^Yh~1;PLVC>FMd_=H~ZDM*si-etvypV`E!eTT@e0 zM@L6IIy!W8bZl&F-cL{bH{#&{003%9L_t&t9RaA#7xq?Q4)`vgG&OIJ)CX&LhV2LFV=T`k481L6*1KnC&~uWmL|y xUbpS>-1@8}99!M84z)^}>yb4{sVag9`Ui0b9ZMdn>a_%t(2{2RO)^GuH(Db^FMJMUx$cx z80dZLKf-ZMeZ#m`((@&dq4eTL4JD5e)|Ir*^giHL&pG$=-0%CIb$$YBS_V+FO02FPIw$uLp|M`V{!o=Nigvb6- zPW}D+>R?r5bG1BDtf8&e|NsB_k&XB?HHw+f|Lf}hV`9IVwb|Y6tYLp)gTdjx-@4E3 z{I0Lt;q;!(U!VX00EkIMK~xA^1;N1%f-n$8(fc~17C|?}m4E;LWhN%B3~B=w>3EJV z`F4dS;=#GUhyRrQ#oSXy%6F(XYG8HWC0ownX-<6RHg8ZEmZ?>2c>B781#9h~8m`_c z013c1k8)%Wi3TeQ^X^%DYa&Q_s%AO5<~50`Rd)L7AW3YF3fUwf2_z!H=D$CgAUY!4 TMZk>!0000Uw1L6XZ8Gix*008-bnr;990VzpDK~#7FT~IYb#84E>Uw7+pr{e&)Ut;Sm zq1?0VL68QQ8*GKs;O_bQcwz8a$s{A0L_9n^c)#GBr`}%bjg8Fv_Vz?RPsSJ`_k{=x zxm=F_i3k~&jQ3WnPRbI;Vln!K)6>%sOmKscwetAbKRR-M!GEgOI`q#CVtt>K#ub1A zP$S2cN=vzHpPz#<`orY=PATRWwHoqTO8$=*3+pqpV%hU}F>mbH-MRsSWrh-#zapy>}=&i1bo12?Lp@3&1%=P`<>1j6g ztgPTIVZ9LIU`u~L#09Vd(6EG@qrcF`L|8^WtU#=(i8E;R0`NaUijXmvmzVAr)a~uo k{CrSUuT!A_A9sVi1116_tVrz^-v9sr07*qoM6N<$f>R2q-~a#s delta 380 zcmV-?0fYYH0*nKY8Gi!+002Qe{R;p90Kia8R7L6L=H=z(gxOZ`}+F&`T6`1?CkXP^z-xc^78ZY^78%t z{m(Hm%qS@F@$v2L?a?+i^zQD-KR@oTujrPRD$|nvp2^8004(cL_t&tTP49g55Z6XK+$_&Ur^G4#3T}lsV0m6 zpO~2qR%RWjes$O295(>_^MUo{qv~cy4YSv(x~cg!LJg0t#XOiho&q&Iz!Y=u;;~pF zugnM~^)oh$7R)TGPFNE^s%Vv>G{nApqao|6(!dase%h)genW_1Y?4WPbepVLpL=I8UBA z``L5!m`?VgRqk9v_s&D;IXdw&G~F&Ss!u3xa3S`=MD%t$>whUJ^Bo=2N=g6#0JS?` zicytlanS$+&-AZG^tn1%WXwEm=U9B?006qhJYMZzW7A}Qta7P-irr?2>ahR-RRBR| zEZPkK004DKL_t(|0VK$U4MI^Az|aA{*MVF@PXshAGa1~T8Ugm=xRr$G0 z_Q6E-m`?6oL-8^+_{3539Uaq3N&o-=s!u3xa3N2gIRH@r`hU$>^+!s$VLpL=I4Y?s zN3}=xe0}$MTgqrsmxoSNuShzwIx(y<*ok_vpm>V5b!o(DSiD!m2>@R;00M6S0Ehq> z4X0cH004kVL_t&t9R5 z{kb>YXjK4V++GqqZlL}e%o4+TEt8-4JeH+miQ!ao+-7sy##o90UJdVVV3=#!_uX_+ zoes|E;y01ChBX?NE{C<6Y(-UobxE+P0tg@~02KiK0y8qc+D62z00000NkvXXu0mjf D3u2+C diff --git a/htdocs/theme/common/flags/es.png b/htdocs/theme/common/flags/es.png index 12dd9a594758d94426a03c1f451892ca7d699804..e3b69d059004c97e8a8a5be2a0529a242c6c06a2 100644 GIT binary patch delta 318 zcmV-E0m1(J0?q=E8Gix*008-bnr;990ToF^K~#7FWsxO71~DAP-*z}8B;wHUjQ2>S zeUTn;DvjQI`x1#n#44U}AGhr$jQ<((=G*U`yfKeb4y8;!(fLGCPllBh^NmGYq^_qb> z7kjUr(;P{dFc19(j$9uiu{&_v_2OY(#HOG@bf|{C0J*_?6&)@ncMeONwP*e2nf;=v zg2aiAgP~?*@MFMWYdspC;I5^h{~2=apB*<(X}O^Gj&^z5`+u4kepl__jrsXJ^zK*q^h^8uMgIT* z|9X1-OiccAbNy>;{Qv;+%+i|x004GLL_t&t9RRcB8ZUu&1C9~S0Dp72#^VNS=ZmJ+foV%?jV;((ZvN1r$VlK8BxRYdjcGr@f=Y@ zD+!v~k5NN~#LJy(4^>FOM^#mtW{WsTi1crQhUgFx1q2X8_yc*rDCm}>*<=v(>$Ud9K({UD>u9>3s(!)L%pU4QV8h4I47)2x8l@dk)- zVdwM6S3rKH{MP;@rIM*sR!Zet5>Q-^DYrE;p&}1~1GiErJPLgNE`jh$fB&LDp?Cra zXbrjb0cdEwJfJnu4YdB3*Ml1{T@pwcQ+ON7^&Wui*A2nPOLiHJn1T_fdh+&R{;lmZ zmp1@@>SDS;{!r_;F_Z;MJ*#gt6SHsNl;|l>u-@YY? p33@sLu!eR7GmDI@fFlW}L<9A}`&SJ@?a=@L002ovPDHLkV1g=7tH%HU delta 351 zcmV-l0igcp0`CHl8Gi!+002Qe{R;p90Kia8R7LUt0O|k$-~a&K008*_0Q+HL`BYT+ zMn?5JJM=U(@-8m=Jw5d^`)5b`VL$X(Id`kqWwGLGqtWj| zCG$ZU@;Vaz{Q&;{bNu{EiN)1-yXKk7v9Q&NdAiH<^BnZ`JAdWn0R8<`y4#X$wBPmh zCjeytkGqd>sdG+}QDL2802u%PNf3FhlwO;ES(kcKm2^;;i$;rUI)Py?d0GGf0DG{N za;lDLql8YAZ~$2$05brIe9+wh003%9L_t&t9R2fw?DYTu002ovPDHLkV1f!Kpke?3 diff --git a/htdocs/theme/common/flags/eu.png b/htdocs/theme/common/flags/eu.png index d55e65f32df03bea41e7e7772ba63c6590e5a578..3578d04b336a4f25aea8ff67a7fc14d981ef8bbb 100644 GIT binary patch delta 189 zcmV;u07Czc0@(qOB!4haOjJcmRG33gkV8v{KSp~tJ#1uo#$9l`S7@?PVXaJCrB!9R zQ)9DzfScmYZ+3Z%S!%Rv-_%$D003l3L_t(|0R_Pk41!S#CMyRouh6c#JADic44efXk;M!Q+(IDCcOPGI8N$gC~l8JmKWH~T~{b@rd&?A;z)u)D0X=h4}G zuaFrjmB(ruW{0NknshJqC{S;rr;B4q#jRwE;%C_vuI$Xs3Wsm*F3=hzV&TOs%jJzdajJW_7>9~>^33(jtUi~+Zg}a^rn0H! pDn6zaD5CgQu&X%Q~loCIFOcTvPx6 diff --git a/htdocs/theme/common/flags/fam.png b/htdocs/theme/common/flags/fam.png index aebb02c64eb9cc8bc7bc182d1946dda48ddb878a..2020e5be1386bd74231bd6b23516c4ac1e6f56cc 100644 GIT binary patch delta 323 zcmV-J0lfZ@1JeSK8Gix*008-bnr;990UAj}K~#7FJdZ_M^iU8*PvmzU^@tg3!1smB z7_k=i0V~1X(|J}^B-L`_dFR!4Z^enRr2ded4V=Og&hg6)3#LK~9Ik>B>tF00;4~ir zXZ^<=PSNgkdeq`vBm=q%&L6D{_NA$^XeyRVug{Rw^0#Ud0)I6Nq8QHLEp1B~x7A9~ z_)W}C>|PQ_yOX>r_B7w|~YY_Ne)d7hN! zwr?0zu{@qq`b^7$pirS95{tFWY(Q*&R|Gs#S2XC@q!&e0`nk@dsP8mTHD4WeQw6t?~vdG5>wWcGN6KmkHE184w|>$830BM V52%u7BHRD~002ovPDHLkV1m-{my-Yh delta 384 zcmV-`0e}9}0+0ic8Gi!+002Qe{R;p90Kia8R7C)?_5iE$0IBTg003&$0A|tvQ^^2m z-uqqM{Z!oh`&5hfON04DfcQau$@6H)@@2^KV*s`JOxpWK*ZMoy`S?D2^($`nGIR4H zXTkDMzwt`|y!>X;Qm?R{{32z&i845;Q-V3dXMD*dFcNAccc7ko7ee; zm+b%m#q<3DD)|5yq3{3|9Oi!j004_gL_t&tTRn))3W7iY2It##l~srciVi)2@Bc7C zP={{WMX}QM$9WDy%p8VM3+x1|!~zH5KSF8uR?4}*xZ&o^+hqfsA)G?zn^|*K8}3ME z-}!^|t%5DxAb%WRz8=asBfE(owluk(7MB*T2Jk#%JuM{W2e#;IMVHcoNl77!3P}P< eNTXN**7^aX%{Ag&#y{);0000K8@)Q_d>sY&N|-=4|%-WT+u4r!qJLn{$CGieWt3zPov7 z($aGLC$pATHI1AKU46MC?}cp^SM}N(u%_u9tr`$%x|!1D?R{~uKXjP8T-?s<8u!;n z_`AEF9jM6j%T2uLH@&_jh$Knf(m|}n?A;qrd&8|_4hWStBwbIe)IH?s(<-p)7jRz&C}hkk%Q|10050iL_t&t*G<7O3xYrZhT-ouB+xUFoEjQj8X}>g z#sB{UnjBgsXnRP=>^!(jZ0&hyBt4X06IlT(8Wg_fzU?$Z-JWO&n!U3l)Gf=A3u1Ep zp)GbdSl*mLp)2#J2ZJ+IBy?rS9X4D0c&38B4BlW32+;mj;BgUom#m0Y9x&0}cOTwUj~RnJpY0Dn5=X;qJqf2qQJjg*$c zUWLw4c*S^~*`}}6RG#?F^vK`zTdeeu zGq;Wa004zaL_t(|0WFH9LIyz;M$g%qLGDs;cN$ud_pi`#Pguk4_p6_Y>VHxZ#A;CK zDV>>6fiBm#s$>3$Mq@A{Y;D|(=Xi`7uNS{W8sNtLQiDo;9@j?W-TkvPH051#_GqVY zxK}}sr-KIH2c(y>)a7t8eln^9fp$`B+{{ur$bX`SaToz;0x8QN_@XMDNB{r;07*qo IM6N<$g5|Bg`2YX_ delta 371 zcmV-(0gV2N1Cs-gDSrTF^8j7;09Wq-Na_GO!hDU{rmtM1`psi#=YO(Q%WZXoBT3}9zVWE0 z<%ERSh>om#m0Ym-(_CH8Q&i6x8RwLh66h?Yy;3ev&#p>dQPS z(z+MsEk+-5=uMf)#rOuOGJ^>kaMJ&_AXj9gFTblK^9d1;KmZ8TBZ1JL^aXsnJl&T4 R88iR@002ovPDHLkV1nG7!w~=g diff --git a/htdocs/theme/common/flags/fk.png b/htdocs/theme/common/flags/fk.png index 094e64f20933b4fb010ec346b9213bcc641dab22..0abdf641657639bb72498c19ba04dbe11c4fd9cf 100644 GIT binary patch delta 362 zcmV-w0hRuf1BwHXDSy^#c!znX03DN}BuD@OXnieU002xXIgRqTzUJ8C>8`ftp{eP- z!|%<~ovzesd$wkHv|)6zU2m^fYO79Sr~m*e{Sy`Zla&2_ef)KF{%B|LY;aOup+Q!m zT9wvJkl00w*GOKa{-B-ug@)^gjl6u8Mp~phP@7Vi;=9x0M1NMEb9b+rk+{}~nCP;% zq=KbBQ=K+Tn0lzTg{!eVdAU<+vXE|?Ek%}?l#~Df5O06Efq8XCb*WK;vUY82dU=J% z=^-`%004zaL_t(|0Zqp>dO|@M1<-p(zxgNbRXlveUa;m`nlZ;*xW6(tsytbo9j08^60k@r7Z2V$t4dl8TvNOz4pa1{>07*qo IM6N<$f=d#y3;+NC delta 371 zcmV-(0gV2N1Cs-gDSrR}OaK5X000nSbh2GQX51Lp33tO;=iCN^OJp{e>*@jb^k z{pD-<`pyx6IBdpbHs6%AutEhJUQmvB}`B$KH6M%K$Wt zwan!9_V#g{$c3xX04|BB!rO0~$ZeU%gQ?B{DTHd5#CoL7XO+Tzq{{#zfu_OS03Ur} z$$r-W004POL_t(|0Y$=r2EtGj$Kn6)-ko#XPMb(rTJQg4DM;8Vwg{6xACkmM>ktxu z3c~^M6Xu|rcUSh=fz$*$9=Q{s`<@g5I?Q7fA)u;@O|;49b_0M7ud={IUsdEwj}M=v w8&6N!VmSe&0f@6k({;EVDIm7tDrTmnFVWH#0P9=dzW@LL07*qoM6N<$f=|1iZ)i2x~t03v|^AAO#_ z-kiMKnYr1Px7d@k*N?K*ror5WtI>n0&VHuNeWc5KqRJ+2w4=b@iLTU!tkQz1(R!rK z_V)H~o5*pT$ZeU%YL~=kmBK7@wWY)0k+s-^tI~L(%QAMksei@cy3ppi&*gup(5}bc zsKVPje7={u+x-0ewanzc)8?(n4~s(?EZ}jIYx{fxocI+) z@z1#c005FnL_t&t9Rplj&YJp8XIptfH#Q~eV@5F-A*0Y&>r_O=vB#FXM2)GvW(7k!5+Il%g1%9 zkOfo();F2XSf`7+Z$){Xmp>qlteU*A=WFx)87TF%If1!87yz08fIxspAOHaf{Q=C$ VGV~C$1or>{002ovPDHLkV1kTV$L#Z?UtXp`0^FG;C%l zA&B6n5E^f;*(1b59|QAboPsBya`ll5MHtu3JDI7D)^D@#9@O)O&F4L?<>lq$-+or`uh6$`T10S>F8omOLpb=_xJYp_VxAk^z`)e^YilZ z^6l;I{QUeoYUSffH7{b~@$vER@9#ivSa^tTuI_ZFyKHd-a94SG#vmC+gXC_QG4k|bm;#6{`vm? z`1tt$|NrY}RQ>(^;o;$qkg8??0053jL_t&t*GqYDif)$}iU*idzhp?2Y*0PXHOn&>1n&v15g>#ANp+vficHbdL?Ib+kd j?ca1K%>y!k90&jaqP8lX0MuMd00000NkvXXu0mjfndPCR delta 384 zcmV-`0e}AC0+0ic8Gi!+002Qe{R;p90Kia8R7FH=yDV3*7e}SLySuZnu&S!6pP!%1 z0071S0I$E}s=eW+x!$3*-RFVg{=;r3;>~3P}YF+7OTJ2<3S9`^>!{wT< z+2rKp;^N}!S4rqnL*`9Bx5(%2?(XaB>+4-lW{1r2@$tON>3^=jJ_UQq6K zYS;h(Z;#Qz&+F{#>+x`8a+1=t#pkZT(9kFwK1-2d$DNrHon;=rCEBK1v@5W5H9;M0Ew#VU|Ofhqmr6v@H z$2Wd2S;~^`ocg`_c=2I4;@qYutyq8je8xD2)J^kWxS?IiakS}HC9v3$9c^4yrBzi$ ebrL~Q6yYED!!?Vxw>K^T0000 diff --git a/htdocs/theme/common/flags/ga.png b/htdocs/theme/common/flags/ga.png index 54c7c40c2ab00492a2b93bb2fff9cfd20ab82c52..fe22046cf420cf703748289ab8b6e2806096577d 100644 GIT binary patch delta 318 zcmV-E0m1&`0?q=E8Gix*008-bnr;990ToF^K~#7FVq|D$KmmZdrW&Dw7>FjTxJ&y> z8tfDt2|okYaseu|MJGds5ZoD>Nlr#W4`*m2FDa zfp%3IsH=t)NjHoRG{SiZKmnxn#SphG-<`AnYCwEIioqT6iTfMz53aw9H&5=?23>`v Qv;Y7A07*qoM6N<$f@HLg8vp_#004jhF0g{3-g}$db(Yw1 zlhlJNWoE_VzLM_AB-EB=qzg^70hrjFM!f60`003$L09XLPx@uzp003S|L_t&t9Rjy7)F#(lX3t6002ovPDHLkV1oDNp$7l} diff --git a/htdocs/theme/common/flags/gb.png b/htdocs/theme/common/flags/gb.png index 025009e204571fcf4d702a2b5303f83899af82d3..e0cd9aa1eda10810d0ba16b110a333c852560453 100644 GIT binary patch delta 265 zcmV+k0rvi_0;vL!DSwKY&$`d;dz-{zgTdL|?W|#cP-U?^QmmLuX`!vw{I0M5{{P$I z^!bsE!o=PAg?#<}`;fNN|NsB~V`6cH#~3S);lAJgQBMEs>dn>a_%t(2{2RO)^GuH(Db^FMJMUx$cx z80dZLKf-ZMeZ#m`((@&dq4eTL4JD5e)|Ir*^giHL&pG$=-0%CIb$$YBS_V+FO02FPIw$uLp|M`V{!o=Nigvb6- zPW}D+>R?r5bG1BDtf8&e|NsB_k&XB?HHw+f|Lf}hV`9IVwb|Y6tYLp)gTdjx-@4E3 z{I0Lt;q;!(U!VX00EkIMK~xA^1;N1%f-n$8(fc~17C|?}m4E;LWhN%B3~B=w>3EJV z`F4dS;=#GUhyRrQ#oSXy%6F(XYG8HWC0ownX-<6RHg8ZEmZ?>2c>B781#9h~8m`_c z013c1k8)%Wi3TeQ^X^%DYa&Q_s%AO5<~50`Rd)L7AW3YF3fUwf2_z!H=D$CgAUY!4 TMZk>!0000DN*D*hu--JmJnb zj=VE9rYI()CWXIsugXUFZbqfVI83KD--%U8vqr~uKJ~~s8GoD^7orz?x@wENPxfRy z^+H1^gi^UW&P#UF648QlN?^V1o##11yF3yQ2__R>J}&oy9-EY|=4=Q#jp zU78O7004hUL_t(|0TjZubpufV0Kwf)W`@j|xeE2)g;OPBJiePZ0;oOOMbMZ85J5c~ zZ&a90mZ9b9s$ILf=IVL^#?R#y?X74H$7O>0U6lUBwRxGi`JF$}T)XrJZZQ7U9Q#*M z_mq+X>$X!!aPN`C{eKU0z7dXhl1FJ)X47G2KmY)Zbs;P}uqDy}0000Nk40fF30_eD# zvpcWWkmqSwD`={!pQ^zuo%7|fAR5|G!NFGlK{n;!_qSnd*&LPNxL22ZS8ip3`Zj}o zyu4$Kjl|>gq2M$L5cJuOaG`*J#ux8g14>s_5Y(&G6hs7705xGE1OD>0GLLdd(p3Ne N002ovPDHLkV1j?9wZ8xW diff --git a/htdocs/theme/common/flags/ge.png b/htdocs/theme/common/flags/ge.png index 0d3f6b3d99a468c3ab4066333111e7d3b4b69b48..dddcc4c5faa29bf8658117a50afe7ca99b7afc29 100644 GIT binary patch delta 368 zcmV-$0gwKl1CRrdDSzwh>*?v~=H}+@0RZCS;@{uj+S=OJ*Vq33{`~Ch`oFyW{r&fe zhWz~e`uh6zsi*kf-S_wR($doFiG=iVZS!kp^SZX_XkzfDq0i6J`OeDoVqN(7`0>BH z^z`)0%ggz$tog95_^PM(r=;|roAQv2@|l(Km6F*V7w>?3@qb%Z@>EdoT2$>tKk7Cw z(*Xeav$6N1p!cMq?Nm?ig@Njljq>vH!^6Y#t*GL4ZR1WyOson*_sU7rwsHYPWEI%#ZDYY(}NQ z{Gz|ZhF-SJxIUSlue!5YO=%OwX{p)dfnBqbMl?D|Ro O0000EdmML+5`FZ#c{ z`L3+_u&wy2r}w9%@s*O<9T)5C>;C@!`OeDy{r&O3yYz8w&(G2P?Ckf6hW4qa>FMb= zK)8Yc005dvL_t&t9R!v2BU~sEdKvyl(2}1NDL&d+Tz+f&%;_$ zrqftwHAsmSeR!AtW<5RL+hk{IE4imKb$hRin^YUt2z2_+&W6>Y`%ugQ%AVTW;y8^3 z%b2LiREHc%@o4hU1#=yRpLNFBx-@z7Oz*K8gqN?fSJN7wreV-x@pjmG^JNIc1V8{K dLVyrRLVto)K(3DASbhKi002ovPDHLkV1g$~=QjWV diff --git a/htdocs/theme/common/flags/gf.png b/htdocs/theme/common/flags/gf.png index 9bceb7c255fb2a0f14602281317f189c639dab0b..890550924313e8b0d9a4f462d6cf2f5cdd5da06b 100644 GIT binary patch delta 337 zcmV-X0j~a#1K|RY8Gix*008-bnr;990VqjCK~#7FVkw?_nE?j=|NWoi!vkb|`}Pe; z{{HqYDif)$}iU*idzhp?2Y*0PXHOn&>1n&v15g>#ANp+vficHbdL?Ib+kd j?ca1K%>y!k90&jaqP8lX0MuMd00000NkvXXu0mjfndPCR delta 384 zcmV-`0e}AC0+0ic8Gi!+002Qe{R;p90Kia8R7FH=yDV3*7e}SLySuZnu&S!6pP!%1 z0071S0I$E}s=eW+x!$3*-RFVg{=;r3;>~3P}YF+7OTJ2<3S9`^>!{wT< z+2rKp;^N}!S4rqnL*`9Bx5(%2?(XaB>+4-lW{1r2@$tON>3^=jJ_UQq6K zYS;h(Z;#Qz&+F{#>+x`8a+1=t#pkZT(9kFwK1-2d$DNrHon;=rCEBK1v@5W5H9;M0Ew#VU|Ofhqmr6v@H z$2Wd2S;~^`ocg`_c=2I4;@qYutyq8je8xD2)J^kWxS?IiakS}HC9v3$9c^4yrBzi$ ebrL~Q6yYED!!?Vxw>K^T0000 diff --git a/htdocs/theme/common/flags/gg.png b/htdocs/theme/common/flags/gg.png index a61bc7ddc7ff8b83a51f6e5a641d7f31af020f29..aa29c768cc496c1162cec2a6bc0f1953e3ac1fc2 100644 GIT binary patch delta 413 zcmV;O0b>5-1GWQ@BYy#XNkl5Xb)`dwz#g(TX)(3Lc5LODEzHtB}b! z4Yz{37u@x1zqfCO#rf?%A0Ik-@+AI;C|D@+U)?Bc_9e>Fc;%~Bi1ov<2 zw|!iJ=7IXNQImT@X72G1xv+wWn15RbET2U*5_teK2?O{m0DmHl&tHVck1060GbmOn z@x`l{BVNlNUG_reo#uB$9M+#Uv(e>*nUa1YVgGCUJK`H?0>F3MxVs zE=rvTVAmW>5`iA4$kXARt-TAPTRyA`;4Y_&u&UyH}RKG>I zq6=N@7^m5~u73#`hfq@C6uBf!efLfoGqM(l1G$(LtJ%&yc)U-CC#^5TDtmWGB5V}c zEw_K|hL%Q-tW27UKN!$+J4kF@O?4`5d9{W*&(MzuO~-J&p{hAOg`{ z&40a6K1>;O?(|vw#6eEzynk+1kSA!$r@p68sp{WO6Bg(@whhs^{Sw0w00000NkvXX Hu0mjfLv6m~ delta 459 zcmV;+0W|)$1LOmcBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zhDk(0R4C6)kvnJbh1C5%bCpI6xw5M3KNu!T{C)h}5RDG?`Ee zieQjcmCe3emT8bQO?P;daYp136gk^;Mz05hF-dp6aYud2wse4U3GD zicrP*mv-M=i+{Gw0pDhMm}71QC4l=);-VjX$Tz(8P#Xrnl=5Da1DZ&>h;|>b)9HyJ z6btC>z!mN9FI>nurBa1EkaTd3C%bZabS4oe3UMzs`rW6PJlBiaula@Q*<;Csof3!V zz^4N(N26+dZN0Js%U5r@V*^Q?9ah)3l^8$?5KtO4!bClch_JdxV9P)cR4~9I)Z?@v z0Im#rzxVD`AD|$#Kc?=vd_^NaxAxwu>iTH{{Q1)~8Gix*008-bnr;990R~A#K~#7Fgpb8R1VIo*f8*{E?8bzR?^6&zuVO@A(+34y=M!uo1>$nJal zP*)uRCz5_Lrrlkk0e5%)1<uGT}X;FB$XyN}KFKXcZ^;Jb(E*Qed--rA6rD7ELd495J7%$tKo5UF! z;#ru-Cc4oWbx08qo3q5mGPKA2zqU}U$`yt?uL&U%A%I-{Eih1>hC!f-Q3g&9hxLHr hZ_dYrJaN9}tN_MamL0U(pGg1!002ovPDHLkV1iPwo(=#2 delta 380 zcmV-?0fYYE0*nKY8Gi!+002Qe{R;p90Kia8R7Lav0PO$()c^qG007+p0QqcU`es}A zUQ_9*O7l@f^hi7MK{fI^F8LJ&{FIIPcy9ArLGxHm@?25zR7mn_VCm=Q{QUg;`uh6% z`uFql@8aR~-`?)!`}^w8&41xYJh?qJ-aRq(_4Urq z&i?-X@=ikZ_4V!T?fv}y>|Ru@X=UhDO858o_V)Jg@9+5JFMd_=H}w!;@{uj+S=L{IKZO-004(cL_t&t9RUv1L6XZ8Gix*008-bnr;990VzpDK~#7FRgWQT!ax*;&nFlh3WG-BI)%Vs zHnJtCIt-!)?*+03fkWXF6b3JFO)4m1Ars4*j?(M3cUQLm?%+cIe5q)@|J{4!Qcsfn zf>`HU=S$~PCyF9f_|v(W#IZP?D#oOa5Q1}FmSs^Cj4@l#c7K}Qd|$e*eE*P>iP-I) z)jZGf4Z~0s%xKt9tJgO<9E!mJl>5E4DW&)ZL2xf%jc2>)_e2gSicM-) zB5BITV{4nj(MuGtl{#@W!fx=eD^8-GXYEU)0n%<)6*3fD7hoRl#%oYf#@*C$00slt k;9v@dpE~CUN6q2EKlkWup}eMR@c;k-07*qoM6N<$f-?W0LjV8( delta 379 zcmV->0fheI0*eEX8Gi!+002Qe{R;p90Kia8R7Lav0PFw&008`DW&1`({JgyP^78fd_50!B^dBGd85!>q z67dZU{7Xyw!NL0a`uX|!`1ttu_xJs7Zu|WE`}_O$wzl;oB!B&>sr;j(`kb8hn3(sI zlk|&=@$vEg{{HgML=;^N|!oD(?!004$bL_t&t9RMBAr{T{+;ronXY0}bEfZeg|5RHQDz z<+#1o?YcJ=6qtvFAc`UxQTE%>F79a}FyOR0ynf&R~op7WDovp2=t~u$744Nb{ihsa^$a73~W+oZ4&wLkc z-43Fz{5LQDHctK2Pkz;pevuD<(00F;VC!>f;}a1PGP;?JSZX2_cZc2>`(A51pXr+) zYOwmYvgEo5v(8bD6a4zSA}gR1&=}AdP>f1vvln`^PUtjdfa3&4pS z)5rDo^z|_Kk4;UEC1gL@k+5@a_*_S@17`f6G2zz)uz$6K?TyU|K{AdE7QpJr)eMRm mRu5DEOhvYKj;(M(C0000KT?(pur!Mg=c{g=7^dZhevp8IT> z`e&5-WR&(^koH=Q^;U}XQik(Qfb{?f<%FyLYnA+BkNaGT`hQe}_(ON~JaO|_hV>U` z{e7tYbE5lho%ieK=ll5g`u6tt^z-%e^3BJ`!vFx}dV1YlT-j4o)<{UvG&Gw40OE3U z;A?B$V`Ikv0Js1EssI3kCvepO003%9L_t&t9RK*4#tKcEN+2PnWo?7t0< z9yl5h*euTUby$TD5XLoZmgFAuAQsWg%Xoa_QzRP8+ur-n`EtHY>iFB~aNFH>>0zt> xI+avaJvZ%(MDdz3Pic~{-Un-}lp+EF{sF$f7qwX<-HHGJ002ovPDHLkV1h6Avn&7r diff --git a/htdocs/theme/common/flags/gn.png b/htdocs/theme/common/flags/gn.png index 0a97da77bad944469c842578c344bcd43417de63..d6fd7cf97fa1676bcfcdf1b6550884b19ad16d9d 100644 GIT binary patch delta 297 zcmV+^0oMM81Gxf_8Gix*008-bnr;990RTxvK~#7FRE~vB22l`%2X}X;IvODQ$LNG6 zt^#@>N(^_0Cu`hh51YH^-sO-$_;2NC}w0{!y`8Mbny v4H`h-EB=L!AtFn@VfOjr179=sMo|C&A0HlObu%zK00000NkvXXu0mjff1ra` delta 374 zcmV-+0g3*(0)_*S8Gi!+002Qe{R;p90Kia8R7LUt0PWQP>goXI<^apv001Tc{A6VP zU0wNDSo~B}`0h~m_e=NpMD_JO?ejY{sWdaDGA*Pn{Qv;_MMe5OJ^Af7_xCUM_A2%D zBIxfN6qytdmk$e-3;k_v`$|gq_%#`v8T?OA`tCsa`8(_JD1RTHAO3Z9`|w8k`avb4 zB|WS?06GBvSy}w?OZ)pr?ejDL0094bdj0ZK{QONsuS86j3=x0Ojuh0Ac`ApOW(c004nWL_t&t9R$=eBA^sBgwGIB$bEww=aP&c8BV_gaGoF|j}HCKF2=8^w=J?h z{(5aTnED!KEn}}7X)Jx6o3%(~++PE%vyWPI&QNxTyJ9JBnjw2tMOB^xpojwe10$I@ U60m=93IG5A07*qoM6N<$f_=2G$^ZZW diff --git a/htdocs/theme/common/flags/gp.png b/htdocs/theme/common/flags/gp.png index 2ed1b78eadc7ad7c845534a13d0fe4283b69a76c..32aecbf8f6852b91a855a44970d11e6bb1298cc2 100644 GIT binary patch delta 317 zcmV-D0mAz95R7O* z2MyRtp2IltpANn!yR%~#A3UK>j1ii$hyWo3Dr}7QB;hK_+kba*u#)VCice#rh?C&N zxo9*#5Pb|bxqfT=%ik1`2Wj%^oLtVz(a?;J4yZ;)W5jzP4@cxLa=9S#GUHopi*^AY zs?mT{6M#6UxNc=Zbw*p$jJ7Hd-c}PB)Uv+QJ+~+u#Uv&G(N{`9`AX;SJ*pn3d6PQc zduTE-@-tzNk2a@XTd@uUIPpH(>g`ofR8aA_D*WE)PgrUGvMK1gpy;3oB7yrQO&vRV P00000NkvXXu0mjf#u<#J delta 360 zcmV-u0hj*G0{8-u8Gi!+002Qe{R;p90Kia8R7C*e007(o0M!5h%>V$z008j-h4^}Z z_jG#qZFTl(ar9$r^Ic-_R9Wsy@Z8G${QUa*`uX|!_V)Jj^76^Cm-+_){Dyb?Y*_kh zQ~794_+v@-TtW6&KK52R^-VPLOfB<8D)2!c-2edm%76UhX@C2*U-n@{^iwqPMkN02 zi2eF+{MKmmWJu!x0R0jG{k4St>2UpqW&3kl^k_`}lY;(sV)blL{{H^mzo{4b1DX7g zl>CZ~`+@=K03GcB4DA4EFkzJd0047IL_t&t9RQhipWPF@e|(E0_8Prtjaf44PE8JD&FcHFk_ zAEw#E(%#SoO!IDBy1(2!10a{?fx3Mvw4|J#4+ zW!Z@`WR!U*6N2LQ!~s#{&WPY`!M5Y4sEX`N2zEg*`*8#ht<=Js}Jbq$@1^D|Exg9mQ`n;01LKnJA1KluOt_P`RZ z!i`3ArBuSPC`ukH6l6at3U(qQwt|BIU+M%*;#+gq?tN-1xz=g{{WGAU~{sQ>_-005Z)0G_4L;%sc* zVq)K0TiH}p*Go&*L_`67`;5Z+-AYQG%8m{QUX*`Nhb|zQe%v_4V}h^z-xc<>lqMzq$AK_kR$F{e!>$@%H_Y!;6Z) zg__Oxq0s&L{Q39!_xbR*^!M}f_4424-(I|4S-DtKwo^^CO+>9kF{Cj7NC1z@>2}C= zX~Jm}iQfQ*004IY0Av7H*wjJ*003@DL_t&t9RE5e@IJO`p&0?9FAlj^ks~P4=1( z%X(k8x{Uj8MLo5KBs4g$jzP+C&SRuV{t^Vy{0Gy1C^)x*5HA1#002ovPDHLkV1mC# B!X5ws diff --git a/htdocs/theme/common/flags/gr.png b/htdocs/theme/common/flags/gr.png index c5a053541898dbf8f6aaecfc927c1145dfe6dc26..797c52cd620dbc018efe2ac60d84273a9d9eb08d 100644 GIT binary patch delta 346 zcmV-g0j2(c1Ns7xDSrz+#M9H&0yV+_DZBs~v;YOGO>))$|Ns8}{`mR)_xStv_W1Jj z_tMtg;^N}{{r$qt?7qqBy2k3c#pk!g=d{7)frHDErr?dF;fbHyf|}iXl-iA=+W;7$ zJY>)F_4@Mj`0?`e?(p{Q@AmBO^2o~8{QUehUCb?4$p;~+=zr+!`T6?v^!4!Y@|UXM z&)4t0$mdvg$f&vJqO|0jt>BfY-U>9K+28T$?e*yD^XBRD| zrU&c*004DKL_t(|0W8QRLInW;0MVIs--0_4hl1SyAh<{LyT|tg84(B~Ac+nM7gn2& zkcz1GW1B9dWK-fINrJRx0f(VMl&}6n4hW;b!#*+G!9G6~-*=vR54iiF$mWX|_j`zR s(}$SBX5iH)E`uV7MgrUb2#m)70C&q4Xm$OzrvLx|07*qoM6N<$f}Xg{yZ`_I delta 352 zcmV-m0iXW*0)PXMDSrSNv;YOG005T&0E*e)@$T^U?eF&K?e*yD^XBRD%_UCb?4$p;~+ z3q8dC{{Hjz`ttMm?C$c&%GToI;*F%?f|}iXl-d9oq5uE?`1$Zw5<$QecZDr?VVCPv`{Ao~7NsT~2iaR@n zHZ_4MDS1jtk^a1_=Z%d0$+*^qji-H@MMRD3>+SRN^v1^6e1CtiWrxT9-_d%u@cY`v zKR<`#EyUMn-&3XRpYSpfE6ho4B}Hj$W0Pn%>{$)6Sx`wS&sTpX1`=6BBW& z!xWhS004YRL_t(|0Y!=>q5=UJgy&oLEzgw%4eoypI_~aJaQ}4-0Xi7$EC~q=7X;ky zl2?E|#!cyBd0MZl2w>C90%aqY@e?Bm+QzI*xujf)6Sx`wS&sTpPV2(i(-pLMto0augH<0 z^YiqZxVTx4UX_-bWrxT9-_d-3u-1i*dbaTU+Qz4Snm<2>dlXSeW<|LSdt^@ED%oBN#hlXQD)rtO$HqEY7PY z^Eg!5MVl&bj%E@P{ySx-=h9A20Ie&Up*PoCeowtmt#>P#*-*9TWM9v%D187#qV2WO zYkiXspE?&%@}3a}p+z8)0o}t(qpJftAvcMRBw6jH_J0Az#W?Zrq}Hdmeq`vq|DmO_5`WAB5uZ}C7w-X9QjYEq zK%Uk{Es7c7{{)D-nOE~>_$-;Oz3Hk}HEft*-PtfOc9A!c V8N3GmX0+$1j8Gi!+002Qe{R;p90Kia8R7C(t_y9Kb04?wUB<}zf>&wsA*Vot5 z($de*&%43P007_s0Nrq@{A#8AW}^9CocQ$i`uF$u_V)Jm_4VxU^h1jCKZo*EmitYT z`b3QQ@$~p2b@F)_xbz& z184u^=k4n1>gVU@+1=%5N~`by005FnL_t&t9RIZSyz{ zrVGZ+9s0c$q`^X&#nIymm#q5b7MgX8BkxST1!SS&J6bTgYBL*Q(EvV$ZgNTvmK}&J mDVaw-z$|1!AOJvskp6FtM_+GdUC96d002ovPDHLkU;%=)K-nGu diff --git a/htdocs/theme/common/flags/gu.png b/htdocs/theme/common/flags/gu.png index ad91f5c37e8edc1053c3ede27f2e22a5de71b538..253cb3dd9183ce5941ae8f14308efb2d04c5b926 100644 GIT binary patch delta 345 zcmV-f0jBg8Gix*008-bnr;990We8KK~#7FO_4QTEin|vGxnr zL0VP;9S!d8?yvyry98))C~=p``4S@BaL;chcK*jbd}XPEm*hd3m3^#a)=>SUv(iGG zq+4Td&YTehK@xccG&Oz=EqZ;!cWq?`HddaPk_%(t3q3HE7W^plMq` zaay@~P7r~^S2U?O6mVl;IRL&jz|&**(68K_MCrpT|N2fp#|)4rC8-L86gClB1LPG#i{{Q4W}-j5wo00000NkvXXu0mjfeuGjy2IyeurdGB_*x*IPxFr@jI^Q*f1g+1-EQp%^T z%{wnbx|IfspFo|6Aw})T_jNGpcax&h`dbBcnr1ahDjfthsR$yys)(vz5kU|H{sgu- Uw1fx%WB>pF07*qoM6N<$f@3hcF8}}l diff --git a/htdocs/theme/common/flags/gw.png b/htdocs/theme/common/flags/gw.png index 815d1eba4ab4f6e7ca324fec728114760441be42..9029355f387f1d5c62fbf8534aa748101782a8d0 100644 GIT binary patch delta 307 zcmV-30nGmH0>c838Gix*008-bnr;990SZY(K~#7FbWkN)ML`sv!5z}0Vv&te(8SvV z5osi-=q6YJ9Z&eRqoWsR^vEyYOrM(1A;uIJIVNm_CY(^^v@aapZb~fk*dpstlTy_( zs7RyQ#Gtx8KJUxg*Vh3-WT{f+hz3=RXAZ2L%?@Eiv?AFU|9?hDlR6N@-$biLvBA7x z?Eh%v#U|N<80DaP;>xc%A4pz+VqX81y#PKH@g&KiC@X8~`^mIDu zm!^lYzc2oJQ!KyRfB*(zPU!4Vy3Lsb58S118PEZ$2mlJ35KT~Rn^*t<002ovPDHLk FV1kzjiRAzQ delta 350 zcmV-k0ipiG0`3Bk8Gi!+002Qe{R;p90Kia8R7LUt002P%04@OhWMutaUHn;D`&3n1 zu24y`Nk^+eJFGi3sWmgEGAyJl{Qv;_M@RZSJw&B9FQ_jhq9h-n9~qq)6qytdmk$e- z3;b$o_HS=xQc~DYPmOYOqSQl}(K(dQFp$kFj>{#9$sG}o0Dtv%cKlCJ{qa!y`$ziv zLizbT`1m&W_c8YNEA{mx_4Pm8rvU!|0RMV={QOP!_C)vhO#XLw{`GYI{cZgGWBU4B z`T14y$pG%e0P4K}k diff --git a/htdocs/theme/common/flags/gy.png b/htdocs/theme/common/flags/gy.png index 3e74461376e4bd16bbc5b121af6ccba1cc282032..acd171b1c25f33653f3314633ef317244860716e 100644 GIT binary patch delta 376 zcmV-;0f+vV1Be5V8Gix*008-bnr;990Z&OpK~#7FVz9K7wO;8Yx>}l{5kM9>L)jI8 zLHNchlR8~q6WdzbHk!3rue-Hv+qP}n=CkH$dCqq|^J6Y?1-lz4@EIhC8gJi@nX0X` z@#&*U-`)V17I*tbD`4JW4h(C|G|M%BLWu&;z##~>yL*#~aeqRT1DWPYWAwn;ztsbs zM4lv?f6n*>UZ=jfVqj})Pb(`YyJ~a~s?zCt0_Vbh7aGbHYd}qkC&AA%FhvGHQ&ujQ zlX0??*xLS2rhKPTCCTLMle31g%?3<}sje8Hrpw3x_kaI_{C>hfCchGZ`;(KY&4X3m z>P%o|bxpmz@^M+9Lx+Ro%8L#kLc$_?VGY3~NDO;F4Sxo(`h`I-`ueUR zbl4RsOXRCOk9#4Ig8QNOu{sRG|A0)PLz*awSP;nNOa-wD4NvazKmqRHafv`iSP%fr W@9nPWtw8hu00000B!&POaK5f0MGycyM%_H znQ-6k$nu`bbFHPfu%3Kf1s=_V+pZ`dZcKzxhv3cR)aqhdbiqHGlT@EcW)Q@A9~Bz-m>t zRQ`8&{#RG?^V#U{NIAcR_z+UiY?ho4b6kINO-l z7DKNC4~tWCdU_g1Qr-P6`p;V@_-7nhC4#Ruq|BqymP!Z007(o0M!5h^?G{rcX#u2bn|g?@@{VOYHIRk zX7FKQ?_6B&R#xp&QtVDn%m4uLU0v{5S@Bd<@=;OwjgI=7o9#hC={-K{I5_DsG3hKU z>q<)WR#yA%?fbvK>_0x{B_-)aMf%av`pwSx#KrjM=l9Lcq;q5p$;Sdks3k%~eF1`Q&=t4sC zqDEH$004SPL_t(|0aZzZ6$4NVytuZp|7NvqJ^ltq0^$Ey0ZK;SD5k+d0noj2%F#=1 zv~RC-@+Uaw#NE;Sw3^) xtU0NQ*y?e4o_>_QBmnJG3F&D@l;gf8XDph6yXpL z-wO-!YHIIFN%2ol_}JL@&CU6Zj`iW;?Kn8;008oCZtX!q`G2XY`q9z$*x2bTEaV>_ z^Ko+TN=*Ch?fROV_{7Ebetz_Kcl*D;`pwSx=jZDH0QGu$@?Bl@R#x+LbnQ}7?EnDa z(77D|004|hL_t&tTUCxR3c^4X1>f8K$%cdw)|d-;3On!L2!f5hokod7$lv&hg`hai zFx_yMfE#cE2x<`UMM-9j#Y#-_?ZspT;ux)N%U5uB!U5QG<7;Vi*Ifx;WrtW`Ek@I+ zd(46qLz8Ash$VZ%LBn!hR8^HdN#9o(>C9+0kSPg9l23jSj=%W4{cCvxiTyBBOZkgF P00000NkvXXu0mjfbkVf- diff --git a/htdocs/theme/common/flags/hm.png b/htdocs/theme/common/flags/hm.png index c2b0d6f2bac51fde72613b0b4dce37a3166c5367..984a7ade0ba7f09f22be22769bdb243d63ab36ce 100644 GIT binary patch delta 369 zcmV-%0gnEa1CaxeDSyXzgNJ{o04D@b)cX}58Q00LzI08&X}p8xwT~ z=H0Bb+@z}A!_4j2+^n|Kc8j}lg}7*avc${Z$XymYu2QyA#GxiNi6RPP*(K4(9R~bfHC{s+Izf(rzxP(ajC@ P00000NkvXXu0mjfcc{JI delta 373 zcmV-*0gC>S1C;}iDSrR}QUCxl000srL5gvOxM+Q{m88bR%imgZtW#>HN@JoyT%EMN z)ZXFikDbCgR+;DN@SCa2K3SVJQI{}Hlto{j00L!pi@T+=(83%aMRk{tvWs?| zNn)RWiMQy?(V?Qk$%&Sqx!c~jzNC<>y2IL!D@f?MzVW7{rVV-K?|Rq^jM+%{tK-ZWHCrS5IbK zQ?*%Ihvl%c_)LPAD?n!4N8}{<7(b}YD5U6x%z7cTM&W!rE|CEU{Xa-Tf9Rwi#F;W2 TJ$o0u00000NkvXXu0mjfzfZiw diff --git a/htdocs/theme/common/flags/hn.png b/htdocs/theme/common/flags/hn.png index 45b6fe692641b98881e715b482ae2d1660b5eab1..40fcff4de93bb99a73a61436235c8101de9ed099 100644 GIT binary patch delta 336 zcmV-W0k8i30`UTnDt{8800f!<0Ez$rdw`bQdy?98i`Qy{)MS3qUU|@1bj|<(b5d{2 zPHW0YXURij$UR-dH(10oRl+V$z5oDcg_XC@5RsV!p-f$%Iv_(>%Pe9y2a_a z#OAfX=dr%!uDanxTczga=KlWv^Yr?csNeef`}z6#`1tsSnt$2q?DO>X^~A)){QUf+ zv*P3B@$>WZ_V)IHmDcj|^0mR_v%cc0w%$8Ynr0CNBUX8-_FYJ=2de$ife&{%ZNQg6&oYsyMz#zbSp zJzc{$R=-1I$TwKTGgZPaPrfEeycq!emCMi9@xsmRz{=~s$m+So=C#4(v%cc4 zy5Xv}-aAp7=H}-9{{H;@{PXnshML*=`T6+x`1bbpftA+k?0@s~^YilZ^7Qrf#Kgq< z`un7_;^XDO*&$J=`=aK26?x$7a<+mf>AS=0C!*dp1lMVklCO3HH0#& uiYO9U>o&5A2<=l?7f}@v#FYes0Q>=Gp&tGt$ot*^0000X1?kN|3^Q2$5( z!GwSsu!;dPf-=OA0SFW{Bp_r)|3hFD43uFqZ`(choYTGca(SQUgY*5~HHr)b6&9#a zMu&m6+o-}s@XY648ZFDE63zPk0*UcB*g3ZL>bN`KR{e(A!GC@GjLQ<%`r6cL0MY=t z25|Ryp`DICw6xpJwf_*GHOy>`0iY3U?doWxtx!v|NrORA6dLi_bUIxDkZVM8jb1OG zLF&>;wZtSKmdV%W%iFCI)sJpubI&>kuy9h_SbJ^` z3q*3w&aH19oJlmEh#@S#_9-GP>4n4h>+}7zaSRd_X5SDo!T5bTc{??)m%}iC=XZw8 iqzs-dgUe`3`S=gey8A4)mhV z{`U6v`anSY(9r(?0RDP<{#{-ESy}s2Q~XOy^(H3vL`3TV0BXkGX{6rwNlE*4b^B~= z`eS4GTwM28SN#A0^#B0ks$Ycw004JML_t&t9RNd@bSBV{lE2=JjGJmH9l{Zc^mezVO>c*Ri_YYW4R=6%^-k$){Lhqg{zf=Oth zL?`5P)wHe}B}>x5NPRu&ZxhR-K`+xjoCN_95%>el;3#Mx24J!P0000< KMNUMnLSTX@1-ZQd diff --git a/htdocs/theme/common/flags/ht.png b/htdocs/theme/common/flags/ht.png index 849aeef99f9ac09060f2cd7158dbdef0e002d7a2..81deab59da60aed69b6ec22d5b5ac81a9f6c02e3 100644 GIT binary patch delta 305 zcmV-10nYyG0>J{18Gix*008-bnr;990SHM%K~#7FVq{i3&VU2}g^fjG5HS>nzY%Q_n zH}0VpzkmMip)$81fLZYp2XAJsR?TKb>mM(l-T_(;xJjL}?|%XGzU`(ZiyugVOVvQu z0`w2^!fktbM-!mtS-pcM8&YmTlk7IMNr4CU00tTdzJ89eAt1JQ0NdIG$SHCH%F(8O z`*G>dzkUWD)!Kq;2@h2d3(?jriWk+89U6Qm-42_976_55R;_ADhia8WHC0WOsX$MK z=JC_+V3T%Q6)HDtL_!sCNgY*vsGQ`Gb^v&#HzesYALuL==HZ z*D^Ntv#r_2xP^hKY?Q%4lXt(Kxe|~dk{^#hmvBfquuxg}T7Lh84bbm)K#Ry#1!5R- z$1%57YW0ZeIPCWu5^_2Ln1xw0Lp4;}v@#viM7-9kz6ZMb-*sy>VD3P1_fiVbe&q3w zDLbFf9cjHzr0zFbjdLkHvVGbf-;d^|reY!?>N-7fQOnKS1=9%_8eW;epv3vsY#p{`v+i6*MRE@haZ{0000V%Dd3oer zUF2C=;#F1QQBmPcOy5UG-a!PZIGU`9c2wG%JcC zsE4*TbK8M|wN3(z0D`R6%$tmeQ}1rgGd>(Is|~27W0vqWSG07^Hl7yRiwFQWI=T{AJf!Cw00000NkvXXu0mjfs(G9R diff --git a/htdocs/theme/common/flags/id.png b/htdocs/theme/common/flags/id.png index b1d3776b0f66df9ae40079ca0cc12b31601b0a8d..536b68df000541d484e100ca6392fef3f165f155 100644 GIT binary patch delta 275 zcmV+u0qp*P1ET_v8Gix*008-bnr;990P0CZK~#7Fj8C;ehA|Mm2=1<On z2|c0^VlMjBTHlB+RM*1;A<_px60|qnQ$eU2RZ7WWdiEZ`3xApSUu^Bg)!2vtbbHHp zw}Qq%X5;0?EGkb0lo9}hzJ3!7tt@xVFVWT2^Y5uhu?-?RL`$gmR7%_6(9G_ZBO*=g;zUuH-R1g2dhB^n)UjtCphQeJ7|IlQc5~M74uZ?>r53-o5w+9 Z0dRj)&|-bFp9}y1002ovPDHLkV1iKSecS*5 delta 369 zcmV-%0gnEo0)YdN8Gi!+002Qe{R;p90Kia8R7Lgm_4D)d@$vEQ?(XX9>gML=N?3$J8myzj{jpmMs)ffxf008ZPdFp6i>112!URC8>Q-9@FP2*5T;!Q*0NIl>~ zINv=o+%+n?007~m}DaA)XYSL0Jj-va>gj)(1bZscNF@QQ=)hJWmObLw|* z=W1f+W?sYq0Mh^f%m4tnp6R{-004YRL_t&tTTRTn4uU`w2H}6;K!}7rm94!0bJ3WX zn6Qe-buGNa>1w`aI31-~QEDZm-5kva>a!LGYOqo;bs_T$&F~Bln}IIiH<|&i6)k^h zDeVpj1R&PJQc9YDwTK=)jXC+W{j6w~34I;qqis7#T0-x=>vNOP`z*ZxF>5YjAi1;vC>FhdrR+v8h}dceHtBN>K`S$je@18=xx5%%LU`8apfi4q5PcQesjZ-`a8v&-j4ptLBB1Z3=+3Tv z(yYR?ylvjfc`zVV??FTsXS9%z0w|z=ft>N>%QL0MvtXrA002Op9qsWs*t7ru002ov JPDHLkV1gW-ld}K- delta 383 zcmV-_0f7F;0*?cb8Gi!+002Qe{R;p90Kia8R7C)K003wJ09OFMzOc~H(8|in-~a&K z003gYVqCpkSh`tMwN>i#>i75e_V)Jm_4V}YjF1xK#T3`hWND==F9Z^o2X<004K$ zcUZhw`}_O$dMovbKYGb}@c8ij{QUXx>-Bmj_l`&X{r&iYH}-ri`k7kzl~DkZ0OsfB z47;UE6YNLA=4e;@z=002ovPDHLkV1jY+!d?IX diff --git a/htdocs/theme/common/flags/il.png b/htdocs/theme/common/flags/il.png index 25ac3ffcab596c5740cab4bdf9496b3cc2796c56..9dcbbbfe83b58c57368e49d7b78269b67b53f3c7 100644 GIT binary patch delta 309 zcmV-50m}Y`1H}T68Gix*008-bnr;990Srk*K~#7FVto1XB?A)p2L^yLsZt@LAd1dB z9P&#@<11)XBq0fRX}C+mt>6iZ+qUrsxI165I`{5jhFRb9Wahfsiv#+``Scs-Gl)E`_F`w^7ZxA(SPDh?Tu5cpCS{??3j$> z+7Jg`IlhNb2yO&}JG|p@kOU%f;@SoRjTJ-+1NEZ18pLR+B*gLG2@}DR*6iZa6zB0^ z{S0A_9D9@W0cOrlGw7^^#_|!0a>YT9!;H8zr3R#8q#eU;#*vgrhE|rM{C9D_MBCVY zE7Dv9La?=|urA^2+$?!E^&me#Ka&Tkl+q+KTaLb1GQI(S|5agX9r)|e00000NkvXX Hu0mjf6^4>$ delta 373 zcmV-*0gC>`0)+#R8Gi!+002Qe{R;p90Kia8R7Km{+t=6E)z#J0)6>q*&dbZo$H< z#l^zH!oR=2y}iA=ySo4---4z4exmw%p80i}_;Z-|YLWJ3i}qoN^;?DW0070|;olr5{r#1z z`fH2%ot^o1j`xP2_2=j3{{H^%?)q?#`swNT>FM_L_4WPy{g<=;bd>vpnfi*S`swNE zilF<5pZW(!>5Z-Z-{0RkO+qdJ004kVL_t&t9R0zv)(Myf3m TaCIx700000NkvXXu0mjfk#pgR diff --git a/htdocs/theme/common/flags/in.png b/htdocs/theme/common/flags/in.png index 27b07d916656470f2a83de120671a1dcb938feca..0e91a4ac1273ba8bef9ba8ae19b83e64e0231447 100644 GIT binary patch delta 329 zcmV-P0k;0-0@(tP8Gix*008-bnr;990U$|4K~#7Fh0OzRd_fci@cAek|IHdf?Vv`u zK^bjS+YM^lwr$(C-L8F~>rQ@;bIx3(=zT`kNfI|<1oenpiMcDnTxKFXcjQBp?sI@_ z&r7=NCf#NO*|v*h!v+XeESLiP1@xYD%|fzb2t-S|k|j04+<#yG%nz~v-}37s*=ZbY zWjeXAvK7D!Oyh5Q5qLWRr}a>f%7_Iog#5;hw9SY<@Ds7{LQqeTZ>KNdv~a+SY4j0H0Xa~NDH@co b6c$Mdq2fcg%LpI?00000NkvXXu0mjfxY3Rc delta 341 zcmV-b0jmDl0_6gb8Gi!+002Qe{R;p90Kia8R7C)6003A307n1-H~;`C001BWfWClx zyL)rCb8E6|W36Lcsa#m5SX87`hQfwUqE1PlNkf}MJC-~B{r&s={rmj;`}_R*`ufMr zk+S0RQBA{oP#q+Eo15O#9YF`P4o4&@uMTEcez->ze@m;BEZhY5d(| z{ks7Av;g<90Q9Q>@T35))tm$X003Y~L_t&t9R diff --git a/htdocs/theme/common/flags/int.png b/htdocs/theme/common/flags/int.png index d9a3f87b300c96b5cced8bbd9ef2120c8a9fb961..550bd72e6a11fc2e92bce5616c88f5fe677b79c6 100644 GIT binary patch delta 206 zcmV;<05Sit0^b3U8Gix*008-bnr;9900wkYPE!E?0RI60H&`2e0001#Nkl2~_21`7O<8UcYw5Ta+zi5$mg`&LVR4z>gGV4AI<_K=w{L)C~8 zfi^pkza*XqM+cD-XWoG`$EHCH5vI0F-htfLmzYXFatWA{14o?zOLzrc)q+c#9_4?5 z3&o)8x3-~_mbk(#IQ#7AjW@|%^K6pKY?8Zd%I3~Jasy2P0O^NJb69_LasU7T07*qo IM6N<$g5vpDSpWb4 delta 288 zcmcc5xPfVcWIZzj1B0W@Uv419lJ4m1$iT3%pZiZDE0CWS;1lBd|NsA^H{K+7&9g}^ zvq|o?ZT|Mh5d!3cr$ymQtOB@8fWHt8 zM}Q(AlDcm$tZFZg&KT?)NMo00Kwuhs8t>3u;rtj3XL~f*H;=8==8%Q^xrFxC1^Ck` z7dNE8^7cm>|Hoc&ttgTBYrm|TV P00000NkvXXu0mjfxX8-F delta 378 zcmV-=0fqjN1DXSnDSrR}ZU6vI00%N%WwzAS>$||+#Kz*@;O?-s+uPjisI1hrxZ133 zO`W05ke9ju0*Hx+!)9)}SYWeJS+Gh{tV2twvZZA1%sJi3Mc3Ht-OYN;Oh@g~NvwgW z+tcOX;PK$j+|#AGcBEIPvBQ3-VwsP_?bO@2tIp!X%y64tY=4_esZDeD*4X;z=lQz2 z^`N2g%+Z*(i1lAz{ime+oSB8Ja9c;2^4;S1^7rYszN*EX!NuCweT|QGtC=odKPQU_ zn7ESw005OqL_t&tTP4XU6T&b61>v_zm~c)Npz+M$Q2c+(p%Dxc!O<2-LYpFL_7lsF z(?-V)2fbvn#B&zvS^iu?$9nV~@9i>akaO3`hjAr)b&&+Et5UPdio>Z%DOKe;C{FMG zHoVk!(zc>}4hW0OH$IiIbHo`1^dAAg2Nr;AXIq-Yy=$pJET2 zPdhkbQ@UQ>x!0vDAo%@geS{z9_src4yjou+(r>xo>gqZ$Fwj`v2sM>86=fBL`Gt^^ zm6M*9o|2T35J8&&;o%XuG)Te0WHN<{@%8m}Rl-jM6#zvL8lu4Vn0^$OY8Gi!+002Qe{R;p90Kia8R7C&)0ApihTU%RFQd34oMm#(`G&D3U zEG!fh6riA>jf;(lg@}ZLgnfH`cy@Sma&vHQaBOL8{r&x`+^pvH=JEOPz2m*=_3D++ zmh<%V<>lqH;kJy>j=ti;)a=&E=goo0gZcgZ_WJq4=Ed&z@qe7sp8GgB{-mV-kdgk6 zk^PE_{Dg)0e}DOUdiZyD_i=LdYHI5M0RI30|9g7YHo^uH4_0>UZ@>1dp*KOx*&~(}awMTVOy$E1^zVx3+e+dTw*cuIc{#45zSaGuS^pY%xFA1G7Jr2 z#2Sx@jSyF9nM@-l2J9grw*UW4zkeIQel-h)U=Rp+IDaIB`;eaxwv-fxH6{kk!NGuc lObVbr7`!Nay?S}%d;+jlJdFkchL008&^0Q_ZU`deH0 zP*C?oMD;s6^fNQ_EiL*)MEN{C_%}E8B_;9|74n3H{N?5Py1M$*)cLix_RP)ntE=lr1mX`UVqJQ@G_WJeqx#PLa=*-vd z*R$WWuimkz*Qd+n%Ri$(0Eqy5%6nqIVqCmjSGreHxKT>9N<6MSF{m&AOaK6c0C&iD za>a9N!fR8uQvi1W0Av8vaZ^A5003!8L_t&t9R~-K*4^=pPCX222*q-B?v)Y9smFU07*qoM6N<$f&*!}_y7O^ diff --git a/htdocs/theme/common/flags/is.png b/htdocs/theme/common/flags/is.png index 7ed17c6494a69fcf06b4876842eb6c404d250681..64c2aea4625fe837a2e3e083012680d04d14769b 100644 GIT binary patch delta 341 zcmV-b0jmC-1NH)tDt|AT{r&yh0000MivS9P00DRa0A`7()Q6_i{{H^&d3bu9&32i~ zah1w#lgVn2#$$@YUWdZ#Tw7X$z*K*}QGC2ic)3P(w?T2W04yUI=SWB7Lw`c!J38SrGTtaBvj70{ z^72G-wmNFDHD<3aVXP@#s7G_N002iLSfxX7v*%V-Re!rsd$~$=wLovN?CtEq0070| z0?cbQVBaMMeD@xWY$(QfQR6 zLcp`9;_I2;s!k@=#`k%04KQijOI<}_l9Y3D|51hhWeV+cQ{B2hQY;4C{8ATRjgg=) ne{5s#w@ot(!G*IcI0ax1oXHe-Q@><@00000NkvXXu0mjf`Uk3M delta 379 zcmV->0fhec0-OVoDt`fZ?CtEq00000SpWb>01AU~mC9|C$!d?r`T6cl}cA3jmf4<{8IzDc*I%=^sX0I+`tSMcnBUq(+ zoXuW`!utC9OE`1nL}w*CG6{QUg;`}^leNA~vi^z`)d@_+K><>lJ|0PlHt>s(vv zSXSv%QRhue;WIMcC?~T30RH~|04Ms>GAakT(1nTe>>003rVio!P6 zRLuYY0GCNbK~xCWRlz$?!e9VE(R=&&C^eCgKuAd#j3b*4F2?`Q=ESBUOe{P~AuY71 zgA?cY4s5dK0CZ&wd?d(q*pO4(^KC^0i%-O)k^_Vn>u8Y&G2D92x?slY}RXkU5-W~H@wD(_oG4)Opn~kZXE&c=Sr(i* zb7szoAMLz-d)A8l>C=b9!z{!8!;4sYjPaBEk#@V;+Uz}DzJJ`vVmtdQ9T7k1A8Dn( z7NsDguk?(ybbTZKC)A1)K#b_4ukCRH$O^1LakUZoScne1lk9zNDtpOJg4ln>d1Dp>+ Vj9F3H`Tzg`00>D%PDHLkV1oHLe~thE delta 371 zcmV-(0gV2i0)qpP8Gi!+002Qe{R;p90Kia8R7C)G003nG09OFb&CSTj$il+H-~a&K z0001Q0ARmiT)kXax>;1VRrvV$_xJbq_V)Gl_4M@g^EEZ|GBWZmE@;ANL$5+Qsygx$ z6Y&iV0DS;Sv`P8-`STeWbjEZ~wom%{`t%lq#;^N-k-rL*T^8f(<3iOr$004eTL_t&t9RM^redA>~2R5NM)&@VeaR8jZgNmWr*x`-%(2><++LsM4K REJOeR002ovPDHLkV1kQIx2ymF diff --git a/htdocs/theme/common/flags/jm.png b/htdocs/theme/common/flags/jm.png index 6e37e4ff041d9b0f64a4a89dbeee3bce1097e8f2..b0ab0fcec641142750e843b9315b0542cf3db617 100644 GIT binary patch delta 352 zcmV-m0iXVk1AqgNDS!CS2j#;6H=6(gfdBw;0M@Gj@wWg~I{@?9Z~y9h$k};<$#-wW zZ)3h=X}ejm%TfB>RPN7C0001zje6Fi|zIQZE& z!lWo{W=eE(a9LScshL@(z&7>KE|GjIF)%GlOG?+fM*H1E(tolrP)H~l85zf|LY0L@ z^3OjtrY)PgB=plC=fNX-WfbJnIwPPXU8xz@#S^oN1}P5!z|UAasyhHs001`t-ID+o zSLn3>004VQL_t(|0W^w(0RsUP#genN|45yrwyn=6Q2_)%O;rWNPYs{@XKoxCo%1Lt z&Z#|0M@Gj0)YSkPyhfo0JDk)-ID+*4*>JoZ~Ws~z|UA|yID`Q zPf4;zMXf$Nsyn8@Hucdi=fNWY004AzaL27e``tt2(mHatIW?v&BcLN)sTtSB6Zp>u zP)I0COG=f6Me@%-_}Mp`x+L_|A9`gJ85tQdFfD9mO4Q6a!hfVFSy@=uyGGKoFsYeY z`rTBq%TbYhE0T?R*1uoo+gXLfR8>0w|LS|l*?EG=cW=aRW4>eV&rapT05_We0C50w zM)D*80044#8jm0Pm2{HXZne#vr&jqJ zLH;Cr6Y*>?Be~>V4#TR~4E36jdJTFu_y^R(@L{)UCAJz9K!Dit2lqrMy~)<+mH+?% M07*qoM6N<$f-IA$_y7O^ diff --git a/htdocs/theme/common/flags/jo.png b/htdocs/theme/common/flags/jo.png index b2005b98c3426eda63bc17efa7afbee5c700987d..efa15e2492cd9a4f5c7b1d457bf787caa6d0bda2 100644 GIT binary patch delta 326 zcmV-M0lEJ90@ebM8Gix*008-bnr;990Ub$1K~#7Fl#GF9fKU{M??deo8g@mv)aYW2 z!2}GBULn&4h#BlL_6`XGdWouPb!z)NHcJimIev%pe@8v5fAXo+MD!NNL_|an!o6@S z+=StE5Ex@z*Zmb%Yu~NK%?P+%3Ku($0;V#WUtXDc`e7W$VSgCJkCt+>WX$ZZ;=fv{saygRJ5%q9RIx3PIox&mkgtlUUcs00000NkvXX Hu0mjfeq*XA diff --git a/htdocs/theme/common/flags/jp.png b/htdocs/theme/common/flags/jp.png index f9b572923ab3806f3c2f8fe82ad2954407d71587..91546494bde68c62172d1f33ddbc99bb5c6e8f87 100644 GIT binary patch delta 292 zcmV+<0o(qI1GEB=8Gix*008-bnr;990Q*TqK~#7Fbx}o9LqQOo`MBE-xki@RaE?~-JSwq4nU3U8=jw^ zLxM)DaB_mnE7WU<#V|Dmg|${hT7O3G?IDpsy&m4>rFnY9#(yRgIALTI@OXd6&JLqd ztA)3fFn4!QIOifRN4=g*BAaD&pw+4ri}LUQf*t%<9c?2ch$7bZ(IE$j#>UhS;Yg|* z85+XeYzSosPnVb7!~_>0ZEcQ3DjS=orxynYAvzv!tgc$!*u(E&lgVU%e?Qa;3cQ-C q&4inqo6sSZN*y&1DXt;^fH@!6v}c$sfI9O400000fhdv0*eEX8Gi!+002Qe{R;p90Kia8R7LCS>*?v~=jZ3;<>ley;@{uj-QC^W z+uPaM+1Jz>(a+D%?d|RR`}_L(`uX|!`1ttu_xJbp_4W1j^z`)e^YilZ z^6&5O{QUg)p`rF$TlG~{^plhE@$vbVmH0F?_b)H@Dk}9PB!BdMef|CY`~3U->FN4N zNclTE_%${4Dk}HZ*8cwf`$k6kK|%O7Huftk^}DSge4K)A&002ovPDHLkV1gdm=6L`B diff --git a/htdocs/theme/common/flags/ke.png b/htdocs/theme/common/flags/ke.png index 3fa66c5b32b1288a2815d0badc4f320a8f5ced77..41aea07aa1607d89b1a78ac0af6cab8d3412536f 100644 GIT binary patch delta 315 zcmV-B0mT0F0_g&fDt`a~dwY6yb#-WHXkA@hSy)(6QBhZ1T+PbLf?HcfNJud;G57ZL z_4D)d@$u)_*ynwH?dt05=jXAVo#X%j^LKjlVP*1NVenR3a7|6!M@#BQOkhAj<~Kd% zEi>dMEWH2#?on0kOHoiYHsKv4;yps(7a!Hvzx4F*@$&89*^y@ue*kR&Y{P9xvq?R$ zLN~BGZ-qQ8q%;|!AP<}pIH))PF#u-2W?i~nRJK$?tU&-z03y%;Q2+n{WJyFpRCobh zjI|ZRPyocFFmstct@qz28bxoD6VqKdLxGy&a78 z(ZZHvO64lqg_xALWp%^^m008rMdhk|S?on0kOHoiYHr+={;yps-CM@9{B;Xex z<~KdP008PoOkhAj80001QNkl=WDvi+GG9@0E%WKxaPp?MnNR<~PMD&m-}08|7k zVl)*1hbV|jblB?^t@ir5A&3;wmF%CGv@AuwW*38@0rIC$>wjq>Nqd0yTzrA-Gn)Iq zioan(ON<`OwsBxiXhqCFkbfTOU$pu2=wAi>>7~h*0os#NXn;iU4{a(tQeS5BxJ63{ z%oLMD%99AZhW-QSy-NdKvTnG9)~aH}Hj*MFv{ax|n7#G+N5k=K4nNK%V2u`lY)FVP zp_wU<6u!p%6Gls@Xq@D zSXl8?Rqszv?@CJTL`3X6JLxty=`k_qEG+8)0P#gd?>;~8Ha6`zF7Rk7?q4J7Dj(YisgKO7KBC_MSWT#x3)gE%tD6^G{Fob3pjOI)C)HD(WL6^ixy!l1BN; zL-d6?_QNyrg)8p>0QYuw^;uc;R8;nTOYAEv_j!5tU0w85QTU}x`qoA7KsN0$G4TKZ z_004kVL_t&tTSdk(3xZGp0O31(YM>F$(G>V2TKfNc zYg0qeBbO;yFbC~tcL%<4%lciTb3P`H>Ud9}`?1QzX& zpUB~H9x10?%Dz*|EDP(2ep&-8DVDC}UDGRpWHc#D)~f{GwaG0|^6f=23J8CGva~Bh T-SI}700000NkvXXu0mjfmcXjp diff --git a/htdocs/theme/common/flags/kh.png b/htdocs/theme/common/flags/kh.png index 7382c8527b36b268583e0fe9eb98e30f840b6aea..e307c2b492c6521cc2df8a45389abc9b1deb14c3 100644 GIT binary patch delta 339 zcmV-Z0j&Op1M~urDt`^X00q1N0JH!ArvLz(f|TNUkKuKP+HHm1Xn)*feA-`k*jshi zR&dp8eAQ!g(p+uLS8B{rWXeWd$UjuW004-?00855cHLWA-B?)LQc~ATOWa~&(K^V=tFGsy3I<`VpzW@MwUwGJ2Y|~9>(Me;?J6X#$RLQf( zv;F`80B=b|K~#7FEQhrLg8%>o?{IhMv;Tl;aCv_b9)CllXDX`xHOfI$#4U1BMR~&j zlx$1WG~-6lHB8ndeR_eW*$ANCj^v0F;{znPe%n)FMgm|M6(arwQG?WT2A3H1fF@tl l28#S*WQI6V5QtSkS^ztR4f$m7hI9Y`002ovPDHLkV1kdjqWu5> delta 357 zcmV-r0h<2w0)_*SDt`c{005f+0EhqpdH?{lXn)*feA-`l*jshiR&do(Y|~9>(Me;? zMqJ1{S<5w4$#sX?S8B{rWXeBO!#PjEFGsy3I<`VpzrFwf;c9BwNl4g7M)l_A`S$kq z?CkjX`1SSm^4;CY7#GemGLZlP;BRl)Pfy)gSoi4Y_ww@dV|3D7ZOwU);cbQ8Uw7C54ZrX| zPyzq|0D(zFK~xAG1;INC!ax8(!S}M+pokE#NfAp=U}0h5{R>;KAcA0otgiXtjF${t z0VY5~qsF%Fj$ZqFd49ynlY)4Yk!pFD*&;>O9um36u7nhc^NZgGfS}b72GX)~{$}O^ zhJH+A*iN4nWNcJbmqJmgm61w8d|IliqDU_wARxdWUGgZpz7O0s00000NkvXXu0mjf D34pE# diff --git a/htdocs/theme/common/flags/ki.png b/htdocs/theme/common/flags/ki.png index 7972152dec09c94eead5e0c680fcab3765f32066..ce29dbcf6d983031eee3b8c0c191e7b9fa1259c1 100644 GIT binary patch delta 353 zcmV-n0iOPY1AzmODSz7l0L%aYzW@N>008ladh*?T=zMAHZeHtWSLbC^>0eIjWK-#H zRpoC{cUvwI3(%aRp+}%*Nuzz&dK@1yY<%5_U_&EQLVzvy&QUeMhW(+!L zAo#(dBPdf4ELsLHP%Q+6KHN8aZy0J@OLO9taT-`~kjCmo!CC0xS5W%ABm+QESR;u!dU6uRp+}%;zBRpI3(mzKfeF~>~3D;NjB+kRpoC{^4)ysd}-%pRNDXm%m4s9 zO~~#5004eTL_t&t9R%N8hwtq{|FeOM=>30AC002ovPDHLkV1ngu Bvqb;^ diff --git a/htdocs/theme/common/flags/km.png b/htdocs/theme/common/flags/km.png index 6aaafa71efc09b696fcc8cc64d416411a7a5b287..363e755e057cd00485bedea7697af10e6223fa0d 100644 GIT binary patch delta 330 zcmV-Q0k!_~0_p;gDSuC=0PEEN@!9|YYXFYOd(`TC{r!6U{BrvGYWw?O`1n(KyLf4} zXr0eo^Z9xG{f77VV)yrT09gR(^Xb^@*v;n6`uh6z_VwrI=j-(A?fCFquw755QJc-4 zx!t)^sZv6rLV%@W^V!q!*3a+L%-f}xZj3$RQZwO5E#N&T+kZ3`v;Y9JZaUvT9AL3u zeVcTbhqa80#)*Z%ZEdGxuW@dty>_GdXr1?5mGxAR^G=KM007+pIl}-X?*I<#0087O zE&V+J003o4L_t(|0WFNh0m1+f1ZQx!5_r;oUwGV;+t<1%0b0Phil88*&Nr$lA{%^p z%QvPw0R;56)K2cz%bRwc5ere5^MU5!iHnYUge2qJoW c7z!$&1E>xaWBz*P0RR9107*qoM6N<$f)tporvLx| delta 339 zcmV-Z0j&P&0`mfpDSrT20023|03`1K4(k8_;r@eNg`DmT@T$S}ykn>K9 z@@chbV6k6)n{=0lwTz3#iG{#zZKvt;>DcSoZj3#%ZaU&pGvP=r-#;ANG#0b~0PFPY zQmInS=FLK(Lf}0ox!t*drDF5h)A82N@6*iNrI+pa@LaH6Pk*OTo6Vm3`ug_v_2=j3 zdAoQ3YXF_kT=V&P{r!gh{d)ZTa{Bse_xED=_jT*l0FKCe)arZt`(XI^Q%|P=@!9|` zZzt;j003@DL_t&t9RN#ic( lw6IqQ9!J&^k=#;52>)JzB6(TWHS7QY002ovPDHLkV1n$6w!Q!W diff --git a/htdocs/theme/common/flags/kn.png b/htdocs/theme/common/flags/kn.png index e41a57c61d6e6f18e95cc6120dcf4a6d85f4417a..b03fc87324adde305fdf0b94a9fbcd306555559d 100644 GIT binary patch delta 356 zcmV-q0h|7e1B3&RDSrW$004;q0D%AibO4^S00000ddYfs$aiwab8f?KX}@W4$7ROh zWrl%VXk}VbQBhmHTU5GKQMOS`v`li!OUc(pV_iYt-{3$%NJ>R8WnoFjZ2(idO}gAk zbZ6A4QXd$Z)#WfL`2;H08K9d?K=Q! z<{0Pz004hUL_t(|0Y%5ffdWw!MA2JcTE^Wcfsy=!AOp5+VS~53oTnuOsO!QBWE@DS z$5HYZpqZl~U0rBo5RyrfC`{zN$4TZw*UH#EN=k9aB%fK6Z+wZpki))QuB+rb400@B z%&(TO)kS8S9EKTAcJ+_HzGTBinh`q|SZTk9+pcTNu^s)eBNfsB0000`}}Qc+Rb+S*f1Inlf-^c@}Y6BF?b4FG`v#^Ghh#z>u-j_T>^ ziHVF#MKD%SFZ8@9Zo_VJ%1g=DMxdOEI5;@v#3*vcb5XWYQ-8Zny4*>+u`2+H0C&iD zTfJLUx>RFbL5zrc^id#s$$E5eLQJ$w-{0UsKuBd_NylvfX}@W4$7P0rTmhB<0CWJd znnyJN004(cL_t&t*Dc2@4#GeH0MQvk`LschiUmo6>lL_va7YXY1g88Fx|>}D2$-kF z?H%Z01E2j93}q`Qg%UijcQbBw)f>#s)n?>nsa^HPtkcu<)1F_&PR+$;ATNgckPLJ6 z5nFOIT*omPCTic3$LAVjGWf5bATc@r?NEafql^@lpCq6H2*MXGi!fy=2`R1s0000< KMNUMnLSTZvz@7jA diff --git a/htdocs/theme/common/flags/kp.png b/htdocs/theme/common/flags/kp.png index dda0c588b9fae76b84d3120116c0e508e1661d7f..8fef6fff31d3fb9f14adb5b21ad66fcf0677f3a2 100644 GIT binary patch delta 346 zcmV-g0j2(o1Ns7xDSt72|0H$)7Hs_lUH1S>@c=^Z!P)=i@BiZM{@?2S-01q*<@wd( z_no`z@Bje#kB|0udG>X7^>1+Xa&z)zW${{D?ow3nQBv(pP3~l6&;S7Wd3pQF%KGW) z`r_gCi;MF_MejR1?>08>Ffi;ZE9@mD>_bEQ$jJGlqxYGa`+wfu@k~tV9UbgFJ?sDg z`qR_-#KiW6gy<9$>NPd?YHH^Y5b7~8<|QSw&G*pV^vv4wf1}+1H0%H-=Kvbu01n;= z?$qD_004DKL_t(|0X2>_0zxqmL}xZ1cW>~X8t#7tdTQLQi!LNo``M=Ol z)|noZqNqWQ;!}%t)29>i6S2UvOvMyV`R6_{0D;TP=*B_fd>$F**opgQ64@|_O(xxQ syYOn8O9fYOwbl$+XdIeIOYon*aa+07*qoM6N<$f~1zWV*mgE delta 364 zcmV-y0h9jv0*nKYDSrfA_W(=r07C8nH0%H-=Kvbu01n=>&G+2s`q}0A)#CTi-So`b z@_(b<>;M4vb$0PuTkug*@k~tZOik=VL+m|0?>jr{H8tunG3+ZV<|QT2008!CYWvE{ z`r_gG>FM%hW$!jN>?I}X9UbTt6z32S^>1+b#KiW6g!YSz?td^a^>TCj-rf4s)9?TQ z`^d=oqoenknfZBn^F&4XkB|0udG1nF?qp@b+5hG5|Kjcb-|GCGyX!H1|0H$)7Hs|8 zvxe>f004(cL_t&tTP=>e3c^4TMekW-LJVwc8o@#=x3IGDlM0uQGse0)Wd_J4ac7bp>eCyV&tAAIoT5Ptudvgox?# z8kA#HfOV_IU`5=Wp}#yB!H4!8|GVSx*!ZQ}OoCfV39w||Ft|q3O$V*y%h41*wB^Jm zdi2^%o({|gwtTp;RtIpeuCB1z)2EMx%AdXK#)|k8N+^`6GWOD!j002ovPDHLkV1g6gxh?F@9S{QUX(`NYJ;uCTD_>FM|P_x1JlrlzFw^78BP z@ZaCxe0+RpXJ^#Z)5p~9(9q3SS69l)%I)&<^7Q$1n&CHZ*njBm^t-yd^Yio1)zkg` z{q^+os>JY9YQ>|h+1c6J^z`)a_4EGz{s{&L4>#icg;WMFyGEH2Wd>||sLcP7|?2+nLIgjAQ&-_xy v&QOmXeUHeYeR58cB#2SF2p#e3ANU38x|>;H@Z015yANkvXXu0mjf`a$-s diff --git a/htdocs/theme/common/flags/kw.png b/htdocs/theme/common/flags/kw.png index 54563f3fcba6b6ddeded38a20639b907c3a22aca..14a5d1048f52645af67e66e1f0aae065f0f0aa89 100644 GIT binary patch delta 327 zcmV-N0l5C<0@nhN8Gix*008-bnr;990Uk+2K~#7FVqpM+P6h;ckHiMlK~@J513>^y zaCi42!WT{t*8vUSRt4^S(E-=Om2fTK8eLyzZW8>WZ{)4{8N7VuP}nxx&ZJ`+jFE6F z$RsMJGE)iHyaZe*k>AauU;}%9b;sw0>CgfcW1t54Sfl21zkejKv6iuP2CPNQxps0( zx#q5B2&I2SVVZZF&jNR41};r zLLKJiC3V6OzChI@BYv@%&T!P#(~%?+jsj-$eM;K4HqEBeMF ZgAdB#%x$;ZSm*!%002ovPDHLkV1gYcl1cyo delta 341 zcmV-b0jmDj0_6gb8Gi!+002Qe{R;p90Kia8R7C&)0NMZm@c;nN007AV0Apuj;ay$x zR8;OpM(sO0>ohd#D=SJ#N5wxs_&Pf185!jb4Q*|0*`%cQv$OK7tnZ|x*F{B7Pfy+7 z-}?Ic`T6}MF4w;dwausdChru$aiwab7{h9 zVZLAhi2wk2003$L09XK~E0Qq)003Y~L_t&t9Ra z`oZa4z7Zl!k4`GlpV6Ftf4-_@*T3ABElHeXdTr~yABs9JgLQW(DmJZStEezJJR{;9 n*{}7ENnVf1Gh#`kPB0K3pO+e32IMD%00000NkvXXu0mjfG;p6$ diff --git a/htdocs/theme/common/flags/ky.png b/htdocs/theme/common/flags/ky.png index bb8a5951c98689c6c0958a6b183a1533eee490ec..d8cbc5790ec2ec86e40716d46b05d0ede968f15e 100644 GIT binary patch delta 363 zcmV-x0hIoi1B(NYDSx$be~o{k026F`E>CkkVE_Ou002J#02L=QbKk zv)aGP0XMb;-*){+qYZ5YsufMD^Ui)P@F77o zD*^bQ`meXP7X}LSzxqH_z4un0p)8N$!UfvY)}|q-Aprd12?q~OFCQgv?&JUf002ov JPDHLkV1jVbuipRw delta 375 zcmV--0f_#K1D6AkDSrR}EC2u%0001Bbf;Bnp-^O-Nne;jSd=|ekvUF_K2wG+M27$X zKV^BTL|d3MOpPNwf@*SiyrF8Zn|EDiZ)|?8%cyf=a!tg}-oVS-S2<;rle2$vnLAE@ zbAeobl)Gndo8-yS!jGVrs>{~3y}@T~%dE9?Jz?U($nmwc;D3&j<&&1vm!L{qiOM)P z&X#TFpQPr6h~Rg7-iC`OGjrd<%HrAL*r~JHzsls(+--ZI*T0puaes|}p#T$XdoE9! z&zyb$005FnL_t&tTP4HG3c@fD1<-qwzHAi{L0naTL-7Cq!Mzj|7gD6nq?w6}9yq*{ zM1DQC_yGj`NpSUDS=*1Qw|?+eM7Qjg?BdsTPjoY#1QQ8@4X=lAAqruvK@L_=+y|nF ze4R1o<0nNT5I#GZRC4lGs4=Jm*a$16#OdtMt{ijU(fZ_;i1FNZF$ho zm(Qt!&AY0}ctOVUTFvtSh2Lq``(oAluhEg;$~Zg3^6cJtVa?%q$FgwI<^X`*hp7YV z@gfrd004nWL_t(|0VRwBZiQhKM9;~0f7gwRsNDZ*8rCm*wt0=25rs|SG)Pb=;2}f< z69lT_W*N|ogI`j00f*mq9;~y2N-Y|R;#@knvr6|lGriB4kM7k?nwJ_fzIRql`qkCE zEEWV8HMD$QRw4X6hJ1}R|9GcU@0D#>9vG?rWc+A|Dd))kW*!FPO z_iEJkaM9*p&-Gf(^Hk0C0JZvJ)%sh}_+icAr_6||$#{6jvOC1`)ZwAT*o|q{`+3mM zuhEgi&u!DtTi?n!LB{d`yZvq1{CU^tj@QqZjVyGF?K@PFfof!E=u)vCPHi1^bu z=g&rq%dAYx^aH>DblUvu)l**1=Va3L*yO5l*!cR@L!Z*8zSoqG;{J=?_TRq%4#WOF zLymv|005CmL_t&tTRp-%4uU`whSBez0pCWWp>YQmHtc^3+Sr)bxB~--4012pd2&>) z1Wm=0wugYqv~SJ~WKbkJ3K(*PE@_kZ{IG+xM1bG003}FL_t(|0W^oT0RmAJ1ZR%-&m*h>=)WmQad&5ZqX^7f&k=td1)jeg( zP<74#Bfe~l+wJi8P;}67joWRA)@=h%z>u-Bc%QCvo26!xn^c7T0091adi-*8{A+9K zMFe#K004SPL_t&t9RBK4;neN}%qeo+($y14;bDpMr3Z++uAYi&oU=nv x$2I8^Agf7oi6pI5RRzhVK}AIndI3Q|0RFZWDJS3c?e72p002ovPDHLkV1k9QsQ&-} diff --git a/htdocs/theme/common/flags/lb.png b/htdocs/theme/common/flags/lb.png index ef128ece9bcfcacaf38e42afdbfbe45c83b214e7..ca84fd923b6c5528eab452c149fbee0057f3e734 100644 GIT binary patch delta 355 zcmV-p0i6DW1M>oq8Gix*008-bnr;990Xj)UK~#7FRgoo7Zb2A^ckhKhBwTu*zZV*f ziuFMJXnRtnF~>NLEgI)HK7Tn)FvcJ5?^9D#?KDG# z%KP_w-+G_p{^kdYG7~aMDKZ|M^X;vze++PrVK4!fv)Rk}QU}wIU#Ggmy8fVWCm^Eh4g-$OM2|M{ZYb zb{*8H7X}I&b6grVNvK%}e!y5(MTxk(Vt5m&@FpY$*IEgrzfjQUrrP delta 371 zcmV-(0gV3h0)qpP8Gi!+002Qe{R;p90Kia8R7KMO0L%aY!~g)k006WA0IdK3@o!-9 zY+UbWSM6d`?p{vqTT1O%M(k5U>P Rg5m%G002ovPDHLkV1myY!#Mx| diff --git a/htdocs/theme/common/flags/lc.png b/htdocs/theme/common/flags/lc.png index aeb7734b46ced9d7363cc26d9f4e716b89ad99d2..3ca4ec6cc1c51e5468df951b669511063b58058e 100644 GIT binary patch delta 244 zcmVGHKNqP4+YxOH*@TSN3p2GK$xAnW?`H8UgDq`bzrSiz= z@N}K?ahUIcsPvfY_l|~yZIkV3mGM72JStz|u)^wJi0)xvmCd0tl5j5f?JX)^-S*BV z_SZxzVB1*j(#Ze-0B}h}K~#7F6^KOwLQx1s5Al0y?0&0^={uto6?Eg{a$DY!>Qgg7>5_cGrIYGiN48 uNb_RA_6A4HQT6~lE3Be|Fv2!j2CM;$fFNg4q_LI&0000-S+`mCd0trpNd{J3M2J^2q4$ zj)sK0;`v0xa=-up0C!15K~xAG1;IfMf-n?7!T0D-QCZ>2g>?77n+t;^R1MPB8Se#H zz%F2qat16n9v$Hq@I-QB+H>Ol3qax`@l6{80|;ZTHP3~s#v()+W$iOt{sa)?)a24P zNDL70I*#Lbi&b7`j0k|jE+T^30sr>aEcLSkDG1d+HLgQXZqh@;LmPP zcgah0#zk<%Ky1T0XTdaLzM-q4``}~s+g*>Ip)6gzdYjrtbI6f#8-M8l0Q7!s_F+u) zSVQnlH}FO;??Ec&H5}wF6v_Yq*#H3SVNB~|spnT14qmJmyL>P!sVNCQ`L-0*E@J281K`JQ=VV{w=g>$8OWtebVlWbRz zX;O@1Oo#vg3ji6XdYjr@fy-5V$xnC5MsvtTaKu1t!#ZcdG=E~gEM2?+0C<3&*`ceV z``}~x-(dCIU5}ojOLNBQ)^+gOZS>q{;LmQFti!^?s`B85zQLz*lGJL9(PD+o00NZ% z_dMwU003x7L_t&t9R9;u*o(QqNh6>_uOR2f@`ZxX0K9Rr$t<`Sya%3Ea|sL z%7Rqdn?%iqLatCsp*&N`cqILjQ1;b0?Y}dvPEXdDHo0XoRezUM`;AET*<0wmB=poD z%!DqUHAzvFPx8nko-{g{EkeX^8%&T$`G!8ndpq5tA4H5qqd`30r$Enw5bMG&;(cMW8!PXt}NY?b_lG)-G#$>eAarw4$J!8M^aB6qI>c`qRhLxzjY#&@P^U#)$9p^3m@M6*A6%PU z_SaOaOlH%PNAk!c{gP1i*;}qsX7<%M&4xnlzccjIAIyX<$$xkx`Po!vp=JJ;Sohpy zvs!HFw@0l`Pu7?=`Po;>f>hd@M6OUu!+CVbf@`l*UC@LqaHnYgqGkEta_hinw_|j8 zhoA8P0053jL_t&tTQ$W!3c@e|hT->XVo9K-#lgYV12}m9dx#eh6lr6r_9uxBBG2&X z1Wdz1;EfO#hiv>-v!iG1>eUiLi@f@A-QTz$3jmm|YIm_ds4pg91PISqUBLKh)~GdS z>0H-CW4w77lo#dHq%O}Unc0O+9uoO!W3uw8dZEHCpfY|+QA$XX_{|>(;0vgzIVNXB&wl4-7alCKvMj?eG)+?!b+WX8Uw|~^o}P%Ll;-oC6yPi);eRA0<~Tn5FgD~c!f!v= zbI;G^EIqD6Yk+ih%~Whc1Gs;SNs=T80`_u)KTMLC+yv>U=vvU6Bu8O)RNz6V&t9Mh zxVPQyHk~b@tq$Vc!<{rY7XRmde}8{_dxH~bz#rr)KNsd!+;L%wJHTzn$4Pc?*qf|b z8*GR9;0EgMMne|saKB0mPH@At)S%nFVxk9Z1-O+%195esxi$T-2BicVe*Q?HL#0lo cT%ttc1IXM^r>y>*@Ub{C~~>0OWOT<8Wu#Use0< z>;C@!{r&v_09b{GxN2;tW@)8kWTN0`VB1ZDrnJSKM4u#_}Yk0001XNklFUm-Bh?fvcm0000FMd^<>lYq+qlfu06~r6)3^8X>hM)4C zA)7QEoF+S~J12ab9H1N)n-(^xHv9SZ4weoxrZO(0E_kugSfb5KrgKEEM{k|805O9` z$ZBl>004wZL_t(|0Ug2vZbe}L1>rOIp7cj;JE|AZ{YQhbe?ne_ zB9T@doF?h%>EYA2)4i4X`T1 z#;SSy`}^_q^*^ae{QLXL-RDG+z3uJo(YlS_(6asg{Y93<_wwrX@8$gb`;NZa06~rL zWgXH0005UsL_t&t*EP&N3xZGpM&b8F_afS$64BRix0c$%|G!5KElv>dbnZ! zj-Uz)_be0p>~C=vIBRt2#P$~4YaB>W55-(}Wh^7?)0000RGL&+2o<9a^CzI>36M z2O>gZNFl)!++CKvKEuw%qyGy=&S(-=K>=?BFP5X?E#A;~cqXTSw08m#CX*vV8bB6p z!X^Y;41h^h>$7>9LDX<8ZQiGei5K+q7_(-8eI1wgiaEPP@qa%!>zN$@?-e56RS+`o zt`W(LhvnmDY5`+qbx_HVHdsf_csbHo6=YaB?HWC}{@>-|3{q$at-5v4h~zE1Em;#p ze-`ukX^gO{cVqz>@3jQp5~&(M(AKL*M85UX+!FF(pz}oAE6$XX85Mk8L&(C-jVP5t zB>95Tx0lMkelq`XFDj7T-y_2R{)v@&AvZ=Ew(!n1KGDqm7W;`OB?Z`t#PLRO00000 LNkvXXu0mjfTOE%= delta 340 zcmV-a0jvJW0^|aa8Gi!+002Qe{R;p90Kia8R7KeU0LK6Txc~t0VPfo5RO&`X<~uv% zF)`;VD(yWz>ohdv85!aY4cdBY&{;>$Qa{Q{H^xLU#5*U!GatPw6n6js0DAy(#&b`% zPfE2)L$O0VtvoZTGb*JkC88xCpdT2V7yvT>Rk~FmpCAB(0DtDd0PE&|=HO)I-(TU| zRNdA{+0izun*jaP0R8KN{^)4?$L#;(E$AEd;I5f z`sHi*;a>R70QbrO^TYtee2vfm003V}L_t&t9R;AR8*h;DOWMM0%I;CZ%l;RwD mEJGI$aU6r|ATE(0=ng)ZSsO>meM@ry0000=W78Gix*008-bnr;990S-w-K~#7FjgGZJg)tO`{{(la&>pYpSpXjZ z?Wl35qhk&#d>>q%OFSXxU95v!e6b^8VQe(XWs{0V)ZBQu*VP>L5fs``2euIFd#M)Yv;wMyHb1U4PxUG^;CBle0-KiwtW( zW0^73X^lm#hSRpR|!%&zk1p`E$DWY_|4gvh-lD^IWa+06pGlxcXwX`(3j6RIBw$r}aXi^EsXIx83}t()*px z`IX7_io^2{f#2=z?f(A${QUg;`}_L(`uOz>rJ?$iiH0+E&LP+_5=V*eXO7W003J_L_t&t9Rury&l?(S4o+@Q{x#arS`EPrBwEXlv2rf&ParP$vl-L i`F%5$B&8%mV*djg4i$L9@`2U>0000V(zLlYio@RjNJ|cK!2pTgP%%@OPPv7|C2X5 z>|b6^udg!zy$irQ6HTJT&l4CP8Cf|$A7Jvq!6-g8LAvv%H3_;63=Y1(y$w8fXK2^~ zrH)z#)b5e7u_`khr?h)?^j57F=KA|%uBG)c^nh07*qo IM6N<$f|SdOvH$=8 delta 368 zcmV-$0gwL10)PXM8Gi!+002Qe{R;p90Kia8R7G?E0A~OIS^xk^0021v04o3hzF=Ux zTwJ+WShrMEwNX*BN=mUtMy^6btv)`gIXI~_G^8>zr7kX_EG)lfW}+%8p(7)l92}Sw z6qOJVl?@HTYipk+CF#n__2=jD;o{{H&<`uOQuPO-;ymcgAvaz-46@NH-Ax004VQL_t&t*G-N+3c^qrz>=?z+7|Qz#lg`N2rk|q zq;>TKu39=MdEan zqMmfEh!VOS!?bb+0@2*ekp@Na2kq6+C>9fXAA`rcolqq)_zzz{pUf{9=N>X-6d+{) O0000Fpp~J(ADFr z1mJmjiU`Le!_taNn{5f1f`wVy_1QI0LXK#<7jC+tre~6r339M$f&7csP_4FFn7ae} z7@oUnP0dWU90KpOg!CO|<6UdIOO!*F5;WA(zR^9{&TM-)^bVs=(!yVKW60YM7iSm! z*zZ5kO9md9vr#k^_IUX6k@W9wKK-%MQypFaIDu~Q>I~+v00000NkvXXu0mjfs|#{n delta 369 zcmV-%0gnEP0)YdN8Gi!+002Qe{R;p90Kia8R7C)U004Uc0CWHVZ2$me003J608#(| zOaK5y0BXu=Wyxh>#$jE=U0K3eRlrqIzfnuPOGmj!M7cvjw?RF$Jvp;E0E_@`%x+G= zPD#E=M!ZHpxj#C#IyJO4FR?EwuPP<3B_OLH8mJm_&2m%1Q-4doO8}GrcF%TM#aUIu zRWP$KE3hki(Ry9ST~NVLLAyaaxH~nqHUOCbe$#$o$ze&mNr2OUJh(hJwKq+_O@h>e zXv}C{$6hzKH-OZDSHoA`3H|>7004YRL_t&t*HwE3T8~A(`N^Uq+uLji%41d|68!@oTJv;m`&xB}s)bRG>ftlv(R&>q2xt8g)WX z$77%3PDF`H1u3!8i;b?euwal*Xir8fkuonI8S)bo@eK|9YHIsRNq_e+F#P}k{cdjjPfx^R zH}p0({&8~sR8;&+OSOGFvUxViSTO!}cK%se^GZg*bwR#yJn=g=^dKPr0091ZdH!8p z{ZUc+LPGgGJ^y=q_fAfj>F{p=004nWL_t&t*G-PS3c@e|2EQ8;Y>T)RihD;VhrB<& zga|^{;9t_#hHsd`L6F{dHyuvWL()rL2;rq0~b{T>C<7gWqM UKLub^Q~&?~07*qoM6N<$g5dk30ssI2 diff --git a/htdocs/theme/common/flags/mc.png b/htdocs/theme/common/flags/mc.png index e9bb93a4875cae2fa6c5c027aa9d91d452b22b92..8b246d93a9fbda6d343fae7ee73406a6b85f536a 100644 GIT binary patch delta 255 zcmVoVhStj6~sG zq>B99?*o$O6M+brp{hi&HezRLCk#=!TmV!gJ?%X$J?*dQSa|8a6Hu++iqx!|AB%0cX<7Dbo_5``)X?WXJ`6iV)tBJ^;1*%OH1@-W`E`Y0RDG({#jZ5R8;*@ zQTs;M4$aB=))W%^uP z`Bzu?Q&aj+Px=4=^Z)<}@kpxx003`EL_t&t9RO`}K?MX{zq*EAaR+*Ur8I#=f+L z0}0FDs10B`x5d~3m@+LV0j9ak--D=XjCPeIVEh9bd?POfpOS3=0000D>wehBANOF<70bfw@4>n}vYv;DAo) z>ia&kP6PffS}3;)}8K$8_m54V)$mP{r~^~07*qo IM6N<$f~noB5dZ)H delta 368 zcmV-$0gwLr0)PXM8Gi!+002Qe{R;p90Kia8R7C&)u>b&{>&5`(y#T2I0HFW?Y=qoo zecN7m*7)gI_vcXd{O?e zRPLZg?Vdr}Kr#RcyWm(%gO}p{?p@>5NYTDhwg3SA^HH#%TH<6`{_=bM@O1p{Xy$HY z``rNj;{g290QcDd!vFxM_10wo004VQL_t&t9Rw#c;%SUGfRnPf0!yNSazNZAAi+cWBu`#?r2(1Pwq*z%D-DIoTBDoaj+MJy zG#}N^_gr%>iPA;xoCm2HND$fh_EFl5+VVrgEgF?|O;Au&6%hduP~Z>oPcP}GJ()oO O00001)~8Gix*008-bnr;990R~A#K~#7FY){2uLs1NSVdi^brf$+5vQb9p zsauqp$=}$oFzKOf$xwKEdrJ$rdv7#KYoN9NZvx8s>G%8j9T9Mh$MN)>gz*=tv$#qk z2unm?lL-V%Ha@qv_V7?73Xxz5;Sk1$xo~`p3hQiqME0^H%YSBd%I>~m=Zj@88w3#u z%nSyAI!`tIZe?1Nlp&w~{^hs*LQw1J*|H@dVV$1X^{0_DRWSFDOmD`0*p~BbO|Tq> zoLJcM<;)7IiK&YfHNB;xsxCCZ2fedQCvYYu=!MipTs18HEGjJTUcH~D_~I|H9U52D zu-UYQ%gaj?H7FC2N~Q8Y#SBG6+``kqR~Unv0RY9k7(SR8eQN*!002ovPDHLkV1oJg Bk2?SW delta 361 zcmV-v0ha#10{H@v8Gi!+002Qe{R;p90Kia8R7K+A;@{uj+S=LxM*sje001ih=H}-6 z`}_L(`uX|!S-M(EvPwOyJvFK|Go~^xr7tX^Ed2cZDx@kTq9h!i92A)p5SI@Nl?&?X z>izxw`~3SYuPq{~A{V3=Hn2AS{{H7@UE5MX*G@avM>EqsD1Xp19h(3E?d|RT{Qdl3 zVf#l%`aweZJUsX}Huo_x_A4v(Bqa4eKk5Jg@9*#ZW@h|MO!h=X|NsB}Yis&cRQF6w z{)L78aB=!vT>Jn4^Z)>S&H#e|004AJL_t&t9R#QO& zB53t+|0Yj}cnfMNV)`grO%GJlq^KGcW$Rr;MbIq)g0TGo2dON9I%db=00000NkvXX Hu0mjfHbbb} diff --git a/htdocs/theme/common/flags/mh.png b/htdocs/theme/common/flags/mh.png index ce403e71aceb9bd4ddd367f6bba35774761df0a3..682200b19dfe418bd0495f5362bc8d3694903145 100644 GIT binary patch delta 361 zcmV-v0ha!j1BnBWDSrS7djJ4!002}w004!X$GODa!^`4#k;8J2!f%VdYlgdJg1TFM zxmkI%cX*o8iel>k0GO)L{{H?`bh1uxut#dEJY%avW2B;PV)Aw@_mWHLT>z=J(?V#l za%qIqbUgQgG4-cz_T$j!=jTgmt6686wRBtc-puv&_3rcaYkz~WL}{^&aChQpDKDi*Z8{G(*IY z7E!BiCLS9_wPFI~D~`T!<;VDi&RNCKWsG4tJ5L^C9{nEJX_l+h=DCj#=yKBwt}t)j zqCKQKFclti8=iy`s<|q`IbZ)X3(5p)ZCO>h<_4Xr%c!Fb%g`LZAak;P00000NkvXX Hu0mjfvnsJC delta 374 zcmV-+0g3*J1C|4jDSt;pYY!=N003qo@Ii%cX*o5or3kvuDQhBAW4@PLX#6bk8g{Q+$M=CT z_1?_x^Yv?ku>c8s{{H@QX@t{sJm=@Su z4wx0eXT8c+7I+;nY34JCq?P6VY%ud17T`KS3Jt~rJi4ib2sKFpfIxuiALw8G0y^(6 UN5_&S5C8xG07*qoM6N<$f`!w$!2kdN diff --git a/htdocs/theme/common/flags/mk.png b/htdocs/theme/common/flags/mk.png index ed39c018d6bbb2f33a92e3791ab89cc13ff3bc02..a424980484c72e62577cfdd8c1b778d6e1a9b664 100644 GIT binary patch delta 368 zcmV-$0gwKm1Cs-gEPwxR0RI30{Nn)h008Yb0O{%g|N3|R+;IMqcK&sB{AFeQSyuaP zSo_9V{OeQxh*|qnO#8h@`A0|gIXCugIr-Q)_pUGbW=H7&0RDej{l8TGmr?tMNAyQD z_=z+2T`Tr1C;c}7`Mx>%c{}!YD)u-l^gtl^%trf`L-+SN^?$r9^w=Ns<{JEQPxfjj z^er6nK@{Hr0Q#>&@|hCz7#RF`X7;Kk@>&z|$`18S0Q>M_`qN$V<1FaL0NvdH^8mi9 z0001vNkl}@bfc51M*%1|mj6^_~GAHrm3BGO0p;hyJXfTRS1GbV%QraE{4 O0000P!e#sJ>{0NvdH`|x7=(_Q;*So~R5`%_H$M@RU~ zM)o;3^hY%Hye#tLEc|$8`maLy*f{xlJN7Im_NpfH7#Q+e6YS^kJw|8D^O+;HtT0Q}!fXHup_&_6&>SxuV^osvJM7cuj!}p^ZQ&^6SiUBO?7c(DpM?r zr)WPsuVp45FUU8ip|=M|dZ0;o>>@w)jj?%jZsieG^S5@nG%iuRs~)-EobTz`WAXkY#OPy6sI=v3=s z6P~a!D~pOZTMrsTC=)xaF7W-m2#_-KpqsXonwd@kGOekyhWcsYb8MhV;8LGsTtQnY zx%UbSl?!N+E?TFBaEuok!GwiqpgT_sGicBj=yd5d{Yp7II761!*Sb5HbIUoYHrwEh zdxh@oI(IQ{ryq+{B!*LY5U}0 z`Bzut^8oz(0QbcJ@&EvJVzBi9004VQL_t&t9RJna{X*sP;rd2=alSxg z?;rZ(6rSGj^(B-_M66Pl*eVH#`jtwUnIiw}G}+mS0Srg_=6|{kam1?;0g+{P8Cqj+ zFM}~7X5%SsR6!S6#Ag;DbU95;^>N5zUHIF(u3PfNLMCWe>vUY)&(Qkw8`ZxCy`D-t z#?i*PWrB9u%P-wTX;ELP;X8(~qY;2W`i7O22|6<{WrkJ2mr*1GBjV+6qUO*5+`JT* zR%(JyQ>*naojvCq0}wKhIC^W#Qa&pn@|Xi-gtB9JKpqHy2E4)KN9MBt1cjuSEc6Ye W6ewWRG2FBO0000Hq-c007_s0Nnrp`(a`F zU0wNBSNKv=_e)FnMMe2TL-ag7^fos0GBWZmF8Tlf{AOnQK0f(6I`}p=_bn~Yv@!j3{udwb*OWRRV-BC=} zeSPGVmFmI4@^EnEac$ooK*EOr004SPL_t&t9RTQq0@t`Z(WuNC5DAPs5m_(i9d|hcSm% zq)=7I94gdvf9%KpZ0k^6w{+Q^TDxzkqKRc~)le0YMp0FiML-Zigg@RLEg?W=lO+HE N002ovPDHLkV1jH1ri}mq diff --git a/htdocs/theme/common/flags/mn.png b/htdocs/theme/common/flags/mn.png index e269d46855a2a4a0792b0d96b9649b37b9bfb016..8392700aea1859bfa1d5d4fe892ae62cf8bfabb6 100644 GIT binary patch delta 326 zcmV-M0lEH)1J(kN8Gix*008-bnr;990Ub$1K~#7FOprB#6hRa~UkgrzYl2*YJ3vT` z-2sa@#oUAm$v6UF-dceZt3dDZ)6nK7bJunE^0**)eq4H1AQ;PXeG<$PD* zgZ}~?&2t)(lZm{u7=TpG=F@3OgWdRF?^<@unsb$16)_Qw(SI~)2!Bl^6UiSw43Go% z9Bxv)&f1*@J4RIM*2a4pN`>rO&C_T<74Qzx&R*0K%d9@N)qARn_5@xEU@t;;y#mhI zO6u*FE&%kYvkMOJz8>r-#9*y$&JhBTC(zn;VY8WYHrmmmSZ9NY#PNjxj-JtO^1^O= zG?ai%V&-o16+hE>_g;A+WGNNRpC*;E(8neMWFj?W$0q|aks?x<;Tl>@KVZ-TQh#B5 Y03V9_$Jo=btpET307*qoM6N<$f-Jq3UH||9 delta 378 zcmV-=0fqk70*V8W8Gi!+002Qe{R;p90Kia8R7LXu0PO$(007ni0O{ZW0Nnrp`2Ya> zabo*uTlrg6T~hH&OZP`d`awbYKRxw5IPHuNzu^(-v>+GzT+MElr8`dvLlIPEYm z_9`m&Bqa479`qg=?(!28@eK|9(M>fq_#_|i^Bf%g0092oaew@1NKHZRJ3IL*B=F_{ z0RF62RY~zMEAjOtB=tQ#{)cw`gH-!fRQ~_~{>XX$-dz64Tue;-_en|rdwKj@TTxN{ z|FwH}bNXp%{AFPG008`4FNz%i004zaL_t&t9R9#gB;qS$En2w5m|QQ#L4 Y{;K3N|9_%L#sB~S07*qoM6N<$f}gXiU;qFB diff --git a/htdocs/theme/common/flags/mo.png b/htdocs/theme/common/flags/mo.png index 763679381a0fb97d0408c2d88d2755de9c7b05bd..44a3f4ffb68a153daf0c811f36dff8b35fc165ad 100644 GIT binary patch delta 363 zcmV-x0hIoj1B?TZDu0mx0Eqwqg8%@10049V0A>IHSpa&;dUnWmam8|Q#cXE0W?{Zz zT)SLYxmZ%QQct!|07(E{zFk?nSyj1HV!lycyiC5-O;NQ%N3lCLsWdC3EK0FTSiD)b z(o$YD1wQc4f%4V<{9FA?43n2-CwA2h2H=i}aOuO5S zpc5qR_I7~2@?;>>0Xy%>9Rf580|&kF&LvqkVc$&N1zsn+Ii_wtom#2z?&h|cx_@!E zeLOIKR5IHSpWb@0024w04xAuzF}OuTv)kSRk>4AwNgs4N<^+i zJ*z!Bsya5QG%=+xE2J!Dz-C3UML(`Tm(Q2B-L~QF;by#M6qytdmk$e-3jlopYQkzs zwMkF5Pe!mv8k`z%#cb5-)cN`O?)2{T_Vn89+5m$9am8}B(tlHi%ZRJmten6n0Eqy0 z$aYw~Szf$ML9Q?+q9!1pAbQDqUA|pcxl4b^en+u8r^h#0yIEqsQNGkoQMEz$Bf>0QS;qTQSD|5*qa4gyyyMXS0X$*pbhDOUE4f{_W8zLTf z*fx?}?L|UjNN^{)S+uCx$j!3qVVO{|+jIqCucTHY$#;uThoE(`L?-8;(XqODd0H{< z%{kAfUIjgi#9LQ7Rz5WLQOx5@{X3Wf9ruFkV6z@TB{&(x6zDor3-A^I`uioM;R~(B VIP&kOx}E?4002ovPDHLkV1h_tsr>)| diff --git a/htdocs/theme/common/flags/mp.png b/htdocs/theme/common/flags/mp.png index 88617cf99f3b73c70cbaf886f9310a882f9eb965..00d8fe101f0be2d4b7cba53f008b8cc0574921bf 100644 GIT binary patch delta 354 zcmV-o0iFJp1A_yQDt|4303mk(5NrSdQjVp_p|Zok%)a>Ow%y#jl%~0MlDu+`x^IlQ zZHBaamb{Omx6Rb5#kq{;znS#Es`=!Y)Xk80j;2v_rcH39W`(l=05qz*z5VT^p0%cf zo4T{Z$mPg^^b*MATLW#nd?o+&3a znFsh^qcTgyNm~$#ORx(hDh6?^Z5~o;#uO!|lh)r3aW;}bGm8fO&Hl!)@b0}=`9((M z*|i0CEw#>yWg(}p<|lZkxNEb_3ah@Y{vGwN3qQOY$;}ck$N&HU07*qoM6N<$f}5Sb A&j0`b delta 372 zcmV-)0gL{F1C;}iDt`b{001-q03ZMmYf=~cP;rAqwMN|Yvf|Rbo9s2)!Q)6SKwv>emeo$8m8ida9 z9E>D2(pCCO5^csx@<4C^bHvySd(x1zKRwaCF*arqkQF`}+U_a{vHnSaGn7ox}hDS&E&> zm8H$y;_ubn?EL)vcZ|Mrh`rX^=)TC_UwE+q07ZF^!MerX=IZifd$dq%thT}0(AMK! zcCm$+#mds;pXk>>FFQI zYc2o)0GLTcK~#7F9fkvT1W^D4yFOyu=KU{{=h%8!?~XmqLIP+93M;1tU??{Sr2(8& zqn!x?yVhNY2z9qlJTnOM1E9OsUp42mSsAX+A52e2rf0UM@Y0PQ4yNT{pk=sb?r(a0 z9Qf`I6oIj0t!rbwJHzY$^wQVvtdahH{Et9-zuS`>$vlL% atu0m5AuLIWg-YH40000E`C<001%o02p_SzR1wx=IZj{=Iw=;#b0=_ z_xJbq_V!R~tWRpG!^_>;-ssTQ<3e7d00MJ)kHKAbv6ZFG&D7;cWvBG@^)*zUjGe@@ zz1C@gxzO0@!ph)DW~gL)w4SWb;N|ej(&fI$-o3`%`T6;_!GGG-+2*;z+FNp^{r&y- z_xk($`}+F&?C$cq#ong0)V#&p01|z2h`m^Gu-4n?03U>koyq+C{N3X3)!poYmBgnw zH*)|00G&xhK~xA^O~FA6!C(N#;s5U)Tdx^QEhR24a#2p?``;X_lsGw3P-$ z1Ga(h;vn?>QOrz2;FJ;db-jAgyFRw6ifm-MSrsQFSin8$sG#@A8`0A0RaSh-nIwNazlN<^+iKCV7BsWmO6ElRUWW585Rt4;d*MLwNAL$EO; zp(9wlSX8f6t=&*cwMs*>Lp!cJGo>?~(<>&ECICGEddN%f_kTt?mpL$vFxc!cYrrKR zlph(J89J&uMWIFc`8tlyGWPZ=AB!IpniOclXoAT!@AfT#$RrMy4gfO%E}1R>Cjck^ z-*^B30D?(GK~#7FJ&OZ!L{St4yFVTWg*aJ2%Gv*NV%r|~HI4|l@;{pnL=m0P{835? zWkRi!L<5-mG+)7J{HD{f=ErHWyt!=?`r+8eG0u2vm?(0)nR8|$I-&F6(xZ(a`WgH2 zdIOXHtN!NZYclhQT`+w2;T!i(#*ggVicnyib!aaB0hQ?(_#qZvH~;_u07*qoM6N<$ Eg6W=|r~m)} delta 369 zcmV-%0gnEM1Cj%fDt~zZ0BHaKTL1t`002Dz05bppCjer;VqLslSh-nLxKvTKQA)E) zM6N_Wu0A@dIyI>^Go>>vq%CN|XhX6?JFYt}nJy-iCLfC*8JigtniLL}4obC3IhQ$t z$u#fwEr7@*0E7T=#BooyPeq|c*z7R*`8tlyGWPZ=O{-0M$bU=k_eMUQJ}`|iYrrKR zlpl7;c38YvRIgO6-B6v=Dq+C zkhlN<0F6mRK~xCWEzT;nT$4-oGXY=wrQYa_XR%#%003hE08K9?gWI^o-_zdMtGC#m zspH4bou|`wfWC2iyk~T|VsEx(XRB9bu>b%s%@r5sla%U#e&cs{;%H}8Tc>uC;c<=M zYlz%YV6Ne^y6&K!+JcCyb(Bt2qK>1?k)g#+T&T+LIRC(D*IJwp$IVdnW tH6f{DTgKCi{}g^hEj9tx0RE;1A^_YN5H62vrWybM002ovPDHLkV1nOXq@Mr) delta 363 zcmV-x0hIpx0*eEXDSrR}V*mh6001ul02XI-xngg&Tx+#gWwB9Uu1#F6NLQ&tQl>#m zpf^UJaeKTyO{6bAnkqS$BrlR4Dvq6wRCa*Aq?2I9oB9j1iEfHOfzN99-%mHe2l5`XaR22o^B7gt_`~!%6Ht3}#;4A4!K~#7FT#w~p!!QtqpP&pAl)3$%43^b0 zO_>?Pw&1QhJLu0S>49Whtrm!&HKw4iua*6M01gu}2sSZi?d8SA$=R7w3IH>wX>K&o zYAphk=j^=-!8q4zHZ8??d2{pj{LKCSS*<2&fMcZld;a}}^MCAf&Rz1DogHb=#+;s> zb$h*uIzhx)HmznSZwE*Nw5rwXNv0SC9^yTw)y~B%gBV7s0xef;cRuQh5w9LYPql6hbT;08|Z3+POGuK)I!9HAZM-cym*&uggiiS21#- zrn2Gl^Rw{FlqV~~vhVNz32ojC5(Ml23sMRN0NPeO_YpF-Q~&?~07*qoM6N<$f@OM& ArT_o{ delta 382 zcmV-^0fGL$0*(Wa8Gi!+002Qe{R;p90Kia8R7LCS>*nU>;^N}m+}za3$>sn6;s5~O z007+p0PXGV`}_O)`uh3#`S|$w_xJbs?d|tXP4zxL^*TE9H8t}xGV(4i{QUg(>gx9} zF!UcE^BEcP6BF?b4e#&o_v`HSHa7JoCH?*V`~3U%D=YEw@qhmQ{`&9l`9ebT^78)t z{rE;k_%}B7_4Ucf$ouf{`AbXrJU!LZ)4jO3{PObpQ&a2!0Q&j){q^~5&g3O004=<{dbdx z#@xdfE2SR7>=_zMqkN&n7?6#PC6H?r4{w-0M@z5^UNHpVge6eKK~#7Fh0wEt9Z?v-@&CE8ZTmTbE?r#3 zXo4ziV<%;ru)dEl4-oJ6Yc=c9!Dx5BwSUKk`URE=A|~@0Gaoqc=n*6GSR*nW1G&~f z8bye|)#`i?j;NJ>eKX_ezJ7%6>Se@|^=rO>g69ujA8Tp%0e|CiK)c*oS61ROk6fX3 zS=q5=h4B3mSs{m zlIt{gz{Zn9eDa%N&l#6N<(S4~qc&`~dy^ZTtL7`};!q`8xRc zHTU-|_4Oq5^c?c?6ZG^n;o$%P8B36zuyuo+XLpfUYKKf-eSZJ|hj@$2R&l{nYP(5f zxkFvEIastWO{^wFrT_p$T5!EOQ>}*p0LgoZyI5(mNLr~hNl5?z$^Zc9dV1z?apPxa z;a*#`tL*$79e)Ne?H5;_-;!)Tv;2&yM12+Zq|TvL z$XGR~sIqrQRvcoJ$0LuHAXigX50#`Kl%&3lXd+Q0D1h(!6TsDt*H5iJ>k?0CJUu&e zZoX9r%wB~#?yC_WTY2K`#49sKq9%fdysppD?aQC5LJ|^__v+^F0>&g37(1;Y0L0000+pOYKBN>O4H?G&JHcE#m+H=SM;0Lp$R4U%X!DZxV z-+lU7J>Z*PAR=Xl}+HSh(5fGdzUNz@$RdL}Nnc+_a` zI(1zE_ncF1%U9Q~cQEURK8|DQ6eoYpI0Z0CQdJ<(%sX{hpk$GtsE9}s1Ox=&570a> UYH;qG5&!@I07*qoM6N<$f?O=GIsgCw diff --git a/htdocs/theme/common/flags/mw.png b/htdocs/theme/common/flags/mw.png index 57bd539291416ea6086dda695963732cfc00024b..2f4c4dcdcb84e518e45fd5fd112c591027948d47 100644 GIT binary patch delta 334 zcmV-U0kQt?0^S0U8Gix*008-bnr;990VPR9K~#7Fh0X(S1W^Ne1x!!rhnNswiMFkx;i*p%F9Eb zl@*hIBn1EP=!L g>rXV_$OCip0zZgBFf67lX2NDau|FfDBO9O`51J2uw`yUhNnNBxSfM{toHtCC zF+`FlHi;Jm1OWX20QGWm{7+B&N=o}fL-{*9_BJ;6FfjHjD}VJOBJ&s+)I003%9L_t&t9RVYK*4$N)u!DT&*0Ac-^xVo z0w_(unZCg9r&w=bxZ-j@jq}3m&mi63ch_x%VXcmNQ|lz-ubZWt^HCYcz*0+9Vqz&( x$wPfqDdCvM`P|>0P3FYD{0EX&A37-*eoq8Gix*008-bnr;990Xj)UK~#7FVqi$%MMkfX0H6wT;O!)U;^05J z?{dNUg0pSbwiVR2ZQHhO+is(JRrl9@<;$#RRx7K^i?g%s63JCg1G~yl!lEo-|KQ+I zoC9(8IDS>ffLKyeE4v7^vYpg2?d4J|cK7$lMu~j{3!lD&xqmkwuLZD`(yjj{m_dR) z(N{IrQ^9hqz%Wq3%+pu%QnF$odjoF*8@H!mcDSi7FVIo(d4F>b0;t5bfb7rFdi<`i zxHyKu+gb-Z?DjU)$%l`@?DyYd@I_);rjcyfc`1{C6?!S zaj3x);1T#&VsQ5w1A_yjqoY`Z-rnB!#zsh2IRWVPE7ptboF)JO002ovPDHLkV1h1V Bv4j8s delta 377 zcmV-<0fzqb0*M2V8Gi!+002Qe{R;p90Kia8R7C(W0MgUa*Vot2&(F!j!>#}T089XA zt%PK&fnce9RibqD_xAVq_x1Mm^YHN8M@!&DNp7!*OPy>ylwkDq^z!cR*C{V^w2eZS zWcK*?=I7;{teD>9-q|lTqq3i$xvcf_^4m2#-%nGx0001627h|El3b>G_xbqa{QUa%_u@)V zf_(v$p8R!lbfvo004wZL_t&t9RuLB007ni0Q2aYv8}`1)TQIvo|BN!ZEfN8@Adof z@%irV_wDWL)6<7{OSrMB=G%$$<$c}JhD=M`;7wQMQ&j0pP3A;I<2yT`nzrcLe%#N3 zM@QW8=kECG>i6jA^ycRF=;-Fg#&>nXK|$HxMNQ%}GqwN#J0?5X?&a?D!o0001cNkll*I?PB{HHfu3=9C;s)BC`AE*Kmppvwm{VIZLXb$f47y8e-)FCquO7_50kMzBg==l zU-bQ~Wyif@%IwEr{fdYY-_OetUWIO+f*1z{(;<(M{k0p!B_ru`zH;|aNU+x==({f% bO?QtH=VKg*)OS}N00000NkvXXu0mjfVYjsH delta 336 zcmV-W0k8gm1Be5VDUr?_fA`N>i6jA_UP#J=H~O{;K|$F&JK65#?&ikE4+og@=$iB8eRp-juL13swC9004tYL_t&t9Rjm7vcXOh<>w-IjC0(?G1mn74h*5Q^j&lZX+ApU+@xw9%G_&TSbw%B zae55U++wM-ofPcXM&WDjKaHO{A}-EuR8UyYA%IORBKGFaV!U zZ*XjL1hWP+Le4iNC!dG8XBT_A^}12N0Vq}|QZXcahWNd^x_|6%3?JVdQ|+Jc18kpc z18!O;TYugBCyaD8=!z!DnYMEaw{)~NvL?_p)=<>|c}aP|n_oCcxSWWNjE{aA_Wp1- zeK#}d)}zIV5)T*g;0-w;H$4&2=tGJ|VFe`}5D`-Z9zF>cHbKA}LIQU9NC`$L%D*o5 z9q&(4VI_c_)mR?DO?!0)ApsjB;jK{Tbxj2x=fwf;r`X_joCyGL_H!v6Fw*O~Bf#^# xF~GyL8o=GS48Ue4afh2yn)7@z6r(~M)endO{jeEPGQj`<002ovPDHLkV1isWpLYNN delta 358 zcmV-s0h#{q0`>xs8Gi!+002Qe{R;p90Kia8R7LOw0Pv{*>zn}NkpSI=0RI30{Cj5h z$6oo{RQJ*L?(-?`1XkDy#x!C6$gR7tc+G^{iLQ~;5_dv(cm zX~Jn=ygu|4Nxpj8PaB#(HYQvkK z*zD=?^3v7%VPW`CPVv@ccyXpxRk^jgC42%La##rGywA5;rd)#`F}t{?7+JloEto=Jo%rW zmergoqA3)a6gH?f^5p6JaBJ7-)>XV*4weovr7`)z!um@^_-1Y5*vyE~jmxQ%fys$9 zM~8j@004eTL_t(|0VTA#Xx5M5jUrvYLV64GcOL4d)5SSUy7 zM%%M7t%~cWg~WM|-g*8yo)|Ly#X|J}K%{{!%DJ za{v3!vHs%ZvbjrgveK>_oEsFG6b_aS004*b+!#^c6ycF1^frlY9d z_=$=4F)@70g8%@JhlIoN)@1V1)%Z|O_Doah%fz+1V=%^KC{c=%70CX}HA`?q)JchiIR2UA!n1*g zr60>n4au6bwRPl}Ti(Yy>Et=wtR^RxpihtnoMVx1dx<1TsW*#7t6E$f&8iBm$7mmm zcz3(n6-Mpz{inQU@esZhQ-B*K;4>cYhCREyh)0GY1LP9SAZgc$K*3Oo00ct3kOWBl afBgWC0XY^CuN+zc0000Z1by8sBRkF)8CsNMv-X%6aY@` z%>4iW0A@)Mv-YVgjptiP^iaK zTwXv;O*nX}LK=2P4{trU)Opj_P@0-Uk&!g`_BQ

    iKw`}<4v!8-OUQuQTG^BhL^ zGg##S0Q~NC{ryy-p-*#jP4zus{l0_!{8{_^MEAx-aUFfq(0`iq^IpcNhNN<gv_by`k&!V*vh}ecx0teod6FpBXRiBAnsl=7_W6PU>Y8hT=Q8rUHc~gP^3sp=^3^vCoS1ws4q| mIV(cW0!`I30}v4e0090p+bK7HA@Gd=0000*R~IivSV;0001buX@Ja4FP#oEQ8!J%7|TadGmw9T{=Z4&@108oxlEp;soX$`{H!o1SF*VxwG-QCO3 z%frjVQd!O_0001sNkl<#jNE~Z@6Ea9(GDJ_>?TKqLtoixd=`1#{=U&_8nP35~PpiG;=Lo0(wreJ# Tj?C?i00000NkvXXu0mjf-O9LT delta 449 zcmV;y0Y3ha1KR_TB!35VNliru*#!s<4HM0I>=*z5010qNS#tmY3labT3lag+-G2N4 z000DMK}|sb0I`n?{9y$E006*HOjJbx5&!@I0DGu=*VxwG-QCO3%frjVTa#M=D*$4i zV_lwISejVL-O2U#_4oJpe5-u%@$tOUyfc9_EqpC%qH08qM1MbuKf>3->h9{z-_6+N z*tE^G4QUNblT5|h#hbmGP>xV7buBi2HiWH&6KxX!J^*j1Z=u1VJcK-uvyd8a8g#66 zQOb@BG`hc2sLNJWu=;8Uj;E($)(HcDeoMz=U$*rb$TL>cN(`xPik!p+q3~+t348O4OoQNHATx|kaXOr&eim$DTDIe|tnK+hpp)Qu rL6l^LlGLN7lOP~P@0dN!u#orzBpniVX+K6H00000NkvXXu0mjf&~(=6 diff --git a/htdocs/theme/common/flags/ng.png b/htdocs/theme/common/flags/ng.png index 7b7729ef3d9e8d582c1ce90d6e23244452972b09..70c1f14e0fca4a5e3432f15eb71aafb98ee45a71 100644 GIT binary patch delta 313 zcmV-90mlB31IYrA8Gix*008-bnr;990T4+!1k#6S>5e*|}TRyhh=PJmw{ zdwk77<~}n^+#R~4Nu_Xj(e8d_3HAXe*sHnG9PS)OjfmXRZLwA01;!)LgB$_nLJ2pb zOpQ);W}N_Hi~u^QV|j6z!7NOX8V8LW?WP_*9kY_C0C3w8k$={0>s4NZg!zGa0I7H4 zHW5{Zs}2CS?aij<-U&x$wW6N>6H#%Sl&Tw-bpR=|*lkb8n97>~%!X1Bd4K5hT6PJK47kmC*^(nRkBR|umfNfNiS zG%E%R28-!pM=~gZGZ>HddfV};<3emgAXzYY{_(kUsxt!|a5De^obEgz0vgB&00000 LNkvXXu0mjf97uhS6|r#3RDGB2brETk-Ez-C3U zML(@SIjTA5?&lJh5)GCOZNzO!v`P5*_~`HG8JigtniNpBP=E6G^7;AsAD$log#dEK zb5yxhO0!D(`ugnh>?NTkcgS~GyjV}QPy74(AfF(5$$DA4S^WI`M6W~uN&o+9>XD%?E)004|hL_t&t9Rn)@@4 zwp`R(agI24mF=pn7mpNVjBKZ>9y(OMHp<^PInl*Tp9?7uv`(L_VxAk^z`)Q<$vY-`}_Lsl&!5B97^ZNSw?csngl=*zN=4Gt%dbaZbSKm68_$Z6@9ftE1fbjqW-a?%9JDBqT6XoaA z6<+`V0BuP`K~#7FEr%rnLQwz&XTHCVCKB#&|6AaaNL&He^%VgT{Lu{lSJ6abF-B2u z56g=GtG6_+W=d(ArP&+5i~tEApgBa}pOGftFV0U9YMrxIP~$Au)}fIhvh5^#mG$H3 jU^!R{CL#q);STTugq#n2(H+<}00000NkvXXu0mjfB)h(Q delta 344 zcmV-e0jK`*0{H@vDt}7#06p;lHtzr>>i`qw00Z7-vHW4K{9CH}RHpkNxi}f9b^Av#bqS5_|!~BK7`+&Xle7g61 zw&rrQ_HD8CYOeETtnzxc^8i=h{r&y?{QUd-`}+F&`t6kM;eUYl>5BFB_4M@g^YioN z<>jrzvCffq_V)Js@R|1Hi}d1#`0S50oBxl;{&u(c0AJ?-Wd44>{{Uc838Gix*008-bnr;990SZY(K~#7FjZKA71TYXxaCdh~paOcr-9~=| zt$+@wfL8Dk+{x$ma$NHMW51Kxob9d^Q$jEmaFy+E;wX@fOsotCVl9MNypM&;D%X>P z=Q@UfJ}%B1@~3wXq6NTu4XOh%*m^G>M9ReE>nFxj!r+`7EPtA(7gZTb#(EL&Lp>uG z0!ISW4-b5u9oWy$&yJ1`lMq5smV{!fED6@y>+9<}FxPS&3ylKmYP^m|X=Tmq(dzd6 z-Sdy901m|L5g6L#icDUm*bKGFAA6~w*Pal6-6@YzwFi_`%0094bhW%Y@{#j@HRAl;4U;Ip3`AAp#LQ(lVP53uQ z_c22DEIj#FX#D^H^#A}cB(a|W003f1L_t&t9RbpwStx(ys(={U<&d`;002ovPDHLkV1nZOuH^s# diff --git a/htdocs/theme/common/flags/no.png b/htdocs/theme/common/flags/no.png index c403d06ad10a2719b643c87203e503c6ebeea323..cc0cabb4fb58b57751eda089a6cfd4f65910bf13 100644 GIT binary patch delta 362 zcmV-w0hRud1Ns7x8Gix*008-bnr;990YOPbK~#7FVtmK|1+xGCaYS7DzFhY%GcyAW z{DLul!Wb+-ELc+o;q)Z|*dS|zien&*Cr>-vU1}yk#-L*XTsl@@1S)!b1}a=D+}$;~ zFBdM)s()O5-&wuZx@vsPQy@K&2PsROSsie+xSYtMe0?qJ!+#sR_jGZtj8Om+L@9%< zWn&Y~&BDa80_U8p$gGjH2eFY4m1uBI!VpYsI}U5{+(P!6Z3T1EI(~k1s&`vLzj-!7 z10Kw9-clg`h%HzSzb0I(OVZPmJ36b*TAG--p6aWOw9Oope}8`oDPrZ&0M5=N60t4q zv8PMo)_}K$En|f=NLEU;w;!x+#Hq)$07*qo IM6N<$g3?)`S^xk5 delta 385 zcmV-{0e=4a0+9od8Gi!+002Qe{R;p90Kia8R7KPP0L=gZ^78Tk53cI!>cjv5y#N5U z006N70PSR9?Ot5@`T2UKge0u9iN9aF2=Q=m#G%?~SCh%cj zeyHc`R8sJAaqC)F=ul1zqcS`I004|hL_t&t*Ggqoq zKK#6U_vh`~zn(plRiB42Q%h;)r*-RozkdDu)vLP<3>O#}#DC=Kp>pc-&G#4>?l3Uu zxNMQtod%Q;lBp1sDgwzV$>iK%V0hEf@v5mwP`VVwopKVPuWD<5K6n5`_r1OO#9|Td z{PXwa-wz)c{`_J1{hL)tXyL2HJc1rjcZvy_9cN&85+43IDCiIa!$Agy^$ZLgyjDPc wjNF2r|NsAH_#^-8|NnnL!~h~07{F!%0Dcd!ga0tbZ~y=R07*qoM6N<$g0OgxZU6uP delta 337 zcmV-X0j~bK0^tIX8Gi!+005eYS1AAh0Kia8R7L;){|gaG3J^pJ4?YPFJO~Xs2n;v} z3pfV~HwFnd77{kc0087ySL0Gr!TgwG90MGycE+wn{@bLNF-TLO{9VebJC%NnZ0Q%(Q_S4fOGP*M<#_#|D z=K=yKH_S6C$sjS-Au`ryzq1Me0004WQchCE?pUK}3|7Z>sQ1<(E00000NkvXXu0mjfrd);) diff --git a/htdocs/theme/common/flags/nr.png b/htdocs/theme/common/flags/nr.png index 89fbe24351c1ec3692304eb2ebb7fc493e724a38..d070da17c26117496f8d4e9f2a703ff5f7d2706a 100644 GIT binary patch delta 365 zcmV-z0h0cT1N{P!8Gix*008-bnr;990YpheK~#7FY)>U%R#6nbxVyU)ToMkwVHFBq zkxaxZ+ADu=Fl{UImASj`zH`3s+&!D`xXWsH=&_TPZWhKSa>I|i97a+(kU6X4>i3@> z#TH?)1W7Z*YyqH>ia@Hs6fAsvvpVbR=p7*q76^ch5J+kaG=G4RlEk6CJJJp5?AdBX z5H7Bc1PY2EZCGooR&u4oiV$Mo0!Sk;f3|`&wWMHhb<>~!J5S$^e0N+OAc-^~)P=+* zd@_ZR8P;t)P`lHuKJoDCyKe_uy4K&gaHPDdZDf2(X(Fl&k>s-#vCZQLc9i{zPx9lU zymR^Ft9w`P-)0$o`swe)l#l?Of?gyN#!IHs5&6>qD;hdG`bO(pdc60`R>zV=)-a;5 z*!oc@9~zt5w`(hCfPu{ZHZx_&rsNx@H@mVI6p>Ky2F7^DfDHfuLkL0u^Jqmu00000 LNkvXXu0mjf7J8}* delta 378 zcmV-=0fqkk0*V8W8Gi!+002Qe{R;p90Kia8R7C&)IRF4A000sI003o&tYCzyc9gSa zhpJL}piXw4N^+b=Z<#@Cmpy2dJ7$tLW05mpjW1n|002m8i>~12?YPI*Dp`smQ-m8$ zff7f2ZjZ5(tHk^J`$KM;00>lcl(bcQqK~M*Cs&2vwH@)@nt$rmg6YwG=+AcL%W>t( zYvRUZ;KN+r!C1S2000|Zew(&pgr;4ArCENZOLU${aGC%WUwfIkT!N`odZbQwp?;ma zV~4DFmbP$_vSo;?SAC;i@k*5d004zaL_t&t9R4TX|O_yGSO zg-1oDM;UnRDP^Jy+;%J=i{SNQc@_3~Nu@K*BeQRrT1{^^4Grl$SZY5A3v z{NHi(>savWQ10nX>Cs00%V7P2e&bkK?dD1G>rUv-L;k?N{eSaP$F<)3w6mS5?&ji2 z>*PjOR?32u>w|j9Ze+CS;Y9A{N94#n`}tw>?o;RBLG0v2=ifl;;X>cRHRjws>fk;= z{x0PJ004(cL_t(|0Tsx#VZ=ZHMZy2HUNk3WEI`nI8;T8)8IMsE&LDt|EPxsVdjP=S zF#^V%PlsaLxMk^1V4kpX&o~x@^&((_J+9u)fw~yW#(75d`C8U(IX?L5ZGl)kBJQ8# zV9TbDr`~T2_5ytMG}!9E%ZLVlpiK9_I*`qb)R5Z7pi|e6yrd4I^CR?(RYr9H0000< KMNUMnLSTZ!#@8SK delta 367 zcmV-#0g(QT1CIlcDSz+QQS;nb@Yz)C)Jy5nM(EB%rU?G zN9^Q8>fu7_;6D5LVfFG^@aj4SR7<5*d4WVBm(?$_b`{=mN4((V28QpdI4`+u~vovH3@blB$NN%c!e z{nXX|>4N!{mHo?L{eph|*J+;%J=(cx6ONP4r>~A|CL&@8fo2jk(g9o5}?@uR=b2$LUvmIra z%MoB7rB!U|kZLnWX(vBZmkg=abCl+nBB|EILPWQU5J6Ifr4Nxv@()OjDp9m$k(K}e N002ovPDHLkV1f}o)gJ%= diff --git a/htdocs/theme/common/flags/nz.png b/htdocs/theme/common/flags/nz.png index 541fa4dbdf594a9da78dc849c398bc8c3209a6b2..1d0487ad313ccfa6f038a06b5bb7f8a234dcdaca 100644 GIT binary patch delta 363 zcmV-x0hIoh1B(NYDSyLpfq!9;003Wq6+49&JpcetWgk1AZEi|kr9oAo zkza(!W^gS+m472i;<&!?s;Je8kwsafJW-xCN|}aIdH?_pYky&xmxr&ygOu5_x|MjH zM^u`yR%u-$U5I?CQ&XBoMvh`+p~GNmA~}$GLT)-woNs@*7ch!IRH1S@XR$|Cj#+&c z;S`Gi004$bL_t(|0Y%G$5kmnG1km04jBR%iC;bU?$hEY4tt++@PaxrgN5yr^R7n?B#f5@pxio8|$`ku?-}IJk}m$T_9j&@KD;^negl zj78zfVhK6kv)r~6&=R`5XN7VAH3tQJq%6Lzy9*07D0s@??GA*CCSaDhJ}UqK002ov JPDHLkV1kn}sWAWm delta 374 zcmV-+0g3*L1C|4jDSrR}PXGWi000hSbhBS?uT^KOPhqG^U8O}?qd`@mJW-xHPn<_o znvPk0Ekcz50AD~!pfJ2ufl_rmz>4fvbwWjcZO1Wk$+!=e8RwLh<#>1AZEnbBa4i>W;MCvPst^XZ`m~>NlG7(RQlE48Gix*008-bnr;990Sie)K~#7FbdR+`15gl#ahC>%3h61)b?C7+ zEgPjo1|S=xi*#{2efeKpuQ>hA7JnAT;68UNbK+L zg%FVJYIle3I>_Yn`Pg9P^3Kx}rPGwn4(JIKvbea&%u7fuAAcQ{lF9X}D`%cZ4|c{M zu0KC9JJO;q>>>*yDiYu@n}`zuT|Ynn`TJYxO^UPt?b2bK4$UT*(D{3%0lL+iq+@?< zz@RP-K_0rdVL-pUY0IeF&BkKF?$KAi+1LNCPJ=a@01U%)n&vJIOiYIx)(#K5pImG! z2-5gv%UfoKy)D5!(hzQsfpHmXOh*O4SZ`sBZ!pF$5CH&ZTPcv!-hht)0000tTHaCF4jdw(?37bJ3B9}FDk1lB&Z}Gr5_oi z85E%u4xJ9+ZEe^}O4dL?+D}i_J3G`hHPJ9I(JCs;BqYll8-LL@Hj)4UzW@N^b#=}w zE80&`{P*|nu(1C6`u+X={QUg-`uh0z`1kks_V)JJ*x32u;rG|q{P6JdzP|qc{@&i+ z@9*&K?d|I7>gML=;^N|ESah)f004GLL_t&t9R=g{f=+>+uUkgN5U7E2enmk=BFEnxWgU7>K~>NQJ*Pd4s+vE;P_Uh&s?utNf;LeV1war4`2&poCpN?LAIks$002ov JPDHLkV1hf*u5kbW diff --git a/htdocs/theme/common/flags/pa.png b/htdocs/theme/common/flags/pa.png index 4c39c32776920eea06782cf323f1532d6594ddbd..5a3ed442d82239bbef9c496fa88b9277d2b84aeb 100644 GIT binary patch delta 346 zcmV-g0j2)?0_p;g8Gix*008-bnr;990WnELK~#7FU5^8dTwxeR|JZgL*KJUnL2cV! z+X#1Jt!>-8u~uV8Yx8-mJI2WwzWa$V;ZPI}cXxNU2njeJA_^F%haKJlf!za}m?-@C z0lD|@-9CHHJbV}|SfT9&<7S92z-F@{LEXB=T)j$NIKOx5)PL@Y6FYbAXuSmv52Jc3 z^riv&g{HR;9*isqM1jR(iAX~XL;=~KCsa*Yy!+%2o3aK>>3zo3Zh_9tWzy4e3EYc{ zg7`;Ez*`o%Kdq)8O~U7T;a!dJvXXyN#u+>ag23}U$8jvn;)_b9@)m@p?-emHklquC zAPP_>m&piu!c$<4(B9qxZ<-N{aqGtEQ`F=nYQ$nOA$Rw@OUJYuAVxvd2PUu@jav{X sAQv}$9$kWD-yGEI^(qfo1B(5)0QD$udxsVA3;+NC07*qoM6N<$f*w?z4gdfE delta 363 zcmV-x0hIpg0{a4x8Gi!+002Qe{R;p90Kia8R7C(t?f^LG04U-B8s68}*V59`&(6-v z%gcDN_ja!JZL0QTrS)E-_4fAm_4W1i^z`!7)bjH308jCIv-nw`^;DenPnq*cmGSY* z%j`!-=rS?y$HxFz@_@GZ?udx<^Ydq@_#1!qoyhu!y7};aet+?Jc=B>`?rUq+008mv z@&5k){r&y?{QUa*`tdwG?>9E?F){5cE9)dA??FMh*Zc8IO#lD?Hq-G#UPvj004GLL_t&t9RWH?VZK$9(T8TD0t#w#SR9QW3`ysCq6;Tx#L=aI#_ydJmC53X^wRHdh002ov JPDHLkV1nxs$VC7E diff --git a/htdocs/theme/common/flags/pe.png b/htdocs/theme/common/flags/pe.png index 08ac284971296675a937294d0b2fc65a3ad883a4..a6dd0565d3cdf207312090586979f6c9f811b6d1 100644 GIT binary patch delta 254 zcmVI_`RcmlMXxH$2l9zKM|wVN@!EW{X;(oKo0;Hv9(!z&v>pBfl0yM?`9{F^{^*w+EqlyKXiK+0Nqw?0Wb@EOIMK}w+j0DDYJHKw_n?EnA(07*qoM6N<$ Eg4@t-&Hw-a delta 369 zcmV-%0gnEU0)YdN8Gi!+002Qe{R;p90Kia8R7Lgx0P+9;?f?Ml%*^D(#Nq$|-v9vJ z008}9VftNN`B+%_R8{!+`1kks_V)Jm_4V}h^z$_}^D;8>E-v~20Q_iZ`$a|iKR@|7 zIr0<~@(>X54GsE9N%{Ht^BEca0091Rar{qD`uh6xA0PBKHh=w7Q~XLx`}_O#B_;Je zJ>~!a{&#o&Sy}y5RQ*p-{QUg(D=Ys10RDM-{#;!B{r&ebG4@16|9gA(EG+5(0RH~| z_)}B&PEP&j=lta4_~77f#tugS004YRL_t&t9RwDza7;Rplunf}p}5q+&gPrf4lD P00000NkvXXu0mjfy-c{F diff --git a/htdocs/theme/common/flags/pf.png b/htdocs/theme/common/flags/pf.png index 01ef8ff1db905c4733d167a0a3a8cd7fd0bbea8a..d1175fb1906e1c89be7e3361ee85153335abaadf 100644 GIT binary patch delta 336 zcmV-W0k8h{0^kCW8Gix*008-bnr;990VhdBK~#7FWs$RggK-$d^ABXrp1GLbFaUZ~$0YS?uIw@Jplp5`P5vijT)nCIS+P#Oam8 z;jsJlsC*q(aYrqdOS9Q*^h&SS8w>`aP#7B!sTBRZ_H^-FflShDGO^%>H7XDquhY#+ ze`_B*8ulhf@uE^r_}n_3E))p5Z8n?Spj}!!m>!=7jFn@7O73%OwOYLR13oKc_3ECj zU~Jt1yae44UP)LimZxCU=Pv|!3jyy`DtMt#z$2LqUK11NN#2b_m5us-kq?Y`CkOy{ iC=gm?0A?ifVYmS#LPPXw&`Zkz0000xs8Gi!+002Qe{R;p90Kia8R7Jx80Ji`Dr~m+*0087+VdGt0;#gSY zQ&ZnhPv1*R+(bm&JUrGkG}JCG=4WT%L`2*)G}$aH)*&I&78cMA4e9CW{QUg;`}_L( z`p)3(lC{nB^z`%d^YZfY-{0T;{r&9q@}IH4n1q;;ufpZ;?0@Fw=KlWv^YfbO++NUW zVZD)p@9v8A_4WMx=kM)s<7i0en^EiOWcT;q_V)Jt{Lt>yd+*|c`T5BB`1sQR0PA{s z=U!gsSy}0FbLeet%m4r(Txq}n0041GL_t&t9ROS`! z^YgT-eZSrJpIVnrCFL=d$CQ_DmL%CO!=>6w5+MZPA3&WT=Hd>!WdHyG07*qoM6N<$ Ef>=Pu5dZ)H diff --git a/htdocs/theme/common/flags/pg.png b/htdocs/theme/common/flags/pg.png index 28e777d9a3590ac1309dc21d2270da1bfb89ca19..bb0d3efe45bff649b7eda81f515c20c50fd4b783 100644 GIT binary patch delta 347 zcmV-h0i^zi1M32i8Gix*008-bnr;990WwKMK~#7FV+a%wc)`H%AB_HDpwCQ9$Oxzs z1bVBhZ&X+RD=meizuDP9^rtxW_u7PC$uU1eLxJeKj}KHsMMXtSZ0y{?K%giD{qgbn z?d|@n!|CT`+aG((f25jy)zU!M07R8BF_!`ZL8{%ss!!ScxPNT|MBi3v12uecc1F># zXYbzGbLMz^djqWk$^lIUqHhy5zU|TeTBZtQe6_VjXgGNAU{FvHQ1!-*8{NFU(@agT z7#e;tG6EX>wMF&IHu=v^QYacAX1ln!0NFs&3=C$-$^bQd78mPY%Jw0K< t1Rw+A6QF*$!yraLdT8Gi!+002Qe{R;p90Kia8R7C&)0B-;QWo2btU0slnkWx}oOG`^c zL_{_=HZ(6UW;Hd`F)`i%0I{*LjEsyZC@32o93c}Em>nGR0s{0hGMk*7Q4kQ#85#2z z7I=7g^(rXydKu^d0Kvh*MoUZegeCO0AM-*Q^*uejy}g}LQGfJ9L-=Jj_K_&|yesu~ zC3#$2(os?TOicSnNBW3D`N}-_+cfs7EBRGb`%6dp(>?gSH}_0TjeC38dwc$Mb^U8= z{Bvddtzi0NT>k(7{Qv+@Eo@T&004qXL_t&t9Rq6R6w!A{UE8Np1c`U~_q_ z6}A2nVRdxUU#-$uCBj>0XDNI_{!IhjSH``QVZ=arMlji!uvbM!T7n{|0ssI2_y;|c VE%*pv;Pn6i002ovPDHLkV1hvMpgjNp diff --git a/htdocs/theme/common/flags/ph.png b/htdocs/theme/common/flags/ph.png index 758d91a3647e693e64ebc9d961c68c82bfc3a37d..0c8e2d010a9ed0ef554a47bece36ec3f64837b70 100644 GIT binary patch delta 346 zcmV-g0j2)@0_p;g8Gix*008-bnr;990WnELK~#7FVpzL&Is-!^2Fk@iUQqP^zxkIp zr{>SURatqmy!=>E(NQ4E%sd1^i3$5+WA{Xa?+gy!?&GrsP!~DCMi50&bYg6{VQt$s zVwSP$hIL~#-nflxyA2yVMNkE`?J@qJ^sYTQ<9pu6GYdTbN`I*iwzu!`4?nE`YHPPE zD>h3?*0ZyhK|;bTzE}l;Qcl;;DSbLVenEMkX*a==9s-1X;1v_|PKSq2;EQcay1qkc zGazJ7(^OUMo;Qv4=8k~Y$YBR~WpJP*A*U#>5fesGSymn$lC!g=v@|g>QHYM_gM$HU zG;-P5cMz;=uv0is>d}GH+U7Iu6s)^sp2_l>R9ovW{bw++si|h+=O++-z%-QldMnVZ s2t`Ezg#psw3Id{E4C9kK7q0C51N%1yud}W(9{>OV07*qoM6N<$f-2~q>Hq)$ delta 364 zcmV-y0h9jf0{jAy8Gi!+002Qe{R;p90Kia8R7LoecL008gr8uaYS`BYT* zMn?5JJM%O&@-8m)^yvNl{`>p-`l_w?G&J`wFZL=b^&}+p931iz67dTQ^z`-p{qy|% z)cyVC`q9hzWoG^Tc>DZ~{QT?s^78)vx&8fE{QSxK`fH|*mVa|Lg=Hdn0002~{@QnU z#zH}`Jw2{8G^!~nq#z)l002tT(&ut=#Y{}JMnAQEo~xD-I=&o?f$>6@hL%|HAU=iz4nJ zrelwJQv_P^5~BK?R57iQR@6xqftb|wpo%C)_W=YESw#RqK==dGA0u$w%UKWr0000< KMNUMnLSTZ5F0>5* diff --git a/htdocs/theme/common/flags/pk.png b/htdocs/theme/common/flags/pk.png index 310cf3640225f2b2e2a030139ac99132489ca570..56922033f7522fbab471e49990d074f3e93d292a 100644 GIT binary patch delta 371 zcmV-(0gV2j1Cs-gDSz?#@#XX70EqwqcK`rp003G5|NsB@{P%yze{#cfY`|@6ylZ2< zVqUsmT)13VwpUWJQcSQ*07d}*{{Hm&^i{T1QM6G-twlSjJ2j;>F{Cjop({$RO1s~? zrqrfAr#(TeL9ExTBby@tIsk^qhT-qw)#%kfsXy@c@cjJz@_+d9Myp1W%#!Nz>N27+ zT(n#rnH}!*?|j62ES)SAl@tIe09UV9`uh4Vp)Szm(A?_W3y=#!r$RNNHRbK)+vnTe z^f6Na0053jL_t(|0WC{KLd8%FoaA}k+Z|ih-2Wn60C&FEEuIkqK(tKIUU~tR-a-N) zT^!*Mtp7jTU}>KEnDXjwbNhY!Qj7%R{!|6mMyXrX$JgXjv#T&rr(2^8rINDM z(*8bQ^DBR8l;94L({y)h!|Jm)9wdPCNj&Q0{qpduTIRGg^@S;T?y8IF854pZD~)L4 RlHvdW002ovPDHLkV1gPszaszu delta 384 zcmV-`0e}9J1E2$tDSzed<=f}m09pV5MgRah001cf>hkLR{QUa*`tbJfUbRA~Mt`eDT(n&A`SJAm^jx@H z;qT$q=+(R5yFsi$O0G)(|NmpXVr;-|F{Cl~{P%yze{#cfShiQ?^W^}E004IY0A>Kl zo)B38005gwL_t&tTUEiqPQpMKh0*WMl%`@WEu?PTnz-TpU%(e|Lqb?V*f=!}kru1v zXX=`Bw1!dw5P7_Vf6fx7DUOGSkNK=k%|UmuQ)pkdt53_{aCER4L(%v;vtlO)@ETUJ zNp0EU@ZDlx#IirmG-O}7?|l_G&qLMM*D^lZ@S6aH>RexvQIg?Jdb;U0ImP%R`%|hr e-vT5d5CH!__dOCpeIthe0000XtZaQ&pS?BJNCwL(x?svZNoG`#6d}3z6uutZ};Q&MgkjvIvp6j|W+1GnY zDXv=oSto8*9e(QgwFc5fp`OpNuF*U2wwZ}kGZ#f9RATt``d>JmJ};LA@avV^Eu_aN z`tZB3TsE$cheBnbx~*M=T|F9gw>$`uKkG1iFR-*RBK3I8kC`7YBH~_JE8wj$n6*QB glF&)eoo%Mc7syRfJ47oJ9RL6T07*qoM6N<$g2EkX@c;k- delta 337 zcmV-X0j~b{0pS9W8Gi!+002Qe{R;p90Kia8R7Lav0PX+)>Hq-d0080u0N(%r-2edi zU|{-PUHDj8_)}E(PfzwrO8P}b^+QATJ3I3;Gx9Dj`~U#^Wo7z5KlwU3_cb;5FE92g zD)l5J^dBGd85!~v6!H)d@eK|9YHIsRN&IeZ{7+B*j*k6wbbtG3X#Mf={{H^`{r&y? z{rvp=`}_O)`uh3#`S|$w_xJbq_V)Gl_2<^s|MBtv|NrUP+3Vfi{qOPp?(X~T?fL8L z_vz{M=H~I^@ZkwXcFO(@OTM5m>W!X#nRr+ob{MGj=fm$?fXXd_2K;|INP6`x+PEc+9@;3&3Ia jJQe`b0!VtPlqBjOx#$@@g!-t500000NkvXXu0mjfnJT-u diff --git a/htdocs/theme/common/flags/pm.png b/htdocs/theme/common/flags/pm.png index dab08881a6c7afb3f90d98e264eb14c953c4d936..fe73f0e73fa1c95e12e606fb496aa9af423711e4 100644 GIT binary patch delta 365 zcmV-z0h0cX1C0ZaDSsni1@41w004mi0A%Oq=lICMc6i8tfWF|gU|y=kC}mzO6jy=;oxEXYt!MqqcPTHaYIC)nE(JM zuGTC7004+dL_t(|0WHI|PDD`vhQaSYeif^5=jhB-@Up zrcjs7^@msAyJl%hIT9%~n<4z*rY;60Y-lg^>we8s?kMX(@1-1T(uXh0#2C*4trXi^yF_LR;|MB?;``oz%Hk5$1e_W%F@ M07*qoM6N<$f;vF2Z~y=R diff --git a/htdocs/theme/common/flags/pn.png b/htdocs/theme/common/flags/pn.png index aec27da5bedf93c7a9d9ab260dad6980ca70522b..43fd151f7bb15be026f5bb08bc067d7b28382d99 100644 GIT binary patch delta 359 zcmV-t0hs=g1BU~UDSu;O%lnj*Uvb}iX}|JnZaZDue_gA)V}u(y#{d9%003nG08CJD z=g!sj|L*SB&*=Tq(e&f#vbpSb1SyqO?q7sCTShT6T19f?ay4b;`BZ+kc*`L0Y3nW`t&QOTl+U4L$$^yBIM($Vs2ZvLX5 z-J-O+V}y6CURri^i;$Umsde|JsP(h9RBNmM?(Wym=wo5aUvb}iX}>#N+kaiF8#%|s zH_3AV004|hL_t&t9RSump)1+5gZcL}K6*AwI2DY3H~; z{CgdH8*Ltdq-wpzF5lXh5iy6M_eYcKan-J-i~f>usd!fJU5o9Ec_B`6Cg;Dh<<00Br};X?um1R_Pd4vC0}3N``)AOQRT)O0gYO^e{q P00000NkvXXu0mjff+n>X diff --git a/htdocs/theme/common/flags/pr.png b/htdocs/theme/common/flags/pr.png index 28f866bd6e0eaf09f02effc719a3c99139bc2003..19140e57ab8d51d673b87fb6ceaae9196d91b4f5 100644 GIT binary patch delta 363 zcmV-x0hIoX1N#Dy8Gix*008-bnr;990YXVcK~#7FZILr~L{SulZ+^)1Q%@7ywr$&X zx}XiZIDa5h#kOr5W6#?wCr;k_)~WV)@7eb;#J$=a|`9khc3wMwl4%C`?1AOV8}bxV_OZB>T}$JJFmkTkFml8yzyrkmTk ztu0tKGusXhrj^taV_F=Ev;Dj^P7Z2oYgLDN?UIr4qChai=Yt6z55Q?40V~15q;ywA z_fBdqHAY<=jAX_D&p@xFMgeSsG$!tm$`zk`OC%DpNc73>>@0(j8Ye?K$@}E?@PS$) zN{QFU$M5V855Ego1GgWC2U5}RT~UVm0P3*a@a=cv9X@IJ4-ONkEAKK$Vd?+?002ov JPDHLkV1hGEqcZ>i delta 380 zcmV-?0fYYg0*nKY8Gi!+002Qe{R;p90Kia8R7C&)*MD}!3_xJYo_4D%b@$K!|zrSv2 z{Yy*x+}!*1_xSeq_Vo1h*~!U$dHlq}{Xs$c*lTm$XlUGGVt?0JS=3ck+-z+6`}|Z< z{G2_5$S5ep9UYL4{?gI@TwDICXsXOwZ2$oOUSR(D`T69}&wp#^@aFRT`S|(u_4V@d zw|lteetqM2cH(hz$N&JdbGbPH004(cL_t&t*DcP?3PDi-0O1*&awHPv-%{3h?d?5< zD9MeeyCCKGi**It`8FfvIV=D`z^oXFa(qcX$scA#r>wA=!Y)mpX2rc*IW(xVA*O2I zF!NJ7bzP#^+Zcw`OY_i*xg%tIH4OZmTl=BrV{vV0dyAT4iV27YYbuHW8dQ~kyNG{$ a|8Bn_2_?K{NM5Pfy1IQk%zXLI@B5v|DEVh>ggkY0bhfrKG&MDYS~{h4^78T| zVlki3Pft&$1<>AZ&CkEe%PW;i`E=6h#M1GnVMQLsv-w}1Rp^YpBVi@{*f>-7{x z>2x}+R*SV#sU#*sERBs2EFzI5D;sM#pW7OZ2J3eM+UC?$Q+zxyboYE{tJP{43Wb6d z&<3a)<5LWSBcIzUl?pqoV6LiSX5$^cYa`fs70^Dej!NE7j@^z4+XxF-5Aa^`c3yA> zyjh;Zq$9w2;y^~8h5Nda@yYy>o07bXJitHZ1IUcej0j#01`y~!%_pRYhR=~i6U^cE ZiXG`61wLSiW?KLN002ovPDHLkV1kj)o`V1Y delta 354 zcmV-o0iFKW0`dZo8Gi!+002Qe{R;p90Kia8R7H{i002_}0AK(BM*sjg001ih`v3sw zY+{s~U1GjsT)JFSwNps3NJ6baJE}W4r#Sp*X!}G&wP`;!sWmXBFesuZA)g@{n;ZN} zO5IaR`HqqJ`1tqt_xASo_4W1i^z`%d^YZfY(9qERZ*ToiP=ESFN&a13`G|@1_4WN$ zR{Wix`}_O(`T5q?*8czi|9X1VYK*2ZgO-kHoVmyXx?|+)^ zSQI6smO7*Fs#~h68efzoHe>X=zmlZ!XjISZyRzc>Hm}Qc&Qq+=WmNa==yL;M1& diff --git a/htdocs/theme/common/flags/pt.png b/htdocs/theme/common/flags/pt.png index 1dbc37f12839a41205ce8e5d11c795a09cfdc564..f7b64d0e870fb52ce0c7bf68ee5ef78e77504e86 100644 GIT binary patch delta 357 zcmV-r0h<2$0`&rr8Gix*008-bnr;990X#`WK~#7FU6BK9EKwMRC+0@`;tii|TeWT5 zc2q`n8`QSlhHX&Wwv9E-My^M8l??K}J92j-hMH_xAu z0zS6Nwc4662WP=%H|{zR05#3LcaQb&->zIh8xZjKX^b9od1h~72HHi}cjh-TeZycd zzkMSGqimzG0euK(tE+Pdy!{B9vz`wZzh9}+6yXEmRqh1=19bHKMf4~xY;*8Epr)_r zbhJkbn(3Ox>0bXKEcSgnsD2NQJfBe00PSt4gnudjz9)SLzti90i_`d007_s0NnrpV4q=H zn_5zpQuj+s_C!SWJUsU|HuW+x^errErD{ZuL_LQ+L6J1`H7WHZB=j5{@)HyB4Gl?= zNmG$Uwz@;v!aV4yHR@?9o3v5qcwFj(cHzl208IdNtaQ%EPk-%vPVU{^*68}~x;F4Z zFv-YN_1o0u(A4g8R`9qz^*lCsu6W|mSM+C0@~ubtJUx4`dugIv`N2{9Q%CwjLj7=Y z{cCIdV`KSOSNs3~^Z)>h^E{*g004DKL_t&t9R4VDXe}&7qL9O^bt@${r_%x~YEu{2I zv-hXkng0A7|NI2@_%$V=^+vGv07K{W_a^`R0R8(E-R)B!o`3XHxcynX@;t2N8JzPw zs`UUl;@j&*E2Qoenes)k`<~T~cfz6&m+~{F^8ha1d&aWF;$g($TNs=33zhL*y!vN8 zE?EEo0DehCK~#7FMTi4-1yBq`=e`ED&Hb;ahqcXbI~gM+A;eI+kP-|rzFZQs`x^`_ zLAO-qAfO1EnOl*u0g?YQ*yBH>IvbU=U5fN@?~-!O)BIfqE4%#Gv*Ul}c8rPL2hO1J zw^gycJT8T$|Nrybr(6Gd=2F6n(2};)mj$WX0}8DleXG*U`v3p{07*qoM6N<$f*1kA A#sB~S delta 367 zcmV-#0g(QK1CRrdDt~tO0A=w2Ti|RN06F3SF5Uoe_F=yJUA+2Oy7^MJ_)WF? zOSAVzu=YW%_&cigG^zD7rt>YN^Z_a+&f^8kYVamD`s{C@!3>qRT1?o+t^S-bM~ z_%%GNgUaZCT)X-JlmGlQ zTBZO10ED;-4tN#zKI;o43n8l_|Z6(w}6z|~R z*ab;ZUfyaDBWRV8QdA!lwtMKP3`!Q#VM?D3k;;$^K9BQDpB3jw1;>q%hSe!6eBDxF z=qA$3fp@o-lB?E68Y~a@tQ+#>eYSuxi?}CsL(V^S!2U*n0{Z&N_y#7;H9Uj9*+c*U N002ovPDHLkV1n`G#rFUJ diff --git a/htdocs/theme/common/flags/py.png b/htdocs/theme/common/flags/py.png index ac02fc5bc6e987dd84118dc06f065f3291ae9263..0a534a8874e11d6f092edb14d7cd6a16a78a1f04 100644 GIT binary patch delta 321 zcmV-H0lxm{0?`7H8Gix*008-bnr;990T@X{K~#7FRnD_|1W^Qv0fqf<=B#40k;QfBU`h37FkQqjjB!%Y<@CgKpHgF^f7=H{iyx-oUe?nBOkn|94 zuZhuqz+PT5deAgYQ54({P9BT`CtDOn{^($St);4ai`m(*vq_RP3x5B3ceWr1(DIXSemA>c)yfUztq!NMdZ;3N;=kKyN!`u-un=NI<=iNQ;_0L5(g&V3j4zGSyQ zgOrB*VD(*6`8q9#%ew}#spkgxk5I@gXrKD59eg)HvAf=AVRSJI9B9!iWZfMar^a58 T8;Wr-00000NkvXXu0mjf^~jSF delta 343 zcmV-d0jU1b0_Osd8Gi!+002Qe{R;p90Kia8R7C&<%K!kl005_hnd^O(>2r+dXoKWo zedAho-&AqlPHo*pWZOAg*YEK6_xJqt_4@Pl`tkGm?C$jI?DFaA@aO69(A41V@A>}z z{`~y>`}_O)`ug|T+3J9K>Unea)Y0|z_4M@g^YioX^85MH(0`h}dT@ct_RPrk_V)VS z+wzc#{r2|$`T6?v_4xDi_VDoM-QE8H0RMV={ajr8R8;&-O#4Me`8qoHFE95@OzZ#v z{&I8uYis;tWBmXC^#A}JdBnf~003f1L_t&t9ROJj`b}c%jMnC+6U=TZ;o2#TI#4OnZ3#{ pr_^)HwxyEzyA97sk_163_y>S=8$2ViYtaAz002ovPDHLkV1gwL$>RV3 diff --git a/htdocs/theme/common/flags/qa.png b/htdocs/theme/common/flags/qa.png index e9c75e98be8538a41676ebf693dc2f1c3beaffe9..67b5b836fc052df8f32ea57ed051994d86775fc3 100644 GIT binary patch delta 304 zcmV-00nh%F1Hb~18Gix*008-bnr;990S8G$K~#7FV*L5_>puo4_{Z=sNkZt%=ifl~ z7Xa6Dz!3ouL;;wbZ~y|RzjZ_e5kzoBDJn!Hf(SxM=tm_$I0>>lZ{GHHrq*dN#_acu zjm=l|@90@QusWS;YOUq!@#w$_x;xy>9I#TfcdPT~*9ij+{eNo*&{ms3*MSx`L3~XLp<{M17$ft&xW`T*j zw=AXD9_IVfDMTH}SxW-r59#}`eRVUm?9iwM9v7BBpt|4NMFvbAc|=-I4)y?v)Y*4# z@2=rb*3Mps~IMshId@dG@0`W5wS^1X?_y7Q^wn=5XLyXM;0000F4L?<>lk!;THe^0002{ z`}_L(`uX|!`1tsRRZoLaN`Fm8eMmxjML%~zJ9a)dayvC~I5G0@@cjJzlV)LbJ2Y@M zFKjU>Xe=dUCLduU8(ka}ctJXJJT+t|Aay@C{r&y>{QH@2YJYu4Ky5NBc|tt(^Yi}x z{(wwHa5ph~MnL!V^`Urlg;Gm(JvNC~QGrcI|NsA{fP9NuRE1Ja`Stalc5s|?ZI)_f zj$c~!_48K^1tS0e2><~5+o>i10056kL_t&tTRq3S3c^4XMbUk3UidBoLJI9Htp)!d ztSyCnfr@A*gnf)NMyt5Gr9%fRi4#XofDVxkvZ-$CddK^$ecr)LF^hF|wLTaf+#hj> zb#=8;7~q)?!BrD0+btIGj!OvEhqBF$gw!qXo56p4*5)yJCewG*m@DKJ@~E#%L9pqYDif)$}iU*idzhp?2Y*0PXHOn&>1n&v15g>#ANp+vficHbdL?Ib+kd j?ca1K%>y!k90&jaqP8lX0MuMd00000NkvXXu0mjfndPCR delta 384 zcmV-`0e}AC0+0ic8Gi!+002Qe{R;p90Kia8R7FH=yDV3*7e}SLySuZnu&S!6pP!%1 z0071S0I$E}s=eW+x!$3*-RFVg{=;r3;>~3P}YF+7OTJ2<3S9`^>!{wT< z+2rKp;^N}!S4rqnL*`9Bx5(%2?(XaB>+4-lW{1r2@$tON>3^=jJ_UQq6K zYS;h(Z;#Qz&+F{#>+x`8a+1=t#pkZT(9kFwK1-2d$DNrHon;=rCEBK1v@5W5H9;M0Ew#VU|Ofhqmr6v@H z$2Wd2S;~^`ocg`_c=2I4;@qYutyq8je8xD2)J^kWxS?IiakS}HC9v3$9c^4yrBzi$ ebrL~Q6yYED!!?Vxw>K^T0000 diff --git a/htdocs/theme/common/flags/ro.png b/htdocs/theme/common/flags/ro.png index d914fde33f14cde3d2632aaa680e98bb62005085..5f046be666654b03c1eac1bf906af9bdb185ace3 100644 GIT binary patch delta 315 zcmV-B0mS}?1Iq%C8Gix*008-bnr;990TM|>K~#7FVq{P{&hYyW0}Q-BV9O3@f*jCu zi-7=|b!p##=Rakt=*!E?_I7^S$#o(vl4U-Uqho}$gnx)gM}b4I0It7ZwM@up z#3+N3*22I6gf`wQlnDW2MgvBog3gQ3C^U=k_Ld5-Af3`$*g5}$_L1dmRJuq`Dgb3P zkR>XG9LnhU@nJ*w)Eiy`kWm^%Q@^B{KO^O|PD3dE5R~>hWowgfI);KSk_xO*@BCjc zqSVR!+quL!gEZ)Eg{tG6ooxX~TH|)qDbnS^T(xEp@+saMTG9a(z!zIq4c&%#JM#bl N002ovPDHLkV1m)+mGuAs delta 375 zcmV--0f_#~0*3>T8Gi!+002Qe{R;p90Kia8R7C&+xBvjH=ez*x!2si_0N?-s-2eb& zh~8X--B^I$RD9j@^HcTpOZWFg^Yc9P=Q;K_H}o+v^(-t!aMwL**Z21=_4Oq5^d9u& z9P$zpYL4JablN~{+4Ay3`1m#R92@`;zHgD>Pk7u#aohR%JAd})D0G(N`uaijBqa4c zJ?Q`d03E~o`$zZbFnXHg_V!r({7m@jHup(M{ryq->^*mw=lJ+|{rzqH{AK&_VEI>9 z03yfl-2nFC0QK1b^8*7b6ceEU004qXL_t&t9RrxE=ri diff --git a/htdocs/theme/common/flags/ru.png b/htdocs/theme/common/flags/ru.png index 5ab028885c1df6da322a02a3f88f19e1012404c0..33d5ccd0159a4642b6d51af24b89201f7b82e774 100644 GIT binary patch delta 293 zcmV+=0owlB0<{8=8Gix*008-bnr;990Q^ZrK~#7Fg^$HS1W^z~YYew5&Xvt)BftXK zG)RIB@I*EM+&Qhym!AG?_k7&yP;IY9l72tngQ|*On@XJk5Q%$|O%7mULWmIRWCDPh zffS+tMZ*KDWIjr@}nYE-pp7eSExZfAoaJIJg+-}E!tm0V| rl#a_ful_I$bRH39q53v@^$Jlh1d`*Z&MXUX00000NkvXXu0mjft%ZrX delta 330 zcmV-Q0k!_M0@?zQ8Gi!+002Qe{R;p90Kia8R7LXu0PFw&0Q1?Vc^*cNBG&J-rE&4=6`aM1PG&J=gA@dd%@eK{L007)-jM7JN&pl|$GGE6h zR>K@kz7j=y00000{cmsmPfz?xO8rJg`#?bYJ3II`Huo?v_kSuY_97zn7#Q;a0OoXb z{#8}|P*43oKlQP({+yitm6iOBjrfCu_kDf!_4WV%|Ns8}{`~y>`uh6!_xJYp_TJv= z^78%f@A~ZQ_UP#H2U05NUt|Ms46a^93`C*9+?XOG5}w?U{thJMy*CSr8h30 zE&v?>08apnPTKka0034=L_t(|0Y%6K0Yfni0MWZKPe4u7zpgQSEQRv~5CK!MF1My$ zFJUdJ(tjpM|LVUI@4DKdC|l&aF(_g()Zn3k3EGb)Ph&bj#Q(~;M_OsT0=xk>00TG| V3432pYlr{<002ovPDHLkV1kH-eC7ZE delta 283 zcmV+$0p$MM0_OsdDK-FV002(_05Sjo9ROdtU{thJMy*CSr8h30E_B0YQnW%yuQxoX zDlVcNC7lr-nG5;*0Q>xLk((O^+TH-;;{cI>7=HtS{gcW5b-MjB`7@;mAmh#r}rD{C>Rm)X;=_w(S6T z`~YV409f!riO)&^003f1L_t&t*G-N~3V<*SL}#QRr7pyk7jWPE-^(9TYBEJC49Uw2 z4NzqUuw%8#mV6j5&Q~OOn@GT6NG76I3C*F5(i^=gkeE3&a0i|y*abPb=(8ZU*X=~H h`{DbM@@R=)c>&6n5Od&*&;|ei002ovPDHLkV1i3Pg+%}W diff --git a/htdocs/theme/common/flags/sa.png b/htdocs/theme/common/flags/sa.png index a65b59e06a1c6d8362883fed6399d209ecbd6aeb..bffec7e1a22897050d9c39f3a7a7fc8f2d489919 100644 GIT binary patch delta 355 zcmV-p0i6Dm1B3&RDt}7=07C!(HUI!5000vJ0001hvw(lIe|xZdc&>PMtaWm#ac-w= zX{2dpqGn;9U|gG9R+m*wkxM~}KsACjQIt?$pkA55n!M7zugtM|s(Y%*tg*|ov&^-& z&bW%Sj4694l)aU%%C5H1xR$$^k++kg!=xp7B}a`$SDIF+$bYHM-_M!7nqZn@aHDg8 zt${>~L?Cn@RF_jgh(9`oIwE!$@%lA#L% z62*W|<|H2+OZ^Ax%=LMgs}F2)%Cyn-CeUGMM0WBA!_);}3> zeRAy^mph%6v#1AQ3xI2%d_M1V9`ugw4eU$=001R|9>T&Pm;C?$002ovPDHLkV1n{; Bqf-C? delta 370 zcmV-&0ge8I1Cs-gDt{yZ022TJ003#EX=b8kVV+=In_E_wRZ)~sOp!}Sk4Hp{L_vx` zKZia#g*r8YH2^jMZl`TLh&(TTFDZK{nZ24Aa2Il_aZ;60t<0>q(6_eEwzJK%vCFcq z%C5Z9y&`rY07C$FtaVqKR#cZ$K!`sjc_kopA9${KsK}|#-+#}d!=#F|j9{8#aHDg8 zt$};6dz8JEw$QkiyO^`gwUM`zM~y}RO8|efe_x;rE;QwIW2jaEM4;g}DEPz1R~HL@b=sw9}DV@;q7q zT)4p8bLJ&xyhdK0EeRY;53XXWn04 z;96VUrkAMX$#3J*V^&xdo}TK`()ChO+e=H>Mn%>@Kij;ac<9VO%EL!Wj!FOk0ORBM zkAI` !viOP{SjC3hu5i$h08-?yEDzrI5(dn_V$BDJ;f*ni4Ern5yHavVE_J4s62 zcyGGDsEAdMHWY0XG=Vg#n3>hMY}3d(4rvaqqP1|GK*q0%zQt%#lT)vm000R9$(TP| z0001mNkl2uLu6 zGM|=-7YJiucVN$dl7_Jl8yDLN@`Y=`Q99~;i2lx(;+Gk^&Odk(S)kj=ieuudLV&ia zW^&K?HXxYDe)Hpk$?vcVG9ME6U)Z2~2cXkZI6E06008{PCKS&7wKxC(002ovPDHLk FV1hxAsm%ZY delta 365 zcmV-z0h0cQ1C0ZaDSyS60I!(<{90LHJ1n%EL!+oIoOWA{=rY6m1j^X%1{`;7Ll|s+gJ8xNOtNI;OKl zC3huKQrmcMx>b)h0RhOhweX&v>PJW4kAI` !FTKtMm+_<#8PT3g(tr0Yvd*hWRx zx1EB&zC(+P=i}q}a&zLJtv}Mz^}L~Y=*&N7XWn04;HHJR!w1^H2zK1jQ z`Ps?h!j;pk#%4lEvlm{5+k`9Z9N(hJ<%WC6I0KE+FA8?>gFlv9@j78`VZo zyA5iaaca9kZQHhuXC$51&%8PDId^6dLILu$wIPlZLvNv-W6B7DyL-EctgI}aw-dpU zR$ROpZDkB>A-Zh`h(? sj{#6c2!ZdPv%uB3^TIe?Byd+7hf|#sTT#~LI{*Lx07*qoM6N<$g1&5^<^TWy delta 367 zcmV-#0g(Rc0{;S#8Gi!+002Qe{R;p90Kia8R7HeR4J(x;2apEH zeTDY5wd?2K&*;*n*QbNXgJ!#CLastNra3R8F8}~}*4uphnML|QK=@Qu_>-3R=I!+K z^z8NX004)VnW+5wOZYlE_(@6j*4OUv?z7pmaB#%f*=YGYJb(B$HuiOO^}@pQ@$%&4 z>so%1xEhM~%-!e8=_m^#A~E zd8ON2lG5Jn_51t#M}o=f@$<#p?kH!x01A(TyyE)$`uX|!9e;GeKatOt2q-#u!<&YM$0Dbi(rT@~_S002G*jw%J9L%|@5dHgmrKVXY;D!vIyKO-?z! z0001-NklXo~Q1N46Nc(Z$A5)to}|2~0e+aQYdKgtgtW@qFUuLKkng z62!OK9h#xL&F)V4t|f`o1EYH{E9dS&tnPXKMrB2&wqKS)pSC~J8br%(Ez(~!YsU%x c6+QP10I)hVW&;*u*8l(j07*qoM6N<$f{Yi-ssI20 delta 388 zcmV-~0ek+T1E&L!EPo|~!vFz@01A%)A)Npem;eB609B>a)YMa+)cgDU`uh6y`ukFX z%1xEhMwiehbgP^6~&-t$DTK`T6;f!Q&`ryefFa9dyAMS+sz**#Jqi zYM$0dg2~0)?(FpUEp)>5_4TjKDOQn9^0GCI&3@PJF8=?6u`Ui4hL{}u+DLgR={bEr z4}sbHr~?Ub%6;60&aS|6&<@c+?JjkmINgi^#pCEDTTGiCMU(X0OQv6Yj1%oZA^U5w z0!^Dnpg401RrM$I3*S2AE~4Ps;l6N+z|P}{Lz1CcC!{57U~mMR$l0000Hm_~l$o_5H{6=fO-uQb>C*dO)J&(0KR!s_qh>_i4&)@*`c6HHu8XKXz zvXZo@(3O*8&&;$XB{9L^?Lgl`J3i3gJn8A~q$FoV1g-7QAAj2Wpzpk|=%A==w$Y{4 zc(huapnQ&_E5i^XC#n{mFrz9xf?lTNHt zS5p&~6N<)*Fnzu@nN0UV^HDRs#viyw?u%=H8#4IONd{PFjbgML=;^N}q;NZQzy#R>-Pq$BHv1Q)! z-ue0Y`1ttt_V)Gl_4M@g^Yin~&CPPgb5*-lT&Y}m$#~%O}^#A}ua|C_>003l3L_t&t9R#-In$VYX!b%95e-@d z#!*sATi31x8fb2o^6(2QZ5rk~{|D_wMHF!I0ylNB>aMhDG%IU4myt{-01LKup1o?2 z04gyDtx{HCevPtxSU}}(x}v7u=@4*izmRiMqnz14UFjW9&sV?4nU4)G5!kkV`Rm*F z=jUXX^p)V!4^Z8i&awJnK&B%e@U{rv&If|%##PHQl*7Uz8gm9kbQEI!6)nF2;Mj8b pMhLsqM!BfUl|oMT%Qv-QNHJ002ovPDHLkV1j4RnqdF{ delta 375 zcmV--0f_$R0*3>T8Gi!+002Qe{R;p90Kia8R7C(8V*nFf00~y@p#bcg0000(001%o z03iS*Y+#?hT%EmGnYsDdRruIY_tr~Bjw0R7@{{Mt|Z*-87? zM)uAt^~@vl$s6*=6!yQh|+004qXL_t&tTRq3I3c@fHhSC2^V=Rh-u7WS%;^0_) z|G}4V)TI<^OmMij;-bP?4xOYjsOq5tYJy<$C9vYMIPXQrl>^*+k_9XWcaC5?k_Fa? zlh43jCBp`_9tQdFKT=eN?-53<&~GzFscltzYifAT9o}iu1fxZbIDjKSLi`9x`T!JT VHqKQdJAD8E002ovPDHLkV1ghk z19kf35>ThaJKUj7i8ia(P za`|gC0I%qwrQ7m(cYaQ$hw{gvN$`mP=Xh7wUa`pZ-5qahLqhl!&iU2B0sluR@f2fY znsttp{{iPDfHv0xc!4p7@9=;O&egB4z4y*p09@%R^(3q%OAN3{Z4crRXx&1ne~ao) P00000NkvXXu0mjf{pOLj delta 363 zcmV-x0hIpD0{a4x8Gi!+002Qe{R;p90Kia8R7Lgc>+|X9@#p96PkxJMMdU8L4W2xKIm9j#Q*@~008*3 zwEXVw_N1inSz7H!N9#dB>O4H@H#X=oG3P5QBM008~+^7+fl%m4uX_V)R_yz+Q> z>_S5FYisKX3EThx)BpfThPxO5004GLL_t&t9RY^GYO?nQ_a^bb|KACJGuQELDI002ov JPDHLkV1mJB%rXD~ diff --git a/htdocs/theme/common/flags/sh.png b/htdocs/theme/common/flags/sh.png index a4633de4fc51852d0123e8d9b3fc1d012c1b3d39..e0be2f5198b18a92ce491728940e7eb02777a3a4 100644 GIT binary patch delta 371 zcmV-(0gV2Y1Cs-gDSzcHIdp@?G)$`S2Momn8hv-Q!51?C0D=GjcK`rpLRYT#q^Ql% z<@A@D@~*R>t=VdQ!ee&6UvaxyZn{-zw*UZ3{)L47a&Y};X6RvRP-L`5U9vn9u zwhbNt0053jL_t(|0VRq$*X=qwLoZ!=(N9CW1!0@B!*mvLVw>eiP!2K#pUA#Rv zjDpJFQ81e7{jZwYvcA4fh3|NH@Lc#cpxH?PxI3owWsI9`JRs>slB{}^<_E$vDzF|n RSP=jK002ovPDHLkV1mmywM75` delta 373 zcmV-*0gC>U1C;}iDSrR}cK`rp002t>0672vGirUpV|Kn@al2Y>x>aenP-L`AVYNnG zvO-s`JW{JSPpC9Zsxe8YD@3FvKA|8wpBpxz6)>9s0D^Rb#a@v*T#-XnX}C5{uaSCe zWszl}1uwb5;)$Ef#cPAPWP+Ne)SiQ3&Cuocq^PpI-|l#Q;D2?3t-0RohK!Gjy*^g6 z!K+o%v_a3WImH7S{)L47XJ-9!aL=(ox}r+(2Mp+8YV?t=Z)*IemAv!51@y zMc)ko0059lL_t&t9R*xY$Bm0T8&EQ{;xo%(h3`iU1n#0oD(jc zpSIug{?|wVp>E!kr8A#y!QDL$e$3XXN--KDBze~?VQiBfpx~5(^+ T&~hB$00000NkvXXu0mjf*`lsO diff --git a/htdocs/theme/common/flags/si.png b/htdocs/theme/common/flags/si.png index a73dd8c2bc6f76e7d40878abf83652a8cb3ab26a..e3d28edc5849249d34121fe804d12b64e9cb0ba1 100644 GIT binary patch delta 315 zcmV-B0mT0F0_g&fDS!3#_44xa?(XjD>gwd><^TWx_V@h#{r&p-`uF$ujgsSZd)WQ^ z`}X$s0};dE;PiZh-feZ-Wo*`4W7APw)J;^*004*p0Jrq9xAE@wL{HH`OwBt<&p1WP zE~_%t;1EiLsSA@dd%@eK{(008=1TlrE`^E5Qw008O$0DGdy5&!@IWJyFpRCobm zWB>t1KnY`EfItAlz`G~KWeoOT4R@_ul8!Fb1HIh>CEk0@1J@7A#-q<L008`CWcpiM`BGE(Mn?5JJM%O&^erv=Jw5m| zH1#1N^A;BI4Goc=8-D-*w{&~hQC!qXRMkXJ(K|`cI7Q1ZK+P^Z$tN|&A1=fgD8m2% zh?ZHSs$`v}Uz$Kn&GfOi@$U9bRL%nt!;O;T;NbLpgWhd*+GT9kTVvDp_4WV%|NZ;> z{r&y=`ug|x_xASo>gwwD_x$qm^6u{L-vU1}yk#-L*XTsl@@1S)!b1}a=D+}$;~ zFBdM)s()O5-&wuZx@vsPQy@K&2PsROSsie+xSYtMe0?qJ!+#sR_jGZtj8Om+L@9%< zWn&Y~&BDa80_U8p$gGjH2eFY4m1uBI!VpYsI}U5{+(P!6Z3T1EI(~k1s&`vLzj-!7 z10Kw9-clg`h%HzSzb0I(OVZPmJ36b*TAG--p6aWOw9Oope}8`oDPrZ&0M5=N60t4q zv8PMo)_}K$En|f=NLEU;w;!x+#Hq)$07*qo IM6N<$g3?)`S^xk5 delta 385 zcmV-{0e=4a0+9od8Gi!+002Qe{R;p90Kia8R7KPP0L=gZ^78Tk53cI!>cjv5y#N5U z006N70PSR9?Ot5@`T2UKge0u9iN9aF2=Q=m#G%?~SCh%cj zeyHc`R8sJAaqC)F=ul1zqcS`I004|hL_t&t*GHK~#7FZO;R2<8c%R@Lyv!R-;pRjgzyD z;B4EzIh<|V(H4v`X4_kB+x*si`IP@h;xHJ(*|jsi6=tSmgBMwVq+6Au-kd{;h+_w14MhS)V;Ct>@&`ax*J9 zkebi%!9Rr3MJW4cGwNjOZ~q+ga}I^v&gGaNKTS$oeeh!oZhzXm`EKL#^A&jUdp)8c zd;$uhvav`+!RF{rcEae##O-fC7ufxyPyR7{+2G3twD1&k6T(R=6lPbV1_gM>&!vk` z7mnWcnK^tFCQlEY!=FedW(a~r=8Y&g=4YAM?ma-U okN()PAY}Usv|*%?IAIt8Zmb_ijYZs`d;kCd07*qoM6N<$g5I8|hyVZp delta 351 zcmV-l0igco0`CHl8Gi!+002Qe{R;p90Kia8R7LUt0O|k$;Q#>L008&^0Q_WP`deH0 zSX%i~Q}{+k^fx#3D=YPOdho5Y^BEcO4GpFM0O5O#=7yBl!`fzc+0a5-&NfiWDn`d6 zKLH@igPH4wb;E0J&fv4dS##Y`XV*$&)LGK*4?RoykaJOKE5A{cmEy z6=)oY3Hk2!4Os6a*$o*sh@1u;QiM6~m)rW;?W@G`J08#LTlKfu%i@HeZJX>Ry0$Ls xQl(TMRr45;UR$GaZcff*e-2(pVj_Yd#6L77Az=15TuA@`002ovPDHLkV1fc838Gix*008-bnr;990SZY(K~#7FjnK70b3p*W@&A)gX>fNbGeO46 z1o$ZU6r`iU>2P;{=aIW$U4G{-5v%;*KvR?P<&_`>CPpUsAdRf%RCA$)U-b@1r<7BR z#l;lwOrHbBC> zxNW6}jus%nW@gvYt*yOcvEkt0U2A7dNhu@cZ|4MXcW?0CUNz9){|~lO zyw1))K$aQ!oh)S*{wYOEOV}cGI=l$xsd?bb6JK8VrVNPB;XcF@0$Bh6002ovPDHLk FV1iBgjuHR> delta 339 zcmV-Z0j&PR0^7#YP44ZxtF>WYfxf`a0FeBgR{-E(u?Zf@CXYS(3D z*7NiF{{H^_{QUd-`}+F&`1ttt_V)Gl_4M@g^Yio5)8E$C;(t5TJE!fZlj)O==#Gl! ziiPBbf#QLC;(K)6b8Ovgg5QAvvj70Y0D|U%XW?jL-C|zeUR>K;R@qil*HcT^OG4B_ z0G$AI;&cGP006uI0H**G%r}ex003S|L_t&t9RAAJA-002ovPDHLkV1m-2rkel& diff --git a/htdocs/theme/common/flags/sm.png b/htdocs/theme/common/flags/sm.png index abaed46622b7448188c100b30b6f4c44abf119ee..cd0c52f47547b2f84bdaa2d608f6ffda6db352d0 100644 GIT binary patch delta 346 zcmV-g0j2)<0_p;g8Gix*008-bnr;990WnELK~#7FU5UpNhcrL!0wEmhk|0 z{ENi>Y_$7otkQn7;lj0LzN}znozqB@)pet0m$h@Hm}gauNPkM7^me)Zqs-Ecx3N#6 z_3`)p{{H^`{r&v>{EoPR;LMucv|aZ0_VxAk*WT#y_y79(`svPZ`T6bU?=`x0p^AP0000X+-) z>S~@+6;-JE%~dKgL z7zAj?jKmn(GS&%gS}N59jRYn^J8~!z>@Oy$ec!ij$K&bGiDj+P{*y>(PfsDJT&P4l zY#f8Y4*Z||v0N?-s-2eb! zzhPXxTv)kSRJm09`%?G!M)mYN_BS{5F){TlENH@LMzTRZu08koH23!}_Vz0D^(6H2 z9r6+q0C@mPwMzNPzC$ah%0S^NA;@AgKX)IpcgJm>Q^0D%B{$$I$rHup(M{rz+O{cZg8Y5ekK z`}$z{S6BSt0QuSg^8*8Al-UXZ004POL_t&t9Rkc@B-fd z6xvc*Vg*^&yCdF4SUYo&;%MvQ({7_7K2k2s;I!Y!0FVp{Av7KY8s-9%IxFwY+D zxPQAI*=4^*Ib#)+gHVl zPeQ4(dktZ3!(Hv7MiRp{qiSVRn%k5L#7obmh`IFOGn{6(jd-3hp`u~^Qiz%`4f5cB zVKi#n2FdoOPQb}A3{5}e7~zZv8vhF#!xfDc3nl^Eb~!MS&u$O^0000R$704&}B zZuWq^`hC3mdAa#@xA}3j_-(THX|VTWuK8lD_FJg+S*G(=r1Ddu@&I=Eguwi1vioGP z`&_E{Ri^e&qV-Cj^hTZZMx66Onesc9@c?`LiNgDAwEL{n`hR-3_L|A|1%dsG#Qkx% z{gA}@;_dj3#{PD?{lVS(@$~t=+V@SN^$msol*#^iy#Bb_``GFFveo!er1lVp{(Zjw zRj2tAiT`}N`f#-OA(8*=U+CNb004_gL_t&tTP?yn4uU`whSC2Uh9IN0R#v(OD--v> z2n%Zp6CMHX+<5^TPY$mlm315~$ zmKIc<*;db&)b880$2?9oZdwuJk$|Ec8ak#hF#a zxZIQdllYQ920MB~3)HO2m?=bsSjElTZ7jODvls5~t1AEdg@5bpGlZjd6*l6)+Qt+s zm6yYV4miC$g{MaojzodkH^uui^p&jZ9C8YOf2bvBwXMAPmz&-qen~!sYZs~Njherx zTnzvk-WYNw`Blc9p;m7v#+JbKcI(h^hlmRYVc#A?-xK z-#bvk5_STp8bnF1@}e4A@c4Ke!$w$HT5a7oX}Ji{7YRZg`~NU}*mu0lJkJvFE|GNv=^^6dBf`1Seq^7ixS@9D|e%l!ZV{dafyU0(fJ zTKiR1_)$>yOH1}hL-j*G^fx&5GBffnF!d`d-v9vqZgBihPk;PMO8Z7e_(4MX$T;}6 zGWNnM^&%qk7#QXN0Q!PJ`SUsVd@%JrJ^Rf@`q)4Iij4hbX8WvC_C`qU`SJSw`qSmr z0EYm3%6oOlb#TRSP_|HP*v_Z`004AJL_t&t*G-N~3W5L>0B6KLC@KW6RnXQO6nOm5 zD|CPkkOd}$fnp00S`Nd&*Z@Ea2w)?ibf{i#UIn;=2-L>;2?yk%r@lWLCgv70j7i3J zGRjY`d-0XwW->}uMUi)9tf=aDXC;C^NLdEbzeI+`vwp%12H_Jqu0b3`00000NkvXX Hu0mjfzZIvS diff --git a/htdocs/theme/common/flags/st.png b/htdocs/theme/common/flags/st.png index fa50b4301e981d19a1c52293ba3843aafe8fa7ab..b5121fbcdfc45bf7016a4c2305ce8f4eed13203c 100644 GIT binary patch delta 351 zcmV-l0igc>0`CHl8Gix*008-bnr;990X9iQK~#7FZP5d4tU(k7;EDBY+qP|+wQbu$ z5!JSB+lm^qwz1|}Gx>IZ-E&8zk`NL>NT52Fihc8*zZ^;(tPM)}lrIUZMV4qI_T6 zcr7x&b`R!OFT>2j*_q{6Nj;JP=hsh;-!EiXtT(W-{Jb#l4uf%zO1+8Fl%#7E${7mv zN$rqafMNOxP>m0$xOeX&GN=m+IgR`Hm;kEVz^*jIo002ovPDHLkV1gV5qND%- delta 367 zcmV-#0g(Rh0{;S#8Gi!+002Qe{R;p90Kia8R7JD^003(M08#(|GXMZ80Pz3-%zt8E zzFb+lRZ+H0OS4Btu|YwvJUXj1Go~*8007{3X1Z@gDx@PLp&T5Y6BU^a{cUaeXH52r zMeX!O>+(42@h#}=C+6-P@=0X0R2=``*%tE`$qZsIDem=F!l8&=H(xnmm2c& z6!!KrxY7Xrc6RmlJ~%iltf@APiY5JkRQHut@b5wObzJcFRPOar=R diff --git a/htdocs/theme/common/flags/sv.png b/htdocs/theme/common/flags/sv.png index 8604c1f58644373222beb3de170c90d1d500e922..5b0824ef95692033d1b4731281ba059336d9864e 100644 GIT binary patch delta 325 zcmV-L0lNP60@VVL8Gix*008-bnr;990USw0K~#7FWYDv=oKYBn;deZ1rHpM=ahuzU z(?|VWNo=!I(*bA=s1mF7REVZ(K|BQ8xit@@o_$(AvVX4-f>VW<0;XmLU}j?G z=Bi#SWM6-pOsOhO?q1L5{@+}+!mcBi>+8HGl}arvEM)s0=f!_Z?eueSazZ`w_3*-2>FdXeZ{dE!`g;7x7aM`znWVc9!e z);3txFH_SgPSL%|^Wo?E*WdQl-1O7h^wHSz&DQYD)bGjB?tjG1>xY@s{r&y?{QUd- z`}+F&`1ts_%%Jx6_VxAk^z`)e^Yi89<;c?VkFH|r)_LC4fZO5ulcC!HCDe_g?N)T) z04djno9lj-=l~kg01?mgc22_p003}FL_t&t9R#wpj=QQS=FZPG^*x0-W*3-wqIZqzzGlK2Gb0v2!OWbx# zCCA&mh8iV)v?7f&f~2`K?ztWWxqOYj@e4?*R4Ua!_DmeUF1)2U00000NkvXXu0mjf DOOV5U diff --git a/htdocs/theme/common/flags/sy.png b/htdocs/theme/common/flags/sy.png index 0e5972c1a922546d6338e84c0a7ea458d9bb20fe..ceee459b20e96ff733912713b4eb791482ba12de 100644 GIT binary patch delta 311 zcmV-70m%OB0>=W78Gix*008-bnr;990S-w-K~#7FbWk-y15prNYm+u@>^!*kIR)GX zhYF|6A-2NZ-T%nn;qRZtVTzGwE1?9Rm3`T*@Aw5VzI(&yh(bb~ccg$YUyO-}ILm}c zm_vZa<>jQ19v(SOcVj+z^f5LL3DUrtvV!mxW6xzN`Hk-M0+HElnuj+y}d}K zs(Z~~W@pX_sshDMZcjh(lb#wES!-48YGH3-ZFg;UV^+_(?b-Hmdwg^JLrp}9sy!f` z)lP$^ui34@aBc7wZu{%KU!M@(+}xDQWj*A-QfU}&ZEb~aYqeT?dwYn;%&vp~KTl6j zu0KCNyZ-w6>M(k>T20fm_^p*n#S_ML00RIH`H1i!1aBh`006q;7NYt#qXqx~002ov JPDHLkV1o9wlY{^O delta 348 zcmV-i0i*uM0_*~i8Gi!+002Qe{R;p90Kia8R7C&)0AyrjTU%RFQd3JyOGHFOK0ZD= zIyy8oG%YPHAt50a78VT+4esvl{QUg;`}_L(`uX|!`1ttu_xJYp_VxAk^z`)e^YilZ z^3TuD{r&y>{QLC#_MO$A@%iwK&W_>m;nC62{{H@@+oxQ*UVriN@$>lh>GSK>*4F<3 z0RMY>{$5`GSy}y5RQ*v=`AkgvMMe2MJ@_{__c1Z{EG+B*0RDD%{cv&pYis;tWBOcN z`Bzu?Q&ar_0Qvv`^Z)?tb$p-z003u6L_t&t9RUm1M&ipDSuCk#zcd}IDEM;a=II2unbzIvd-bH%HE~K*`L7HnY`2UkplbF zl=;bg^}%lSy=3yYSl3ekf&c)>c6Gm7TEbXVqES&$NlEnU=jFn=yi-i8H8iFwDYHXB zJpcgQnqk?@$jggQdLSU&sCA>8n8m-mW?^EFi;22`LZO|un}4XsnngxCG&JMj-p8)5 zgL060jkU5&Op`h~PBb*+wz8QQ7w)l6?W{xUraA4hQMdfdWtv1!umWC+FnEr1ake72rAUw)=eN9RL6T delta 354 zcmV-o0iFKx0)hjODSt0=x*KG$3|gfCMV$aIjyQa|rNr5vz}A_()0Vlc6G8$OtV8klR7$1G&DOjG{wKX zvf-@+<&Nbqnns!VPcPqiRHq% zx`0BTHKmp+04lF>*snPAi`KwqES)2Q%t5RDf`rv^}%jWi^j6f;jPNvM1#a; z%C!6d004bSL_t&t9R{-iRsa35vr|W zAuod=zg@BsKBzM42*g1VL@~07*qoM6N<$f~%aS A*#H0l diff --git a/htdocs/theme/common/flags/tc.png b/htdocs/theme/common/flags/tc.png index e7e9a0a18a04fa9f152de2d0494dbbe6f1c56af1..f640d7d5c0e2c42e19f97a65b01cc3ffa44e71e8 100644 GIT binary patch delta 357 zcmV-r0h<1f1BC;SDSx(SczbxF3M`6yBSmO7V*mhQ002wdxx(Gl-qx+R)}N{3$j_Co z(`JaeVT8F|fVEY6vrl!d001z}85!n@isg8B;%I5rZ*)*^s6c3{S$3Iog^fyauJNa) z;D3S3hm*5}nMG`@JYuQcx=`@TUgfnixS~&AbE%h?xs!&cJAY-RCLyFM~alW zfOMQTV4*Krq|&lM$+I=Uq(J}x6l;vVGF+f6SDk~uO_0Mxv70_3P?%C^c`{doD^Pxo zY9Sc_004kVL_t(|0VPTUq61M7OJ*OxZKJ*aooc&l4mDb+TFDr0wT<*Jqgw+7z<`JsOqdfzx6>0*^nRP3BW<700000NkvXXu0mjf DwbiI3 delta 366 zcmV-!0g?WN1C9fbDSrR}O8@{c000yK0AXQ-xm|#@ReG~eb*@Tru0?FDKxnEvWu-P? zp)y>cELWXoh`J(Bm@-#{D^PxGjJ;B5dC9Xiz@$NgzfF+CM6sJbXf|Vtl(~C&qJVUq zlZK}+S)|gkK|ErqUvsJA$j_ITxwC|s%ZHPduG7}7x8%~H_J8Tk<+U=mpGVud!ttl3 z;D3SUiHhC2Q1HuMxS~(Z85!kxcj9Pi)o*lAZ>U*znRA7W3M`7<)ZW&gskUc$dm}|K z3by%1~B;hgW>j^JYn7^ z3^4HX>F-aj49I{5sJc5}3&Q#S^RI|}EhpPIAp8IS-$0U$`zL$)1GwtfGiLy(9E-$= zVi<-d!@Dxw|7vCCnpNk!xH3IiT2yy^Pi$~&Dp#xilAD+WL4O~5e%4uG(vJ=w(&4Y2 zT2zxXJbQJMqG8@ElG7;l-eMM}vC^W^tV~8i)mDOvKEhatIKXfooJ;Elr$U2e_WCvn zh$@V^*AKMh0+8$q{pV06Y0JNh+?taoV!Z07*qoM6N<$f&~tl;{X5v delta 372 zcmV-)0gL|D0)zvQ8Gi!+002Qe{R;p90Kia8R7C(5qW}Sx!K(n)xd6?V0LTCUzyJVv zlGSmJ)Ml041x1o!VuC&+y}9?BHAK&{X6tFX!ER@#Sjp;%M#CTz};RDI=HM8pChxO@t>PATELPGJ`Z13ov`0kYV?T_@~i0)@- z*#H0)L%G|@A@0@%=eqz+Anw-y004hUL_t&t9RK+$_m$Ov&@6f_8-ZM6R- z1VRYzpv?c1=xrPyJxpf-H-NMc=nD}AOyOk}5@es;cqRZXM6=boDC@3j6^OEi-Pg ShG0oj$L_rXSce|2=(+R2z1OP=m z5dshi06}mO9YO+tBS-}S94G`30ssjF1VF?g$;A=xc4lUp*;$19?X&;x`#!TV%$wQ1O7;Woz{dn5iMT;O4B!5DryW5@$map%T7aKAd z2!O8lr3y(BsAEEVxmhLyq-!D&gU&_DpBMOPN;kvmGe;I!0Zr}M_@C{rdN5}Htk zIISHF6{i&d;D1j-?3_L3e+X+GFEc>f)#}ONCX3W{>OZ_a-G7>pKzS)Naw$N7^z!Ou&n+c_Ks#fEponO{OvM-_~!x z5$LHgWx=_lXPy8x0Anf~8j%R_9Etsc0TloMWfLni;d@-o00000NkvXXu0mjf$QY4b delta 383 zcmV-_0f7GT0*?cb8Gi!+002Qe{R;p90Kia8R7C&)R{#J;001oj02OwGxN(2CZhW(9 zd9!78uVHbnUTvvbX{T0Yq)%X?k(toB#=T{{H^_OiW8%qf%p}jF`s#QBgruoc(QW zZF{q6cd}q_tXylU`~U#hh{MwW004?fL_t&t*G0!a3xZG>N8$6k_c|n6I5Y=+gMy~M zeq${SZQ;~Xka$%7DPNU_0uP+w(HdlAa4bL&i0C2=%B}Vr?HnAyhPKMua&}0Dk}gasU8g0RDV@{&jY3#%p4|U|6|UP_#|}OaT9d zh5nnH{?O3n%`MuJ0RG(E{{H^^Q&aonNBi1D`PMx6)iw9iF!s?a z_0A*bodEu|w*BPf`bkN0xIbvJG-IwST&pEJu{$`YHZh|vDu19WC7mT5nH>Nz09CLx zVX!Yxr5XFh0Q}@?``t?ZMn$edKdd`l zVO`1q004AJL_t(|0VRVqLIXemz>*W(CUnAK!}>ZL-Wtuhb?{UbH0}i0u@LlUSG*m9Ys=xlf rLh%`aX$;1U$fwdml2O()r)&pPJKE#1f|+QSyBeE|E#0Q}@?``tm^R zodAIX)tu*JL|8r)XGzJwEfw3$k5K$2sL=Zp#_yc=@8{2BbwqO7N002ovPDHLkV1lmcsY?I= diff --git a/htdocs/theme/common/flags/th.png b/htdocs/theme/common/flags/th.png index c0c7a6862a113a3274daaf0067acd41859d47b91..211ff7d1e2f9122e8ac6a1d08c6a14ba0f448d26 100644 GIT binary patch delta 308 zcmV-40n7gG0>lE48Gix*008-bnr;990Sie)K~#7Fg;9Y66lkwW1G9-uxV zggzw#Tor-pXC80z z0uZ7U@Zr(UZU5q(d$_y5dV3#p(q;fgq?{2{L(T;eL(t@Gw!d0EH=@M%uRDY+RU#}v z^xI8;-NIrJZg=-i=ktTE+d^an4FfWv#7aucg``~F2q(wgdVTI=jBVR8bG@SJsiML# z4F1!(?Y?LGwJnV5trsE+!5O4Z_+z=0Ky}Cp@kc;)c)>Ro+z67*-%>jO0000wcb92ORaKUP9zh`K>Vq>~nT)0_VwNq5IPEfA^09yb6dw)+)v`R{{Mn&jLn3F$$x;x|NsB~{{HFd>Hh!# z|AK-3dVBnCZv6lN`Tzht+L_h>003!8L_t&t9RLC<*=1DgfW wDgzcI`2;|oALEbSHAU60)&!IuDpgAAA3|*vskTNY9{>OV07*qoM6N<$f)IeC0{{R3 diff --git a/htdocs/theme/common/flags/tj.png b/htdocs/theme/common/flags/tj.png index 2dc4a0d1c068e3c45362e9be91024fa402f06484..4a00524dfb17d397115c5c025a2c16dea05ccf8f 100644 GIT binary patch delta 326 zcmV-M0lEJ50@ebM8Gix*008-bnr;990Ub$1K~#7FR8KWtH8Bv+)AkeG{SF*}o8a2u z?pAUQ+SlXIk;x>3rpqgTi8KS?lAwXw1t48g;!gSe)Zr*M-hb&ByIscnd75QsQr|hC5`EC9V2q(Uc7Ml5dM+@h^8tSL|P%WwbDHH2?qr07*qoM6N<$f=YRsQUCw| delta 357 zcmV-r0h<2S0`&rr8Gi!+002Qe{R;p90Kia8R7C(900000WT0eSnq63zSW=TyOO8uK zibOt!K01RsHGnlTeKIY2EiQa6BXuJlaUK?I77b<%^78Wh{QUd-`}+F&`T6-i`O+oPYM;m-N+i^!4@m>9+Xt z-S*jj*x11jsT@eX`8n2+pQ4$==A*zBP0001g!v*^yhNl*?ehy%2saH zOl8zweBS2i_j`-J$;Nr0s+7;jU#F*fMPI!tN5}vGi(GZqva^1j)kSAWFSArZiC*|&2E>Xo4LAnQfkD*yMIs@IKw$q%ec0Gk(`;` z(pWG|$t+m4Tcl86q)3*QVgLYp+0IQ$g>F@%Jr6LwWO~|>o`J8hUD(iN>)cM$%UFqC z3f2Gs0DMVAK~#7F4TA%A!~hfkXJXa1?tiFS59R)Kl7Rq<&m)N z)?HL0I^UjWuvspOzt~Jvs~IMDuczvSNoS>>8CdE!JG*LdnE~I++1=moW^TV3BphtF y^D2*%A4nLN#bZQrk(|Hxzwv@82z!_CFb)HQbtc?oH&w*|0000f$#HXiv%fnZZo`JElWUsJYrKMz5qCF2Vy>5fvOl8!J zm7=-1ZqLYH+0ISFyHG4xwYau_k(`;`(pWfD(OaZYV5CTvmVaUwIK$S>ZkM8)xw>{m zU%i5kg#ZG?dXnYl>GvQ%#$J5hva^1AgN*v*^yhNl*?hV* zS-oQ9@{ zM+?C2xIuCQp>bT$k%YcW&*)^@bx0Ly1>@dykBk+C&(=9-ub4Lh6v1SZZ6DWadYD0I zoA*3Uk14}f&vCB}j4H`e4iX!K!cHXTT-T{p`ipOBL)n)k=>vU0nE(0n6d;hm3*ZON Wfiu(Dd`GbW0000F+{)+K@A9KK>tW!+TjR=u6DQg++F>)@4mT9=K(y=_r7~4 zv_;`(O9+L(5Xa%XuULQ6$3gf!h=yj=?=!+~7X+OS@O7OUjen)8dbL^{n5KDqf9k)g z(N!y~*Fm5tzI+Hs+Vjd~w^VZT`Bb23t($Sv{W|fVv_SvIUgUDFEZZ!YOdc%DLUTE+ zy?w|SMWYG=*j};7?C)%LAxUvy@vmB~j;@c%KOmCOB<)1NCn$>A>m6YN*_D;OyPdS1 zOa=qvz%UHF%~bZGskBsf*xN}P;K$520XA`7_UWRM+MC;-q6nNqAr9`wXE+X>H#hgj tK>(Hp>`<`540c=Oe`Fe)GhZ{~`~qcC=LP;Qb20z`002ovPDHLkV1nAjrYHaa delta 368 zcmV-$0gwLc0)PXM8Gi!+002Qe{R;p90Kia8R7G120P+9;>;M4e007_s0Nnrp0001; zmSXy{SovmI`Bql=Qd0LzOZG%W^*lWHHa7M#G4d`hYHDhTj7IX;Klye$_b)H@D=YOR zB=j5{@)HyB4Gl_4N_~M#=l zJXly-`rlIeL_>OddXJV__VZQzTuk{qJ({9l{)JloQ&ap*OtY(e{knYqfqMRQbp2~< z{9|MKTwMPN0Q~>}`2YZ|;OqJT004VQL_t&t9Rl1E z(;yTDaC~M)u4w`w+(7bt?hz3qMqHlr+zR{jUBsPfo$E$|Pd@I)&a_(9oR^+nr_%DH z7HusdpRx7)t13_!x}>fuO3oui81JtlM=P-Fuc|0g*i^fSiXs9CBK!f@JujDS&Skv- O0000HGEMo zc1zTGY|nFM(sE_B&b~*8VZYSKWSV&_c1bF9Mn;EUcBqQMV}D@DWM9_g+(Lw0CUQd| zZa=qRUe0P*pAUo3+ajJr7O^jwnhhIX3Ts(kQ zI)7C)d{HuaO)qv!EOtp}o_*Y!lF?~Y)rEd4bVep}Lm+NG8)`ZfWi$+8EdVG0ZlQwC zYFwFSSIuQpaHNFEWM9QwR3UCZ05Sk|r-;&WWw&5nM~Go|sDFygZD+w_VAkZ^kG7rw zIRJdCkJNc=wa&i3)X3xP=H7~Mg|L-Lieg=sbKR1R;-Q&f_O(+N{TI~PNO-&Kl){q1?IFy~I5pr$O z^N>rjcdO2E6K_F8$QcXuyj(Psk3P_oQ|xSX+604FpwA1zbNC9ev(txxLG6miQ07&~pJpMfpz&ZK(0;H`l U7Z|01`v3p{07*qoM6N<$f(JdP6951J diff --git a/htdocs/theme/common/flags/tn.png b/htdocs/theme/common/flags/tn.png index cc727ab9cafa87fedba3e3e4dcdd90628ef98ddd..81e1036038f0a7581422b58c9c3cf4970e9994ee 100644 GIT binary patch delta 360 zcmV-u0hj)b1NZ`v8Gix*008-bnr;990Y6DZK~#7FWsw7jL{S)pCv(!o$xW^aYo@hr z+cx54*KS}F|fjlrM_4bOL zonmXN(9pow)NtkHTyY7LmE{Y_H8mO)71F_hbbT#;e*=DPjei>-r=z3E@Nm-Y4hg{C z+5#xT7Z&opz1+?YJ3GU)x51`dE;>2+5djIH4cNuShRw~-^RKU*#{=l|bEdf&wnjpN z8PJ+8DiZVZ#PxOjt=VH^_>bP)q~G7E>T1~kPNy$`5n&6N8E6`vpaT2+jF+CCMg;_5 z|2Z5O1_5n%SYe1}Cnxg+0nh_JgNF(vLHw7Lzy=uo#t2}2nw^*kP=q-;LMMP+SwRfy zuiXwXIs)27{FjXxus#d`P{-IQfDJBf!H4wmXmO)+X`uoyz7uTy9Z|jj0000;2_Ur5Pp`rC$ zT=EkW@eK|9YHIsRN&2g+_he-Dw6yfAtMgS={Qv;{Zf^WfPk;JuZuy*?_~+;Le0=uX z+w&S4{&8~sQ&ar1vij-i`FD5qBP0EGcK%se{Zv%_wYB+!gZ}^k|9X1o*WOBFTPwqFf;W^ z9$~;U>|*K(T)`W79@)*z*J$zY>glb<9}z9vj~V7Gx<{AG1rHg9L^qu}GJN4k|E}wB zI>q78tX8pDL;!u?k|4)sLH-j<`S1R7JgSh1%?3Wi`$z0Q(SJ1Y^&M71o-xW*Hr#za zuNxu)>ovAp@%H*;=a@C6FblUVm$BO+@|VdQOtrhMf%d5IHkm}<<9v3qrKj|2i?T`F zH^^>eWWnNk4f4s>G$d7Upk>;iORWa^WCIA&>xTSnFsp`Y?hke?)RTm<8D_H(>8%yl wgAM@1l*}6SnIraa+wi;Ji$o1y=&9EH0d{RTVZL)mbpQYW07*qoM6N<$f($*7DgXcg delta 382 zcmV-^0fGLy0*(Wa8Gi!+002Qe{R;p90Kia8R7Lgx0P+9;?f?Ml008Cy0O9}u-v9vJ z008@8VftNN`B+%_R8{&E-v~20Q_cV`b0$fKR@|8 zI`}j+_bn~{r>n;Qt$8a@9*!ftJk{#004`p^<`qIt_ph^O<6#T}oMvv9i)LCi|#j~`Xh`rh_v zwk+9XA`h4-gph9I16Os&74^7`Dlr%rL~};9MPl|fpF diff --git a/htdocs/theme/common/flags/tr.png b/htdocs/theme/common/flags/tr.png index 2031bed4dac6ce15c83a0092a0ba1f715504bbb0..76fd8326c5e8ec0c8c046b59d31ffe975dc3a02f 100644 GIT binary patch delta 355 zcmV-p0i6Dl1M>oq8Gix*008-bnr;990Xj)UK~#7FOpz@N8bJ_+-ySqI7)S{6f@uW~ zfe#57ya0)$c!@4Pc!6jIrVRv#rU(o^B%muuujOv`=XG-%!oJMDJn>B?JEMrVT$F9; zg17S06#=_gB*wrixHhzg#!zeTC0Dl1Yd-r%igvL?}eb8E^ zDS#yKfp+6DMk5Y~n0--|N=&mTnCAtMIRDDIXt&YtbG35Qsr&iE{mJr$a63(`Q~TAC^nrZaf?)5(oM$`27`J9CBdKw~j`4#Imx7&!0s$6i delta 386 zcmV-|0e$}S0+Iue8Gi!+002Qe{R;p90Kia8R7Lav0PFw&0g5_=ku0jEwg& zG4&-S^dBGd85!~u6Y&iV{Az0ZNlE;&viRiW_}JL@*Vp|30Dt{%Zu_F5{PgttadG-# zVfVMU{C&&&>0Syq*hX=P7)%szP9S!t2Q@SI5Hb*UWb%7 diff --git a/htdocs/theme/common/flags/trans.png b/htdocs/theme/common/flags/trans.png index e001b642ee8035b6e4256c1993941da99aaf685f..aae5d4f086512515c283d79535496ff87b550201 100644 GIT binary patch delta 50 zcmbQv=rTbn&NxA$o{^b>fkE|l*eM{zUgGKN%6^lTgO^t%ShjLEP>8d@BeIx*fm;ZK886+f z`vVkYNq6*hWMJ6X&;2Kn7071}@Ck7}bLPycAQyEYm$4+sFPOpM*^M+Hhs)E&F@)oK aasrUe#K8DSagQ;O#o+1c=d#Wzp$PzfF(J7C diff --git a/htdocs/theme/common/flags/tt.png b/htdocs/theme/common/flags/tt.png index d280e2c7f5d9117792bced7f7e41546874de10ad..6ab522ff46dc4e59b0744934f865c7792ccbeca8 100644 GIT binary patch delta 376 zcmV-;0f+vZ1Be5V8Gix*008-bnr;990Z&OpK~#7FT#BvaksYJws*Vx>>Vrjda&B}^SsaVosgHyzg$kJ z!$WvF$xbH}!dJRK=|f5U6bg}LZMWO$bgJt*5B!YwdpR1(;eRmb_x)baYq!5!Ew^4* zfDpW9Xg;5JyIoDwAm!~AY&Jo)>b+Fla@i@BoMQ0_m`tMGE@1!~jRsc{)myF7X*-{H zYc(^I5h1|4PHq^Cv9GE#9*@2A*I?=0$29H5f@v$8 zeE@Mkrr%x(4RM1p_W#wP)%|#|W-|cd#elB>rjv?@=on)Uz@lmOb%+_t7?cKJed#nd zgeE%1*aINe@M#$Q2@rpgWZCpi_sv3_^_qLgmiFNufWIFy6>-t=cLxtLAc5PvcLM;8 W&;DLaXBf!<0000Dk@V`Q-AY)efBXi{Qv;`Pfz=s zoB8SK^A{KXbankxQ~K@gb#-<1hKBVcBlSH!{-&nj(plUAw_nZ9IfFO_%uIXz0RD z&wi0H|E$1f<2C=KGj~~dzfw^-=~Oe}#$!CFi{t!aGvOWtu3 qC;$O~p!X;O0003gt@ReVsla4gbO59}N5jgFk=%{DOfWKYn}z z10dt&%a;rg)z3eFFWmbmdBe?^HCKTsY~_`pWtV&wUvyh=&VOm{8Jk(BpPba3y?-%- zY#Rf}z$bY?^yly2laJmbR4+LXS8Xx0|xxvP1c9|ET(vxKoA21 pQbg*)kQ^9IRAe}q42*1a002&FD~<&8tJnYl002ovPDHLkV1j8Nk!Sz_ delta 377 zcmV-<0fzqP0*M2V8Gi!+002Qe{R;p90Kia8R7FGp04)Fj9smH5AppT+09gP400027 zcV??>TBl@EqFzg%T1LK!Ox?0O!;UzVNi_QU`uzO-`1ttt_V)7f^55Uz{PM!*=C@t3 z+ft^|Orz08pw2>_%siUQH5PkjWjeq^*Zpq^BOr+1Jxo9Yj z!u|dIo4=#y^Y{Gy{amcoR;koDm&s70&Hx>T|NsB~{{C^j;$yJc>FMcd006*^f4zx% zxPfuguVv)TWn};Wqg?=*ho24r004wZL_t&t9R?XNeo*{ADI~M{!S6Rl@&G|VfLh&uq(H?b$00000NkvXXu0mjfEkwLm diff --git a/htdocs/theme/common/flags/tw.png b/htdocs/theme/common/flags/tw.png index a99e1d04c5e3dffe8b48df53110b6ac36b3c7a9a..852cc914253d277bd6932e9ba6ac9917d33a1574 100644 GIT binary patch delta 322 zcmV-I0lof)1JVMJ8Gix*008-bnr;990U1d|K~#7Fg^@L01wjmlvxZaQTH+-a;1GL_ z*JB;Gc(*_BgF=8=f+$3hu|k*_^SQR>1x?qtn@PKqB!4(B{%kycBg@y(MZ0+u zVzHT61ZEf>Rn+a07*qoM6N<$f^ct?bN~PV delta 374 zcmV-+0g3+70)_*S8Gi!+002Qe{R;p90Kia8R7Lgx0P+9;?f?Ml008Cy0O9}u-v9vJ z008@8VftNN`Bqo>Qd0LzOZG%W^*%oIIy&<;HS;nu@-8m>008`EX8T1&`anSWIy(3^ zHTNwo_9`m%B_;G9AM+U*@)HyB4GsBgZu?3}_b@R0PfzqVHh%yYt9_l@Vu{pTgwj}l z&r^NRO?b=kHaY+yuzsK2bClUvfzj$aM)V*c04KAAq~DT~+4=eX`T6_oK}-2OJ(-!^ z{{H^$M^L!9=X#vncbVDR>wa1Q004nWL_t&t9ROWGiG-u-*4v;C}hryJ0by@$LrRi?^IK}b2c>bHmx6rv}(&3U~sHm8TY4{8x6%@ zhsEC|W;buz<>XYWRI+}{&>9$@DJ8P%;?+Ry)tFVe8|YQdsv^=UDys4k5ky4c4~u;> U@*nR>PXGV_07*qoM6N<$g2o=NLjV8( diff --git a/htdocs/theme/common/flags/tz.png b/htdocs/theme/common/flags/tz.png index 39a7d21dbe73b59262f423d619d64b16c4977f04..b11db56096b27b9e7fa226a67418f191ac8961c8 100644 GIT binary patch delta 354 zcmV-o0iFJd1A_yQDu0Op0EGYmc>rI*0KdHe0001b$$EFlcXGyaZp3bBziE`$TH5Mk z@9kWZk5*V%SWZq(TfJLUxl>ZLQc<`}uHZ-I=SI7?JwHD@H8eAMbV-Ge0B*-k)aXdz z-b8(SJd}C-b>QXLsU>R!o@Ss=1QE=h5$*-iiktl<$pm`vAj2^^Z+>GR8&Ic z?Kc;i^7Zpc!QopDmhk{A-p<_s)zW4&qTes1@?~UV;OJoH@LhDk$w004Q>_31MCdv5 z<(>cl0DehCK~#7FJ&DCZ1VI!9t9ECmy>Y#B;|Td@K@PaP`M*mg4t>lC+#l$k$z+g{_-bjx6Sf#EVjQ9?mi3_&73ujPCpJ zRX^m#N9K$#j(Z2Z@2Z?r;WL2s?R2!k83cIz00&bXog}wRX8-^I07*qoM6N<$f~ZBU A>i_@% delta 360 zcmV-u0hj)R1BnBWDt`a~g^vKv-2hXq002qM07U2jIN|^--eqKBSXfw-k5=I5VCL{$ zbim0#t@byl^e?3H)zW5ER6;*LJT){kR8TX*#WU3CNSx7zGos%Yn(_{o@c@Yc+UjHV z^GS+`LzIpy*yTaN;agO(ya0IsZp3b+-b>}@M$*nh#sy#VOM zER6sF0E9_IK~xCWJ;y-{!C(M@;rCU97D<})l?#`h{r{4SlRw}h2ZuGGHlN0t6VL52 z03)b@g7SAP14Y`F9{l2=8 zs7~5UO#qBy^?H7Cr;>`*I`tFyU`FD-mbRMJR%RwKdqH{!U*C5;pusD%GF~s;IsLVJ zM9d1J-KVRYOclXj)#w@hPjzD>sHMWF2*xA2h>i~;069@Nn5b&(z9((SKX-EmC|JQF mAjS_UH(B{(o4z{#3gCQMdd{w){r2 z`$DhzJg)gStN1Rb_b8+GAfNOUTMdddG?zW!Of{xPZd0EPcdv-fhw{%OMe zVZQrXy7~ZU^#EP*09Ws}-Y4<^003l3L_t&t9RZ zkV=RG6x(mLw^CG>qOq&{&slwRowsp(X}$rcsSbNtfYZ~xu>kPQ)Oa8%@gC##pX^pv$Ej@^UL=44#{d8T delta 350 zcmV-k0ipid0`3Bk8Gi!+002Qe{R;p90Kia8R7Ldw0O|k$;s5~M008@hVEKJl_;ybA zY(n#5HS%08_xu3-{ATs}M*8|a`1myR^(*u98S(KA-sAwQvjEuKYR=I_$;~&!$Sl3V z7ju080001Xc5FmMM7p}V`1kkLMMWGO9B}{uzH)P`O--Jioqug@X`C}NlOG@cc6R+z zQv1Tf_`AFII5_nsCHu_){OEc7<6HaRQ1{zJ_SiP`)G6bi0Q&!W`2Jk>{801xJ@WWB z@%J%>g?)W}bZ~EGWMo-QhR_=T003!8L_t&t9Rc$tg7FTd{uiUbt;rUSs_o wOQG31aW|GC5!RRSS1BUTO@<^QGXx_11J8CHHKGYs-T(jq07*qoM6N<$f<>vSvH$=8 diff --git a/htdocs/theme/common/flags/uk.png b/htdocs/theme/common/flags/uk.png index 025009e204571fcf4d702a2b5303f83899af82d3..e0cd9aa1eda10810d0ba16b110a333c852560453 100644 GIT binary patch delta 265 zcmV+k0rvi_0;vL!DSwKY&$`d;dz-{zgTdL|?W|#cP-U?^QmmLuX`!vw{I0M5{{P$I z^!bsE!o=PAg?#<}`;fNN|NsB~V`6cH#~3S);lAJgQBMEs>dn>a_%t(2{2RO)^GuH(Db^FMJMUx$cx z80dZLKf-ZMeZ#m`((@&dq4eTL4JD5e)|Ir*^giHL&pG$=-0%CIb$$YBS_V+FO02FPIw$uLp|M`V{!o=Nigvb6- zPW}D+>R?r5bG1BDtf8&e|NsB_k&XB?HHw+f|Lf}hV`9IVwb|Y6tYLp)gTdjx-@4E3 z{I0Lt;q;!(U!VX00EkIMK~xA^1;N1%f-n$8(fc~17C|?}m4E;LWhN%B3~B=w>3EJV z`F4dS;=#GUhyRrQ#oSXy%6F(XYG8HWC0ownX-<6RHg8ZEmZ?>2c>B781#9h~8m`_c z013c1k8)%Wi3TeQ^X^%DYa&Q_s%AO5<~50`Rd)L7AW3YF3fUwf2_z!H=D$CgAUY!4 TMZk>!0000$O@f$8kEHuB@z#K;5_i z@L4w8am_mln|b+?dh`h28<2o5frlG-xKT0O0Ed=tDr}bHD2l>6-vb8HI>t)uHi-@Q z|C|l5F(|Mxt8vX6H`Yip2MP1@^I(h9uvjc$pRJo=7)m%>n_JN5PoD@d%z1f+@Nf*| zLebRy`}?JT^aBu+j^71lj;S(+_5}K6NASg#rq^uy9 Wd|63t9B2ao0000CW delta 386 zcmV-|0e$|61Cj%f8Gi!+002Qe{R;p90Kia8R7KkX0n`8h$^Zbd005N$0CxZY!otG# z_V)Dk_4D)d^78WV@bK>L?(OaE?Ck97>gwp|=;7hv+uGaI)YQ<>&{R`X`YARLqq90I_NYs<}EGeDk|V6CfXw-(HFVl#e}7ql)49s*qqyK(gVn0O=clKq ztib91{{FVe>a@k@Pj|_Kb3xbu0050iL_t&t*ImNB3W87ohT-o$9)E_Akg~djwi*KO z{{n)hXfkRjkb446jPj^04bj6xCaG&1E%u9@gskj4=$T!HvW$#aTD|?jbA|s(1oT@g zHBn*nRb7Ii&)DG95ZBxRx~pkhRpj-N>hVa!`Pz$}^GHY-7=_Q*fywv`Mi`jtCXbXK g;zYn7Nqi%u50ShuFaSj0B>(^b07*qoM6N<$g5&hmh5!Hn diff --git a/htdocs/theme/common/flags/us.png b/htdocs/theme/common/flags/us.png index e6eeb28549eeda02c380a2549c1d95c4900b36de..b0786cfd9ae54e5940f2256214e5a1ac90dc35fc 100644 GIT binary patch delta 369 zcmV-%0gnEc1AzmO8Gix*008-bnr;990Z2(iK~#7FU6C_*bYT>P?~nf3zS;h_8C&I6 zv2EM#wu#+@RcyPCZQHp@=H3&3&#dRXGv8Up$*uoUF5Qxx8cBSDHy`e}>SRWml_d>` zqEOb&b2n^hC(p8MUfbg{&gJC=>EhzNrlwdLfZHU2g>++Bjep2%=ug=7=fEo=B7%2u zc^onuPd z+t~X0`t1Jx_xJYp_Vx7i^YQWV@$v8N?ds*_{O0E6;^N=*bYA>{Z2ro@{dsx(WoGHXo{k&%F7W44;R{C_xi`89O;FLL+;Z{YxG zy8ukK04uZmGBW*&cRYIe199co{{6JHsAFZop}zbHvDW$k diff --git a/htdocs/theme/common/flags/uy.png b/htdocs/theme/common/flags/uy.png index 45dd4d970b319d3e69f6efc9bfe0da104c18f94f..3a1f9bda917715be089089b1d933d5fe5015d726 100644 GIT binary patch delta 347 zcmV-h0i^!^0{a4xDSz?t@$c{O?d|RA>gnX<F@Nv$<_1oX!Z5@tIO=B$m*oV=%K{u zn!n>Hcg6MeTxW1ibnmf1~_)I^KZIfT$ul+*wKgzN3^`hWZU=F?p^?yb4Sb*tZMq}*AU)!*Ug*W2II*4)n1*2vD&!pP3W z+jv+2004GLL_t(|0WHcinu7rV0MVJXz4h9Ny4?R7K^xon{k`@H7)T5g2cjy9=+6EL zN*010cP|4D6;!oz$97j9B^Y0bBI=htu4$s&OR(d=t)z3;!PoAsSHTMdiLu~d*HT?1 t`A0ZAu~7X)np_>y-N2sZ1xI3nE`;d08j#@v;;;Y!002ovPDHLkV1hln+BX0I delta 350 zcmV-k0ipi;0{#M!DSzML=h@!m*W2II*4)n1*2vD&!pP3O!^#9ru6wTGb*tZMq}*ek z+g+R5S(w#Sl+;a;)Bpg4@%H=f^Z4uV_UZ5R=+SFQ`~3Cw`0?@a z_4MQJ?s@9!>GJZG_4Qoy^Jwku?ep`Vzsc42_wD%i?ezHliMHf}vg7aX@Z{v=;NajS ziG~jV004POL_t&t*G0@R3c^4D1<{$rLWB@aYa>_+3l`r01l~bGun}Ql1%vLcMFN)p z@fid3vFFVfI#V_0^$OY8Gix*008-bnr;990VzpDK~#7FjgJFNMR6R3|1;l|=VjZrZM&%{ zH#WX8+qP@S=9ulKZ1X(d+_&%g{%{B(K}}6di;IWB!L7K5-QBC18Izrz%Y>Lylw-*# zxV*eWO=4m%+}k@_T|M61Jei)}kBDeP7hm57=;&Ap*#-D~e1CF-uB`u7R}M!;wlUM# zs2HlKWU*uv0DnSyqUkMuF|ffc5?0xS!E&>}Vtwy?P1kG{hfF!^6fu)h^FRWy&nt&# zCQnaKk4*0G@9&u0+}vDWU*kM7GEdIW@Bj1n)zuZd0NelPZ-ATr{#kYg?$V$3hID=n zmUu}RSds9ya7*)IbHhSI-8^0OOm)RHMadLNC`=b&NlT(Zyyq48HTprxs8Gi!+002Qe{R;p90Kia8R7C(s001xm02KfL003mLWLv9SQl(Q% zp-V)aL_V87I+!{%lQb@nE+&p97={@Qe+^s!0J?I9q)B6;LtdRcSeZ6bl`&0|D@cwb zL537H?Ctgb{{H;@{QLX+`uh6#`1tqt_x1Jl^z`)e^YgvE(SPvp_`<@|^78ktTXU*Y zYoA13003Xz-R+Z-$H~d#+1TpB!r#@^>Oeo8F)@@*PNS@>)_8ck;^Obw+3aOyuwY=X zT3V_A04uq<*|W3P002ZhmPLF30041GL_t&t9RZnr z?-CK)ez%s0P}6~kP>ml5Qp<f9B>NP#X7w1ONa407*qoM6N<$ Ef@@f>wg3PC diff --git a/htdocs/theme/common/flags/va.png b/htdocs/theme/common/flags/va.png index 2394c5ebf18f8cbd7e3cba1e2c0295bef8ffb05e..ab65663eb182dc17f5e26fb8c9369d40b948fd57 100644 GIT binary patch delta 344 zcmV-e0jK_k1Ly*f8Gix*008-bnr;990WV2JK~#7FRgi;@9$^@Tr@n&TR>MDPP}^o$ zyBE;7YumPd+cw6t-t!KUZ%>}_dFBIGwx2IEB(QBMX(LCj^Lz@R zooH?{_SX_hZ&BE`6u*G8EEXkM5(J@~N&!KS-EQY%(8GUt delta 374 zcmV-+0g3+T0)_*S8Gi!+002Qe{R;p90J>02R7Kvu0NS?z*RufAtpLua0NK~W*4Eb3 z)6&n+&-?0n_vdr<*C`3?1lN~ zY4-K+@$ur^skq>$rta?U>gwv}$pHH3Zuj@~>*uV=x>ew@oqxNwug%cR{OyeU>2vt@ z?f3Whv$S}rh;Hf30{Hm%+uZ8OzkTb?2mJ7n`}*-QD{7`uzO# z>(3SM?ce0(%Fcd}6`>-ID#JB(r3vvHzaBSk3UIZRUY+xc5Yj|Q9U;X)HbwxD3~FJzRgm{az;<<=_w$jKySLH*)O_vV*rBhO1GZ#q_7!~f>)Y1oGo z4;uoJXa@GLUp>^$H>mh9wRHzzB|&ZH5Wp732p{A=Fa)r{_V!22kT!G|V}ppUQ)Ls! zm$whW2Iw_Gv1BIr@S$UC>m_!Hb-ydT0CuS36m?*6b02I$xWEwD+fTv<2w=19#l*fd z7#=o20NXq;J|&zF#XJWzeGh1kRdcf1Kuri(uOWICN({i$qXf1D0rMRtEz1A^002ov JPDHLkV1mDQrIi2x delta 385 zcmV-{0e=4b0+9od8Gi!+002Qe{R;p90Kia8R7C&)v;Y8+?7;x#wEzGl0Ays|W@px5 zVAS&STm1Y|_V`Ei_C)pdJL>W_F{LpnqA5*H&F}9<`1m#V_b#5(DV5JB^zO$qt`lSy)(DnB!B4eAN284quE46utMMO zIflzC?(!%go*+G{J$ZTLd&ow%-Zt#@OZ4<${QOM&`$Ygu0D^+v_xFAM{crsIV^+6S zOtMS>0LT5?0Q=Se_Rs(qW&wr(004|hL_t&tTRp@-3xYrZhvE0=JdX~Sfg=dS1ZZ2ANFeC;$eUH!-`D-4N$EC^qbV$)lXhoJ zj-az3*rayxuEMpQv5YiJxy+4)+Eo0KRf^<5gANPfy!QO4{h?_VV)iEiKR@BFsEI z(*OXCrKRdNHqx1y<>BJ-7#PWsO&fpo0s{MCV)#Zz`aM1MJ3I6-G4v=X^A;B2008+^ zRNVjo>i_`TFAoF&003c0L_t(|0Y%8cNkc&ZK*2Zrbq$CWSc2E|UzL|6D#ynCHR0xBHG^`_ZK5>5Gt5=i$n~Z?7Udy40;k g%8P5gSM_XXKZ?E*szmam)Bpeg07*qoM6N<$g5t-In*aa+ delta 293 zcmV+=0owlN0`UTnDJ1j)0_y+(;Q#>L008@8V);~5_(n$cJ3I6-G4v=X`aM1K78a4J z8#w>~zH)NoPfy!QO4{h?_NArjJUr7jHqtFE(3zR#;o|Wa7|8$tja60MA|lN4^7;JV z0R8=U{QO&yTo`}$_C)Br078}kgM{8^Y1p~iY4`U|^NN40(uw^1Y3soN{pJ9-)ByI| z0P@xV?#}?V6tTwu003-BL_t&t9RXOV> rDhYo#nZxYK0qfm4BO=i`1Va1+wLBd_++LI)00000NkvXXu0mjf;y;ou diff --git a/htdocs/theme/common/flags/vg.png b/htdocs/theme/common/flags/vg.png index 222f6b7d9bdf7f263c3a01aa8c54c4b2df87a279..c3a0a65094ecfbb0db44ac6ff7b23dacbffaad58 100644 GIT binary patch delta 356 zcmV-q0h|7q1B3&RDSx(KdV5}`3IdXN5Ke;;MO+ta003#7bQc|@_OR~)s7v+(Z<${6dcXZ-tXWw{x)oO84NvuUftv^4m zI6A2_HKr{sr0=1f%6^csb(cImuV0H^R)l9%f>T9Bu>b%vVSiPxmxH~MbEz~ms(z+# zs>7g4dq#?Sy;D=ZfLxzDH>01vo;y6NT#-p4BB02^XMvtj#=l(v03f2BZ>+3ZoR($| zZt0u=004hUL_t(|0VT(SaYX?D0KvOw#kQ0F+llSbx4pv^)lt|_00e_X9Y!ju4L4QC zfeZD9VY<^9mR;J-6g9XBilX}e&dtg4yh(6(l|HT=#Ox5HkP`Utyxwfy_+KZ0oCw@% z+OD&!rSC`4{43KFiDHtgxYgMIUZKvR2?Cr08vqlmsUKYgN5TgH000001vo;*CSVO6i<#L$<6y|Hzd%71>4l$zJrtGHi_UVf%; zco0tSp`G7&d*y*|o&o&fnLXskUEwgAqlm zBaFuY005IoL_t&tTP?&v3c@fD1qmvNSTI!SoU`~)E3F7Y;0pJT! WjX%b!0VRh30000+9?2=;!0(r3h0SmfA1-rHWkzisN{TJ`Hzi+|vah_-id((dRn z&dw|6=grpE*Z24N)Y7nIP~BWc+2h+N?B%1Ys^Go7&DPcOxqrFp_xADGYh>)r(43sz z+S=)lkJ7}%?1Gj_`uh6p-$s(NP2}a4$-h$8(P-<{9`f??(9h4j&ZfM)y35PU?(Wva zb@}N4004(w6C(P*5U-MqZI@$vDJvrXjXmdU?T+}DWO+Ubvv(t?&r z>E2k`Yh>)r(CptvtE%9=z0G%U($>}T@aSvQ(y;2~eDv!}WPecITt?aB+bG`KUhL(g z_3Vu5<68CWR*Qe&jfl4H=rPXDE9d9U_wl9t{PgndbNl(=zrSt#_P+P;oA~m;`1RBH zJVc8C005UsL_t&t9Rw+76L>;_)$3yiIAA=vxjNBR-sJu#WHq>o|*2uVWF34stG a5c~lampakc8f<0&0000;A6bBE9r7{_S<>>X|AN*BsL5-bSB1z!ej<`^av(u4ZxdvoA0g3 zU2!*4t$!Aay@dMtGY|&DbfE#`!(X*Nykai*bm|n4S+lllAAdLg=&o(-TH~ycN9<&6 zzwUZjxt7PplHO$AnX<`!o}~bLW7F}A*3;8H{e3}5bzF9Ccl|WkJQG9!^#~Z=#vkX= z&|8;GFI=Byxp8JUAa~}L!j5iC`+@1c>zS=>W{urpZS_nK~1eed)0a^WEQ9szI% z_8J^;*Wtra123afD@SVrO37|I-4kfqbV$DmDC|%Pa0oT{5BG{6^{_(6djJ3c07*qo IM6N<$f`WXK#{d8T delta 376 zcmV-;0f+v^0*C{U8Gi!+002Qe{R;p90Kia8R7Lav0PFw&`_d_lADk}9Q zCG;#D@)HyB4GsKiYWqq_`1m#VU@!JgD)sdw^dBGd85#Wm0Dt{%Zv0PA`Exq=_b>K$ zD*kbD{Zv%^OH2JyPWkyf_xCXVc6R<*S^U*Y`^-f8`a$}@Kljow_A@K=ARzw$0RMV= z{#{-9JU#a@G5mK*_AD%G|7gts004tYL_t&t9RLG}BcS%}CCsvi|aq*YZ^WDpQQ5aADL W+by=CWqdgR0000I`L!7AImBC~Y>uz#j+zpqaj7Zg2OIyROx zE7L0;%pMZU5;M*-0FwYM%Pknk857164Z{rph5%c1SXHf6N!3X^&^yPK002Dz0H6Te zYJ$)J004DKL_t(|0WD6o0YWhpyo;j^R@1=@us)MOjXV5!p8Gq3iBPCG3RNpj-W0=J z_|nuo7u?5v?NhIg_$$T2%d%ADf1p_2#vk9W1MC#ViYNBJWdQx#o?>c!-;r&Esi1SN s|Ij4z%82WR;|YOO*zC3h?f^6ZM4|y3C@Ic*FaQ7m07*qoM6N<$f+#GQr~m)} delta 352 zcmV-m0iXW*0)PXMDSrR}0LPU806hQzpa1}q004#nl8IjE(qdb5SXHf6N!3X^&^t5E zGcC(4YiMACct_*OL_JzMHkLFi(<>g#9vH_N6UGw_!wpPJNfOHvu%>UnuTR;;Pdhm` zGchhJDJCKy9T^uC&A)T$(@)~YH{QW2+r1*QbpX}JcIwkv z`b0$dH#hbwD((OP!c|oIR#y2;OsAiF?c9HsdU?=ycl~g2{AFb=8vxa-0F?j${Qv;W z#eb^+004VQL_t&t9RGbxyf<)kb(0E0(Zo=r?|Jlm z5&%X3IjDm00a?F+_tkx?8Non+E=?$c#QR3JI=Vm+ yrKx diff --git a/htdocs/theme/common/flags/wales.png b/htdocs/theme/common/flags/wales.png index 6b141e1d412ecaad72479b6f3494fb773e4008bc..dc847cad9c39e4a25a9669f49f4c779c0d0fd294 100644 GIT binary patch delta 366 zcmV-!0g?Wd1C9fbDSzkZ=i=ev-QC^T+1UO4{qot^>W+}wcXR8?$Lh1L?%&<{`1tnr z_SMzZ=)1S$rlHVlT-H-k*Huf{LqOI%In6gW&(F`yMm@zkE9YBYBxkNb z05kx&YDu$ZK6#BadvPB@p&MDNGD^Kao^U;Sl{{anIle(Jqd^ml>#(_ z0~BEZgnAsbLuaVjX&Gcns5y798Ga7GP^R+uWotO}for8mrBs1Jt}}y&b@`LCe9>Mz zP1C;}iDSrTK002?|05kvuegKcgapzlJ&}&?KyI9FvQMhVJZ?a2zl|0x( zK%Q_tU#dAuy+3EJK)yjQ#X2icl_5c)8>2xRnTty4Jx8-u71`_UG19Qr0{a(uy-`(S;q0Kip^4Zwc)z#wR;oaTc*xA^^ z_Ugd^0059lL_t&tTRp_P4gpaVhSBfe+l=Fq2#G}J0TkZNnR&sfYD8ePFf7Nm!3H?wD0R7_&e7iS? T#y5f~00000NkvXXu0mjfpIg8l diff --git a/htdocs/theme/common/flags/wf.png b/htdocs/theme/common/flags/wf.png index 1c99bdcf71a8cdb218005e822c13454c198fbd81..35b959d14b15e006155dc571aac9d556682fe10e 100644 GIT binary patch delta 385 zcmV-{0e=3Q1Caxe8Gix*008-bnr;990a!^yK~#7FVqjpH3Pk_GU@Zd!5S{b%gfNzZ z(HtUFt_qq2& zdGK#c|AnV9fyY^XGrp{J*GIvxJ}yzS|J7#dOq zYpNid&AyL~qd}m0Lj(C`nLRU_De(8fev$_AtgQ0678d_zW*}~woAHJ_FE0LGScu2t zmz|vmlx|QW-g>0*JUsl^+k4;90exOmLnb#J9nkCpCnppmsRA0}psDh*q5_%-ctal- z7hg6sC;~c7`>Zq#fhLn9QRLed1ob1%q$;pBn=TQJTJHu1sFEOLf;Y4&Fn;8`{?R@@ fN|f{ul#fjT%A@ch7TLEd00000NkvXXu0mjfHeIqu delta 396 zcmV;70dxM51DgYo8Gi!+002Qe{R;p90Kia8R7Ir#0Gt2-l>h*Y004sk0DJ%dbpQZu z007ltVbfh*(pXr~R8-DUQO-$8%0xuSLPEzrJ;pjZ!!|at3M#VswvDk{MxCA=IQw+|1k007u(YQ-=x8h&Ym6hR{{8*^%t1l!%*+4)mCjC1 z)LB{Nn3&N{PXGV^+je%Fi+jQV005RrL_t&t9RBIs002k`goHpszdvwbFmUDUaq0j7002ovP6b4+LSTX?va~<| diff --git a/htdocs/theme/common/flags/ws.png b/htdocs/theme/common/flags/ws.png index 287482db540ede99b057cc782f4651366745bf18..6732260e2738344b61d989595953c055f0a305fe 100644 GIT binary patch delta 325 zcmV-L0lNPC0@VVL8Gix*008-bnr;990USw0K~#7FVq{>jW^anH<pjq@whXPc6fM6xBOQwgm!4Qqz`b&o|ry7>zACsVC z_kZn;stW-|^gc@y{n7D@O9DzF*4b&q0H6Y*?8^ZN>lVp57jz2bUVmStFZ@fLr}6m! XM{YaBZgpcr00000NkvXXu0mjf9Vwj1 delta 363 zcmV-x0hIpL0{a4x8Gi!+002Qe{R;p90Kia8R7Lgx0P+9;?f?Ml008Cy0O9}u-v9vJ z008@8VftNN`Bqo>Qd0LzOZG%W^*%oIIy&<;HS;nu@-8m>008`EX8T1&`anSWIy(3? zH1{nn_9`m%B_;G9AM+U*@)HyB4GsNmZTm_|_b@R0Pfz$ZHh=UsHUI!Kd2y#+QM%1KF-^dKMr06ThmuW@my`8++nz1C)Cqnw?? zQBjr9(c+AZxpZry001W;;9X<@004GLL_t&t9RZghT?U4}y=ooSrh0fMh*^!M%EQd8YEu=Fy`rKjUlBn>6#l2BE~ckQhI9Y`002ov JPDHLkV1gKanxg;! diff --git a/htdocs/theme/common/flags/ye.png b/htdocs/theme/common/flags/ye.png index ede2401cf0a5139d3bd8e045ecbcefd19c822c63..1380d96c646b04a866c4d212f9a8647efe96a7ae 100644 GIT binary patch delta 275 zcmV+u0qp+T0;2+u8Gix*008-bnr;990P0CZK~#7Fm5#+(1VIpmt8tkO&`5BIW+K4# z*a>U^L_ic11um!c-IfwsaOWM~_m`Kd!>bTJ%Dmxj@;ESlvK2^#ffx`Ydnbev*jWhj zjy;k!52t5CPrGlgUJ3(9f?iT9Tf?Rw!I;6>`2b3^mc>QrbbsPvA|Q%oL`nb{@8ry2 zQPgWS)$Ml2$H!xL(pzBW>^Y;9y12L)2=VXTSr8Qm{?ZMpOhoG7U~g@0qup*(QhFP` z_W_)9!C#;#3azyYRF-9UuHWkg?i-W4Tdh{`w=g|DT~*c7z}rH-UeEBdB6!{s2H?MX Z1P}`IsK0+002ovPDHLkV1h#WecJ#4 delta 330 zcmV-Q0k!_40@?zQ8Gi!+002Qe{R;p90Kia8R7C&)0Bme*US3{JO-)2YLpwV=Ha0dW zC@2~l8i9d-#l^+AxVW{owX(9ZuCA`Bsi~u*qn(|d@$vEf{r&v>{QLX+`uh6#`1tnr z_VxAk^z`)e^Yhcw)BgVc^!4@D*4F=xjsDEc{=mTfy}kXqx_|q&w)nHN_^+?`tE=^= zr{_&g?*IV!g?sdCUi4;I@?li;T~YH{O!8Aj@Jv1KL^SL?Ebm%O*Z=_cgn9RYclUjB z_IPdeb!qf*W$OR{;{X8NE}m5Y0031WvfNlBGehbkqq-qVs2vA%{i cA_)Khf8b~laIn9G{r~^~07*qoM6N<$f=zz1(*OVf diff --git a/htdocs/theme/common/flags/yt.png b/htdocs/theme/common/flags/yt.png index fb9c3669c13c97dcadd36a2227603000a408d674..34e592d82244b5cba25abab5250fe362e94ebb16 100644 GIT binary patch delta 370 zcmV-&0ge8d1A+sP8Gix*008-bnr;990ZBw$t{%vmzZIJ4lD zf_G@!w(b6Hm96eoXq<1C?!9XtlwjP4sv=ENR7nzBtw`lEYSe1Y2De(JQYjP*0LD!m zVZH7T4u*4c$X{Bz7mJQ0*|u$2Rwk24fiMgM-w!Pd1-9iowts7yZhYso8OH+<#v#fw zay@T(tuQ=#kx19|daFq>yue&vU#9?X+nXCmQIwy*XTN?KNJJ;|Gm}#jlk011oIF1} z6EsZ&I6OS0SCUGS{PX+J)kPBl&~Bq%rDGV9oSvKrSW^Ao-rm~E3ILy(Z=X*;zdU>Q zlsf<=jSLSXtZVU20ZIo@Rh1e5E*rQq;RE1MAF~p%v95U|-faT*K$sVJixx+Y^8;5w=yB!Pw0RP0qh+=N6 QIsgCw07*qoM6N<$f*A~;lmGw# delta 394 zcmV;50d@X@1DOMm8Gi!+002Qe{R;p90Kia8R7LLV>+0$0=jZ3;<>lex;oaTc*w@$A z)z#9{(#*=q&(F{9?(X{g`}gER@9*&a{QUOz_Q=P_=B=*cmYC+^ z;Pktm>FDOWxw`c9 z^!4@i+}zw^WWK0) z`1tts^78ZV@$Tg0>F4LezyDSM005LpL_t&tTP?xO3IS0V$Kl`qb$n%_D9XY@v2YPC z-X+*5Vna5RW`Bw~y_s`tJdZXoM)xyYw3DPwhpvQxl-m0kpeh$gQnm{asQ6x*rNHBB z{a6_E-G`~J>qD`6PEU5@JP$GEjQlvs3Pov=UJS|bS^1WM(Yn)+X4g&yA*$yA7pU>i o$TSci1`_B^kzMEyDH;3#NG3aE$j|5y00000NkvXXt^-0~g54wc{Qv*} diff --git a/htdocs/theme/common/flags/za.png b/htdocs/theme/common/flags/za.png index 070aec4cd5764cc97c3f55320d9674a050a66dfd..ecc4b82507dd724bbb03d47a20333cdeb3a09f22 100644 GIT binary patch delta 350 zcmV-k0iphq1OEb$Du0C$OTTy7(aZNSGW7rekH`Re$dI7gvgYmP`KG4*Z*cr&X8BiF z`AA5qj{xcNhhM*cTDW)C>EQqX0Lj6A=<052zjsr#Y0Bi-`pL@py}$OixaVnWa&mK` zo?hnLT64Q+NU>-^uVX)}VK}K;Gp1JnIRH~rQ(6vO}kjYdV&0A~OI0JVK8 zRa5`~0D4J8K~#7FJ&c330|68T@2t%NJ}XE8>A#TRAhwhBJQE2(1K6}3)aaQ6cpGQK zkWNx?rUdQ|n^znpy$#9$I0w81uuH2(P}NrtHFBvMq079yy}TO{Yn$>Lmd4@sk17O- wYeetq2%+|=9daywEJ;sQ7>u%H-IGhT%p<(=jp3 zsgD5Y>TXlCX+NuBL9b(=+OiZB!~g&QzP51Y<5q6GU^uB-*6HEI!|r2W%W`salaW^3 z)KrAKT05&!bd<2in! zvj6~Kk<+}D1!^l4ux9!GV^}WBLsC;pm_IeYr!oC>aob{yakH-Mw=F;MGS}L&gqZ3Kpsg2oMAn0RZ?1VTmmylw7V{ P00000NkvXXu0mjff4i`I diff --git a/htdocs/theme/common/flags/zm.png b/htdocs/theme/common/flags/zm.png index bcce6de9380f510ec879fdd54e53d9af3a4f8926..fa364c9c75920e3f8a5f4ca209fc7c83ff1e5ef2 100644 GIT binary patch delta 326 zcmV-M0lEH%1J(kN8Gix*008-bnr;990Ub$1K~#7FY>|ORL_rvZ&$d&j7Fx2300jv2 z4x#rb&>MsRA=Uy20`wX|SO5tK0ahQen z@7_N)8HUHF+Cv+xwPTd4gNfG%`$ijd(EWmwiD|vPP#E67ZB47Q-~l{do!pGEQBM5N zHd?kRk^xH;nb)Cif?^xnWnxe;TJ*KeDi`CY7O9ELACih^3V&@zVijKkip5rpp5B`; zw#npcEJ?P=>pxI|iT&NaC_!0bCb9JH=qJs6kLsbNgUgkNEadAeyo}KYey0p(pJD*9 Y0n@@ZOD-E$iU0rr07*qoM6N<$f>+a&=>Px# delta 375 zcmV--0f_$A0*3>T8Gi!+002Qe{R;p90Kia8R7C)1003A307n1=H2}&00Nnrp0001h zzkqzbe0jNfcDZ(OwsCE;ZE3M-WUgajtYPRvJnc9%IW#fse>MPf0EEDVS*Tf6rd3j; zQcj{yNuNpNBpmJ;87vnU6%-JN!-#IRZe6QgSEyI#EG6xPJ%5YDi)OH9Tu~GT@S85I;x z6+iM9qWiyw^}UDSt{1-DPq3DH0u&YekjY+CQpppEYvtKtJfKfS4ZehW(OU4-1ThqUnf z6%*F#%CI~=2D>N;8(zG0i8`crZP~H~EqD?ZgN21RMwflT=%}}M2H#)kcyXrn-Vv(d z!hQ;kPS}CLU}DgqS*wfwKc8SUPD~Fy`se@*UfV^XF-JQAYbV4#)Fy=Du=fLtwSz*- z#F#2e3^o&W(B>O_+wM@#_2=}Vh-7ME3ZWR(QaN1+i5&p|zMToTpp`;S00000NkvXX Hu0mjfA62J( delta 369 zcmV-%0gnFp0)YdN8Gi!+002Qe{R;p90Kia8R7K(E;Ry)|08;<}EdcfP_3!fVkgjl@ z)mfU+Qk2a`ipDqqZvgM_@BI7wr=?5y_c!(REA#Rh@$n7c-2n0I=$2zn*jYN@SuoyJ zDBMgU*gzDs008mt@$8a${QFMwyW0ec&pxV zrrT$t)?bv;P631f*WuTzLe+}^004YRL_t&t9Rlh&{EJk8TIy-d$-s*lZX9kD;^B+E*PzhPi3k=V}-l|)bq9RmCVgvKQ&U!LKJ P00000NkvXXu0mjf$49te diff --git a/htdocs/theme/common/folder-new.png b/htdocs/theme/common/folder-new.png index da7ed005f567e6683522d639de200a077ac67a2e..3d582db34cbafeecf238fef78ba6c4700cabd2e7 100644 GIT binary patch delta 218 zcmV<0044v<0_y>g8Gi-<0028MuA%?{0J2F$K~#7F?bZPX!!Q(w@!e*y-C;LqF+0d~ zK-Yz~XKD2$gBh$h>2wrtA39(n<|W1Q=Lg_Jg0~8_xVRGrh{XeIsO^9k#KBE7UO?dL zjx&sd3|oAifp~PqCVUvkw8Im|nOGR@aEBC0=x~mCVZ&yra8n&B+`wfCM$K>wm!;a_ z9wiJa?C@C)gB%?upKo0K-LEc}3ioKy{1U!EJS*G}0X-x3w$tYcQ8wU+xH$iN17~KQ U{;EX;5C8xG07*qoM6N<$fZ)Q-9Uy1qP@9fyTP+_SC`EE*U3kSD z!8*w>wT^M1?#zh=bl`#syuiZ3Vhj+hyLfuAm6lT()?msLn=LzF#si;bm{7qEPO#bm zBQwMNU);`TzBj{=dQ=d}uu#HscBz+a`^r7jtMa%+zoDDOxKa0M1pI2<502J(>t zu^vf$0l`=xfCC6c@R7?PW^gkhR0Wo682CTrHDlwxD zp$EZ<#G=3e89Cszy_04EG_XGq3`Dw%Tt7 zz)apwp}#F^)B*ptazHFr$?Z+v&nXS|fEBTRfSuqqu$1^X#bBGoYv3U6M{3kNI08>2 zE1#S-&-X;^CR8-*?umG#J}CGgxxc3zV!9OgLXKt6FV8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0003INklezt)U5a2_bolzUoQ9!TF=6^t0iuOgzMq4SbVf5v=E6l|DlYIo z;AWPjxj;MTZ$-Z# ex6CZ)m&reHR{MhV)lSv`0000)|woIwP4ys zs;*RF5w)vCVL*&qR2c9w5Y#SIVXP%i1k*uL*yC0y?jL4|XVwN4`s`Qw2fruet4szv#Ko z!?y9*U`!BR%>|lc8w9~4W{(Xg!~1hx2c^AnDL#-potGt9m1H0(x}<=-tmb7cuY!W2 z6*MTTK-M@&QFTQFie{)fP<5yRr0GD@4GnOh##h7C0n!buBLWN)KnVE3qz1$WchiE% zga|`Kpot-0F@@NM#6ieJCPpSfm_re^5U~+;OiWB-VGgC3a(A%BVc2GbT7=rfvWVpn zixJx)JaibfY-%&=FpI;O?aJY0JIrRxam9E!jLWs^n@Au3qm#v4X2{L{gM=&dZ$*B` zvveXhEY>B_TPiP???gj0p4q9HW^L+dyxG+#f6umFSgKw-ayC@2@9V4{PksD$sJhhg zKDhR`w(-mF_4Q)ZdpXk5cX%=Ub+s{SY$=U)PmE6t?Yh`IG7^~VtS^6F%sjaJj@Ha< z==|#^w{P|BoPYeNeNLRMER5~gU9D6;eDY0Rzxh&q{xIAfsGaz+b>-@Sz7p+kDNSpM g1Dkpq*)x%ZNBGkg{q?jb>Emw}(#cF>A%1T9ALDq4X#fBK diff --git a/htdocs/theme/common/login_logo.png b/htdocs/theme/common/login_logo.png index 53cf79da7b43e423bfcc8706eb8aa00682b4a105..f519f1531774227c3d17cbfa699bc10f0e333d6d 100644 GIT binary patch literal 2942 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 GY5xa9vnag) literal 3150 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 diff --git a/htdocs/theme/common/logo_cerfa.png b/htdocs/theme/common/logo_cerfa.png index 0db57c205ab11248aafeebd6fba99ec991b02cf4..e228a01873abfc1e886e428ad812064f0c0dde95 100644 GIT binary patch literal 2973 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 TRj%7#00000NkvXXu0mjf-AjJV literal 5718 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 diff --git a/htdocs/theme/common/mime/audio.png b/htdocs/theme/common/mime/audio.png index af4c203416ed829a7e08f7af1cd8fcae4a21abcf..1e1b282cf400195630cf2ce66616f2ddf3d160b9 100644 GIT binary patch delta 176 zcmV;h08jtM0?YxBB!4PUOjJex|NmE4@%Q&*=H_!yP{W>{?xLc%;^JPfuTx%LdKMOY z=jT%Y|BM9%4S{FU`Tzg`0d!JMQvg8b*k%9#08mLpK~#7FV*mj`1~6b$b^z01MPQoM z!@LzprOoo#evpBI?d~lw%{gP`itUOF3>#-Lsn|3o`Rv7LRMm4nVy1?fq}7tp|O>L znU$f1g0_L7fx+o(|F$tOFtC?+`ns~;;^yTsG!PEm6b}^QEbxddW?&GU0>X?-KLuX` z3bLd-`Z_W&Z0zU$lgJ9>8wB`-xc>kD|NHm<&+DK6kBh4c2sj)b{_)wf;`Qr;#l)(= ze@|YtX#1l_anGLz{r}&?%E~)$-n&h6{!{@qGnNGT1v5B2yO9Ru1bVtShE&{2PGD#X zU^7UV`;1{({acpHf8O2v>X0?H_4muwJUlV);~Fy4K0o_*IapHS#(mq&`^KV*d?C+y vmq|+8(pK?4SW+Q%#OB%-h7MLW9v%iENol)YkuS+W(-}Nn{an^LB{Ts5E7Eh+ diff --git a/htdocs/theme/common/mime/css.png b/htdocs/theme/common/mime/css.png index 21398610778d056375886782bd9e1c2caef86c8e..51bbbfd110e1146fb4b57ee4024c36e2cf440d95 100644 GIT binary patch delta 137 zcmV;40CxYm0kZ*+GJkAIL_t(|0Zhjm8bmP+2GH5}Y@s+<4HkpZAB(~0#bB`0_jiw- zkKr=2-dMcg*4@Wf=Og0P?zHtk(ACyG2&qWE3++QrtFD!ZkZn~&DFEhGMP;xgTMb6x r!r$B*{hUDM_h0fogcq_wo&W%XETpVAgWslG+M6QfQMj~Usj6`B9k;s;8 z*iOHDd}bIn#S>NC6ux2&56$f7e;agvGX}{kd_oql$O-QQ#gdQ^YFRWHM1-2ly$d7iG;VyU)V`nDX7>5S4T3DBtn;oRL;wH)00>D%PDHLkV1m7sJNy6u diff --git a/htdocs/theme/common/mime/doc.png b/htdocs/theme/common/mime/doc.png index efb194dcfd2558c85445e53655501fdf8ada6aff..2ee6c40515c3e0a302d5c8d7d35502288767f2d8 100644 GIT binary patch delta 265 zcmV+k0rvil1epSm8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0002aNkl4~27fo_U=41ef)EEqs%wp2jRfj(2U zu`7!0g)EVx%!|CE`AktZNq1Sd>7YR&9_X9|6bJEBig8?kY{l}z@Aa#a-2*5g{%?xOKbzaQ*-`ZIe%|KTji#BwqK P0000NS%Lh$0X`wFK$?StLqO37+b1iwwwd|H_#XZ-Gr(CPrUQ5rlmMPa- z<^a*X9v}dcOYcnqqP557EWI~pEf77Qv-SB>AXs~C>Dqfs*FImm_xaLe&)05!zIN~P zwa1=s1)=v_&%NIZ1jpX*J@Y zfB*ga_y7O@zjTc-2YSH1B*-rq$fW=<^r_W|1C8qNba4#fxbA!IEZ-po0k=T0JSkT} zQK8HXk>)V5Yia^P?Dzg}oHOlLak={B8p%nU|4%b^TqZQ9R?UC$Z@$-wCXqK+7r(2U z)KKnkrhj|eHBCkaPRX6Oyd%%XxSxAD&2yrfp7PQ)Nsc{_g+qPwKL$kb`o5T@_=Zb- q>%N5JGmpJsf9CY?{Yn1+Rm_TaX|DU7%?i48x!` z0ZEeZ_3Kx>fB&8YP*oLFGH>3z9}-uva8a(2>{WRrP(Br%#_e!JtzuUiLZMMXWKnQcv^SIRL z%8ovQ>Wh0r6h%+a=V15GE$8mlN_Chr+%j}(j)du$s!Ql}umdV=$wM#F6SP~tqq9dXn5Id%g2;~)hX0*${87L-_)i>H zK=4tJzeI&j{7;x)E71h>3$l`gtpCaP8H4ly09z=-TfmYUVgLXD07*qoM6N<$f;Rv3 AUH||9 delta 578 zcmeBWxxg|(vYwfNfk8u;KbV1mQ6a!5#PvTI00l8Y*^$KLeVK`i=6jd9`m~<5P41sF zS82+WDO0CTojG%+McUlbqtW?$vI>qQ{`m1De_#5d({4Y(AZEsnfVPvrfB*jT=g*AO zZa~tg^t91xC5NW{_0H>6JPNmZ&CBy?J`&V%C9G_H>Yn7HBL$tO%jfL6vvAY-r6+Y( z9=WvY0KD-8c{u>HTw_x~RM|A!3!AF~Ta>%0dBj#5dG zUoZnBlZ>o_v5A?pOIA)nRl~%I6Q@0S_u&K3Az#1$`uq3azf;M7&Hz>K^>lFzk&t9P zc-pVoL89T}`~43bxE&XH)(21D*H~Tq|A=V*gJW||rA`ODm?C*z&>)y0;kFT z-usC;0bkEwFP;0SlH)S3^Pkey7lOP_KQz~D*%i9^*F&f4`)6K$^KR9zc86a#a{V(d zw;dH?%)9(*LACAN|3M5dOUeQYze-McYWIYz)=)(MKO`bk0>-Yi|T^4<>jt_(x+*O=V@} zG|RLC@ZpCaUJZx8+P{DQvCW$|6UQ-OOtDyGXlRJGpa6QTx_`R*uhjrKyfG~PdE&&0 zlS(PNy1JN|nL!dHlS%gM*@LLIwzfIUU4HGg*9rhJbCQiO?c2BSq}H0o#>UpEsi~u( zpB78Mp`oEyz#-kqP)ZrhDG755lQ;7DJS{CPghLOMm6dg{q>i`We*2D&j*i-+M~@a1kW4fCsCwW{S7&oB^j1HGlHMQVDVs zc+Bu;Br`jSqK)8EklPC0!R!QfvI$k_!I@cd$I9@kgnuXokcc?BNiqKa?~K>}2605! zH#KyA{XX~tC{mY`5h1| zjz9SV$9%Pc$pN;U*iU*gHJ8Bo)c}Q1osl>AKL9pCb|WOy-~=#EVQdIJGsULEoAI~+ zS_P02G6$a_cO*fS&dmM7I0epvDzK?Ah1DgzjJ=nKUj|SmTED82Sh65=@v^=FYo-2R dJJ%Nwa1&53xYfpBYyw{XF*Lt006JZHwB960000PbVXQnQ*UN;cVTj606}DLVr3vn zZDD6+Qe|Oed2z{QJOBU!e@R3^R5;6RQbB7IK^T3Tq)8K-7_~JtN==(+K|#b@JqUt5 zh~h!Lc~ek?Ku+zk2XpMN@Q@-NdiDp11*uxlMiZNsG$@o5lYb_rNp^N-eY0!YwL0)I zGv9pQoA=&~VcRymV`*t=L@6~VrJP}$WPtILv0_=)VlJ2a<*hfo0EI%~3Y(Xc$>d}# z7K6{{1NZ3ldZ^dy*y142z4`h1wSNHEJi^0|>2x|{nkH(s8akbhz8!%;0EtAxsVf$X z8_Zo^SXk)ly?<|j#N@N_@$rlh0_Adfv)yi|xDM*j>r$!oLj#jthElSFzQAC?1xqWa}Hu?sq6_ zAK}R?Y_snHAVnyBlZoc~d+I!f_{D3eya*6;ZrXD`Ulwd<^2glP%1Y1Kc1Ij%DU^=ME z(jKf6APNlA$Uu;J4bVilQHSWX5uJ$9Zsp4M0#9fOp|g(>KIexK47pF}<4Y(?GrNd( z+f>*mQR(`njXwb3lWZ=}xn4LQNBjxvVCD~VKbDm4S_5(X26D2p&4+KnMF0Q*07*qo IM6N<$g3tV4B>(^b diff --git a/htdocs/theme/common/mime/error.png b/htdocs/theme/common/mime/error.png index f41dd8a3bc02959bdf97c4334d9df8eb5b3209d7..2ba500eea0103abe26fa5bcbbb8253035415fef4 100644 GIT binary patch delta 324 zcmV-K0lWU`1JnYL8Gix*0059Gx`qG%00wkYPE!Eo044w?U|;Z&0003ANklY90tE=$zputb7zTQ*LPO~N^H24ncSXLy%!aJsCx__5fXh74?q2y>18Oh`0 zojg2zLPLbVpA<-opFjZx#3!PieNsX~T5=*fImz4{6#Dm2yM}s$g$;y+FcTAhKVMf@ zS7vI8(NRWgI}&~a6&qVNZ7s~v2^m{iU7KHAW&r5o%yP1|dxtMj;#rt*d9=@_#`xGs z?D28*&W>qspFPRo5bW*I)`Rd}3|J*c0Gd2drABL1YEiA>5|QS}K%>#=v;gpjaJdCF WGF`-gdBKqY0000NYm(Ha6)vH|;+@>Ow&7Oik@hNOEs&?@vwj zPfznuQ14ez@>WvrSWWR*Qt@0+f_!@LU{}L!Yw%-N^J8Pcaer^~XJ++lXZLGr_ikzS zZ*B5*bd-;cxQ2w8l92O*fwh&A^@N1@g?po(oc4={^Nox8kAwJ=kMfz8^O=_ToSV0< zs_~sKL9q^02P-u&v9&zWTPY`?#|C!N2g$%J9z0{nym*-`n=y+wb7q z@8jR^GbaG_3rHY^z#IstXTj600DGTPE!Ct=GbNc0004EOGiWihy@); z00009a7bBm000W`000W`0Ya=am;e9(2XskIMF-am0uKZVBlF0b0001JNkllAUYw^EQbF*XnZNlS={i3#%a@^EvpGNL;c0Nz3jy2=$l Q{Qv*}07*qoM6N<$g43z&r2qf` diff --git a/htdocs/theme/common/mime/flash.png b/htdocs/theme/common/mime/flash.png index ac3b89e0aaca899ef87e9b8237c4526231a69e80..9e7baf76670816261d0b30e81d3f307e7c225014 100644 GIT binary patch delta 241 zcmV?&K@JX{Yare{xj2P@2}7 r#=!lvI6;w0(?STfiwpPhlGSgP*6}55Jg2L z8ydDGCof&Pbg!l5UNAT}XU@5E=dNA5_I&Bu_m-CLot)l#1-(zse*gaccT1=5PEOyw zyuJqoeUFOz9+mt(Ir)2W@%Q5D?=3ywr%d@iXU_MfOTVvO`~BRx??Cn6zyHrp{$HH^ zzqt5+b@l%iAZqzPXU_knOaHH3`+x7=|L4yAzjyEd^XLEHzyA+Z{Qv*453;F1SDKXs z`2_>HqyvV9{eFf(6G}Z@978y+`<~y+*KEMU@}OsG3};XiSCNK&AA5p>l3TRqbk`66UCi+nwTus#7ch(S*>9UO8|VNAPgg&ebxsLQ E0MwrGQUCw| diff --git a/htdocs/theme/common/mime/glasses.png b/htdocs/theme/common/mime/glasses.png index be153e04d45666bcbbaa1f37caf600a6b8fdb645..bc92524681ef183a309b85e3c04fca72998352df 100644 GIT binary patch delta 449 zcmV;y0Y3hN1keMJ8Gix*0059Gx`qG%0hdWcK~#7FV)*y(-|yeQf#m=H|8Ly5o|Kg2 z;CFtyZ6o2#XSrePTS{hn-Yy!+be z`eVQUj(WWgz<(DGr&712Vkr{2iO1vRa(TI2l5M`2-R>(3^m@HSA|ZrzU2i-z@CycK zSysDk3F~lOmjVC+fxv7w8w>_~77PaY2>?}9UDqRzrok7(;V_%cQiJt)JdQ@A@DYo} z7$1isdx+#Vo6Y%r=IC%ZWHK4}$mjEHnwehQASo00000NkvXXu0mjf6b{sx delta 500 zcmcb>+{`jTvYwfNfk9*1-Ny_Jj2rsa&mHU zaq;l*@bmKv2nYxZi-?Jd>+0$n8X6iI85tWJo0yoGnVFlLnY+5WdU$yH`1nSEKqL@E zM@PrS#l^?RCnY7Nr>7TyKw)WV84%Q0R#Y~EKub?gPk(>^6d;&7eddgrKrny)0w7qj zWXba7E4OXiwi^WY95`_3;K7534<9~u?AY0}XV0BGcmDkOOP4NPxpL*kjq7*s-n|b3 z4}jqD=|K3}^r?Iosb;Z^T#WCIaiyxw*c7C+u2s)jNu5kK?WU?YTSd{Cf9G@Uu_5bHQnSl^?cq{9G&ix9`*WwQyU< zIoF%3LpD$BFIM*~UUOBYe%8A1cYf__&Yh{O-go}^%_Z(;;j;p~(-(f)q%q}-0!Q`B kEo}mFED1-o)zuEzi-WW`lJPK?6u8#a9Yel2PC`vj*i2<3vY_3d=cn z+DcTKsBO^Jpljersc_^*Pc-0^IbnWI8r^ z9_5`L9wb-=3NM#*Y%c+4F*&Sq}4@qZK4X6c|w?#8RlHP+Osnsw%3c zsMJsyR|VFPq7g-7md0$2YZ_+|tB@#=sF3QAQ^+~wHnfRORh?=&HFQdJ#&tmr3Jt0o zOf#5tVsL~QL`+8vA&VhfU}j)T3S%2#ISPb@zz#Mo!?ciTVUr`%!9>C_;U;M_Y7xo_ zwFwm_vng`~a|LT#U4&)1yo<27!)=Mfg~YXmE1a$zw=LziC0^U>%JVv2r_;GQQ#mJp zR4fyBm!_XRjn`g{+*n$)5B_Nmo;VWQSq+s> h&Q4FAA5EC|dclrULl2f)cboD~kWJ@P^<%}G{{VEJg82Xd diff --git a/htdocs/theme/common/mime/image.png b/htdocs/theme/common/mime/image.png index dbb1b823b10c3cbcbe5a9a33e266846f248b37e8..07ec7159eeee8a61caff3270773d8df27f9b82a7 100644 GIT binary patch delta 283 zcmV+$0p$MK1gip&8Gix*0059Gx`qG%00wkYPE!E)0QUg@2|ED<0002sNklHbf1=4n0jdLSP6cq#R7H^8U|=(SbqVj1xFbwzVJrzq}sJ7 z>biq&pnIiu4E~G4w`=mzWUEx3)6NFcyB_K4wXI+)L!Qtf(TE#W;JtCWQU*12y`!8o zIx8?YI6Ay%4fcvjSv?-8b}1R+Zgd!KL`UOm>Uu|GP7OJ8G8?yK~ hY&rfZ!AW223lywe%%qD79#^h)jqqh$+Mp z5*rco@mu0R-@m`cnv6&8RHi!e!;qD(UBb4j@5Tq-U-uA^cC7X-0{aE0PR389ow zo>0E*vL!tsJ*hlTc`fC8p67eM-)eO}uFW0N@1I@F=gxKhGmOi>>L2uSluajR!e7mB zBCtEK>v?s!s8J7ofAV*2{o3_%{QUOna%J^O{%x7BZ_a<-UrjWgEw5A?FWeI&z363Q zY$Wz6ursz%Us|~O?r?G~Ug^1*8b|H-!;L$4ANIYf#r7P3I`R1DO0DJ>OR@3!;E(e5 u*4Avir@!?2!mZNi@6fT68~X+m_tOER89mVXGI8UezRSpFa_L5@SosH3M^wN7 diff --git a/htdocs/theme/common/mime/jnlp.png b/htdocs/theme/common/mime/jnlp.png index d53b7d0cdc7be6037737a4e5668010ab75bb0d15..4714cd133441454eba87353a6101ab668e5ea534 100644 GIT binary patch delta 489 zcmVuyYZf+t527ErB%jNQTJgHRb6uZ2TkP za})oywKl>5+J9A5RsH?_WNB$>YHA8b=jZ33;?&E_%OJz5wY62LRMP2msJ6Gale4q4 z(a}*X2>Hgw#)gK5&;>3jDGAW4tE-7kCdwa`bv9ww(Qeu{smHGJi6ciNTe0C_-G&eUl zGc!Y_Qn7i9yYS!F*Z0GR4~vV7@U%lA1{tgtt&@`zfk1$PvyXd0fam9D7t~p>b6x@R fVc-!)-}&DLiKXAQVmk1y00000NkvXXu0mjf4kZ6S delta 563 zcmV-30?hsR1HlB48Gi!+001bK-QxfN0WwfbR7GW0I&NAyRaI4LTtaGGL~~$4b7Dkf zWMpM!WoBk(ZfzrVo1z`?=6!@|JA!otJD!^OqL#>U3S$H&OX$jr;i z&CSiv&(G1&&(P4&($dn?)6><})z;S5*VotC+1c9K+T7gS-QC^Z-rnEe-{9cj;^N}t zFMk1>+J08?d|RE?(XmJ@9^;O@$vEU^78ZZ^Y!)h_V)Jo z_xJet`1$$y`uh6&`}_R-{Qdp?{{H^||Nnm+om&6^0Ln>3K~xA^1;Nou!!Q&E;QyQ? zu3d1@6`U>TKpYIlVCCi$so2oYJMySK8Vv&)N-7kHeT@G(!6Xa2sqQII*IsPg_>>=ldK6&OE7=s&b0P5euy1sVx_Z_O*H5+Om&5 zvnAymG4!SD|9D)iU~Y7Bgf*zR~X*CrcYO{B%qI)l?a2GFy7l;6lMx z?KnV%k^v!|2+nmZo*vW$9}Bi>8%+}_EGU}%+9j1fyLh92mi=q?p9#P9uG1Q38y82$ dCvX5R^e@58!(n}*vi1M~002ovPDHLkV1kZEszv|+ literal 722 zcmchT-Affg7>Cy+GUJG)6nRk)6e*ORx-c)II-P^ZgV|v{2(F3IW(Er?ZiKlRp&Mkb zUD%^4s^CmUAFon@L2CY?Z0-t1JbmvT@AxW0oItS<3QLHcUA% zRF=uTnF56py5Kp!$y`Heqg8xWCrA>i%buhfSG`ss)fP=+=ARf3Ss-$ z2GoYkhTMk2M%?j<0|Ez72MPx<2MGsr2MZSv7g84r7YP@07Yh$k4{;9(Ph}#qh-I-t zWK|~8$K1!lS0Ru9Q$RQ%5(E+w0hOslgrPtnDsjLu6<7tP2niL0O2PzT$|2!0pgdp- z5il93mWPx}sw^bqk|~Rj3&}+&q!cogig4+4;o+5Pza1y^y83^E|0Zp*;pB{Z`bkZE zUnZ|<`J<`SJ2Im`L2r6t4bE@0HFs|7>sXU6JVAoE+R&z zcDHp-{8^~D8;QI|%RbEvTyNeuI@O@9bNbQ6)@|wD597~@jym3#Li(-w_s9K3BddPh z-?Qu5v6j}->IdJ4zFwLgdDUItf4t<))Acvb%=RrDEYGcY_hNR zp$^0#5C!|4XZs12SR}F%TZyd1B3G_l`y{fmw*)SMkTku?7|5`Yu-va%RvTRq8^jz{ z?%g~aPpdsks*yYK?6y-&Bjsm}PbJmcuMQF65dc=xI+aDwiCvl)L0c~nc(ZS4l1i*X;00008 z9fegTdY@RBBfrnx;h@aR9NqkR!fT(+1w}8^7=Y%=r{*dy{LQ%i0?vol`iGb|ynWz!xO zCKe#l(K7)t*jT=N!wjrnV5QqYN+F0xNW{g>2k2Y^N=4*kuH3o<7sqq}LaB|N4P20b zsU}wFN-@0!S0+lx)IIx-09`2~C*u<00000NkvXXu0mjfDcplF delta 342 zcmV-c0jd7I0_Fmc8Gi!+001bK-QxfN0Gv=vR7C^=1bl*oY{Fc`*2LuU+?39Q^!Ds5 zE;MAiOvL8A{Qmre#%%oh^qiuk3=$N4!ep%4ob>kmL`F>1*4*s!?DYEV)auN%vb?m~ zqy!2Kbi!OTIy`K?R1_W@yuQQ)1_X?bl)U1!+w)Y{za_T=>X^xW>$w6?so-mG-OWIR4R93C8M&F{Sc004zaL_t&t*G26rx3mU}!WE(f|K97f57zHZxZMr15bEfB?u%{py+IPlzL*z|~p>?=7+E zQe0Obm24y9Tu?HUIzs07*qoM6N<$g3v3lKmY&$ diff --git a/htdocs/theme/common/mime/mdb.png b/htdocs/theme/common/mime/mdb.png index bddba1f98ca56f8cffa39d768f80a06361d8d218..dbeacb6425db79de0155d248a4e781902a590ed4 100644 GIT binary patch delta 487 zcmVzZ*NyfO?`d+^Oe(uj>3-EiO1uC0>(^Zr&1xxiY}K64u=CfJ3F9Z ze0-chg|HLugMZyBKxV&^gv9;*J^1Iz$q6XN$jAs26~eB#6M__AFc@!Tvzg1wOAxTX zzYmHrFfgF=777K9sN*TXWHO%;P~H0G<|ekbw!rA==}`c?Ab?^w-vLaga>kkK>uYfS zy}dmgA0LC!+S*DZ#SSQ%e+0;-_`J5Zmf?1Je4LM+5Mb2b->>GMrGSZviQ2)z!7rVi zoo5z{1(TDLkl(Phv_v2Qzmo#0*Z3K~$d45f{!?WIP!bYM-o delta 555 zcmV+`0@VG01j7W7BYyw{XF*Lt006JZHwB960000PbVXQnQ*UN;cVTj606}DLVr3vn zZDD6+Qe|Oed2z{QJOBUz)k#D_R5;6xlgnx%K@^5f9%5Dr>s`J(VpMUDI5s?kzamKo2UHwNF ztW#BI0bH(DtI2k|-S2ig`b@k|PN(y?6=DTkp?I-a&~mv{nog%Q9*?Ql>j|XW?UKvo zQV^TnZvS!r@c0yq#rCOGijv7BWilDkb)AO8Awh(|3n^$c8k9&Rq+m9i(O@w65J`HX#kC4=8i8s8Py}h3Cb`Wha0Dlv zPUir)iQedZ!WbvE+ihyKT2v?$q#zUu3DAVV3HkxI3c%TGykXXCHf6C=sfaLw!Juq3 zA#jDB0Cb3;{b_J#jcT!tne3D(_~qk%(qI1%HS}V>$q4*K@fX<@0#~c)eZ) zfC~U1xUm4DI^VHTuh%7iu~?*Xxhw#O!y$zb96%^O0`O09oy}$qbQjl$d~gDg&*wWT zwn_oQ;qYl75cuVGyZ^=Gaf(DD#B-ERrv+#_crOKb`;AZV!IRHly@OA*SAaLjPj1i> t3*RZ`y(Dvay%xYZAm4b-rttL7UjR#%`#j_F;_m>gTe~DWM4fRPz#m delta 179 zcmazz$~Zx?o|%DxLA7oFBp@YK;u=xnl3JWxlvz-cnV-kto0yWSP@Y+mq2TW68}K#6 za5GR9dx@v7EBhrT2>}&>9j literal 564 zcmWlVPiWIn9LHbh#%gP4-NC`wV0f@|)9v735U{w=*;cX=wmmS)Le0c50+N+@sKo!7gg%=*{s3-kS*d|_a0BDweB7K=`zn)CpG+@E7*_*XM8SlFx1 zEzAM%?rHwt?LGi9qoS}p&m9lXaWcnYu8cX};6#a&%yLyMS7BL{%aXy13J)1-l_4>- zs;mpLCdf!o7+6qEL9+$qhzb%FUDREuAgJn4#ZWV#Mj%Uc4`PN7aR7}#!mea^lHp4v zlo64!ry#88mO=uRcq;K#E7EL=FhPci3>y)KgRB5qA+jUnrn>3sZi`u ziR}?LGTqR0spSTi7g`>*9nbb7+m9VDbb{FR0xyjGFbZfK(uhVejgu%zqof_jNu0Km zBuUeDx7(fFI`y7CF0;PaSOQmn9^7TelX_)tIlI5wY=Mza;Nn=RRMHODe&u_wH8W?{ z@P%3RHx)OARw&q|&nUc4{g=+p;EmSI6nCz(v=6d(T0H|J+uMJy-y8#jdq2J(9v#8Y z1kjwlX-{l{>4$G~L*J@j(n-+UDT1@b=RG~ES&*+yj*mY&_)0dfRQmQVE9aZdk1YVW Vo#9K<8_5(a2I}*T${W5({sY3XSngK-|JzX3_Dj46MTFBVIz~K`3 z{eJ6@$DwWsqKoDoT+(&)+3Eb3c@E(Xt6m+BGcMjMD0t7=_WjOTOSWHqc==bjLqEfI Z-fI~u%HI8=4}pd;c)I$ztaD0e0svH4GH(C? delta 181 zcmeBSJjyshqMn7Bfq~&|n!zI=#a`m+>&kwMo0nIGdDf@+ET9l)fk$L90|U1Z2s2)~ zTlWVj$dc~p>&U>cv7h@-A}f$D8sHP+`u+R&ty{P5-MjbLv19-L|6jXy?X_#yPOfRS z0V-fD3GxeOaCmkj4aiaRba4#fxSpI45)>4q=aZ0-P{!C~pz(GV!@^jR1zQ-8nw*eR bRb^yI>=pjKv1zR;Pz!^ntDnm{r-UW|H7GwI diff --git a/htdocs/theme/common/mime/page.png b/htdocs/theme/common/mime/page.png index 6ed2490ed1432d5d667a76235360824a1088e928..2807687019977034c47d029c50744eb485e8cf7d 100644 GIT binary patch delta 632 zcmV-;0*C$H1&{@hBYy%{NklRlv2EM7Z6A&MjBVSt zZ5t~)d+h0|uf4v_|0@6#a(qX4OZe~tKM}sU&RyS-@ZsU%=E=#)+3D#i9)o;GNJvQF zZOLuHhyTO7ySv!i+q-6KYYQ728(3OeqLPJ$1%!r%UQ4dRUw{80_ggjZJY`39&wimpS5xCS0!>6VT+~z2_rkkUC ztPQKHtF$Nc^MCWWE%1-7aRswgg5uRCMD-2AsI!KS$;@@F;NY^NWRqX*s#+Z(OXJ?0sZVS#? zBmS@)3WZaBGb9t+U{G2Koen-ki((*@pn{Y}f9S+X5UL)Mj*iH!M~oB_!3wNHJ&rVimlLst-4D0tz|XhP0ycFf(8^1NL_#0LQl{`J zq7-5rFL-3zKsQDPOalkU$Hz2$U+{}|tYlYIjXnIDGoY8=4h{Yg)DyVyD$<30k``Rj zEHE_NOK}BPTnn!DfoiDOs10KR@4Q6#=9eI-I1ofmme3LnLscNV^ftEzw{~I!2M&x8 z3DTVirjd)``F=c68)sL7E6F=DL3`xG?P7W|O#a=W)q6|uJ>ebU!z+19`2If`Jf~0( S`|5810000OaaBYyw{XF*Lt006JZHwB960000PbVXQnQ*UN;cVTj606}DLVr3vn zZDD6+Qe|Oed2z{QJOBU!a7jc#R5;6xlig2JVI0S;zazK)2g@rjy798r+M)ofwK5x` zD|Hjg<{LIskx|gXNCKv1hp<&vA~ljsvWWQt$xCy!1`}bt34asCzCF(=j)%(C**-fL z&-s1M^Lr}+P(mTk9zq$R{2%Nk?B?Qlg0l7X^~C1p=2kwR$KN35P^;A{zJxC*r@?D$ zYsh3W9LZ!7@pv37D=Vxd91cUH(QuMN@U8TAlEOL@NxM-l$;nPhdQ_2>p92I-kgKbxek-#YwELuKtk{ zTNCM!sG|OE)%?^~3*0FeUVU4HDG-3%;YYt?4#wF*bX%G+|Jj9TG|Jv26bcmyl(!w- zV3L!tM&Du3vxG}_FKTShanXANs^vbko29r<(n+OKY=1psvDmhN$CJMSQ_`eL#s8p9Y<8XCWMM;eyQ$soRXB z6FM9jK8sPO64D_ta=9EUp=_t17cCj)6zK9i!WoMb$Cv;P8x~M`&5lDVJICCrkulq06myQQ;Ny$PeHPhCA3wY1c_x_6~WpJC!``tWO%WwE&(nscEE zj?p+JVczRZ3lVlzir&K$g$erex;7N25RxML=^ZA7fYtGV+9^8+hf>#%(u&eJV5b|3 iiIGU3b(Q8>_xS!lvI6;&1AIbUfiwpPhlGSgP*6~mmseC& zRB>`twWj8jDO2XmnX|XLdhe7e#{@Wz2?!i>vOJa?bxwfec~sEz?BwUw#m}p&pZB!9 z&yIRuUHl%%n9}op%9Qs@=e%FL^!?hkd-v{r|Ni~=Ia9tbo%4O|((hZ>e&4$F`?0;> zj~)Ad?%ell*S_Do_x<_v??5%*zyE*#{Qvv+|ACDE{{@nw>w(TPED7=p269OP4Dz%5 z6oHzHJY5_^IIjDi-^+JcfyXWIScv4R9lf_ixFQ>Vq(AsOf1O&G*1NJlzGZ8Vu3l-n zTtw;R(b?t2%rFv^u`KyC3;&nc$?_cP(U2yv^4VNRw{8zl*bf9cbi|KUc t{c?dnSxyv*%098?*D0RTc$oVZf3tz~o78DbgMqd)c)I$ztaD0e0su4_<5U0u diff --git a/htdocs/theme/common/mime/php.png b/htdocs/theme/common/mime/php.png index 45e74486e4303a2583352f44927912d4e08e73ec..cd0b763f1e45016c3207bceed525f82e77f0d8d6 100644 GIT binary patch delta 247 zcmV`fHbU00DGTPE!Ct=GbNc0041GL_t(|+HKC=3c@f9 zhT$aob&aWQ?KXd=_kW!>6p9DF2Z4t`2odp&JeHAucv4k|Q#*R^BNb7m1i;|EiZCJ9 z=U(Gx5y`oRZ9Bi0HRMNd8ghYE+*)&rrHI%ku49XFZIMnoot%pFGf!U U=K3P(V*mgE07*qoM6N<$f_HtFmH+?% diff --git a/htdocs/theme/common/mime/pl.png b/htdocs/theme/common/mime/pl.png index c8460bb2a034e6666e5cc26b9195f487faa15d08..18510183a62a4c477d8072cdcbe7772d853ebd21 100644 GIT binary patch delta 506 zcmV`rbhWGevU2WU8tvIz2*0vdxQ4!Qu)EC!^ zQ(Hl8f7#q7Pm}zIo%sg4EBt=HmP{t?OeWJholdtBITj9wYXky;y{2jYuq^8_v2}zp z9ODSMrR(}%^qd3@1y-R#1;@7Svzn&;Q}TE`dw{(Xj7FpL34eI#IzIz1&StYZYis!a zO~^kaK`MU-t{{~8e7+N|^8=2JKwE%hFzbJjd~5vUJ5r}k9YYv~X(5@_FpLMZy-EjC z!8sMBbbO4{Kv)QD!34m zYs5U#@mH%>t$)2x77PYE)9Omv*hlLh2ztW%4S`=RzR}%KC^VV(Uyh`@;&KnY8}LgK zEh6X~y1?22x>{PPQY9awy>}d^K@mt`2R7(zDwP_+(cDHefTodXvcRaep=r~m=^_xQ z4S~xOiNpX}+l4C7!N^D?(!X=(&Kmy%soc5@Q5NIeW@A^A( z0h}VReEISfxu@OLKh?IONdT6>fVzoN#%wicx3|Ek(uL|fsC+gak5>~IGcT-HuU=)5 wYq40Y9>cHYSQ@!ItRbCsL&cC}E$3MMKVi~=9drp+6#xJL07*qoM6N<$f&}~RtpET3 delta 528 zcmV+r0`L8l1gQj&B!BQpL_t(2&ux-BNFz}chG*tx@_s+3$QU77g!q71=)&$2(ZWJ4 zwARK#!O|iiDk91XD_F_0-L92|g-zDVw7YDxTMNEG1S=Ip6eRJxVJ1Z5z|Y)!&iT&c z-m7@MUNs(%J5#CDKr)%^SDL7RIS`}TAphwzG z(=?n;XIWL%nk|>h^#j;l2gBj;A_1qC^B#DmQmJUzzOa5Kq$VZ(RDJ|D8&y3X&w=H< z!?6Xl4O9=tUbWz=+~eEN<#Iw1!l9#jRw2X*ZEr}(4sNa}C4G$3tuVAs3pRK|^*?W+ zCe>|jxBF0`w10s8ZD+GGzYAHd*ErC>_R01EpGvT4wpWriV$P&Lo6UY~9FX7dFVgBd zZS2ze9YGiTuL*pRYjhk41m^fxxsnd$?Z@E^0bh}5nV?_j2-_ZAt!6SA52M{0hSA*u z68MP&Dkl<&DX!)}S^%0S(VX;C?Q5Y>NVb4L9|&BF#eZUBwDujDbTAzXg+`0TqRM`p z$^$JRnY(Chrc^2kUezS;xCdwgr7izw9)QsTrqk&*-s!Ntr`ish1<>UlXh?bQW42D( z9g%CQ3{w3YmCMm+G%Ib)yp+%9+h0MENF>kjn_Nq;b;2srunRkeB%9o0#|vT7fgS#) SUNZmy00{s|MNUMnLSTXw{Q(*P diff --git a/htdocs/theme/common/mime/ppt.png b/htdocs/theme/common/mime/ppt.png index 71a41fa45593dc1c1dff5ede45ec29f3f122e2be..90cdcc29e5c46e71e3a84a024e664573e5ea8a48 100644 GIT binary patch delta 270 zcmV+p0rCE!1fBwr8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0002fNklef29@ye5?k@f9JN9LW66-grc%-m@debdD2Jo3Z8n>ZOQ^ zu?ev(a@^A?Av(2{^7d${S|I0nKAld>vaBeIsmP|L+P3X^USJwQ5QL5uh9M|Jpb|yU zWY84QRM2J670^|v6B;yCXp-t+5OpvO@LdRe06;@SLr0USqiLX3N2`ezeN40sv`H;= zEOZGQT?aiIJyI8a4}Bj44-uK~FyCdN&%%JMg{-s2IvoZCFzPb)D-li8F^6k%e)ojF zFu1We*nPfdJr`dV@l5IV+>?RF`(8Swcd+fi$M4?j52@|Wi66C372#^nwQt>Qb7uZx zZZlIg{8Zg zvxu@rZ5S0%NDvS-euN<-?N=n(zHm$GmzZJ+V^0}TGn#&hhtifA!uKB1UZLRCPRG%QbeIeY`> zZzoy6R}a$v2Y;K-v*8?BMOK^Tu|CQ#PxH>*w0ul5pL2H-E#Q-fNQc;Vp2eHV>ZFxW zfFLA{si*w@3O_tK0Uy1Q(LsKCi`9ErvW>hXBUB-Z*>Hl>x3c#-I=-jni-~-fZ0En9 z$j4Z*iD(`jXodLL1fM1MjcL;_;u)7wr~{4SMc z9b+>zrfHud-(>SC+ppPpg#i%)$ybaYWN+3<)qxNR7#U~ZAr8;8wam(G-rOW#V^C9k zqEXPRr2+;OE4SEw!Elp_BTUb8{5;JzOaHLZB`+u|a-xW=!Q^R}>J)KU&9V&QK00h-xG$ zlP5WIk#B!s^#R>`j2@tQh~>wWyL|l(NrRFIl9bUFV}EUi_mh`Axkfs~#1Yot@&6l| z`$&c;YpFi!iVqJdOV(er@s{_i+_*~jDJxyB|G{9u&Mr04yK>RTE-Ka^QG8(HAbVSM z?~$+3YO%G9X%8%YD#>rsZgS-86Z}R#cHwe1#b?>+yFq% R0ssI200>D%PDHLkV1hz;`6&PZ diff --git a/htdocs/theme/common/mime/script.png b/htdocs/theme/common/mime/script.png index 161f77078161c8cae1821d3fe10871f5322787ce..fbe0831cb12cf6c39466cf1feb53eeba31908f8f 100644 GIT binary patch delta 335 zcmV-V0kHng1m6OX8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0003LNkl9wBE9_bEYfZG6AXft~wI!EJ~ut3S`&6(niYCNeqodt$%Tu>Bj2HGi5brOXO~m zSVJdZKymp--I-cIqh|4lrN>HJ!a24p^%?Q(D)pgnk@UUNX$Ld^parK;uk`3k$Vhw> zFI0WT`9WQ=OG&<=$m&uvbET8Zu@bTt9Npicu~FG#z0$*)rY(nzv2rLcl_r3)gmS0R zMF5mW0ywHDhDZ{yU0fT_KHumPeS+G!AtMWmit1%-8)*SLxpbxP^L|+N;}VbSwP}r~ hEzK@3zL+y`p&#tk+TLC0u@C?N002ovPDHLkV1h9mo;?5n literal 590 zcmcJM!D|yi6vj8ymKcc^FQQgOdoU;}(n<*xAxmOSkTtATk`+N%P%(&y6)9{ETDOPd zQcGAWl|g&igTknnId~Y*f+Jq0(Ze8tjDo^|ROTWK2r^FnAAJ1Y_ded`J>HwIJ5%}G zuAF6A`RbXnYwFgG%nleWEcL%xR%T26>~!V0mlS;iD7Fl#?E||7>=4-zsVhTybyX3^kVD*>Ot;7;YY}ikq<=+i2&drWdY;?GKdh6Fr^{nA>ttxQA#4n zB4ej;KUTA*L}Em`ThvVUjRKxFp=D zCPGmrC^tyT73G?mj?hdO@kR&QT4Hqx0n@@nYVr+bgyoE}+h94IZF*q%Q5 zafmL{HeUbTXzstfqWsQi`?bzp-#h2+KDeX48g4vt+Nza}RRuiS7Z9yCswzYpJE zMHe?MvcmV1nY%BaWg2ti8A1{S0TH_trP- WUS{g?h4I2pv!qq6IOP}imD#^Pm~E5* diff --git a/htdocs/theme/common/mime/svg.png b/htdocs/theme/common/mime/svg.png index 6c627890259d88a617adc5afde1023fc430d0452..09795f189d4da4cc8058f0dd7a7d7d9512f4e42c 100644 GIT binary patch delta 330 zcmV-Q0k!^!1=<3T8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0003GNklIPYV+y?^!iLLXDY2wQfOFH>dC zF~*#WW^I|Hb^A(w%e0qdGg*u{5jHv@ZR|?LU6pUDf(6vu-va2>T?4}@NPMNv ctWUtzCv7CY*`sgXJOBUy07*qoM6N<$f-oI1<-Ac(J46gP@R6B3)GCbW|Z8by>y1PfJ3?Pj8oFsRXs zq6{I`yJ$6Iq4ky)ytw0ih!mGe|^+QfM~9EG!vM{2ToEopZkPZ4O*+u|Lu4 zaqV;=ggntmh=aMQRgU%0_mpZsVc18a@v!}y+q1EIJ8yGNLFBv zh>B@S1PY!4lu?O6XH1p^nMpFEGI$vPDYBv}S)`DdLV1M>3Ivd-swxIm5>uI=GOR-M zFH==b*!8cl0V&{{hH(lyP{r5Frd*A0vevcmvl0HB7^0L%usmQ0f%Q}UWJXBvuW znilg}?5HINElsdAV(G-Pten?x!BdU=>m4QsI z=lZkC&6Tm^^B0Sqqc1-=O8K7McOwIf)t;S z&Q6@~Na4Lp3+mG1y=#-1Qrnf{@)6tH&tvnI_Wg#pci?I0w>jm{?aCXTQ;}x=VB@2| SR`!jy{t=3X6QP;lrNUo;=XWXq diff --git a/htdocs/theme/common/mime/text.png b/htdocs/theme/common/mime/text.png index cbefa2a14dcbf9b6f478a5cfa9a1d845d53159f2..396855b8ce9ebda26bd460183930e85c7029b2d7 100644 GIT binary patch delta 170 zcmZo<+Qm3QqMn0^fq`Ly)~+@n#a0sJ7tHV<1kEF)Yk?y9o-U3d6^yOt6@?lUL|PKx z*R!olQWfgF*6Z@<^I5I)g)tAg`5w*}H8VaPY<4H}|HPoKs3o~O&IQ_QHh8uExzJvI zijjf6^7;K6Vyjz?-X6(a_IWo`#Co>sX_7rp UElcY!aiHA{p00i_>zopr0F#45_5c6? delta 241 zcmdnR*vK?NqMn7Bfq~&|n!zI=#a`m+>&kwMo0m_@QodIC4^W7+z$3Dlfq`2Hgc&d0 ztpf?Nq&xaLGB9lH=l+w(3gpWL_=LF5nKNha-o3|;9XogK+_h`h?%lih{Q2|u@85s_ z{{8>||B45m9tW!ADhcun267>QVbhr`o%2B908bak5RU7~GnTNh%rcf#D`j95o}ss1 z<3h@eE6qQtJO`kqJyy0r=u9Su!nVFfQ0U!B% gJ9a8Wapnjzc!a1nG2LGo0W_Pz)78&qol`;+0Mtxli2wiq diff --git a/htdocs/theme/common/mime/ttf.png b/htdocs/theme/common/mime/ttf.png index 4c258eb0b99528401e27f4717331a7773f2f2ec3..20271fb90fe31353e1c6520660aefd5d4d3e23c3 100644 GIT binary patch delta 430 zcmV;f0a5;v1ib^08Gi-<008-6=9K^d0fb3JK~#7Fb&mlA8c_g-55WLIstOpwga8`= z48ce@hyYknw$KQWGH{-{PS*f!05K>)2T@R{TA@~`PLsXM+o}5Zp0q7nAHTahpZ|YP z%IEVYA%y-fg+hV0S}l4yohSfPDwoSP9&k7u&}=p_91g*;g@4TOfOfkLzKmEb21QZW zL)qHz@wMN_n`9D+L;{i|{VR97UC7ZW-YE(`bUF|)#^Cq+@8x2#2%pb~&-FSCENulJ8U;6H_!&1M0?@rc)i;H_bRZMRoh(=>KIpCQXK!r?G>yB!4I*K0gW zr}3UI{FZCA8h?M^A{Y!J5{baFEC`I*3{Nr{eERzsx~?-yDMFzT;_)~HKl%4dRmBTU z6Su>+;AAl}d0rozSaQysA|2JeR{4-Y%HW=l2)9TrOxd8sJONdp+z|E8JKt z7FU@NVo#@2%y^4wni!2n*zhLNHknKyG9Hf+2n1}2PbZr$my6!wcDu#%E*_7EIvfu3 Y7m^Ogcn}v%-~a#s07*qoM6N<$g8e_h-2eap delta 515 zcmV+e0{s2G1Cj)g8Gi!+007Rv7N-CJ0Uc0GR7C^?1Q8JthK7d!|Nj;i78n>985tRf zh=`Mule)UP{QUd?000^q8XO!Pk&%&>mX?>7mzkNFoSdAUot+&W9g~xjmX?5%($c7=rm?ZH zwA|dexw*o^!o$eO!`$4<%gfTz($?12*VotB*x1?G+1k<3+uPgR+}z;c;Njun;^X7# z;Na@&>g((4?SJjGSjR^ziWX^z`-h_4n%P_xJbs^Yi`v{r>*`|M&O* z`}_a@|G+#Rd;kCd7<5ujQ|s&N>+|#T^Yiob_xJbr_xJbr_xbtx`Na?fg8%>kj7da6 zR0tgf!LbU$Fcd)1o7b1rATCm;4k9SH`xE}Z=;mUfQhXPMHrh7Yc#aVVKoT=(aRi{R z-B||!xOd?r0PyzF{uJO==k_pG3Y?m?z1lJAx`jH|HKy(D=WA*|phA z&BZr&ED2UwTA`Ezz_x811sgju-Ad%{D~>K7@h`yi4e3jj$baX1R))5Wr?PBnPt!J- z_N7x^5N6+Px1qRjGZxmw(n`sVx1P4c2!01lT$9*EMCR?YZKS$4nqk`deyR#WoPBUL z8qM;CC@Y$WIC0NXwk_R~>1+DB4CMIxFWjTa2FT@|>vk>+RmYNfCa>-#lge}L@jFty zRhW{kBAj_p1%F{nGiPHjL*~rEI~P=^v-#@)d;po8dws~(tZ9ys%{jQD%t41)>v~vP z-;V{Hux}}`RGO8|0~Br*B%O7x{|ms`)cHb=gY4CGzaZmM92dFf>y#a zHy_1QHyw#*fSwlo+&FyC3hG*;zS&>?4)8VjYRtmsuAmKPAGRH#poQnTd^f9xA7`V}MomCBbqI?>O@H!nYNx2ipNEG7~T0FcdjtZ(e+lS%8lMfBZ^ z-oARo{}$8f50BhciC;`|gHlpyE?}TNqV*SM{2$Ho_pkeRF%9SW8O#Hj9_BpPF#rGn M07*qoM6N<$f&+C`6aWAK delta 763 zcmV$XgYMs^AIOw1Qr{*Wn z)N-{9ma}x2(<~`9Go1=*>YR!KZvrBSCd!u}@M0og%Ev@_;eS=L?dpv+oXgo-2fveh z&-L4`XZM{0Am@MhW1u4s*;@C3K;zseRqHhM#h#)RHj13FBm`5YJ@%ObwUg$|I?^Fe z_z)XAG~7WdgJ(MpM<9)n#b{_~AV~YXQNUcz=hG6$4 z&^k#5o5x+OtYCC0DqQoYu;PhBIB3V?9y8JhM+`rHbA;MK3u^jJn72ouU5lVjY87S$ zeRCnw#dPf^Hc{PULRI$){LwU~mIF}Rwm~xjwJiv4yMGR?Qw~_YyLi%VB(s7Jg_m{* zlMqTQsQhRIuhYOh)??b}!!C7zon0Eevo4gjX;Jw>4~K6LJh7h63R=cpv@4Lr(*X;( z9eR|%*P-m44oUhuwjvbxVl9eVRJhN;7i(bm$C2NpJ{G)?+DO}09AcRZymkZ1#PcY5 zJBQ-e>VFJ{uLu-2Dp1fUN4<0zMo$EH>*U83m_9;Vt%-bE{_J_!If!1y=c+`QVZ>0_BPy+%^pgnv`f8H)Z%0&Tp8&u*MCIC4igN zW5MeWM_DHpDNi)Zxz|9XboOnitwFq$ETN=Xj&!2NX*}=MLuvFvW%lE0#pl%J2Sc1w zSNV=m#<~4$GSo+`znGLx-Y3O3PgmdOG-FP(0zE(9NxKc4pUg8f@ txm+oAp=^LWU)nD?SKP<`>oxu>KLOXT1){x8y~F?j002ovPDHLkV1fyZVOjtH diff --git a/htdocs/theme/common/mime/video.png b/htdocs/theme/common/mime/video.png index eca195f5eba24bd1d84a54a93dcc48698e6001a5..db045f26f5353f33d181948e2f639c1583527c37 100644 GIT binary patch delta 207 zcmV;=05JdZ0_y>gB!4haOjJex|No?PYBNeEgCja+08+p2=f| zje+mpJuf$AVBp=oHL%nOWK^81+$#|MIn=HmY#-Lsn|3o`Rv7LRMm4nVy1?fq}7tp|O>L zg_WVDg0_L7fkAP`(TxlY4D2PIzOL+-nHd?aSzlGG5CIBt7I;J!GcX8F0b$0apMoy| z1zFM^eH|GXHuiJ>Nn{1`4FY^ZTqPv<&CU6&>#dEvyu8A~jEaksii`6b8;e_7T6%hV zmMmFx{P^+b&!4}4|Ni^;@Bjb*HxF`U0csW~3GxdDa*+YU1Lasrpj@7(i(^Q|t>hp4 zj6C}fElXYY?*I7>8yXuOV_(`dcXTXRusGSSc}Lfx3Eqx!&52D-8&>TIU~Rq?#MY)^ ztlZ|iYIPWE`Ygjaw^DO*E>1l5;s5=amv`?9mTXANowxUfj7$9Oxp%l1{Wq8X&whD( c*?)G1uvpU;a|h>tK&u%%UHx3vIVCg!01dm2=Kufz diff --git a/htdocs/theme/common/mime/xls.png b/htdocs/theme/common/mime/xls.png index 211ab0b09047b2120b8e447387a3e51124363717..6a226f9b087859d269e94a3b30827cc57d7e1ca8 100644 GIT binary patch delta 290 zcmV+-0p0$-1hN8<8Gix*0059Gx`qG%00wkYPE!E?0RI60H&`2e0002zNklT6aWAK07*qoM6N<$g5#!x(EtDd literal 574 zcmb`C-%Aux6vt=LaN2E6BVm$$5F%wlC_QaOwcBnw=4{KP;0`_L&O^lQAsU|?`oT62 z3O7Q#2+~N2+z8?tg_oXgg|#CV4OB2evhz^E6oDhXY!A|O{U7>p&iS76eK?#mQONfs zMnx%&12Y=R=%%JaO-Cw# z8bBJbRe*VDfT)J88w40sGchm;FexyZW)WZ!!=eCU3sMs@6Jdy`g(yUhWm9A`XftFx z$aXEvVF)`m=DiECi-=+xM{lE*t zAPmD=trkVm(u>Et__TR^{0|n3Fd6^= diff --git a/htdocs/theme/common/paypal.png b/htdocs/theme/common/paypal.png index d5705c8bbb97b8c66f2b44fdcf5501c1089eb2c0..32cae0ca9eb3817d256465fe524263c5f8de90bc 100644 GIT binary patch delta 1366 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 diff --git a/htdocs/theme/common/redstar.png b/htdocs/theme/common/redstar.png index 486fd6770a231ed55293df7f54edce03ee55c303..b1fa6a0a8ed8f600b5f86d2e4b8488553f7415bc 100644 GIT binary patch delta 483 zcmV<90UZ971pNb$B!9$7L_t(|0Zowuj3rSJ0PD?s>ulS$ZQHhO+qMy(ZQHhOTeE#{ z{VS=c)8EugN55Kexy(WAt>Z<#5xP9B#&d&8;+OYQLFz(Cx zxgyKD$;0kk{odHN_DcijdTH(0(lWkTf{W=Lx$ewYcV(Dctl2#zP{l z7Ss$brBcPEARW5sPz49w6bI`jf}k!=A_$5O>LQ}jio_0r6%nPNu_Y<-mEboFvI>p$F_|_ z35I859$r&n0zklVH_Nzx&`gFU9Y_#ZcRjo4%tPf9k0$4Cca_YdG3aPaT>mlGoNp`k zOROgx*eZU%O@Ez1?Z|>n!oL>MU8e_ad2UdzTj1%h=ErBhWi>LPBR^;Fb0fB)nM^wi zyLF{sDZdR$W$cGn1c^81!d!TL`UzuyLW;ajd0dJ|xP`;_DfO_j-;vUmq?CF)#2ksp zl@WCZ006*ARShQ<5SOTD$t)Ly-mz8c6NEz0@UQNyq&Lw#%62>`%?f&x%H#Lc(o_|X?53vd*;+RjLMisk7vmjM9Od%yv{ xCOJG)CHP$B1;B)cb_>06at|!-yDHBC{sYZpzL-6W^kM)2002ovPDHLkV1nE`>G=Qv diff --git a/htdocs/theme/common/skype_callbutton.png b/htdocs/theme/common/skype_callbutton.png index ceccf2858d2cc06e1dbeeefeda95a6ed3f3b19af..3af90678a3033935b76191ad059f9380148d22ba 100644 GIT binary patch delta 398 zcmV;90dfA}3Y`Ox8Gix*005AYXf^-<00wkYPE!E?0RI60H&`2e0003}NklKh{lZ=$m&c`-ooR0~tQRZIY`sG5+~fziFd z1!)#vP4xnr@0Ov9V23A;K4dU02=h`GZKK4OrnW8|qx&FU1}M8u+a_vy))$Hx#Lqy& z!f9>ilkgldXlzOMCOUD#WH3Qw#7 zJa8FC+!oL?W2I|!`>Pudp-q5HUZ2afEnH|ZLPim%uN7v1ZK{2!{Xi* z9IWNBcl0194vCu}eiqRD8$a|MFT(CxM#1JZG%egy=Z$arKa(o?+nr_jXaBW=#t s`0PDL{{?CGAl-jW-TW>#TSij>Y-D98+ykA+00000Ne4wvM6N<$g4txVWB>pF literal 1377 zcmb_bZ%i9y9KJbcpkZp9ACxaUZ;9&>`sYe}wPy>oy~3JNY}z7ZW(h~{1uk%ZygO_Q zX36$#nhh3olp%qL%MzRh_MwGt-HMx=LS-g)&PgJsi!w3lrzI{~#J7wxKUhEc=DmCW z!K19?g1*=0lGNBf&Fpu z3Wjp518cSTj6TT?y14`WG6?oJhr<0mVH=Cp)uQ$&1qFDZGH8_V6%;D!z&3R$I4^7) zFmw~5_BgOdrrLad)Gf*YwdiYfVIx7HB&jFN7Lp{YQInA{8H})#I>Jm@NXleIw;Bec z$!sSTpc}Sg!IcB+R#k~I7$T8~K2oC>k zQaMpT3yMsK*rz%$==4zvytFMVC|kz_56lo{Bm<#07E&q#eZK#O^87YhQ3K$y-+vWW zLNN�zeV_^b!oW*AFsPvCIF_TPk^(q7ypxdv#)P`KECTy${@R!?EN zUAAzsUHCwN)h@%bK6>Wh0DKZF{-%%zKbgQ!B&tp(aoDGFucz{j=X1v4ORrAcAjht@ zr&hJ2*Q-x2nB$qMk!z6*Dp zXTNexW$~eTZTz}@27*(8^u2+lboY?NQ+s1F`KQpym9=D5W01L9rZn6Ynge1NFG|=Z7ejX*!6y7aWzN z$z6vWFCZ?(l&Bw@ Q+zU-2UQaXqsjL0i--u!+zyJUM diff --git a/htdocs/theme/common/skype_chatbutton.png b/htdocs/theme/common/skype_chatbutton.png index d8135bb85a50e5b8a1d459a81365a0b1039df613..201e0e56c629f0ccc25ccb8fe17cb82c1b90159c 100644 GIT binary patch delta 266 zcmV+l0rmde37P_s8Gix*005AYXf^-<00wkYPE!E?0RI60H&`2e0002bNklc|!}mY`);;)=b?mjnwx@dQ9|IAP0ptP&fl}xij=lVDzxAownnzd>PztC3q2bi) zAKL34110bvpn{XHen2$@?R^0hB8Y&>pc*vSJ|aeg{`$wH*?$lSv;po1b+`m!KY&5} zp;tgrJfUEw?1ONa4 literal 1244 zcmbVLU1$_n6rN%pf)KTR5Px2V3Guf(v$L6*IAb>H?%s{AW@Fr4aj8h1%-l`J?93f! zZrn|veJG-c50*X%K9uT%2%-rDqtGA@H6%uiX(M7ZX=<|GNwR4lLJGai z%>9}3ecw6fo^!IXVMp2Wb;~J=DvRv|2{Nzp-qK~{yUDjQNv5?pn#M_#!8z4|R7gin zkdB#ZGfY5LZ$Huxt0`((#z>`cI$p16$YfQ|hRvHcK~q$9ZQfS3R*2~)*lbuq=4I~< zhBovdvtNw+<8}nL7&|*0nCxgsX&tSatTVMWbah@K1SZ5Poj0?VtK@^sEU!Y=-Z96} zvnIGT$jmvFjyKW~HSe?B@*)F(uI3mvHjqVo zjA|2V!$F34Iv0Xz$KwmcmOGy)k}@u@+8odNIn(swnzeRu0{-L1qSkJz-G*EOx~R?3 z$bDqWi(rzwrG-30;*GM$G03H;S%9=Q6IwV1f(-e?>V~cWSq#XsD99mMjEX!j1Heb+ zaEO;=!5<0rB5~s%>ymcF%D^s3s*nAOWG>aSf7e+xI8%V zZl<@Z;#DuWP7tVEob8U%kU`y9eKF zzB2gP?HA*J&wO!zjO!Y@GBAGT*H_0LysYUNzB@8;@YcxQzUNZ+)2Znhq5El}P*}0= z`fH-d;6y``Y?mHX*@HVrh;=pwLaF@Y?CBjVZu(10KKP;Hr;)y?!ngJN^aE$tmzVS& zsvg*L?%CITzgQFg@cXa61I$1KTr9oGY>OJFetDAaTz@`yC-tQM(X@2pV7E~5d!KyV x{^sGXOLd0>+m+Ry|8ex>Z_a@~uLVoiP>;8KbZ)Bl=iNk?ibWehXZX;U?*XFs&Ncu5 diff --git a/htdocs/theme/common/star.png b/htdocs/theme/common/star.png index 4b6b458467588e6c444e1d4e23a00622db915374..4d319e9e3b366f6635c2c011e7843deb821260a0 100644 GIT binary patch delta 270 zcmV+p0rCF*0-gep8Gix*006`i`v?F400wkYPE!B?03rYYRd1Ca0002fNkl$Ur>!t(c6bN_iv~MA|M01q7TpS9bD14e@7t@0nI~EcXDm# z!4>8E*A#-#=ED7ZfC$9cz9e(w{PZ=wDVrwLffSzGHf7JMoPRxA(9!y7iTmdFAgnvL zW6q}OVOtkR!_lhlu*0jSqq}K!lkcXPVGsn=u%N;N-Ql-S?*uAZ-Qv5pB^Zb{bO$V} z^16HWIEtbZn`Z$<*EFZxI(-O;mNg_TEA~3Hb^(f_EtAS1E`X!G3#Tq^Du%ED+<%Ib UY(#e<00000Ne4wvM6N<$f-j7BH~;_u delta 365 zcmV-z0h0cn0{sGz8Gi!+004ZhoNWLA00DDSM?wIu&K&6g004?mOjJbxA^@gyN}za1 zrg}=IfMTnHO{;`WrGj&n zt_Ls|EfQqUwuJGGUB5pXAtaPv-!$Dc9c9ND6-x+J>M(q~&JBPI-D(D=f#{+G00000 LNkvXXu0mjfujrw8 diff --git a/htdocs/theme/common/transform-crop-and-resize.png b/htdocs/theme/common/transform-crop-and-resize.png index 72512db6cd7ef2c19156613cbda14191de48a05e..c32c661d56b956375982f3043fca5e4bf78af670 100644 GIT binary patch delta 661 zcmV;G0&4xp1+4{;B!6^CL_t(|0hE&ikh50+MN^MDDqd~dZpW(K-?nY9ZQHiZFX=Y6 z7fIHNo!p>yd!I(HyCgZqTZS3pn(hc<8SMi^){_WgTd}@bho$b=_4cG(e5}7+<$ly*qx;%CkxfyxtV!t zZ>GvijgCjf%o^ zufC2q-hbZ@Cn&!7{PWv?X8&>p9*+l7i3B`08)I}jx_?_*uy@Zcy!X+1Jo(~FxBkri zX$3+KD=5(EbWo3vgT-VbG9nZwPoIEXF2wf?CY|u z8OLaS}(^Z8r<6Dk-kr^ZUmGh2Y|axFMfdA|aO zjvU3g^h}6^LMVHCA#Q5YNhFeeI}6%&@H^lO%VKE!RSL7Rr-y25c}8{0S}4`a=M?pBVl*Y7QsLnm>niU( zs1S5liM!6{HY^f;gM;uz_E68h0fkE|l*eM{zSRCZ;#IWw1%u67LIlw2x_5c6>%a2H(0LhgE`2{mL zJiCzw;v{*yyD)UH%6b4foCO|{#S9EwA3&JVX^qJYpdfpRr>`sf4Q6=;LGiVj>ve!a iT%InDAsn*F2|zXz1LOGgB!8|+L_t(|0nCpB?A1{m#Xt8xXWQnOF{B}DZVa;H{gTt@Jn++PIl;$%8CwuQn;HO3d&ey*H z$oHRi!w*+g^nkA8k`bj8NcA&z?U&y6dUbW}69J)yP_&sy;D5c&y*RZL*b@f8mlDQ} zIWKn*xFOKZP^u~MP7~=gVqFvwz<^jHDBYyPoqgk0eHQSP7USB_QN#$Q_?XuZ&cKar z`~*=QY1|5+Dxf58{331v#Le^W!4W!-+ep0iz*^yY0;whlx8UyX@q8BWG~q-$0N&l+ zPoH@w5DdnBhJT;3>mZHzWoGO;N4(2&fG-6^Bq;Ir+%9^|S%sH6jQA;x_o4C`ySB4s z#xl=?-HT{Fbji)n0uCa^2f(;*YL2O@Yw)4wT;=O0Q2<&FUoZtg1K^50OwOmXiT02k3t&F*5^edgB! zC1<_oe%v#&C#%|AfPv17E#8 delta 491 zcmVTB!A3FL_t(I%f*wwYg17a$3OQadA?E;j1kfL0~J9nbWBl*lj2km zM8}TRzraZ-xClDANXM?WV?=Z);wm^4>QpTer}so(m#{hqUJ0d&1XGuo zn!WEM0yq!{2+G@g=xx2WI0D4V6Q{A-N1WhxKhSEtgpEi4vhI6@$^E~3fRezOUGxtS zJ)qNg&XL+ff`7`n)bOtgB&i_3k9R8mfmlTBkoK#`oVd0~96m!#h>N?3?STmsh}}l)fX2!Km6=;_Mt}$rX8>^e zd#V^Fs@8$pi diff --git a/htdocs/theme/common/treemenu/folder2.png b/htdocs/theme/common/treemenu/folder2.png index 784e8fa48234f4f64b6922a6758f254ee0ca08ec..130b6b0c8a77dc8bbcc7923891fce23413a66b1d 100644 GIT binary patch delta 434 zcmV;j0Zsmy1j_@EBYy#sNklwmK3@>5-K7Sj-uQh;$ z;uHY2C7U0I-kg#xowfc_pD_jmATWl|{5JpdgR^f1B470MkAIe;|MKtSjf24DUI2oc zBv-PZE)ZQ0WTP==6y@m~n7;B{KN65Y2@ob5IrZt4^{0jb-egLS==xC-sqqG1`^>*D zx9BTR19?aeDFA^{OAmJ%=K$mYqjCxjTpi?U_`iSJO}i*hSOyqi@CO2f=^YC(>m3I8 zjNZy*#xC1G)PE=v$-O81x`yI!6gu}0ivK9jJPuYA0Fq*pRDYB=$G<52BKe=)n6{ti zJAfL0{CNv=G2Ye)fX5#S_4MBzt1m@5`we}{)t6G#vW0J-!t z)W28#zy49AQJK_7+kz&dXaR?^+?p&Bn@zQ6>@c8d&nv&UxML+^BZg7@ZwWB>97(M$ c9vqno05?f1ZAwjuZ2$lO07*qoM6N<$f@5sOjsO4v delta 512 zcmV+b0{{KX1DOPnBYyw{XF*Lt006JZHwB960000PbVXQnQ*UN;cVTj606}DLVr3vn zZDD6+Qe|Oed2z{QJOBUzt4TybR5;7Ule>x(K@^6+>g^d@v4;gkbWsEoXE%32*i1tc zpTNXd5CcIl)ECgqz|2rE6EW}s7R?kla1q`0GCkMruC6-2L4UV1V`4IaC#m9a{_otX zoFrDUgcWUNKnn2T<(1v6x3%TmGEY?FPx~=aU`NsQ@0yri83p-Cc&N)yc z#yLXy+3tf^Av!f67$EZZ;y$74U!(t00i>>-7d0=^BLfjSvbPa zKz>R+9+CHNk)7IX8~#&)nhMf&h)KEt)CuYFGpujko(BrU{1-y;3dJD`Llj0RPRP#R zgGwv`B*hY&y=#Kw7=;3>2Ph696s>=R;uKUty|hLuBzX&1{k_Q)hbR>7eb8ne%>h!F zFSY@A$q`Zb)e4J6*>Q-%cpp1d%zFh(Ct;h7NS>XTvjlTiDh#!C9+nP=Q0000YAMk|#J>=1=& zU_JMUaolDtwN$Z_Aa`vXB?h=ciCsyFtHb~&*w4oz12+sA^nVE(>7|Zu)zZf{UJ=O$ z02_0l{Ci=Zi^c9BP Vld_HkuD1XH002ovPDHLkV1jZ2tNj1~ delta 451 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 BfOh}@ literal 10289 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 Q3RVMc4Sigxnr*~?0Ios=rvLx| diff --git a/htdocs/theme/dolibarr_logo_bw.png b/htdocs/theme/dolibarr_logo_bw.png index 50b1608847c3d5d0001b4e9334610b49ef41cf16..1c016cce8bfcb044986f972f00bef014a0a6a1fc 100644 GIT binary patch delta 508 zcmV@{yhLt4}m!twSX=cC{b~FJ*Gsx^L z;W=0f2NGN*z<QRjHP)Hu${fVX z)&Lvfcf1}f|CTvG$8oAmXGX{8ZZ|NZZv5k5)i_ApGvAqm#ssfmN1m8jCOD?d9)528 z6E1VyS&S^vce*3UK{Cv9&z9-} yQ+i8u%r_ZOW(7yoSVB8ywe6fbxzdII=lKP$qdgNpFpA3n0000Vk2!=*_^8f$=`AI}UR5;7c)IE;XFc1LXiBbeAN6Qv;z5)k8@*?d4_6RS_ z1vmhDw%*dvJw!vnVN$GC+6s;kZeThWk%t-oYFd)NF~j8zNW`?H#Zg=7!~0(Mk48uK zTfW-Mk7j>)WJa^)+y1$^y@)&&cA1C%+2L(syInmT`@`@evOCKU!{pm$Fpn_3v-so#Pstoc!JJmW*6Kj4Xw?reC`_mNqbHP(h-9qrt&gR z(D1i(2s*GpOMx-7qlJ`$00VbuDKKT8DL^SCHj!Jj6tI~+rK4R^*hX&9QovFk`?3=={W~_LF2^CTUNIEzFyyM(LpiB|Rn0RW{KzeaTopSg z*Py|Wt4LxCIzwS6eZU3ypC)@b=NkE-Wz2csa+Z$TNe+ de&K)k`~t3{Jrh6JBKH6Q002ovPDHLkV1ku=6y5*; diff --git a/htdocs/theme/dolibarr_logo_squarred.png b/htdocs/theme/dolibarr_logo_squarred.png index bd8d7ac3bfd32616c1231e0fc626ae9d5a7d5cae..bbe16cbc6dbb4163a0df89c94f9b949ead0fa9b1 100644 GIT binary patch literal 6959 zcmaJ`c|4Tg_rK2=jIr-pY$-|Bk1P?!PDPaL%ZTiIvM*zcBHGCkWzCd*$v!Hy*h(Ul zEo7(cVt#k(^ZovQfBn2(^Kzf_oO{nX_n!B;=RD`Sp@9w~c0U#Xz^JFIc^&{19HIb* z@-Jk+#&ZDnuj^^583!Ws!w6%HA%kX1tnvQ*o|re6sLEvyEnZIk&DXz+Ca5@xB2sVj znL+Q?4l~IeEHeUt02}};0HFUJF0=6fdH@OpKq&y;^cc#+|KX90L?9jVXG8%KiZT~Y zY#*gCLt+D(<}VSBA-#t1Fa7VBvUCK32mpYgs80Z3lmiX803but;ByKIm;s5PT#Dxrd2M;f5(dsT1)mJ!7ASDyD zkvjJ3dLBJU{!90{p{lZ&Gw<#j?w5HR^Zg@UxCa3}SX3r0M{n7!?gSf_!wipC@7&lo zb*22#rKGLJ@ZolP#YY!BMnebz>-WV1SQO4w*bvamZHZNL2c=SPug#xZ4(9K2@rsI* zDgSm~4nsJ12H;!2DdTj?!$J;@bov$853LVWFFbS`s=ldO;xV+Is&`GV&EOxVdK=}P z#;0`o#O{p>*B2QVi4lz(C!P3FAoy}={o-=c?)H@*BjF`qE{+Tgi(*j-4iJn7%tHcy zEmEcXf12rTvj4{WNEg~Uc}3E`&C*cc&TuNR}WGS zK2`l$vg-I@cD8Y@deQb`qtmNui;{f0Y;^#1;~73@8GV(})GVQSC%;52{9@V^v{Y22 zyq$CrF@|T!mr~*68MPN5-%s=yu&H<0HP|&buPUg`y9f+WRHCI8;o5#IbUyAC4zIgyRgWC6o|*1P8|I<_%PbvF zpYpGy3$$Ur{qsBB`{l~c8Ppr_Bb=l>k3vug?i|WxM{G)}%Uw6l5vxOM8nm-a1wDY- zHY@PJ5Hjv^1N?cdpw4gI++N#`E>-GE@i=-6q3_Z$gXCIA$E zPjmnn#ChnN5AHfKhmqI!aqBPM=HNX;)T`WgCG z@`{5rp8ErufC>`~du+ykc6U3#t;xpX>+ISMMI1E{kWu-aA4K)-h0pB0y&!`){d*{g z&`^h-`@JD^(o$t!Nu92o7h5FKL@>Cssncl>!v2te-Zm~TPb zquj+0bNP8$T1f`8RBz5=`t9*E+nEtt-eutdWw@sht#y;HRYUq>(x;g*YcDiqA-)|u zZZ6*5YSX{q$V556CmbjM)KOFtnS;L`9&f)AW7Y})VL10qv#s2Ent53Cu)$V0Ne}Og z+6>WgK0lJNr}dV(VQWaztr~N$2!j8g*J0!@uNF^*#edt+)&~(QRVlV`f9~jpE}o){O3`m+}fuj5n$ z)^f``6#htf{D{ylc~Car=>d#t*`wvl`oCx%$(0*(XaazDetmMH-dd%xW{-PP3X1}c z3}P7HlS@HsDJCVR*~ZjR!Aqp)1x)2b&z|gudwMNEznMHghA^d57E4o!)l0Tk80;_R zcI3Jx40={h%h>bRdw)6-vGrS5qk@11g!8Lz4t$OHdrBlh0ccLXg0hJ%vv)Zk4gf>L z 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 i^H+JuKTn5RP-O1P1dp+qRNP%@qjDKcd$ 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 literal 8921 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 literal 9804 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 diff --git a/htdocs/theme/dolistore_logo.png b/htdocs/theme/dolistore_logo.png index 38642add7b50688620e93de6b81731e57257f664..adcb01473954857e53eed709447724935e53ddcd 100644 GIT binary patch literal 10077 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 literal 10519 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

    '; + print '
    '; + print $langs->trans('From').' '; + print $form->selectDate($search_date_valid_start ? $search_date_valid_start : -1, 'search_date_valid_start', 0, 0, 1); + print '
    '; + print '
    '; + print $langs->trans('to').' '; + print $form->selectDate($search_date_valid_end ? $search_date_valid_end : -1, 'search_date_valid_end', 0, 0, 1); + print '
    '; + print '
    '; + print dol_print_date($db->jdate($obj->date_valid), 'day'); + print ''; -$array=array("1"=>$langs->trans("OnlyNonValid")); +$array = array("1"=>$langs->trans("OnlyNonValid")); print $form->selectarray('search_showonlyerrors', $array, $search_showonlyerrors, 1); print ''; -$searchpicto=$form->showFilterButtons(); +$searchpicto = $form->showFilterButtons(); print $searchpicto; print '
    '; - if (! $checkresult[$block->id] || ($loweridinerror && $block->id >= $loweridinerror)) // If error + if (!$checkresult[$block->id] || ($loweridinerror && $block->id >= $loweridinerror)) // If error { if ($checkresult[$block->id]) print img_picto($langs->trans('OkCheckFingerprintValidityButChainIsKo'), 'statut4'); else print img_picto($langs->trans('KoCheckFingerprintValidity'), 'statut8'); @@ -520,13 +520,13 @@ if (is_array($blocks)) // Note print ''; - if (! $checkresult[$block->id] || ($loweridinerror && $block->id >= $loweridinerror)) // If error + if (!$checkresult[$block->id] || ($loweridinerror && $block->id >= $loweridinerror)) // If error { if ($checkresult[$block->id]) print $form->textwithpicto('', $langs->trans('OkCheckFingerprintValidityButChainIsKo')); } - if(!empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY) && !empty($conf->global->BLOCKEDLOG_AUTHORITY_URL)) { - print ' '.($block->certified ? img_picto($langs->trans('AddedByAuthority'), 'info') : img_picto($langs->trans('NotAddedByAuthorityYet'), 'info_black') ); + if (!empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY) && !empty($conf->global->BLOCKEDLOG_AUTHORITY_URL)) { + print ' '.($block->certified ? img_picto($langs->trans('AddedByAuthority'), 'info') : img_picto($langs->trans('NotAddedByAuthorityYet'), 'info_black')); } print ''; -print ''; +print ''; print '
    '.($i+1).''.($i + 1).'qty_frozen?' checked="checked"':'')).'>'; +print 'qty_frozen ? ' checked="checked"' : '')).'>'; print 'disable_stock_change?' checked="checked"':'')).'">'; +print 'disable_stock_change ? ' checked="checked"' : '')).'">'; print ''; print ''; -$coldisplay+=$colspan; +$coldisplay += $colspan; print ''; print '
    '; print ''; diff --git a/htdocs/bom/tpl/objectline_title.tpl.php b/htdocs/bom/tpl/objectline_title.tpl.php index ce440dbaab6..b6197342136 100644 --- a/htdocs/bom/tpl/objectline_title.tpl.php +++ b/htdocs/bom/tpl/objectline_title.tpl.php @@ -34,7 +34,7 @@ */ // Protection to avoid direct call of template -if (empty($object) || ! is_object($object)) +if (empty($object) || !is_object($object)) { print "Error, template page can't be called as URL"; exit; @@ -46,7 +46,7 @@ print "
      '.$langs->trans('Description').''.$form->textwithpicto($langs->trans( // Cost print ''.$langs->trans('CostPrice').''; $coldisplay++; -echo $line->disable_stock_change ? yn($line->disable_stock_change) : ''; // Yes, it is a quantity, not a price, but we just want the formating role of function price +echo $line->disable_stock_change ? yn($line->disable_stock_change) : ''; // Yes, it is a quantity, not a price, but we just want the formating role of function price print ''; @@ -108,10 +108,10 @@ $coldisplay++; echo price($line->total_cost); print ''; $coldisplay++; - if (($line->info_bits & 2) == 2 || ! empty($disableedit)) { + if (($line->info_bits & 2) == 2 || !empty($disableedit)) { } else { print 'id.'#line_'.$line->id.'">'.img_edit().''; } diff --git a/htdocs/bookmarks/admin/bookmark.php b/htdocs/bookmarks/admin/bookmark.php index b2c7d227b38..bc0c0c37fc2 100644 --- a/htdocs/bookmarks/admin/bookmark.php +++ b/htdocs/bookmarks/admin/bookmark.php @@ -31,16 +31,16 @@ $langs->load("admin"); if (!$user->admin) accessforbidden(); -$action=GETPOST('action', 'alpha'); +$action = GETPOST('action', 'alpha'); if ($action == 'setvalue') { $showmenu = GETPOST('BOOKMARKS_SHOW_IN_MENU', 'alpha'); $res = dolibarr_set_const($db, "BOOKMARKS_SHOW_IN_MENU", $showmenu, 'chaine', 0, '', $conf->entity); - if (! $res > 0) $error++; + if (!$res > 0) $error++; - if (! $error) + if (!$error) { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); @@ -59,7 +59,7 @@ if ($action == 'setvalue') llxHeader(); -$linkback=''.$langs->trans("BackToModuleList").''; +$linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("BookmarkSetup"), $linkback, 'title_setup'); print $langs->trans("BookmarkDesc")."
    \n"; diff --git a/htdocs/bookmarks/bookmarks.lib.php b/htdocs/bookmarks/bookmarks.lib.php index 699065520da..46e9ca315a5 100644 --- a/htdocs/bookmarks/bookmarks.lib.php +++ b/htdocs/bookmarks/bookmarks.lib.php @@ -60,7 +60,7 @@ function printDropdownBookmarksList() } $searchForm = ''."\n"; - $searchForm .= 'global->MAIN_OPTIMIZEFORTEXTBROWSER)?'onsubmit="return false"':'').'>'; + $searchForm .= 'global->MAIN_OPTIMIZEFORTEXTBROWSER) ? 'onsubmit="return false"' : '').'>'; $searchForm .= ''; @@ -106,9 +106,9 @@ function printDropdownBookmarksList() $searchForm .= ' data-html="'.dol_escape_htmltag(img_picto('', 'bookmark').' '.($user->rights->bookmark->creer ? $langs->trans('EditBookmarks') : $langs->trans('ListOfBookmarks')).'...').'">'; $searchForm .= dol_escape_htmltag($user->rights->bookmark->creer ? $langs->trans('EditBookmarks') : $langs->trans('ListOfBookmarks')).'...'; // Url to go on create new bookmark page - if (! empty($user->rights->bookmark->creer)) + if (!empty($user->rights->bookmark->creer)) { - $urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&url='.urlencode($url); + $urltoadd = DOL_URL_ROOT.'/bookmarks/card.php?action=create&url='.urlencode($url); $searchForm .= ''; } @@ -131,10 +131,10 @@ function printDropdownBookmarksList() $searchForm .= ''; // Generate the return string - if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { + if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $html = $searchForm; - $html.=' + $html .= ' '; print '
    '; + print ''; print ' '; print '
    '.$langs->trans("Average").'
    '.$langs->trans("Total").''.price($total).''.price($totalnb?price2num($total / $totalnb, 'MT'):0).'
    '.price($totalnb ?price2num($total / $totalnb, 'MT') : 0).'
    '.$langs->trans("Account").''; - if (! $objp->rappro && ! $bankline->getVentilExportCompta()) + if (!$objp->rappro && !$bankline->getVentilExportCompta()) { $form->select_comptes($acct->id, 'accountid', 0, '', 0); } @@ -337,12 +337,12 @@ if ($result) { print '
    '.$langs->trans("Links").''; - foreach($links as $key=>$val) + foreach ($links as $key=>$val) { if ($key) print '
    '; - if ($links[$key]['type']=='payment') { + if ($links[$key]['type'] == 'payment') { require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; - $paymenttmp=new Paiement($db); + $paymenttmp = new Paiement($db); $paymenttmp->fetch($links[$key]['url_id']); $paymenttmp->ref = $langs->trans("Payment").' '.$paymenttmp->ref; /*print ''; @@ -351,9 +351,9 @@ if ($result) print '';*/ print $paymenttmp->getNomUrl(1); } - elseif ($links[$key]['type']=='payment_supplier') { + elseif ($links[$key]['type'] == 'payment_supplier') { require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; - $paymenttmp=new PaiementFourn($db); + $paymenttmp = new PaiementFourn($db); $paymenttmp->fetch($links[$key]['url_id']); $paymenttmp->ref = $langs->trans("Payment").' '.$paymenttmp->ref; /*print ''; @@ -362,72 +362,72 @@ if ($result) print '';*/ print $paymenttmp->getNomUrl(1); } - elseif ($links[$key]['type']=='company') { - $societe=new Societe($db); + elseif ($links[$key]['type'] == 'company') { + $societe = new Societe($db); $societe->fetch($links[$key]['url_id']); print $societe->getNomUrl(1); } - elseif ($links[$key]['type']=='sc') { + elseif ($links[$key]['type'] == 'sc') { print ''; print img_object($langs->trans('ShowSocialContribution'), 'bill').' '; - print $langs->trans("SocialContribution").($links[$key]['label']?' - '.$links[$key]['label']:''); + print $langs->trans("SocialContribution").($links[$key]['label'] ? ' - '.$links[$key]['label'] : ''); print ''; } - elseif ($links[$key]['type']=='payment_sc') { + elseif ($links[$key]['type'] == 'payment_sc') { print ''; print img_object($langs->trans('ShowPayment'), 'payment').' '; print $langs->trans("SocialContributionPayment"); print ''; } - elseif ($links[$key]['type']=='payment_vat') { + elseif ($links[$key]['type'] == 'payment_vat') { print ''; print img_object($langs->trans('ShowVAT'), 'payment').' '; print $langs->trans("VATPayment"); print ''; } - elseif ($links[$key]['type']=='payment_salary') { + elseif ($links[$key]['type'] == 'payment_salary') { print ''; print img_object($langs->trans('ShowPaymentSalary'), 'payment').' '; print $langs->trans("SalaryPayment"); print ''; } - elseif ($links[$key]['type']=='payment_loan') { + elseif ($links[$key]['type'] == 'payment_loan') { print ''; print img_object($langs->trans('ShowLoanPayment'), 'payment').' '; print $langs->trans("PaymentLoan"); print ''; } - elseif ($links[$key]['type']=='loan') { + elseif ($links[$key]['type'] == 'loan') { print ''; print img_object($langs->trans('ShowLoan'), 'bill').' '; print $langs->trans("Loan"); print ''; } - elseif ($links[$key]['type']=='member') { + elseif ($links[$key]['type'] == 'member') { print ''; print img_object($langs->trans('ShowMember'), 'user').' '; print $links[$key]['label']; print ''; } - elseif ($links[$key]['type']=='payment_donation') { + elseif ($links[$key]['type'] == 'payment_donation') { print ''; print img_object($langs->trans('ShowDonation'), 'payment').' '; print $langs->trans("DonationPayment"); print ''; } - elseif ($links[$key]['type']=='banktransfert') { + elseif ($links[$key]['type'] == 'banktransfert') { print ''; print img_object($langs->trans('ShowTransaction'), 'payment').' '; print $langs->trans("TransactionOnTheOtherAccount"); print ''; } - elseif ($links[$key]['type']=='user') { + elseif ($links[$key]['type'] == 'user') { print ''; print img_object($langs->trans('ShowUser'), 'user').' '; print $langs->trans("User"); print ''; } - elseif ($links[$key]['type']=='payment_various') { + elseif ($links[$key]['type'] == 'payment_various') { print ''; print img_object($langs->trans('ShowVariousPayment'), 'payment').' '; print $langs->trans("VariousPayment"); @@ -458,7 +458,7 @@ if ($result) if ($objp->receiptid) { include_once DOL_DOCUMENT_ROOT.'/compta/paiement/cheque/class/remisecheque.class.php'; - $receipt=new RemiseCheque($db); + $receipt = new RemiseCheque($db); $receipt->fetch($objp->receiptid); print '     '.$langs->trans("CheckReceipt").': '.$receipt->getNomUrl(2); } @@ -508,13 +508,13 @@ if ($result) { print '
    '; print $form->selectDate($db->jdate($objp->do), 'dateo', '', '', '', 'update', 1, 0, $objp->rappro); - if (! $objp->rappro) + if (!$objp->rappro) { print '   '; print ''; - print img_edit_remove() . " "; + print img_edit_remove()." "; print ''; - print img_edit_add() .""; + print img_edit_add().""; } print ''; print $form->selectDate($db->jdate($objp->dv), 'datev', '', '', '', 'update', 1, 0, $objp->rappro); - if (! $objp->rappro) + if (!$objp->rappro) { print '   '; print ''; - print img_edit_remove() . " "; + print img_edit_remove()." "; print ''; - print img_edit_add() .""; + print img_edit_add().""; } print ''; - print 'rappro?' disabled':'').' value="'; + print 'rappro ? ' disabled' : '').' value="'; if (preg_match('/^\((.*)\)$/i', $objp->label, $reg)) { // Label generique car entre parentheses. On l'affiche en le traduisant @@ -589,7 +589,7 @@ if ($result) if ($user->rights->banque->modifier) { print ''; - print 'rappro?' disabled':'').' value="'.price($objp->amount).'"> '.$langs->trans("Currency".$acct->currency_code); + print 'rappro ? ' disabled' : '').' value="'.price($objp->amount).'"> '.$langs->trans("Currency".$acct->currency_code); print '
    ' . $form->editfieldkey('RubriquesTransactions', 'custcats', '', $object, 0) . ''; + print '
    '.$form->editfieldkey('RubriquesTransactions', 'custcats', '', $object, 0).''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_BANK_LINE, null, 'parent', null, null, 1); print $form->multiselectarray('custcats', $cate_arbo, $arrayselected, null, null, null, null, "90%"); print "
    '; if ($objp->rappro) { - print $langs->trans("AccountStatement").' rappro?' disabled':'').'>'; + print $langs->trans("AccountStatement").' rappro ? ' disabled' : '').'>'; print ''; } else { - print $langs->trans("AccountStatement").' rappro?' disabled':'').'>'; + print $langs->trans("AccountStatement").' rappro ? ' disabled' : '').'>'; } if ($objp->num_releve) print '   ('.$langs->trans("AccountStatement").' '.$objp->num_releve.')'; print ''; - print 'rappro?' checked="checked"':'')).'">'; + print 'rappro ? ' checked="checked"' : '')).'">'; print ''.$langs->trans("TransferFrom").''.$langs->trans("TransferTo print '
    '; -$form->select_comptes($account_from, 'account_from', 0, '', 1, '', empty($conf->multicurrency->enabled)?0:1); +$form->select_comptes($account_from, 'account_from', 0, '', 1, '', empty($conf->multicurrency->enabled) ? 0 : 1); print "\n"; -$form->select_comptes($account_to, 'account_to', 0, '', 1, '', empty($conf->multicurrency->enabled)?0:1); +$form->select_comptes($account_to, 'account_to', 0, '', 1, '', empty($conf->multicurrency->enabled) ? 0 : 1); print ""; -print $form->selectDate((! empty($dateo)?$dateo:''), '', '', '', '', 'add'); +print $form->selectDate((!empty($dateo) ? $dateo : ''), '', '', '', '', 'add'); print "
    '.$langs->trans("CalculationMode").''; + if (!$variante) print ''; else print ''; print $calcmode; if ($variante) print ''.$variante; @@ -220,7 +220,7 @@ function journalHead($nom, $variante, $period, $periodlink, $description, $build // Ligne de la periode d'analyse du rapport print '
    '.$langs->trans("ReportPeriod").''; + if (!$periodlink) print ''; else print ''; if ($period) print $period; if ($periodlink) print ''.$periodlink; diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index e5d7422cf8a..f2833c98e62 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -54,17 +54,17 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh $langs->load("companies"); - include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php'; - $formactions=new FormActions($db); + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; + $formactions = new FormActions($db); // Filters //print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; print '
    '; @@ -79,15 +79,15 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print '
    '; print $langs->trans("ActionsToDoBy").'   '; print ''; - print $form->select_dolusers($filtert, 'search_filtert', 1, '', ! $canedit, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); - if (empty($conf->dol_optimize_smallscreen)) print '   '.$langs->trans("or") . ' '.$langs->trans("ToUserOfGroup").'   '; - print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', ! $canedit); + print $form->select_dolusers($filtert, 'search_filtert', 1, '', !$canedit, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); + if (empty($conf->dol_optimize_smallscreen)) print '   '.$langs->trans("or").' '.$langs->trans("ToUserOfGroup").'   '; + print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', !$canedit); print '
    '; print $langs->trans("Type"); print '  '; - $multiselect=0; - if (! empty($conf->global->MAIN_ENABLE_MULTISELECT_TYPE)) // We use an option here because it adds bugs when used on agenda page "peruser" and "list" + $multiselect = 0; + if (!empty($conf->global->MAIN_ENABLE_MULTISELECT_TYPE)) // We use an option here because it adds bugs when used on agenda page "peruser" and "list" { - $multiselect=(!empty($conf->global->AGENDA_USE_EVENT_TYPE)); + $multiselect = (!empty($conf->global->AGENDA_USE_EVENT_TYPE)); } - print $formactions->select_type_actions($actioncode, "search_actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:-1), 0, $multiselect); + print $formactions->select_type_actions($actioncode, "search_actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1), 0, $multiselect); print '
    '; @@ -122,20 +122,20 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print '
    '; print $langs->trans("Project").'   '; print ''; - print $formproject->select_projects($socid?$socid:-1, $pid, 'search_projectid', 0, 0, 1, 0, 0, 0, 0, '', 1, 0, 'maxwidth500'); + print $formproject->select_projects($socid ? $socid : -1, $pid, 'search_projectid', 0, 0, 1, 0, 0, 0, 0, '', 1, 0, 'maxwidth500'); print '
    '; print '
    '; print '
    '; - print ''; + print ''; print '
    '; print '
    '; @@ -196,7 +196,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh if ($conf->browser->layout == 'phone') print ''; else print '
    '; - print '
    '; // Close fichecenter + print ''; // Close fichecenter print '
    '; //print ''; @@ -213,26 +213,26 @@ function show_array_actions_to_do($max = 5) { global $langs, $conf, $user, $db, $bc, $socid; - $now=dol_now(); + $now = dol_now(); include_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; include_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php'; $sql = "SELECT a.id, a.label, a.datep as dp, a.datep2 as dp2, a.fk_user_author, a.percent,"; - $sql.= " c.code, c.libelle as type_label,"; - $sql.= " s.nom as sname, s.rowid, s.client"; - $sql.= " FROM ".MAIN_DB_PREFIX."actioncomm as a LEFT JOIN "; - $sql.= " ".MAIN_DB_PREFIX."c_actioncomm as c ON c.id = a.fk_action"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON a.fk_soc = s.rowid"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE a.entity = ".$conf->entity; - $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep2 > '".$db->idate($now)."'))"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($socid) $sql.= " AND s.rowid = ".$socid; - $sql.= " ORDER BY a.datep DESC, a.id DESC"; - $sql.= $db->plimit($max, 0); + $sql .= " c.code, c.libelle as type_label,"; + $sql .= " s.nom as sname, s.rowid, s.client"; + $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm as a LEFT JOIN "; + $sql .= " ".MAIN_DB_PREFIX."c_actioncomm as c ON c.id = a.fk_action"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON a.fk_soc = s.rowid"; + if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE a.entity = ".$conf->entity; + $sql .= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep2 > '".$db->idate($now)."'))"; + if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($socid) $sql .= " AND s.rowid = ".$socid; + $sql .= " ORDER BY a.datep DESC, a.id DESC"; + $sql .= $db->plimit($max, 0); - $resql=$db->query($sql); + $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); @@ -246,8 +246,8 @@ function show_array_actions_to_do($max = 5) $var = true; $i = 0; - $staticaction=new ActionComm($db); - $customerstatic=new Client($db); + $staticaction = new ActionComm($db); + $customerstatic = new Client($db); while ($i < $num) { @@ -256,9 +256,9 @@ function show_array_actions_to_do($max = 5) print ''; - $staticaction->type_code=$obj->code; - $staticaction->label=($obj->label?$obj->label:$obj->type_label); - $staticaction->id=$obj->id; + $staticaction->type_code = $obj->code; + $staticaction->label = ($obj->label ? $obj->label : $obj->type_label); + $staticaction->id = $obj->id; print ''.$staticaction->getNomUrl(1, 34).''; // print ''.dol_trunc($obj->label,22).''; @@ -266,23 +266,23 @@ function show_array_actions_to_do($max = 5) print ''; if ($obj->rowid > 0) { - $customerstatic->id=$obj->rowid; - $customerstatic->name=$obj->sname; - $customerstatic->client=$obj->client; + $customerstatic->id = $obj->rowid; + $customerstatic->name = $obj->sname; + $customerstatic->client = $obj->client; print $customerstatic->getNomUrl(1, '', 16); } print ''; - $datep=$db->jdate($obj->dp); - $datep2=$db->jdate($obj->dp2); + $datep = $db->jdate($obj->dp); + $datep2 = $db->jdate($obj->dp2); // Date print ''.dol_print_date($datep, 'day').' '; - $late=0; - if ($obj->percent == 0 && $datep && $datep < time()) $late=1; - if ($obj->percent == 0 && ! $datep && $datep2 && $datep2 < time()) $late=1; - if ($obj->percent > 0 && $obj->percent < 100 && $datep2 && $datep2 < time()) $late=1; - if ($obj->percent > 0 && $obj->percent < 100 && ! $datep2 && $datep && $datep < time()) $late=1; + $late = 0; + if ($obj->percent == 0 && $datep && $datep < time()) $late = 1; + if ($obj->percent == 0 && !$datep && $datep2 && $datep2 < time()) $late = 1; + if ($obj->percent > 0 && $obj->percent < 100 && $datep2 && $datep2 < time()) $late = 1; + if ($obj->percent > 0 && $obj->percent < 100 && !$datep2 && $datep && $datep < time()) $late = 1; if ($late) print img_warning($langs->trans("Late")); print ""; @@ -314,23 +314,23 @@ function show_array_last_actions_done($max = 5) { global $langs, $conf, $user, $db, $bc, $socid; - $now=dol_now(); + $now = dol_now(); $sql = "SELECT a.id, a.percent, a.datep as da, a.datep2 as da2, a.fk_user_author, a.label,"; - $sql.= " c.code, c.libelle,"; - $sql.= " s.rowid, s.nom as sname, s.client"; - $sql.= " FROM ".MAIN_DB_PREFIX."actioncomm as a LEFT JOIN "; - $sql.= " ".MAIN_DB_PREFIX."c_actioncomm as c ON c.id = a.fk_action "; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON a.fk_soc = s.rowid"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE a.entity = ".$conf->entity; - $sql.= " AND (a.percent >= 100 OR (a.percent = -1 AND a.datep2 <= '".$db->idate($now)."'))"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($socid) $sql.= " AND s.rowid = ".$socid; + $sql .= " c.code, c.libelle,"; + $sql .= " s.rowid, s.nom as sname, s.client"; + $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm as a LEFT JOIN "; + $sql .= " ".MAIN_DB_PREFIX."c_actioncomm as c ON c.id = a.fk_action "; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON a.fk_soc = s.rowid"; + if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= " WHERE a.entity = ".$conf->entity; + $sql .= " AND (a.percent >= 100 OR (a.percent = -1 AND a.datep2 <= '".$db->idate($now)."'))"; + if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; + if ($socid) $sql .= " AND s.rowid = ".$socid; $sql .= " ORDER BY a.datep2 DESC"; $sql .= $db->plimit($max, 0); - $resql=$db->query($sql); + $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); @@ -343,8 +343,8 @@ function show_array_last_actions_done($max = 5) $var = true; $i = 0; - $staticaction=new ActionComm($db); - $customerstatic=new Societe($db); + $staticaction = new ActionComm($db); + $customerstatic = new Societe($db); while ($i < $num) { @@ -353,9 +353,9 @@ function show_array_last_actions_done($max = 5) print ''; - $staticaction->type_code=$obj->code; - $staticaction->libelle=$obj->label; - $staticaction->id=$obj->id; + $staticaction->type_code = $obj->code; + $staticaction->libelle = $obj->label; + $staticaction->id = $obj->id; print ''.$staticaction->getNomUrl(1, 34).''; //print ''.dol_trunc($obj->label,24).''; @@ -363,9 +363,9 @@ function show_array_last_actions_done($max = 5) print ''; if ($obj->rowid > 0) { - $customerstatic->id=$obj->rowid; - $customerstatic->name=$obj->sname; - $customerstatic->client=$obj->client; + $customerstatic->id = $obj->rowid; + $customerstatic->name = $obj->sname; + $customerstatic->client = $obj->client; print $customerstatic->getNomUrl(1, '', 24); } print ''; @@ -467,13 +467,13 @@ function actions_prepare_head($object) if ($conf->resource->enabled) { include_once DOL_DOCUMENT_ROOT.'/resource/class/dolresource.class.php'; - $resource=new DolResource($db); + $resource = new DolResource($db); $head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=action&element_id='.$object->id; $listofresourcelinked = $resource->getElementResources($object->element, $object->id); - $nbResources=(is_array($listofresourcelinked)?count($listofresourcelinked):0); + $nbResources = (is_array($listofresourcelinked) ?count($listofresourcelinked) : 0); $head[$h][1] = $langs->trans("Resources"); - if ($nbResources > 0) $head[$h][1].= ''.($nbResources).''; + if ($nbResources > 0) $head[$h][1] .= ''.($nbResources).''; $head[$h][2] = 'resources'; $h++; } @@ -481,12 +481,12 @@ function actions_prepare_head($object) // Attached files require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->agenda->dir_output . "/" . $object->id; + $upload_dir = $conf->agenda->dir_output."/".$object->id; $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/comm/action/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; @@ -516,30 +516,30 @@ function calendars_prepare_head($param) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/comm/action/list.php'.($param?'?'.$param:''); + $head[$h][0] = DOL_URL_ROOT.'/comm/action/list.php'.($param ? '?'.$param : ''); $head[$h][1] = $langs->trans("ViewList"); $head[$h][2] = 'cardlist'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/comm/action/index.php?action=show_month'.($param?'&'.$param:''); + $head[$h][0] = DOL_URL_ROOT.'/comm/action/index.php?action=show_month'.($param ? '&'.$param : ''); $head[$h][1] = $langs->trans("ViewCal"); $head[$h][2] = 'cardmonth'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/comm/action/index.php?action=show_week'.($param?'&'.$param:''); + $head[$h][0] = DOL_URL_ROOT.'/comm/action/index.php?action=show_week'.($param ? '&'.$param : ''); $head[$h][1] = $langs->trans("ViewWeek"); $head[$h][2] = 'cardweek'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/comm/action/index.php?action=show_day'.($param?'&'.$param:''); + $head[$h][0] = DOL_URL_ROOT.'/comm/action/index.php?action=show_day'.($param ? '&'.$param : ''); $head[$h][1] = $langs->trans("ViewDay"); $head[$h][2] = 'cardday'; $h++; //if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) - if (! empty($conf->global->AGENDA_SHOW_PERTYPE)) + if (!empty($conf->global->AGENDA_SHOW_PERTYPE)) { - $head[$h][0] = DOL_URL_ROOT.'/comm/action/pertype.php'.($param?'?'.$param:''); + $head[$h][0] = DOL_URL_ROOT.'/comm/action/pertype.php'.($param ? '?'.$param : ''); $head[$h][1] = $langs->trans("ViewPerType"); $head[$h][2] = 'cardpertype'; $h++; @@ -547,7 +547,7 @@ function calendars_prepare_head($param) $newparam = $param; $newparam = preg_replace('/&?search_filtert=\d+/', '', $newparam); - $head[$h][0] = DOL_URL_ROOT.'/comm/action/peruser.php'.($newparam?'?'.$newparam:''); + $head[$h][0] = DOL_URL_ROOT.'/comm/action/peruser.php'.($newparam ? '?'.$newparam : ''); $head[$h][1] = $langs->trans("ViewPerUser"); $head[$h][2] = 'cardperuser'; $h++; diff --git a/htdocs/core/lib/asset.lib.php b/htdocs/core/lib/asset.lib.php index 5c6bac579f2..1b58784f6e8 100644 --- a/htdocs/core/lib/asset.lib.php +++ b/htdocs/core/lib/asset.lib.php @@ -35,7 +35,7 @@ function asset_admin_prepare_head() $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT . '/asset/admin/setup.php'; + $head[$h][0] = DOL_URL_ROOT.'/asset/admin/setup.php'; $head[$h][1] = $langs->trans("Settings"); $head[$h][2] = 'settings'; $h++; @@ -50,12 +50,12 @@ function asset_admin_prepare_head() //); // to remove a tab complete_head_from_modules($conf, $langs, null, $head, $h, 'assets_admin'); - $head[$h][0] = DOL_URL_ROOT . '/asset/admin/assets_extrafields.php'; + $head[$h][0] = DOL_URL_ROOT.'/asset/admin/assets_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFields"); $head[$h][2] = 'attributes'; $h++; - $head[$h][0] = DOL_URL_ROOT . '/asset/admin/assets_type_extrafields.php'; + $head[$h][0] = DOL_URL_ROOT.'/asset/admin/assets_type_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFieldsAssetsType"); $head[$h][2] = 'attributes_type'; $h++; @@ -80,7 +80,7 @@ function asset_prepare_head(Asset $object) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT . '/asset/card.php'; + $head[$h][0] = DOL_URL_ROOT.'/asset/card.php'; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; $h++; @@ -97,25 +97,25 @@ function asset_prepare_head(Asset $object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->assets->dir_output . '/' . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->assets->dir_output.'/'.dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/asset/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/asset/note.php?id='.$object->id; $head[$h][1] = $langs->trans("Notes"); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; - $head[$h][0] = DOL_URL_ROOT . '/asset/info.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/asset/info.php?id='.$object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; @@ -135,7 +135,7 @@ function asset_type_prepare_head(AssetType $object) { global $langs, $conf, $user; - $h=0; + $h = 0; $head = array(); $head[$h][0] = DOL_URL_ROOT.'/asset/type.php?rowid='.$object->id; diff --git a/htdocs/core/lib/barcode.lib.php b/htdocs/core/lib/barcode.lib.php index 1a7b33569ce..a4d7a077aab 100644 --- a/htdocs/core/lib/barcode.lib.php +++ b/htdocs/core/lib/barcode.lib.php @@ -27,18 +27,18 @@ /* ******************************************************************** */ /* COLORS */ /* ******************************************************************** */ -$bar_color=array(0,0,0); -$bg_color=array(255,255,255); -$text_color=array(0,0,0); +$bar_color = array(0, 0, 0); +$bg_color = array(255, 255, 255); +$text_color = array(0, 0, 0); /* ******************************************************************** */ /* FONT FILE */ /* ******************************************************************** */ -if (defined('DOL_DEFAULT_TTF_BOLD')) $font_loc=constant('DOL_DEFAULT_TTF_BOLD'); +if (defined('DOL_DEFAULT_TTF_BOLD')) $font_loc = constant('DOL_DEFAULT_TTF_BOLD'); // Automatic-Detection of Font if running Windows // @CHANGE LDR -if (isset($_SERVER['WINDIR']) && @file_exists($_SERVER['WINDIR'])) $font_loc=$_SERVER['WINDIR'].'\Fonts\arialbd.ttf'; +if (isset($_SERVER['WINDIR']) && @file_exists($_SERVER['WINDIR'])) $font_loc = $_SERVER['WINDIR'].'\Fonts\arialbd.ttf'; if (empty($font_loc)) die('DOL_DEFAULT_TTF_BOLD must de defined with full path to a TTF font.'); @@ -50,7 +50,7 @@ if (empty($font_loc)) die('DOL_DEFAULT_TTF_BOLD must de defined with full path t * genbarcode is needed to render encodings other than EAN-12/EAN-13/ISBN */ -if (defined('PHP-BARCODE_PATH_COMMAND')) $genbarcode_loc=constant('PHP-BARCODE_PATH_COMMAND'); +if (defined('PHP-BARCODE_PATH_COMMAND')) $genbarcode_loc = constant('PHP-BARCODE_PATH_COMMAND'); else $genbarcode_loc = $conf->global->GENBARCODE_LOCATION; @@ -69,16 +69,16 @@ function barcode_print($code, $encoding = "ANY", $scale = 2, $mode = "png") { dol_syslog("barcode.lib.php::barcode_print $code $encoding $scale $mode"); - $bars=barcode_encode($code, $encoding); - if (! $bars || ! empty($bars['error'])) + $bars = barcode_encode($code, $encoding); + if (!$bars || !empty($bars['error'])) { // Return error message instead of array - if (empty($bars['error'])) $error='Bad Value '.$code.' for encoding '.$encoding; - else $error=$bars['error']; + if (empty($bars['error'])) $error = 'Bad Value '.$code.' for encoding '.$encoding; + else $error = $bars['error']; dol_syslog('barcode.lib.php::barcode_print '.$error, LOG_ERR); return $error; } - if (! $mode) $mode="png"; + if (!$mode) $mode = "png"; //if (preg_match("/^(text|txt|plain)$/i",$mode)) print barcode_outtext($bars['text'],$bars['bars']); //elseif (preg_match("/^(html|htm)$/i",$mode)) print barcode_outhtml($bars['text'],$bars['bars'], $scale,0, 0); //else @@ -116,23 +116,23 @@ function barcode_encode($code, $encoding) (preg_match("/^ean$/i", $encoding)) || (($encoding) && (preg_match("/^isbn$/i", $encoding)) - && (( strlen($code)==9 || strlen($code)==10) || - (((preg_match("/^978/", $code) && strlen($code)==12) || - (strlen($code)==13))))) + && ((strlen($code) == 9 || strlen($code) == 10) || + (((preg_match("/^978/", $code) && strlen($code) == 12) || + (strlen($code) == 13))))) - || (( !isset($encoding) || !$encoding || (preg_match("/^ANY$/i", $encoding) )) + || ((!isset($encoding) || !$encoding || (preg_match("/^ANY$/i", $encoding))) && (preg_match("/^[0-9]{12,13}$/", $code))) ) { /* use built-in EAN-Encoder */ dol_syslog("barcode.lib.php::barcode_encode Use barcode_encode_ean"); - $bars=barcode_encode_ean($code, $encoding); + $bars = barcode_encode_ean($code, $encoding); } elseif (file_exists($genbarcode_loc)) // For example C39 { /* use genbarcode */ dol_syslog("barcode.lib.php::barcode_encode Use genbarcode ".$genbarcode_loc." code=".$code." encoding=".$encoding); - $bars=barcode_encode_genbarcode($code, $encoding); + $bars = barcode_encode_genbarcode($code, $encoding); } else { @@ -160,14 +160,14 @@ function barcode_encode($code, $encoding) */ function barcode_gen_ean_sum($ean) { - $even=true; $esum=0; $osum=0; - $ln=strlen($ean)-1; - for ($i=$ln; $i>=0; $i--) + $even = true; $esum = 0; $osum = 0; + $ln = strlen($ean) - 1; + for ($i = $ln; $i >= 0; $i--) { - if ($even) $esum+=$ean[$i]; else $osum+=$ean[$i]; - $even=!$even; + if ($even) $esum += $ean[$i]; else $osum += $ean[$i]; + $even = !$even; } - return (10-((3*$esum+$osum)%10))%10; + return (10 - ((3 * $esum + $osum) % 10)) % 10; } /** @@ -179,48 +179,48 @@ function barcode_gen_ean_sum($ean) */ function barcode_encode_ean($ean, $encoding = "EAN-13") { - $digits=array(3211,2221,2122,1411,1132,1231,1114,1312,1213,3112); - $mirror=array("000000","001011","001101","001110","010011","011001","011100","010101","010110","011010"); - $guards=array("9a1a","1a1a1","a1a"); + $digits = array(3211, 2221, 2122, 1411, 1132, 1231, 1114, 1312, 1213, 3112); + $mirror = array("000000", "001011", "001101", "001110", "010011", "011001", "011100", "010101", "010110", "011010"); + $guards = array("9a1a", "1a1a1", "a1a"); - $ean=trim($ean); + $ean = trim($ean); if (preg_match("/[^0-9]/i", $ean)) { return array("error"=>"Invalid encoding/code. encoding=".$encoding." code=".$ean." (not a numeric)", "text"=>"Invalid encoding/code. encoding=".$encoding." code=".$ean." (not a numeric)"); } - $encoding=strtoupper($encoding); - if ($encoding=="ISBN") + $encoding = strtoupper($encoding); + if ($encoding == "ISBN") { - if (!preg_match("/^978/", $ean)) $ean="978".$ean; + if (!preg_match("/^978/", $ean)) $ean = "978".$ean; } - if (preg_match("/^978/", $ean)) $encoding="ISBN"; - if (strlen($ean)<12 || strlen($ean)>13) + if (preg_match("/^978/", $ean)) $encoding = "ISBN"; + if (strlen($ean) < 12 || strlen($ean) > 13) { return array("error"=>"Invalid encoding/code. encoding=".$encoding." code=".$ean." (must have 12/13 numbers)", "text"=>"Invalid encoding/code. encoding=".$encoding." code=".$ean." (must have 12/13 numbers)"); } - $ean=substr($ean, 0, 12); - $eansum=barcode_gen_ean_sum($ean); - $ean.=$eansum; - $line=$guards[0]; - for ($i=1;$i<13;$i++) + $ean = substr($ean, 0, 12); + $eansum = barcode_gen_ean_sum($ean); + $ean .= $eansum; + $line = $guards[0]; + for ($i = 1; $i < 13; $i++) { - $str=$digits[$ean[$i]]; - if ($i<7 && $mirror[$ean[0]][$i-1]==1) $line.=strrev($str); else $line.=$str; - if ($i==6) $line.=$guards[1]; + $str = $digits[$ean[$i]]; + if ($i < 7 && $mirror[$ean[0]][$i - 1] == 1) $line .= strrev($str); else $line .= $str; + if ($i == 6) $line .= $guards[1]; } - $line.=$guards[2]; + $line .= $guards[2]; /* create text */ - $pos=0; - $text=""; - for ($a=0;$a<13;$a++) + $pos = 0; + $text = ""; + for ($a = 0; $a < 13; $a++) { - if ($a>0) $text.=" "; - $text.="$pos:12:{$ean[$a]}"; - if ($a==0) $pos+=12; - elseif ($a==6) $pos+=12; - else $pos+=7; + if ($a > 0) $text .= " "; + $text .= "$pos:12:{$ean[$a]}"; + if ($a == 0) $pos += 12; + elseif ($a == 6) $pos += 12; + else $pos += 7; } return array( @@ -243,25 +243,25 @@ function barcode_encode_genbarcode($code, $encoding) global $genbarcode_loc; // Clean parameters - if (preg_match("/^ean$/i", $encoding) && strlen($code)==13) $code=substr($code, 0, 12); - if (!$encoding) $encoding="ANY"; - $encoding=preg_replace("/[\\\|]/", "_", $encoding); - $code=preg_replace("/[\\\|]/", "_", $code); + if (preg_match("/^ean$/i", $encoding) && strlen($code) == 13) $code = substr($code, 0, 12); + if (!$encoding) $encoding = "ANY"; + $encoding = preg_replace("/[\\\|]/", "_", $encoding); + $code = preg_replace("/[\\\|]/", "_", $code); - $command=escapeshellarg($genbarcode_loc); + $command = escapeshellarg($genbarcode_loc); //$paramclear=" \"".str_replace("\"", "\\\"",$code)."\" \"".str_replace("\"", "\\\"",strtoupper($encoding))."\""; - $paramclear=" ".escapeshellarg($code)." ".escapeshellarg(strtoupper($encoding)); + $paramclear = " ".escapeshellarg($code)." ".escapeshellarg(strtoupper($encoding)); - $fullcommandclear=$command." ".$paramclear." 2>&1"; + $fullcommandclear = $command." ".$paramclear." 2>&1"; //print $fullcommandclear."
    \n";exit; dol_syslog("Run command ".$fullcommandclear); - $fp=popen($fullcommandclear, "r"); + $fp = popen($fullcommandclear, "r"); if ($fp) { - $bars=fgets($fp, 1024); - $text=fgets($fp, 1024); - $encoding=fgets($fp, 1024); + $bars = fgets($fp, 1024); + $text = fgets($fp, 1024); + $encoding = fgets($fp, 1024); pclose($fp); } else @@ -270,7 +270,7 @@ function barcode_encode_genbarcode($code, $encoding) return false; } //var_dump($bars); - $ret=array( + $ret = array( "bars" => trim($bars), "text" => trim($text), "encoding" => trim($encoding), @@ -279,7 +279,7 @@ function barcode_encode_genbarcode($code, $encoding) //var_dump($ret); if (preg_match('/permission denied/i', $ret['bars'])) { - $ret['error']=$ret['bars']; $ret['bars']=''; + $ret['error'] = $ret['bars']; $ret['bars'] = ''; return $ret; } if (!$ret['bars']) return false; @@ -310,99 +310,99 @@ function barcode_outimage($text, $bars, $scale = 1, $mode = "png", $total_y = 0, //var_dump($font_loc); /* set defaults */ - if ($scale<1) $scale=2; - $total_y=(int) $total_y; - if ($total_y<1) $total_y=(int) $scale * 60; + if ($scale < 1) $scale = 2; + $total_y = (int) $total_y; + if ($total_y < 1) $total_y = (int) $scale * 60; if (!$space) - $space=array('top'=>2*$scale,'bottom'=>2*$scale,'left'=>2*$scale,'right'=>2*$scale); + $space = array('top'=>2 * $scale, 'bottom'=>2 * $scale, 'left'=>2 * $scale, 'right'=>2 * $scale); /* count total width */ - $xpos=0; - $width=true; - $ln=strlen($bars); - for ($i=0; $i<$ln; $i++) + $xpos = 0; + $width = true; + $ln = strlen($bars); + for ($i = 0; $i < $ln; $i++) { - $val=strtolower($bars[$i]); + $val = strtolower($bars[$i]); if ($width) { - $xpos+=$val*$scale; - $width=false; + $xpos += $val * $scale; + $width = false; continue; } if (preg_match("/[a-z]/", $val)) { /* tall bar */ - $val=ord($val)-ord('a')+1; + $val = ord($val) - ord('a') + 1; } - $xpos+=$val*$scale; - $width=true; + $xpos += $val * $scale; + $width = true; } /* allocate the image */ - $total_x=( $xpos )+$space['right']+$space['right']; - $xpos=$space['left']; - if (! function_exists("imagecreate")) + $total_x = ($xpos) + $space['right'] + $space['right']; + $xpos = $space['left']; + if (!function_exists("imagecreate")) { print "You don't have the gd2 extension enabled
    \n"; return ""; } - $im=imagecreate($total_x, $total_y); + $im = imagecreate($total_x, $total_y); /* create two images */ - $col_bg=ImageColorAllocate($im, $bg_color[0], $bg_color[1], $bg_color[2]); - $col_bar=ImageColorAllocate($im, $bar_color[0], $bar_color[1], $bar_color[2]); - $col_text=ImageColorAllocate($im, $text_color[0], $text_color[1], $text_color[2]); - $height=round($total_y-($scale*10)); - $height2=round($total_y-$space['bottom']); + $col_bg = ImageColorAllocate($im, $bg_color[0], $bg_color[1], $bg_color[2]); + $col_bar = ImageColorAllocate($im, $bar_color[0], $bar_color[1], $bar_color[2]); + $col_text = ImageColorAllocate($im, $text_color[0], $text_color[1], $text_color[2]); + $height = round($total_y - ($scale * 10)); + $height2 = round($total_y - $space['bottom']); /* paint the bars */ - $width=true; - $ln=strlen($bars); - for ($i=0; $i<$ln; $i++) + $width = true; + $ln = strlen($bars); + for ($i = 0; $i < $ln; $i++) { - $val=strtolower($bars[$i]); + $val = strtolower($bars[$i]); if ($width) { - $xpos+=$val*$scale; - $width=false; + $xpos += $val * $scale; + $width = false; continue; } if (preg_match("/[a-z]/", $val)) { /* tall bar */ - $val=ord($val)-ord('a')+1; - $h=$height2; - } else $h=$height; - imagefilledrectangle($im, $xpos, $space['top'], $xpos+($val*$scale)-1, $h, $col_bar); - $xpos+=$val*$scale; - $width=true; + $val = ord($val) - ord('a') + 1; + $h = $height2; + } else $h = $height; + imagefilledrectangle($im, $xpos, $space['top'], $xpos + ($val * $scale) - 1, $h, $col_bar); + $xpos += $val * $scale; + $width = true; } - $chars=explode(" ", $text); + $chars = explode(" ", $text); reset($chars); - while (list($n, $v)=each($chars)) + while (list($n, $v) = each($chars)) { if (trim($v)) { - $inf=explode(":", $v); - $fontsize=$scale*($inf[1]/1.8); - $fontheight=$total_y-($fontsize/2.7)+2; - imagettftext($im, $fontsize, 0, $space['left']+($scale*$inf[0])+2, $fontheight, $col_text, $font_loc, $inf[2]); + $inf = explode(":", $v); + $fontsize = $scale * ($inf[1] / 1.8); + $fontheight = $total_y - ($fontsize / 2.7) + 2; + imagettftext($im, $fontsize, 0, $space['left'] + ($scale * $inf[0]) + 2, $fontheight, $col_text, $font_loc, $inf[2]); } } /* output the image */ - $mode=strtolower($mode); - if ($mode=='jpg' || $mode=='jpeg') + $mode = strtolower($mode); + if ($mode == 'jpg' || $mode == 'jpeg') { header("Content-Type: image/jpeg; name=\"barcode.jpg\""); imagejpeg($im); } - elseif ($mode=='gif') + elseif ($mode == 'gif') { header("Content-Type: image/gif; name=\"barcode.gif\""); imagegif($im); } - elseif (! empty($filebarcode)) // To wxrite into afile onto disk + elseif (!empty($filebarcode)) // To wxrite into afile onto disk { imagepng($im, $filebarcode); } diff --git a/htdocs/core/lib/categories.lib.php b/htdocs/core/lib/categories.lib.php index ca665637768..37ff7acad44 100644 --- a/htdocs/core/lib/categories.lib.php +++ b/htdocs/core/lib/categories.lib.php @@ -49,7 +49,7 @@ function categories_prepare_head($object, $type) $head[$h][2] = 'photos'; $h++; - if (! empty($conf->global->MAIN_MULTILANGS)) + if (!empty($conf->global->MAIN_MULTILANGS)) { $head[$h][0] = DOL_URL_ROOT.'/categories/traduction.php?id='.$object->id.'&type='.$type; $head[$h][1] = $langs->trans("Translation"); diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index eac9f404188..16d29af4a35 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -105,7 +105,7 @@ function societe_prepare_head(Societe $object) } } $supplier_module_enabled = 0; - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_proposal->enabled) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) $supplier_module_enabled=1; + if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_proposal->enabled) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) $supplier_module_enabled = 1; if ($supplier_module_enabled == 1 && $object->fournisseur && !empty($user->rights->fournisseur->lire)) { $head[$h][0] = DOL_URL_ROOT.'/fourn/card.php?socid='.$object->id; diff --git a/htdocs/core/lib/contact.lib.php b/htdocs/core/lib/contact.lib.php index 0082947d0c1..8edc81d7ee7 100644 --- a/htdocs/core/lib/contact.lib.php +++ b/htdocs/core/lib/contact.lib.php @@ -42,8 +42,8 @@ function contact_prepare_head(Contact $object) $head[$tab][2] = 'card'; $tab++; - if ((! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_CONTACT_ACTIVE)) - && (empty($conf->global->MAIN_DISABLE_LDAP_TAB) || ! empty($user->admin))) + if ((!empty($conf->ldap->enabled) && !empty($conf->global->LDAP_CONTACT_ACTIVE)) + && (empty($conf->global->MAIN_DISABLE_LDAP_TAB) || !empty($user->admin))) { $langs->load("ldap"); @@ -59,7 +59,7 @@ function contact_prepare_head(Contact $object) $tab++; // Related items - if (! empty($conf->commande->enabled) || ! empty($conf->propal->enabled) || ! empty($conf->facture->enabled) || ! empty($conf->ficheinter->enabled) || ! empty($conf->fournisseur->enabled)) + if (!empty($conf->commande->enabled) || !empty($conf->propal->enabled) || !empty($conf->facture->enabled) || !empty($conf->ficheinter->enabled) || !empty($conf->fournisseur->enabled)) { $head[$tab][0] = DOL_URL_ROOT.'/contact/consumption.php?id='.$object->id; $head[$tab][1] = $langs->trans("Referers"); @@ -75,32 +75,32 @@ function contact_prepare_head(Contact $object) // Notes if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { - $nbNote = (empty($object->note_private)?0:1)+(empty($object->note_public)?0:1); + $nbNote = (empty($object->note_private) ? 0 : 1) + (empty($object->note_public) ? 0 : 1); $head[$tab][0] = DOL_URL_ROOT.'/contact/note.php?id='.$object->id; $head[$tab][1] = $langs->trans("Note"); - if($nbNote > 0) $head[$tab][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$tab][1] .= ''.$nbNote.''; $head[$tab][2] = 'note'; $tab++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->societe->dir_output . "/contact/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->societe->dir_output."/contact/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$tab][0] = DOL_URL_ROOT.'/contact/document.php?id='.$object->id; $head[$tab][1] = $langs->trans("Documents"); - if (($nbFiles+$nbLinks) > 0) $head[$tab][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$tab][1] .= ''.($nbFiles + $nbLinks).''; $head[$tab][2] = 'documents'; $tab++; // Agenda / Events $head[$tab][0] = DOL_URL_ROOT.'/contact/agenda.php?id='.$object->id; - $head[$tab][1].= $langs->trans("Events"); - if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) + $head[$tab][1] .= $langs->trans("Events"); + if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$tab][1].= '/'; - $head[$tab][1].= $langs->trans("Agenda"); + $head[$tab][1] .= '/'; + $head[$tab][1] .= $langs->trans("Agenda"); } $head[$tab][2] = 'agenda'; $tab++; diff --git a/htdocs/core/lib/contract.lib.php b/htdocs/core/lib/contract.lib.php index ec91a2dcc70..b7d3c45bee3 100644 --- a/htdocs/core/lib/contract.lib.php +++ b/htdocs/core/lib/contract.lib.php @@ -45,7 +45,7 @@ function contract_prepare_head(Contrat $object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/contrat/contact.php?id='.$object->id; $head[$h][1] = $langs->trans("ContactsAddresses"); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -59,32 +59,32 @@ function contract_prepare_head(Contrat $object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/contrat/note.php?id='.$object->id; $head[$h][1] = $langs->trans("Notes"); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->contrat->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->contrat->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/contrat/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; $head[$h][0] = DOL_URL_ROOT.'/contrat/agenda.php?id='.$object->id; - $head[$h][1].= $langs->trans("Events"); - if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) + $head[$h][1] .= $langs->trans("Events"); + if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$h][1].= '/'; - $head[$h][1].= $langs->trans("Agenda"); + $head[$h][1] .= '/'; + $head[$h][1] .= $langs->trans("Agenda"); } $head[$h][2] = 'agenda'; $h++; diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index e7043a1798a..0dd8aeb1a32 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -33,7 +33,7 @@ */ function get_tz_array() { - $tzarray=array( + $tzarray = array( -11=>"Pacific/Midway", -10=>"Pacific/Fakaofo", -9=>"America/Anchorage", @@ -85,22 +85,22 @@ function getServerTimeZoneInt($refgmtdate = 'now') if (method_exists('DateTimeZone', 'getOffset')) { // Method 1 (include daylight) - $gmtnow=dol_now('gmt'); $yearref=dol_print_date($gmtnow, '%Y'); $monthref=dol_print_date($gmtnow, '%m'); $dayref=dol_print_date($gmtnow, '%d'); - if ($refgmtdate == 'now') $newrefgmtdate=$yearref.'-'.$monthref.'-'.$dayref; - elseif ($refgmtdate == 'summer') $newrefgmtdate=$yearref.'-08-01'; - else $newrefgmtdate=$yearref.'-01-01'; - $newrefgmtdate.='T00:00:00+00:00'; + $gmtnow = dol_now('gmt'); $yearref = dol_print_date($gmtnow, '%Y'); $monthref = dol_print_date($gmtnow, '%m'); $dayref = dol_print_date($gmtnow, '%d'); + if ($refgmtdate == 'now') $newrefgmtdate = $yearref.'-'.$monthref.'-'.$dayref; + elseif ($refgmtdate == 'summer') $newrefgmtdate = $yearref.'-08-01'; + else $newrefgmtdate = $yearref.'-01-01'; + $newrefgmtdate .= 'T00:00:00+00:00'; $localtz = new DateTimeZone(getServerTimeZoneString()); $localdt = new DateTime($newrefgmtdate, $localtz); - $tmp=-1*$localtz->getOffset($localdt); + $tmp = -1 * $localtz->getOffset($localdt); //print $refgmtdate.'='.$tmp; } else { - $tmp=0; + $tmp = 0; dol_print_error('', 'PHP version must be 5.3+'); } - $tz=round(($tmp<0?1:-1)*abs($tmp/3600)); + $tz = round(($tmp < 0 ? 1 : -1) * abs($tmp / 3600)); return $tz; } @@ -118,23 +118,23 @@ function dol_time_plus_duree($time, $duration_value, $duration_unit) global $conf; if ($duration_value == 0) return $time; - if ($duration_unit == 'h') return $time + (3600*$duration_value); - if ($duration_unit == 'w') return $time + (3600*24*7*$duration_value); + if ($duration_unit == 'h') return $time + (3600 * $duration_value); + if ($duration_unit == 'w') return $time + (3600 * 24 * 7 * $duration_value); - $deltastring='P'; + $deltastring = 'P'; - if ($duration_value > 0){ $deltastring.=abs($duration_value); $sub= false; } - if ($duration_value < 0){ $deltastring.=abs($duration_value); $sub= true; } - if ($duration_unit == 'd') { $deltastring.="D"; } - if ($duration_unit == 'm') { $deltastring.="M"; } - if ($duration_unit == 'y') { $deltastring.="Y"; } + if ($duration_value > 0) { $deltastring .= abs($duration_value); $sub = false; } + if ($duration_value < 0) { $deltastring .= abs($duration_value); $sub = true; } + if ($duration_unit == 'd') { $deltastring .= "D"; } + if ($duration_unit == 'm') { $deltastring .= "M"; } + if ($duration_unit == 'y') { $deltastring .= "Y"; } $date = new DateTime(); - if (! empty($conf->global->MAIN_DATE_IN_MEMORY_ARE_GMT)) $date->setTimezone(new DateTimeZone('UTC')); + if (!empty($conf->global->MAIN_DATE_IN_MEMORY_ARE_GMT)) $date->setTimezone(new DateTimeZone('UTC')); $date->setTimestamp($time); $interval = new DateInterval($deltastring); - if($sub) $date->sub($interval); + if ($sub) $date->sub($interval); else $date->add($interval); return $date->getTimestamp(); @@ -152,7 +152,7 @@ function dol_time_plus_duree($time, $duration_value, $duration_unit) */ function convertTime2Seconds($iHours = 0, $iMinutes = 0, $iSeconds = 0) { - $iResult=($iHours*3600)+($iMinutes*60)+$iSeconds; + $iResult = ($iHours * 3600) + ($iMinutes * 60) + $iSeconds; return $iResult; } @@ -182,26 +182,26 @@ function convertSecondToTime($iSecond, $format = 'all', $lengthOfDay = 86400, $l { global $langs; - if (empty($lengthOfDay)) $lengthOfDay = 86400; // 1 day = 24 hours - if (empty($lengthOfWeek)) $lengthOfWeek = 7; // 1 week = 7 days + if (empty($lengthOfDay)) $lengthOfDay = 86400; // 1 day = 24 hours + if (empty($lengthOfWeek)) $lengthOfWeek = 7; // 1 week = 7 days if ($format == 'all' || $format == 'allwithouthour' || $format == 'allhour' || $format == 'allhourmin' || $format == 'allhourminsec') { - if ((int) $iSecond === 0) return '0'; // This is to avoid having 0 return a 12:00 AM for en_US + if ((int) $iSecond === 0) return '0'; // This is to avoid having 0 return a 12:00 AM for en_US - $sTime=''; - $sDay=0; - $sWeek=0; + $sTime = ''; + $sDay = 0; + $sWeek = 0; if ($iSecond >= $lengthOfDay) { - for($i = $iSecond; $i >= $lengthOfDay; $i -= $lengthOfDay ) + for ($i = $iSecond; $i >= $lengthOfDay; $i -= $lengthOfDay) { $sDay++; - $iSecond-=$lengthOfDay; + $iSecond -= $lengthOfDay; } $dayTranslate = $langs->trans("Day"); - if ($iSecond >= ($lengthOfDay*2)) $dayTranslate = $langs->trans("Days"); + if ($iSecond >= ($lengthOfDay * 2)) $dayTranslate = $langs->trans("Days"); } if ($lengthOfWeek < 7) @@ -210,70 +210,70 @@ function convertSecondToTime($iSecond, $format = 'all', $lengthOfDay = 86400, $l { if ($sDay >= $lengthOfWeek) { - $sWeek = (int) (($sDay - $sDay % $lengthOfWeek ) / $lengthOfWeek); + $sWeek = (int) (($sDay - $sDay % $lengthOfWeek) / $lengthOfWeek); $sDay = $sDay % $lengthOfWeek; $weekTranslate = $langs->trans("DurationWeek"); if ($sWeek >= 2) $weekTranslate = $langs->trans("DurationWeeks"); - $sTime.=$sWeek.' '.$weekTranslate.' '; + $sTime .= $sWeek.' '.$weekTranslate.' '; } } } - if ($sDay>0) + if ($sDay > 0) { $dayTranslate = $langs->trans("Day"); if ($sDay > 1) $dayTranslate = $langs->trans("Days"); - $sTime.=$sDay.' '.$dayTranslate.' '; + $sTime .= $sDay.' '.$dayTranslate.' '; } if ($format == 'all') { if ($iSecond || empty($sDay)) { - $sTime.= dol_print_date($iSecond, 'hourduration', true); + $sTime .= dol_print_date($iSecond, 'hourduration', true); } } elseif ($format == 'allhourminsec') { - return sprintf("%02d", ($sWeek*$lengthOfWeek*24 + $sDay*24 + (int) floor($iSecond/3600))).':'.sprintf("%02d", ((int) floor(($iSecond % 3600)/60))).':'.sprintf("%02d", ((int) ($iSecond % 60))); + return sprintf("%02d", ($sWeek * $lengthOfWeek * 24 + $sDay * 24 + (int) floor($iSecond / 3600))).':'.sprintf("%02d", ((int) floor(($iSecond % 3600) / 60))).':'.sprintf("%02d", ((int) ($iSecond % 60))); } elseif ($format == 'allhourmin') { - return sprintf("%02d", ($sWeek*$lengthOfWeek*24 + $sDay*24 + (int) floor($iSecond/3600))).':'.sprintf("%02d", ((int) floor(($iSecond % 3600)/60))); + return sprintf("%02d", ($sWeek * $lengthOfWeek * 24 + $sDay * 24 + (int) floor($iSecond / 3600))).':'.sprintf("%02d", ((int) floor(($iSecond % 3600) / 60))); } elseif ($format == 'allhour') { - return sprintf("%02d", ($sWeek*$lengthOfWeek*24 + $sDay*24 + (int) floor($iSecond/3600))); + return sprintf("%02d", ($sWeek * $lengthOfWeek * 24 + $sDay * 24 + (int) floor($iSecond / 3600))); } } elseif ($format == 'hour') // only hour part { - $sTime=dol_print_date($iSecond, '%H', true); + $sTime = dol_print_date($iSecond, '%H', true); } elseif ($format == 'fullhour') { if (!empty($iSecond)) { - $iSecond=$iSecond/3600; + $iSecond = $iSecond / 3600; } else { - $iSecond=0; + $iSecond = 0; } - $sTime=$iSecond; + $sTime = $iSecond; } elseif ($format == 'min') // only min part { - $sTime=dol_print_date($iSecond, '%M', true); + $sTime = dol_print_date($iSecond, '%M', true); } elseif ($format == 'sec') // only sec part { - $sTime=dol_print_date($iSecond, '%S', true); + $sTime = dol_print_date($iSecond, '%S', true); } elseif ($format == 'month') // only month part { - $sTime=dol_print_date($iSecond, '%m', true); + $sTime = dol_print_date($iSecond, '%m', true); } elseif ($format == 'year') // only year part { - $sTime=dol_print_date($iSecond, '%Y', true); + $sTime = dol_print_date($iSecond, '%Y', true); } return trim($sTime); } @@ -292,19 +292,19 @@ function convertSecondToTime($iSecond, $format = 'all', $lengthOfDay = 86400, $l function dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $excludefirstand = 0) { global $db; - $sqldate=""; + $sqldate = ""; if ($month_date > 0) { if ($year_date > 0 && empty($day_date)) { - $sqldate.= ($excludefirstand ? "" : " AND ").$datefield." BETWEEN '".$db->idate(dol_get_first_day($year_date, $month_date, false)); - $sqldate.= "' AND '".$db->idate(dol_get_last_day($year_date, $month_date, false))."'"; - } elseif ($year_date > 0 && ! empty($day_date)) { - $sqldate.= ($excludefirstand ? "" : " AND ").$datefield." BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_date, $day_date, $year_date)); - $sqldate.= "' AND '".$db->idate(dol_mktime(23, 59, 59, $month_date, $day_date, $year_date))."'"; + $sqldate .= ($excludefirstand ? "" : " AND ").$datefield." BETWEEN '".$db->idate(dol_get_first_day($year_date, $month_date, false)); + $sqldate .= "' AND '".$db->idate(dol_get_last_day($year_date, $month_date, false))."'"; + } elseif ($year_date > 0 && !empty($day_date)) { + $sqldate .= ($excludefirstand ? "" : " AND ").$datefield." BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_date, $day_date, $year_date)); + $sqldate .= "' AND '".$db->idate(dol_mktime(23, 59, 59, $month_date, $day_date, $year_date))."'"; } else - $sqldate.= ($excludefirstand ? "" : " AND ")." date_format( ".$datefield.", '%m') = '".$db->escape($month_date)."'"; - } elseif ($year_date > 0){ - $sqldate.= ($excludefirstand ? "" : " AND ").$datefield." BETWEEN '".$db->idate(dol_get_first_day($year_date, 1, false)); - $sqldate.= "' AND '".$db->idate(dol_get_last_day($year_date, 12, false))."'"; + $sqldate .= ($excludefirstand ? "" : " AND ")." date_format( ".$datefield.", '%m') = '".$db->escape($month_date)."'"; + } elseif ($year_date > 0) { + $sqldate .= ($excludefirstand ? "" : " AND ").$datefield." BETWEEN '".$db->idate(dol_get_first_day($year_date, 1, false)); + $sqldate .= "' AND '".$db->idate(dol_get_last_day($year_date, 12, false))."'"; } return $sqldate; } @@ -330,7 +330,7 @@ function dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $exclu */ function dol_stringtotime($string, $gm = 1) { - $reg=array(); + $reg = array(); // Convert date with format DD/MM/YYY HH:MM:SS. This part of code should not be used. if (preg_match('/^([0-9]+)\/([0-9]+)\/([0-9]+)\s?([0-9]+)?:?([0-9]+)?:?([0-9]+)?/i', $string, $reg)) { @@ -343,9 +343,9 @@ function dol_stringtotime($string, $gm = 1) $shour = $reg[4]; $smin = $reg[5]; $ssec = $reg[6]; - if ($syear < 50) $syear+=1900; - if ($syear >= 50 && $syear < 100) $syear+=2000; - $string=sprintf("%04d%02d%02d%02d%02d%02d", $syear, $smonth, $sday, $shour, $smin, $ssec); + if ($syear < 50) $syear += 1900; + if ($syear >= 50 && $syear < 100) $syear += 2000; + $string = sprintf("%04d%02d%02d%02d%02d%02d", $syear, $smonth, $sday, $shour, $smin, $ssec); } elseif ( preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})Z$/i', $string, $reg) // Convert date with format YYYY-MM-DDTHH:MM:SSZ (RFC3339) @@ -359,12 +359,12 @@ function dol_stringtotime($string, $gm = 1) $shour = $reg[4]; $smin = $reg[5]; $ssec = $reg[6]; - $string=sprintf("%04d%02d%02d%02d%02d%02d", $syear, $smonth, $sday, $shour, $smin, $ssec); + $string = sprintf("%04d%02d%02d%02d%02d%02d", $syear, $smonth, $sday, $shour, $smin, $ssec); } - $string=preg_replace('/([^0-9])/i', '', $string); - $tmp=$string.'000000'; - $date=dol_mktime(substr($tmp, 8, 2), substr($tmp, 10, 2), substr($tmp, 12, 2), substr($tmp, 4, 2), substr($tmp, 6, 2), substr($tmp, 0, 4), ($gm?1:0)); + $string = preg_replace('/([^0-9])/i', '', $string); + $tmp = $string.'000000'; + $date = dol_mktime(substr($tmp, 8, 2), substr($tmp, 10, 2), substr($tmp, 12, 2), substr($tmp, 4, 2), substr($tmp, 6, 2), substr($tmp, 0, 4), ($gm ? 1 : 0)); return $date; } @@ -378,9 +378,9 @@ function dol_stringtotime($string, $gm = 1) */ function dol_get_prev_day($day, $month, $year) { - $time=dol_mktime(12, 0, 0, $month, $day, $year, 1, 0); - $time-=24*60*60; - $tmparray=dol_getdate($time, true); + $time = dol_mktime(12, 0, 0, $month, $day, $year, 1, 0); + $time -= 24 * 60 * 60; + $tmparray = dol_getdate($time, true); return array('year' => $tmparray['year'], 'month' => $tmparray['mon'], 'day' => $tmparray['mday']); } @@ -393,9 +393,9 @@ function dol_get_prev_day($day, $month, $year) */ function dol_get_next_day($day, $month, $year) { - $time=dol_mktime(12, 0, 0, $month, $day, $year, 1, 0); - $time+=24*60*60; - $tmparray=dol_getdate($time, true); + $time = dol_mktime(12, 0, 0, $month, $day, $year, 1, 0); + $time += 24 * 60 * 60; + $tmparray = dol_getdate($time, true); return array('year' => $tmparray['year'], 'month' => $tmparray['mon'], 'day' => $tmparray['mday']); } @@ -414,7 +414,7 @@ function dol_get_prev_month($month, $year) } else { - $prev_month = $month-1; + $prev_month = $month - 1; $prev_year = $year; } return array('year' => $prev_year, 'month' => $prev_month); @@ -453,9 +453,9 @@ function dol_get_prev_week($day, $week, $month, $year) { $tmparray = dol_get_first_day_week($day, $month, $year); - $time=dol_mktime(12, 0, 0, $month, $tmparray['first_day'], $year, 1, 0); - $time-=24*60*60*7; - $tmparray=dol_getdate($time, true); + $time = dol_mktime(12, 0, 0, $month, $tmparray['first_day'], $year, 1, 0); + $time -= 24 * 60 * 60 * 7; + $tmparray = dol_getdate($time, true); return array('year' => $tmparray['year'], 'month' => $tmparray['mon'], 'day' => $tmparray['mday']); } @@ -471,9 +471,9 @@ function dol_get_next_week($day, $week, $month, $year) { $tmparray = dol_get_first_day_week($day, $month, $year); - $time=dol_mktime(12, 0, 0, $tmparray['first_month'], $tmparray['first_day'], $tmparray['first_year'], 1, 0); - $time+=24*60*60*7; - $tmparray=dol_getdate($time, true); + $time = dol_mktime(12, 0, 0, $tmparray['first_month'], $tmparray['first_day'], $tmparray['first_year'], 1, 0); + $time += 24 * 60 * 60 * 7; + $tmparray = dol_getdate($time, true); return array('year' => $tmparray['year'], 'month' => $tmparray['mon'], 'day' => $tmparray['mday']); } @@ -515,7 +515,7 @@ function dol_get_last_day($year, $month = 12, $gm = false) } // On se deplace au debut du mois suivant, et on retire un jour - $datelim=dol_mktime(23, 59, 59, $month, 1, $year, $gm); + $datelim = dol_mktime(23, 59, 59, $month, 1, $year, $gm); $datelim -= (3600 * 24); return $datelim; @@ -537,57 +537,57 @@ function dol_get_first_day_week($day, $month, $year, $gm = false) $date = dol_mktime(0, 0, 0, $month, $day, $year, $gm); //Checking conf of start week - $start_week = (isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1); + $start_week = (isset($conf->global->MAIN_START_WEEK) ? $conf->global->MAIN_START_WEEK : 1); - $tmparray = dol_getdate($date, true); // detail of current day + $tmparray = dol_getdate($date, true); // detail of current day //Calculate days = offset from current day $days = $start_week - $tmparray['wday']; - if ($days>=1) $days=7-$days; + if ($days >= 1) $days = 7 - $days; $days = abs($days); - $seconds = $days*24*60*60; + $seconds = $days * 24 * 60 * 60; //print 'start_week='.$start_week.' tmparray[wday]='.$tmparray['wday'].' day offset='.$days.' seconds offset='.$seconds.'
    '; //Get first day of week - $tmpdaytms = date($tmparray[0])-$seconds; // $tmparray[0] is day of parameters + $tmpdaytms = date($tmparray[0]) - $seconds; // $tmparray[0] is day of parameters $tmpday = date("d", $tmpdaytms); //Check first day of week is in same month than current day or not - if ($tmpday>$day) + if ($tmpday > $day) { - $prev_month = $month-1; - $prev_year = $year; + $prev_month = $month - 1; + $prev_year = $year; - if ($prev_month==0) + if ($prev_month == 0) { $prev_month = 12; - $prev_year = $year-1; + $prev_year = $year - 1; } } else { $prev_month = $month; - $prev_year = $year; + $prev_year = $year; } $tmpmonth = $prev_month; $tmpyear = $prev_year; //Get first day of next week - $tmptime=dol_mktime(12, 0, 0, $month, $tmpday, $year, 1, 0); - $tmptime-=24*60*60*7; - $tmparray=dol_getdate($tmptime, true); - $prev_day = $tmparray['mday']; + $tmptime = dol_mktime(12, 0, 0, $month, $tmpday, $year, 1, 0); + $tmptime -= 24 * 60 * 60 * 7; + $tmparray = dol_getdate($tmptime, true); + $prev_day = $tmparray['mday']; //Check prev day of week is in same month than first day or not if ($prev_day > $tmpday) { - $prev_month = $month-1; - $prev_year = $year; + $prev_month = $month - 1; + $prev_year = $year; - if ($prev_month==0) + if ($prev_month == 0) { $prev_month = 12; - $prev_year = $year-1; + $prev_year = $year - 1; } } @@ -626,11 +626,11 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', if ($includesunday < 0) $includesunday = (isset($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY) ? $conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY : 1); - $i=0; - while (( ($lastday == 0 && $timestampStart < $timestampEnd) || ($lastday && $timestampStart <= $timestampEnd) ) + $i = 0; + while ((($lastday == 0 && $timestampStart < $timestampEnd) || ($lastday && $timestampStart <= $timestampEnd)) && ($i < 50000)) // Loop end when equals (Test on i is a security loop to avoid infinite loop) { - $ferie=false; + $ferie = false; $jour = date("d", $timestampStart); $mois = date("m", $timestampStart); @@ -638,19 +638,19 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', // Check into var $conf->global->HOLIDAY_MORE_DAYS MM-DD,YYYY-MM-DD, ... // Do not use this anymore, use instead the dictionary of public holidays. - if (! empty($conf->global->HOLIDAY_MORE_PUBLIC_HOLIDAYS)) + if (!empty($conf->global->HOLIDAY_MORE_PUBLIC_HOLIDAYS)) { - $arrayofdaystring=explode(',', $conf->global->HOLIDAY_MORE_PUBLIC_HOLIDAYS); - foreach($arrayofdaystring as $daystring) + $arrayofdaystring = explode(',', $conf->global->HOLIDAY_MORE_PUBLIC_HOLIDAYS); + foreach ($arrayofdaystring as $daystring) { - $tmp=explode('-', $daystring); + $tmp = explode('-', $daystring); if ($tmp[2]) { - if ($tmp[0] == $annee && $tmp[1] == $mois && $tmp[2] == $jour) $ferie=true; + if ($tmp[0] == $annee && $tmp[1] == $mois && $tmp[2] == $jour) $ferie = true; } else { - if ($tmp[0] == $mois && $tmp[1] == $jour) $ferie=true; + if ($tmp[0] == $mois && $tmp[1] == $jour) $ferie = true; } } } @@ -659,26 +659,26 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', // Loop on public holiday defined into hrm_public_holiday $sql = "SELECT code, entity, fk_country, dayrule, year, month, day, active"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_hrm_public_holiday"; - $sql.= " WHERE active = 1 and fk_country IN (0".($country_id > 0 ? ", ".$country_id : 0).")"; + $sql .= " FROM ".MAIN_DB_PREFIX."c_hrm_public_holiday"; + $sql .= " WHERE active = 1 and fk_country IN (0".($country_id > 0 ? ", ".$country_id : 0).")"; $resql = $db->query($sql); if ($resql) { $num_rows = $db->num_rows($resql); - $i=0; + $i = 0; while ($i < $num_rows) { $obj = $db->fetch_object($resql); - if (! empty($obj->dayrule) && $obj->dayrule != 'date') // For example 'easter', '...' + if (!empty($obj->dayrule) && $obj->dayrule != 'date') // For example 'easter', '...' { $specialdayrule[$obj->dayrule] = $obj->dayrule; } else { $match = 1; - if (! empty($obj->year) && $obj->year != $annee) $match = 0; + if (!empty($obj->year) && $obj->year != $annee) $match = 0; if ($obj->month != $mois) $match = 0; if ($obj->day != $jour) $match = 0; @@ -701,7 +701,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', $date_paques = easter_date($annee); $jour_paques = date("d", $date_paques); $mois_paques = date("m", $date_paques); - if($jour_paques == $jour && $mois_paques == $mois) $ferie=true; + if ($jour_paques == $jour && $mois_paques == $mois) $ferie = true; // Easter (sunday) } @@ -719,7 +719,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', ); $jour_lundi_ascension = date("d", $date_lundi_paques); $mois_lundi_ascension = date("m", $date_lundi_paques); - if ($jour_lundi_ascension == $jour && $mois_lundi_ascension == $mois) $ferie=true; + if ($jour_lundi_ascension == $jour && $mois_lundi_ascension == $mois) $ferie = true; // Easter (monday) } @@ -737,7 +737,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', ); $jour_ascension = date("d", $date_ascension); $mois_ascension = date("m", $date_ascension); - if($jour_ascension == $jour && $mois_ascension == $mois) $ferie=true; + if ($jour_ascension == $jour && $mois_ascension == $mois) $ferie = true; // Ascension (thursday) } @@ -755,7 +755,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', ); $jour_pentecote = date("d", $date_pentecote); $mois_pentecote = date("m", $date_pentecote); - if($jour_pentecote == $jour && $mois_pentecote == $mois) $ferie=true; + if ($jour_pentecote == $jour && $mois_pentecote == $mois) $ferie = true; // "Pentecote" (sunday) } if (in_array('pentecotemonday', $specialdayrule)) @@ -772,7 +772,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', ); $jour_pentecote = date("d", $date_pentecote); $mois_pentecote = date("m", $date_pentecote); - if($jour_pentecote == $jour && $mois_pentecote == $mois) $ferie=true; + if ($jour_pentecote == $jour && $mois_pentecote == $mois) $ferie = true; // "Pentecote" (monday) } @@ -785,12 +785,12 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', date("i", $date_paques), date("s", $date_paques), date("m", $date_paques), - date("d", $date_paques) -2, + date("d", $date_paques) - 2, date("Y", $date_paques) ); $jour_viernes = date("d", $date_viernes); $mois_viernes = date("m", $date_viernes); - if($jour_viernes == $jour && $mois_viernes == $mois) $ferie=true; + if ($jour_viernes == $jour && $mois_viernes == $mois) $ferie = true; //Viernes Santo } @@ -808,7 +808,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', ); $jour_fronleichnam = date("d", $date_fronleichnam); $mois_fronleichnam = date("m", $date_fronleichnam); - if($jour_fronleichnam == $jour && $mois_fronleichnam == $mois) $ferie=true; + if ($jour_fronleichnam == $jour && $mois_fronleichnam == $mois) $ferie = true; // Fronleichnam } @@ -819,11 +819,11 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', $jour_semaine = jddayofweek($jour_julien, 0); if ($includesaturday) //Saturday (6) and Sunday (0) { - if ($jour_semaine == 6) $ferie=true; + if ($jour_semaine == 6) $ferie = true; } if ($includesunday) //Saturday (6) and Sunday (0) { - if($jour_semaine == 0) $ferie=true; + if ($jour_semaine == 0) $ferie = true; } } @@ -831,7 +831,7 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', if ($ferie) $nbFerie++; // Increase number of days (on go up into loop) - $timestampStart=dol_time_plus_duree($timestampStart, 1, 'd'); + $timestampStart = dol_time_plus_duree($timestampStart, 1, 'd'); //var_dump($jour.' '.$mois.' '.$annee.' '.$timestampStart); $i++; @@ -862,7 +862,7 @@ function num_between_day($timestampStart, $timestampEnd, $lastday = 0) { $bit = 1; } - $nbjours = (int) floor(($timestampEnd - $timestampStart)/(60*60*24)) + 1 - $bit; + $nbjours = (int) floor(($timestampEnd - $timestampStart) / (60 * 60 * 24)) + 1 - $bit; } //print ($timestampEnd - $timestampStart) - $lastday; return $nbjours; @@ -882,15 +882,15 @@ function num_between_day($timestampStart, $timestampEnd, $lastday = 0) */ function num_open_day($timestampStart, $timestampEnd, $inhour = 0, $lastday = 0, $halfday = 0, $country_code = '') { - global $langs,$mysoc; + global $langs, $mysoc; - if (empty($country_code)) $country_code=$mysoc->country_code; + if (empty($country_code)) $country_code = $mysoc->country_code; dol_syslog('num_open_day timestampStart='.$timestampStart.' timestampEnd='.$timestampEnd.' bit='.$lastday.' country_code='.$country_code); // Check parameters - if (! is_int($timestampStart) && ! is_float($timestampStart)) return 'ErrorBadParameter_num_open_day'; - if (! is_int($timestampEnd) && ! is_float($timestampEnd)) return 'ErrorBadParameter_num_open_day'; + if (!is_int($timestampStart) && !is_float($timestampStart)) return 'ErrorBadParameter_num_open_day'; + if (!is_int($timestampEnd) && !is_float($timestampEnd)) return 'ErrorBadParameter_num_open_day'; //print 'num_open_day timestampStart='.$timestampStart.' timestampEnd='.$timestampEnd.' bit='.$lastday; if ($timestampStart < $timestampEnd) @@ -898,14 +898,14 @@ function num_open_day($timestampStart, $timestampEnd, $inhour = 0, $lastday = 0, $numdays = num_between_day($timestampStart, $timestampEnd, $lastday); $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code, $lastday); $nbOpenDay = $numdays - $numholidays; - $nbOpenDay.= " " . $langs->trans("Days"); - if ($inhour == 1 && $nbOpenDay <= 3) $nbOpenDay = $nbOpenDay*24 . $langs->trans("HourShort"); + $nbOpenDay .= " ".$langs->trans("Days"); + if ($inhour == 1 && $nbOpenDay <= 3) $nbOpenDay = $nbOpenDay * 24.$langs->trans("HourShort"); return $nbOpenDay - (($inhour == 1 ? 12 : 0.5) * abs($halfday)); } elseif ($timestampStart == $timestampEnd) { - $nbOpenDay=$lastday; - if ($inhour == 1) $nbOpenDay = $nbOpenDay*24 . $langs->trans("HourShort"); + $nbOpenDay = $lastday; + if ($inhour == 1) $nbOpenDay = $nbOpenDay * 24.$langs->trans("HourShort"); return $nbOpenDay - (($inhour == 1 ? 12 : 0.5) * abs($halfday)); } else @@ -926,7 +926,7 @@ function num_open_day($timestampStart, $timestampEnd, $inhour = 0, $lastday = 0, */ function monthArray($outputlangs, $short = 0) { - $montharray = array ( + $montharray = array( 1 => $outputlangs->trans("Month01"), 2 => $outputlangs->trans("Month02"), 3 => $outputlangs->trans("Month03"), @@ -941,9 +941,9 @@ function monthArray($outputlangs, $short = 0) 12 => $outputlangs->trans("Month12") ); - if (! empty($short)) + if (!empty($short)) { - $montharray = array ( + $montharray = array( 1 => $outputlangs->trans("MonthShort01"), 2 => $outputlangs->trans("MonthShort02"), 3 => $outputlangs->trans("MonthShort03"), @@ -973,7 +973,7 @@ function getWeekNumbersOfMonth($month, $year) { $nb_days = cal_days_in_month(CAL_GREGORIAN, $month, $year); $TWeek = array(); - for($day = 1; $day < $nb_days; $day++) { + for ($day = 1; $day < $nb_days; $day++) { $week_number = getWeekNumber($day, $month, $year); $TWeek[$week_number] = $week_number; } @@ -990,8 +990,8 @@ function getWeekNumbersOfMonth($month, $year) function getFirstDayOfEachWeek($TWeek, $year) { $TFirstDayOfWeek = array(); - foreach($TWeek as $weekNb) { - if(in_array('01', $TWeek) && in_array('52', $TWeek) && $weekNb == '01') $year++;//Si on a la 1re semaine et la semaine 52 c'est qu'on change d'année + foreach ($TWeek as $weekNb) { + if (in_array('01', $TWeek) && in_array('52', $TWeek) && $weekNb == '01') $year++; //Si on a la 1re semaine et la semaine 52 c'est qu'on change d'année $TFirstDayOfWeek[$weekNb] = date('d', strtotime($year.'W'.$weekNb)); } return $TFirstDayOfWeek; @@ -1007,7 +1007,7 @@ function getFirstDayOfEachWeek($TWeek, $year) function getLastDayOfEachWeek($TWeek, $year) { $TLastDayOfWeek = array(); - foreach($TWeek as $weekNb) { + foreach ($TWeek as $weekNb) { $TLastDayOfWeek[$weekNb] = date('d', strtotime($year.'W'.$weekNb.'+6 days')); } return $TLastDayOfWeek; diff --git a/htdocs/core/lib/doc.lib.php b/htdocs/core/lib/doc.lib.php index 6840e81a646..38e847bb3c1 100644 --- a/htdocs/core/lib/doc.lib.php +++ b/htdocs/core/lib/doc.lib.php @@ -42,11 +42,11 @@ function doc_getlinedesc($line, $outputlangs, $hideref = 0, $hidedesc = 0, $issu { global $db, $conf, $langs; - $idprod=$line->fk_product; - $label=(! empty($line->label)?$line->label:(! empty($line->libelle)?$line->libelle:'')); - $desc=(! empty($line->desc)?$line->desc:(! empty($line->description)?$line->description:'')); - $ref_supplier=(! empty($line->ref_supplier)?$line->ref_supplier:(! empty($line->ref_fourn)?$line->ref_fourn:'')); // TODO Not yet saved for supplier invoices, only supplier orders - $note=(! empty($line->note)?$line->note:''); + $idprod = $line->fk_product; + $label = (!empty($line->label) ? $line->label : (!empty($line->libelle) ? $line->libelle : '')); + $desc = (!empty($line->desc) ? $line->desc : (!empty($line->description) ? $line->description : '')); + $ref_supplier = (!empty($line->ref_supplier) ? $line->ref_supplier : (!empty($line->ref_fourn) ? $line->ref_fourn : '')); // TODO Not yet saved for supplier invoices, only supplier orders + $note = (!empty($line->note) ? $line->note : ''); if ($issupplierline) $prodser = new ProductFournisseur($db); else $prodser = new Product($db); @@ -55,57 +55,57 @@ function doc_getlinedesc($line, $outputlangs, $hideref = 0, $hidedesc = 0, $issu { $prodser->fetch($idprod); // If a predefined product and multilang and on other lang, we renamed label with label translated - if (! empty($conf->global->MAIN_MULTILANGS) && ($outputlangs->defaultlang != $langs->defaultlang)) + if (!empty($conf->global->MAIN_MULTILANGS) && ($outputlangs->defaultlang != $langs->defaultlang)) { - if (! empty($prodser->multilangs[$outputlangs->defaultlang]["label"]) && $label == $prodser->label) $label=$prodser->multilangs[$outputlangs->defaultlang]["label"]; - if (! empty($prodser->multilangs[$outputlangs->defaultlang]["description"]) && $desc == $prodser->description) $desc=$prodser->multilangs[$outputlangs->defaultlang]["description"]; - if (! empty($prodser->multilangs[$outputlangs->defaultlang]["note"]) && $note == $prodser->note) $note=$prodser->multilangs[$outputlangs->defaultlang]["note"]; + if (!empty($prodser->multilangs[$outputlangs->defaultlang]["label"]) && $label == $prodser->label) $label = $prodser->multilangs[$outputlangs->defaultlang]["label"]; + if (!empty($prodser->multilangs[$outputlangs->defaultlang]["description"]) && $desc == $prodser->description) $desc = $prodser->multilangs[$outputlangs->defaultlang]["description"]; + if (!empty($prodser->multilangs[$outputlangs->defaultlang]["note"]) && $note == $prodser->note) $note = $prodser->multilangs[$outputlangs->defaultlang]["note"]; } } // Description short of product line - $libelleproduitservice=$label; + $libelleproduitservice = $label; // Description long of product line if ($desc && ($desc != $label)) { if ($desc == '(CREDIT_NOTE)' && $line->fk_remise_except) { - $discount=new DiscountAbsolute($db); + $discount = new DiscountAbsolute($db); $discount->fetch($line->fk_remise_except); - $sourceref=!empty($discount->discount_type)?$discount->ref_invoive_supplier_source:$discount->ref_facture_source; - $libelleproduitservice=$outputlangs->transnoentitiesnoconv("DiscountFromCreditNote", $sourceref); + $sourceref = !empty($discount->discount_type) ? $discount->ref_invoive_supplier_source : $discount->ref_facture_source; + $libelleproduitservice = $outputlangs->transnoentitiesnoconv("DiscountFromCreditNote", $sourceref); } elseif ($desc == '(DEPOSIT)' && $line->fk_remise_except) { - $discount=new DiscountAbsolute($db); + $discount = new DiscountAbsolute($db); $discount->fetch($line->fk_remise_except); - $sourceref=!empty($discount->discount_type)?$discount->ref_invoive_supplier_source:$discount->ref_facture_source; - $libelleproduitservice=$outputlangs->transnoentitiesnoconv("DiscountFromDeposit", $sourceref); + $sourceref = !empty($discount->discount_type) ? $discount->ref_invoive_supplier_source : $discount->ref_facture_source; + $libelleproduitservice = $outputlangs->transnoentitiesnoconv("DiscountFromDeposit", $sourceref); // Add date of deposit - if (! empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) $libelleproduitservice.=' ('.dol_print_date($discount->datec, 'day', '', $outputlangs).')'; + if (!empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) $libelleproduitservice .= ' ('.dol_print_date($discount->datec, 'day', '', $outputlangs).')'; } elseif ($desc == '(EXCESS RECEIVED)' && $line->fk_remise_except) { - $discount=new DiscountAbsolute($db); + $discount = new DiscountAbsolute($db); $discount->fetch($line->fk_remise_except); - $libelleproduitservice=$outputlangs->transnoentitiesnoconv("DiscountFromExcessReceived", $discount->ref_facture_source); + $libelleproduitservice = $outputlangs->transnoentitiesnoconv("DiscountFromExcessReceived", $discount->ref_facture_source); } elseif ($desc == '(EXCESS PAID)' && $line->fk_remise_except) { - $discount=new DiscountAbsolute($db); + $discount = new DiscountAbsolute($db); $discount->fetch($line->fk_remise_except); - $libelleproduitservice=$outputlangs->transnoentitiesnoconv("DiscountFromExcessPaid", $discount->ref_invoice_supplier_source); + $libelleproduitservice = $outputlangs->transnoentitiesnoconv("DiscountFromExcessPaid", $discount->ref_invoice_supplier_source); } else { if ($idprod) { - if (empty($hidedesc)) $libelleproduitservice=dol_concatdesc($libelleproduitservice, $desc); + if (empty($hidedesc)) $libelleproduitservice = dol_concatdesc($libelleproduitservice, $desc); } else { - $libelleproduitservice=dol_concatdesc($libelleproduitservice, $desc); + $libelleproduitservice = dol_concatdesc($libelleproduitservice, $desc); } } } @@ -118,7 +118,7 @@ function doc_getlinedesc($line, $outputlangs, $hideref = 0, $hidedesc = 0, $issu { $prefix_prodserv = ""; $ref_prodserv = ""; - if (! empty($conf->global->PRODUCT_ADD_TYPE_IN_DOCUMENTS)) // In standard mode, we do not show this + if (!empty($conf->global->PRODUCT_ADD_TYPE_IN_DOCUMENTS)) // In standard mode, we do not show this { if ($prodser->isService()) { @@ -132,34 +132,34 @@ function doc_getlinedesc($line, $outputlangs, $hideref = 0, $hidedesc = 0, $issu if (empty($hideref)) { - if ($issupplierline) $ref_prodserv = $prodser->ref.' ('.$outputlangs->trans("SupplierRef").' '.$ref_supplier.')'; // Show local ref and supplier ref + if ($issupplierline) $ref_prodserv = $prodser->ref.' ('.$outputlangs->trans("SupplierRef").' '.$ref_supplier.')'; // Show local ref and supplier ref else $ref_prodserv = $prodser->ref; // Show local ref only $ref_prodserv .= " - "; } - $libelleproduitservice=$prefix_prodserv.$ref_prodserv.$libelleproduitservice; + $libelleproduitservice = $prefix_prodserv.$ref_prodserv.$libelleproduitservice; } } - if (! empty($line->date_start) || ! empty($line->date_end)) + if (!empty($line->date_start) || !empty($line->date_end)) { - $format='day'; + $format = 'day'; // Show duration if exists if ($line->date_start && $line->date_end) { - $period='('.$outputlangs->transnoentitiesnoconv('DateFromTo', dol_print_date($line->date_start, $format, false, $outputlangs), dol_print_date($line->date_end, $format, false, $outputlangs)).')'; + $period = '('.$outputlangs->transnoentitiesnoconv('DateFromTo', dol_print_date($line->date_start, $format, false, $outputlangs), dol_print_date($line->date_end, $format, false, $outputlangs)).')'; } - if ($line->date_start && ! $line->date_end) + if ($line->date_start && !$line->date_end) { - $period='('.$outputlangs->transnoentitiesnoconv('DateFrom', dol_print_date($line->date_start, $format, false, $outputlangs)).')'; + $period = '('.$outputlangs->transnoentitiesnoconv('DateFrom', dol_print_date($line->date_start, $format, false, $outputlangs)).')'; } - if (! $line->date_start && $line->date_end) + if (!$line->date_start && $line->date_end) { - $period='('.$outputlangs->transnoentitiesnoconv('DateUntil', dol_print_date($line->date_end, $format, false, $outputlangs)).')'; + $period = '('.$outputlangs->transnoentitiesnoconv('DateUntil', dol_print_date($line->date_end, $format, false, $outputlangs)).')'; } //print '>'.$outputlangs->charset_output.','.$period; - $libelleproduitservice=dol_concatdesc($libelleproduitservice, $period); + $libelleproduitservice = dol_concatdesc($libelleproduitservice, $period); //print $libelleproduitservice; } diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php index 16d7d3d8a97..b2280657481 100644 --- a/htdocs/core/lib/donation.lib.php +++ b/htdocs/core/lib/donation.lib.php @@ -33,10 +33,10 @@ function donation_admin_prepare_head() $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT . '/don/admin/donation.php'; + $head[$h][0] = DOL_URL_ROOT.'/don/admin/donation.php'; $head[$h][1] = $langs->trans("Miscellaneous"); $head[$h][2] = 'general'; - $h ++; + $h++; // Show more tabs from modules // Entries must be declared in modules descriptor with line @@ -44,7 +44,7 @@ function donation_admin_prepare_head() // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, null, $head, $h, 'donation_admin'); - $head[$h][0] = DOL_URL_ROOT . '/don/admin/donation_extrafields.php'; + $head[$h][0] = DOL_URL_ROOT.'/don/admin/donation_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFields"); $head[$h][2] = 'attributes'; $h++; @@ -67,10 +67,10 @@ function donation_prepare_head($object) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT . '/don/card.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/don/card.php?id='.$object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; - $h ++; + $h++; // Show more tabs from modules // Entries must be declared in modules descriptor with line @@ -80,25 +80,25 @@ function donation_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->don->dir_output . '/' . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->don->dir_output.'/'.dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/don/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/don/note.php?id='.$object->id; $head[$h][1] = $langs->trans("Notes"); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; - $head[$h][0] = DOL_URL_ROOT . '/don/info.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/don/info.php?id='.$object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; diff --git a/htdocs/core/lib/ecm.lib.php b/htdocs/core/lib/ecm.lib.php index a49e501af78..4dbb418855a 100644 --- a/htdocs/core/lib/ecm.lib.php +++ b/htdocs/core/lib/ecm.lib.php @@ -36,15 +36,15 @@ function ecm_prepare_dasboard_head($object) $h = 0; $head = array(); - $helptext =$langs->trans("ECMAreaDesc").'
    '; - $helptext.=$langs->trans("ECMAreaDesc2"); + $helptext = $langs->trans("ECMAreaDesc").'
    '; + $helptext .= $langs->trans("ECMAreaDesc2"); $head[$h][0] = DOL_URL_ROOT.'/ecm/index.php'; $head[$h][1] = $langs->trans("ECMSectionsManual").$form->textwithpicto('', $helptext, 1, 'info', '', 0, 3); $head[$h][2] = 'index'; $h++; - if (! empty($conf->global->ECM_AUTO_TREE_ENABLED)) + if (!empty($conf->global->ECM_AUTO_TREE_ENABLED)) { $head[$h][0] = DOL_URL_ROOT.'/ecm/index_auto.php'; $head[$h][1] = $langs->trans("ECMSectionsAuto").$form->textwithpicto('', $helptext, 1, 'info', '', 0, 3); diff --git a/htdocs/core/lib/emailing.lib.php b/htdocs/core/lib/emailing.lib.php index cb4e5cf8b29..839be4c4e3d 100644 --- a/htdocs/core/lib/emailing.lib.php +++ b/htdocs/core/lib/emailing.lib.php @@ -39,16 +39,16 @@ function emailing_prepare_head(Mailing $object) $head[$h][2] = 'card'; $h++; - if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->mailing->mailing_advance->recipient)) + if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->mailing->mailing_advance->recipient)) { $head[$h][0] = DOL_URL_ROOT."/comm/mailing/cibles.php?id=".$object->id; $head[$h][1] = $langs->trans("MailRecipients"); - if ($object->nbemail > 0) $head[$h][1].= ''.$object->nbemail.''; + if ($object->nbemail > 0) $head[$h][1] .= ''.$object->nbemail.''; $head[$h][2] = 'targets'; $h++; } - if ( empty($conf->global->EMAILING_USE_ADVANCED_SELECTOR)) + if (empty($conf->global->EMAILING_USE_ADVANCED_SELECTOR)) { $head[$h][0] = DOL_URL_ROOT."/comm/mailing/advtargetemailing.php?id=".$object->id; $head[$h][1] = $langs->trans("MailAdvTargetRecipients"); diff --git a/htdocs/core/lib/expedition.lib.php b/htdocs/core/lib/expedition.lib.php index 7c329940b2d..fc1ca494d36 100644 --- a/htdocs/core/lib/expedition.lib.php +++ b/htdocs/core/lib/expedition.lib.php @@ -35,7 +35,7 @@ function expedition_prepare_head(Expedition $object) { global $langs, $conf, $user; - if (! empty($conf->expedition->enabled)) $langs->load("sendings"); + if (!empty($conf->expedition->enabled)) $langs->load("sendings"); $langs->load("orders"); $h = 0; @@ -48,10 +48,10 @@ function expedition_prepare_head(Expedition $object) $head[$h][0] = DOL_URL_ROOT."/admin/expedition.php"; $head[$h][1] = $langs->trans("Shipment"); - $hselected=$h; + $hselected = $h; $h++; - if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) + if (!empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) { $head[$h][0] = DOL_URL_ROOT."/admin/livraison.php"; $head[$h][1] = $langs->trans("Receivings"); @@ -83,7 +83,7 @@ function expedition_admin_prepare_head() $h++; - if (! empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) + if (!empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) { $head[$h][0] = DOL_URL_ROOT."/admin/expedition.php"; $head[$h][1] = $langs->trans("Shipment"); @@ -92,7 +92,7 @@ function expedition_admin_prepare_head() } - if (! empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) + if (!empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) { $head[$h][0] = DOL_URL_ROOT.'/admin/expedition_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFields"); @@ -100,7 +100,7 @@ function expedition_admin_prepare_head() $h++; } - if (! empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) + if (!empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) { $head[$h][0] = DOL_URL_ROOT.'/admin/expeditiondet_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFieldsLines"); @@ -108,7 +108,7 @@ function expedition_admin_prepare_head() $h++; } - if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) + if (!empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) { $head[$h][0] = DOL_URL_ROOT."/admin/livraison.php"; $head[$h][1] = $langs->trans("Receivings"); @@ -116,7 +116,7 @@ function expedition_admin_prepare_head() $h++; } - if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) + if (!empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) { $head[$h][0] = DOL_URL_ROOT.'/admin/livraison_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFields"); @@ -124,7 +124,7 @@ function expedition_admin_prepare_head() $h++; } - if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) + if (!empty($conf->global->MAIN_SUBMODULE_LIVRAISON)) { $head[$h][0] = DOL_URL_ROOT.'/admin/livraisondet_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFieldsLines"); diff --git a/htdocs/core/lib/expensereport.lib.php b/htdocs/core/lib/expensereport.lib.php index caef261b277..2767af2e792 100644 --- a/htdocs/core/lib/expensereport.lib.php +++ b/htdocs/core/lib/expensereport.lib.php @@ -34,7 +34,7 @@ function expensereport_prepare_head($object) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT . '/expensereport/card.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/expensereport/card.php?id='.$object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; $h++; @@ -47,28 +47,28 @@ function expensereport_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->expensereport->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/expensereport/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/expensereport/note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } - $head[$h][0] = DOL_URL_ROOT . '/expensereport/info.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/expensereport/info.php?id='.$object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; diff --git a/htdocs/core/lib/fichinter.lib.php b/htdocs/core/lib/fichinter.lib.php index d707063bbe8..8d0809f9768 100644 --- a/htdocs/core/lib/fichinter.lib.php +++ b/htdocs/core/lib/fichinter.lib.php @@ -51,7 +51,7 @@ function fichinter_prepare_head($object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/fichinter/contact.php?id='.$object->id; $head[$h][1] = $langs->trans('InterventionContact'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -68,7 +68,7 @@ function fichinter_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/resource/class/dolresource.class.php'; $objectres = new Dolresource($db); $linked_resources = $objectres->getElementResources('fichinter', $object->id); - $nbResource = (is_array($linked_resources)?count($linked_resources):0); + $nbResource = (is_array($linked_resources) ?count($linked_resources) : 0); // if (is_array($objectres->available_resources)) // { // foreach ($objectres->available_resources as $modresources => $resources) @@ -83,7 +83,7 @@ function fichinter_prepare_head($object) $head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=fichinter&element_id='.$object->id; $head[$h][1] = $langs->trans("Resources"); - if ($nbResource > 0) $head[$h][1].= ''.$nbResource.''; + if ($nbResource > 0) $head[$h][1] .= ''.$nbResource.''; $head[$h][2] = 'resource'; $h++; } @@ -91,23 +91,23 @@ function fichinter_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/fichinter/note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->ficheinter->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->ficheinter->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/fichinter/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; diff --git a/htdocs/core/lib/fiscalyear.lib.php b/htdocs/core/lib/fiscalyear.lib.php index 14a23cc22c2..f54772c2339 100644 --- a/htdocs/core/lib/fiscalyear.lib.php +++ b/htdocs/core/lib/fiscalyear.lib.php @@ -34,7 +34,7 @@ function fiscalyear_prepare_head(Fiscalyear $object) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT . '/accountancy/admin/fiscalyear_card.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/accountancy/admin/fiscalyear_card.php?id='.$object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; $h++; @@ -45,7 +45,7 @@ function fiscalyear_prepare_head(Fiscalyear $object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'fiscalyear'); - $head[$h][0] = DOL_URL_ROOT . '/accountancy/admin/fiscalyear_info.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/accountancy/admin/fiscalyear_info.php?id='.$object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; diff --git a/htdocs/core/lib/format_cards.lib.php b/htdocs/core/lib/format_cards.lib.php index 7135082fac9..c46cd150a51 100644 --- a/htdocs/core/lib/format_cards.lib.php +++ b/htdocs/core/lib/format_cards.lib.php @@ -38,22 +38,22 @@ if ($resql) { while ($row = $db->fetch_array($resql)) { - $_Avery_Labels[$row['code']]['name']=$row['name']; - $_Avery_Labels[$row['code']]['paper-size']=$row['paper_size']; - $_Avery_Labels[$row['code']]['orientation']=$row['orientation']; - $_Avery_Labels[$row['code']]['metric']=$row['metric']; - $_Avery_Labels[$row['code']]['marginLeft']=$row['leftmargin']; - $_Avery_Labels[$row['code']]['marginTop']=$row['topmargin']; - $_Avery_Labels[$row['code']]['marginTop']=$row['topmargin']; - $_Avery_Labels[$row['code']]['NX']=$row['nx']; - $_Avery_Labels[$row['code']]['NY']=$row['ny']; - $_Avery_Labels[$row['code']]['SpaceX']=$row['spacex']; - $_Avery_Labels[$row['code']]['SpaceY']=$row['spacey']; - $_Avery_Labels[$row['code']]['width']=$row['width']; - $_Avery_Labels[$row['code']]['height']=$row['height']; - $_Avery_Labels[$row['code']]['font-size']=$row['font_size']; - $_Avery_Labels[$row['code']]['custom_x']=$row['custom_x']; - $_Avery_Labels[$row['code']]['custom_y']=$row['custom_y']; + $_Avery_Labels[$row['code']]['name'] = $row['name']; + $_Avery_Labels[$row['code']]['paper-size'] = $row['paper_size']; + $_Avery_Labels[$row['code']]['orientation'] = $row['orientation']; + $_Avery_Labels[$row['code']]['metric'] = $row['metric']; + $_Avery_Labels[$row['code']]['marginLeft'] = $row['leftmargin']; + $_Avery_Labels[$row['code']]['marginTop'] = $row['topmargin']; + $_Avery_Labels[$row['code']]['marginTop'] = $row['topmargin']; + $_Avery_Labels[$row['code']]['NX'] = $row['nx']; + $_Avery_Labels[$row['code']]['NY'] = $row['ny']; + $_Avery_Labels[$row['code']]['SpaceX'] = $row['spacex']; + $_Avery_Labels[$row['code']]['SpaceY'] = $row['spacey']; + $_Avery_Labels[$row['code']]['width'] = $row['width']; + $_Avery_Labels[$row['code']]['height'] = $row['height']; + $_Avery_Labels[$row['code']]['font-size'] = $row['font_size']; + $_Avery_Labels[$row['code']]['custom_x'] = $row['custom_x']; + $_Avery_Labels[$row['code']]['custom_y'] = $row['custom_y']; } } else @@ -62,7 +62,7 @@ else } // We add characteristics to the name -foreach($_Avery_Labels as $key => $val) +foreach ($_Avery_Labels as $key => $val) { - $_Avery_Labels[$key]['name'].=' ('.$_Avery_Labels[$key]['paper-size'].' - '.$_Avery_Labels[$key]['NX'].'x'.$_Avery_Labels[$key]['NY'].')'; + $_Avery_Labels[$key]['name'] .= ' ('.$_Avery_Labels[$key]['paper-size'].' - '.$_Avery_Labels[$key]['NX'].'x'.$_Avery_Labels[$key]['NY'].')'; } diff --git a/htdocs/core/lib/fourn.lib.php b/htdocs/core/lib/fourn.lib.php index 9336d9b221f..3b41f2620b4 100644 --- a/htdocs/core/lib/fourn.lib.php +++ b/htdocs/core/lib/fourn.lib.php @@ -48,7 +48,7 @@ function facturefourn_prepare_head($object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/fourn/facture/contact.php?facid='.$object->id; $head[$h][1] = $langs->trans('ContactsAddresses'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -62,11 +62,11 @@ function facturefourn_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/fourn/facture/note.php?facid='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } @@ -75,10 +75,10 @@ function facturefourn_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; $upload_dir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id, 2, 0, 0, $object, 'invoice_supplier').$object->ref; $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/fourn/facture/document.php?facid='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; @@ -116,12 +116,12 @@ function ordersupplier_prepare_head($object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/fourn/commande/contact.php?id='.$object->id; $head[$h][1] = $langs->trans('ContactsAddresses'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } - if (! empty($conf->stock->enabled) && (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE))) + if (!empty($conf->stock->enabled) && (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE))) { $langs->load("stocks"); $head[$h][0] = DOL_URL_ROOT.'/fourn/commande/dispatch.php?id='.$object->id; @@ -139,32 +139,32 @@ function ordersupplier_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/fourn/commande/note.php?id='.$object->id; $head[$h][1] = $langs->trans("Notes"); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->fournisseur->dir_output . "/commande/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->fournisseur->dir_output."/commande/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/fourn/commande/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; $head[$h][0] = DOL_URL_ROOT.'/fourn/commande/info.php?id='.$object->id; - $head[$h][1].= $langs->trans("Events"); - if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) + $head[$h][1] .= $langs->trans("Events"); + if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$h][1].= '/'; - $head[$h][1].= $langs->trans("Agenda"); + $head[$h][1] .= '/'; + $head[$h][1] .= $langs->trans("Agenda"); } $head[$h][2] = 'info'; $h++; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 34034abb280..2dc159170a7 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1660,7 +1660,7 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi $morehtmlref .= ''; } } - if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && ($conf->global->MAIN_SHOW_TECHNICAL_ID == '1' || preg_match('/'.preg_quote($object->element, '/').'/i', $conf->global->MAIN_SHOW_TECHNICAL_ID)) && ! empty($object->id)) + if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && ($conf->global->MAIN_SHOW_TECHNICAL_ID == '1' || preg_match('/'.preg_quote($object->element, '/').'/i', $conf->global->MAIN_SHOW_TECHNICAL_ID)) && !empty($object->id)) { $morehtmlref .= '
    '; $morehtmlref .= $langs->trans("TechnicalID").': '.$object->id; @@ -3222,7 +3222,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'grip_title', 'grip', 'listlight', 'note', 'on', 'off', 'playdisabled', 'printer', 'resize', 'sign-out', 'stats', 'switch_on', 'switch_off', 'uparrow', '1uparrow', '1downarrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected' ); - if (! isset($arrayconvpictotomarginleftonly[$pictowithouttext])) { + if (!isset($arrayconvpictotomarginleftonly[$pictowithouttext])) { $marginleftonlyshort = 0; } @@ -3238,7 +3238,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'title_agenda'=>'bg-infoxbox-action', 'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode' ); - if (! empty($arrayconvpictotomorcess[$pictowithouttext])) { + if (!empty($arrayconvpictotomorcess[$pictowithouttext])) { $morecss .= ($morecss ? ' ' : '').$arrayconvpictotomorcess[$pictowithouttext]; } @@ -5649,7 +5649,7 @@ function dol_string_onlythesehtmltags($stringtoclean, $cleanalsosomestyles = 1) $allowed_tags_string = '<'.$allowed_tags_string.'>'; if ($cleanalsosomestyles) { - $stringtoclean = preg_replace('/position\s*:\s*(absolute|fixed)\s*!\s*important/', '', $stringtoclean); // Note: If hacker try to introduce css comment into string to bypass this regex, the string must also be encoded by the dol_htmlentitiesbr during output so it become harmless + $stringtoclean = preg_replace('/position\s*:\s*(absolute|fixed)\s*!\s*important/', '', $stringtoclean); // Note: If hacker try to introduce css comment into string to bypass this regex, the string must also be encoded by the dol_htmlentitiesbr during output so it become harmless } $temp = strip_tags($stringtoclean, $allowed_tags_string); diff --git a/htdocs/core/lib/functions_ch.lib.php b/htdocs/core/lib/functions_ch.lib.php index 353c8d0a2ac..04e74837853 100644 --- a/htdocs/core/lib/functions_ch.lib.php +++ b/htdocs/core/lib/functions_ch.lib.php @@ -32,139 +32,139 @@ function dol_ch_controle_bvrb($bvrb) { // Init array for control - $tableau[0][0]=0; - $tableau[0][1]=9; - $tableau[0][2]=4; - $tableau[0][3]=6; - $tableau[0][4]=8; - $tableau[0][5]=2; - $tableau[0][6]=7; - $tableau[0][7]=1; - $tableau[0][8]=3; - $tableau[0][9]=5; - $tableau[0][10]=0; + $tableau[0][0] = 0; + $tableau[0][1] = 9; + $tableau[0][2] = 4; + $tableau[0][3] = 6; + $tableau[0][4] = 8; + $tableau[0][5] = 2; + $tableau[0][6] = 7; + $tableau[0][7] = 1; + $tableau[0][8] = 3; + $tableau[0][9] = 5; + $tableau[0][10] = 0; - $tableau[1][0]=9; - $tableau[1][1]=4; - $tableau[1][2]=6; - $tableau[1][3]=8; - $tableau[1][4]=2; - $tableau[1][5]=7; - $tableau[1][6]=1; - $tableau[1][7]=3; - $tableau[1][8]=5; - $tableau[1][9]=0; - $tableau[1][10]=9; + $tableau[1][0] = 9; + $tableau[1][1] = 4; + $tableau[1][2] = 6; + $tableau[1][3] = 8; + $tableau[1][4] = 2; + $tableau[1][5] = 7; + $tableau[1][6] = 1; + $tableau[1][7] = 3; + $tableau[1][8] = 5; + $tableau[1][9] = 0; + $tableau[1][10] = 9; - $tableau[2][0]=4; - $tableau[2][1]=6; - $tableau[2][2]=8; - $tableau[2][3]=2; - $tableau[2][4]=7; - $tableau[2][5]=1; - $tableau[2][6]=3; - $tableau[2][7]=5; - $tableau[2][8]=0; - $tableau[2][9]=9; - $tableau[2][10]=8; + $tableau[2][0] = 4; + $tableau[2][1] = 6; + $tableau[2][2] = 8; + $tableau[2][3] = 2; + $tableau[2][4] = 7; + $tableau[2][5] = 1; + $tableau[2][6] = 3; + $tableau[2][7] = 5; + $tableau[2][8] = 0; + $tableau[2][9] = 9; + $tableau[2][10] = 8; - $tableau[3][0]=6; - $tableau[3][1]=8; - $tableau[3][2]=2; - $tableau[3][3]=7; - $tableau[3][4]=1; - $tableau[3][5]=3; - $tableau[3][6]=5; - $tableau[3][7]=0; - $tableau[3][8]=9; - $tableau[3][9]=4; - $tableau[3][10]=7; + $tableau[3][0] = 6; + $tableau[3][1] = 8; + $tableau[3][2] = 2; + $tableau[3][3] = 7; + $tableau[3][4] = 1; + $tableau[3][5] = 3; + $tableau[3][6] = 5; + $tableau[3][7] = 0; + $tableau[3][8] = 9; + $tableau[3][9] = 4; + $tableau[3][10] = 7; - $tableau[4][0]=8; - $tableau[4][1]=2; - $tableau[4][2]=7; - $tableau[4][3]=1; - $tableau[4][4]=3; - $tableau[4][5]=5; - $tableau[4][6]=0; - $tableau[4][7]=9; - $tableau[4][8]=4; - $tableau[4][9]=6; - $tableau[4][10]=6; + $tableau[4][0] = 8; + $tableau[4][1] = 2; + $tableau[4][2] = 7; + $tableau[4][3] = 1; + $tableau[4][4] = 3; + $tableau[4][5] = 5; + $tableau[4][6] = 0; + $tableau[4][7] = 9; + $tableau[4][8] = 4; + $tableau[4][9] = 6; + $tableau[4][10] = 6; - $tableau[5][0]=2; - $tableau[5][1]=7; - $tableau[5][2]=1; - $tableau[5][3]=3; - $tableau[5][4]=5; - $tableau[5][5]=0; - $tableau[5][6]=9; - $tableau[5][7]=4; - $tableau[5][8]=6; - $tableau[5][9]=8; - $tableau[5][10]=5; + $tableau[5][0] = 2; + $tableau[5][1] = 7; + $tableau[5][2] = 1; + $tableau[5][3] = 3; + $tableau[5][4] = 5; + $tableau[5][5] = 0; + $tableau[5][6] = 9; + $tableau[5][7] = 4; + $tableau[5][8] = 6; + $tableau[5][9] = 8; + $tableau[5][10] = 5; - $tableau[6][0]=7; - $tableau[6][1]=1; - $tableau[6][2]=3; - $tableau[6][3]=5; - $tableau[6][4]=0; - $tableau[6][5]=9; - $tableau[6][6]=4; - $tableau[6][7]=6; - $tableau[6][8]=8; - $tableau[6][9]=2; - $tableau[6][10]=4; + $tableau[6][0] = 7; + $tableau[6][1] = 1; + $tableau[6][2] = 3; + $tableau[6][3] = 5; + $tableau[6][4] = 0; + $tableau[6][5] = 9; + $tableau[6][6] = 4; + $tableau[6][7] = 6; + $tableau[6][8] = 8; + $tableau[6][9] = 2; + $tableau[6][10] = 4; - $tableau[7][0]=1; - $tableau[7][1]=3; - $tableau[7][2]=5; - $tableau[7][3]=0; - $tableau[7][4]=9; - $tableau[7][5]=4; - $tableau[7][6]=6; - $tableau[7][7]=8; - $tableau[7][8]=2; - $tableau[7][9]=7; - $tableau[7][10]=3; + $tableau[7][0] = 1; + $tableau[7][1] = 3; + $tableau[7][2] = 5; + $tableau[7][3] = 0; + $tableau[7][4] = 9; + $tableau[7][5] = 4; + $tableau[7][6] = 6; + $tableau[7][7] = 8; + $tableau[7][8] = 2; + $tableau[7][9] = 7; + $tableau[7][10] = 3; - $tableau[8][0]=3; - $tableau[8][1]=5; - $tableau[8][2]=0; - $tableau[8][3]=9; - $tableau[8][4]=4; - $tableau[8][5]=6; - $tableau[8][6]=8; - $tableau[8][7]=2; - $tableau[8][8]=7; - $tableau[8][9]=1; - $tableau[8][10]=2; + $tableau[8][0] = 3; + $tableau[8][1] = 5; + $tableau[8][2] = 0; + $tableau[8][3] = 9; + $tableau[8][4] = 4; + $tableau[8][5] = 6; + $tableau[8][6] = 8; + $tableau[8][7] = 2; + $tableau[8][8] = 7; + $tableau[8][9] = 1; + $tableau[8][10] = 2; - $tableau[9][0]=5; - $tableau[9][1]=0; - $tableau[9][2]=9; - $tableau[9][3]=4; - $tableau[9][4]=6; - $tableau[9][5]=8; - $tableau[9][6]=2; - $tableau[9][7]=7; - $tableau[9][8]=1; - $tableau[9][9]=3; - $tableau[9][10]=1; + $tableau[9][0] = 5; + $tableau[9][1] = 0; + $tableau[9][2] = 9; + $tableau[9][3] = 4; + $tableau[9][4] = 6; + $tableau[9][5] = 8; + $tableau[9][6] = 2; + $tableau[9][7] = 7; + $tableau[9][8] = 1; + $tableau[9][9] = 3; + $tableau[9][10] = 1; // Clean data - $bv=str_replace(' ', '', $bvrb); + $bv = str_replace(' ', '', $bvrb); // Make control - $report=0; - while (dol_strlen($bv)>1) + $report = 0; + while (dol_strlen($bv) > 1) { - $match=substr($bv, 0, 1); - $report=$tableau[$report][$match]; - $bv=substr($bv, 1); + $match = substr($bv, 0, 1); + $report = $tableau[$report][$match]; + $bv = substr($bv, 1); } - $controle=$tableau[$report][10]; + $controle = $tableau[$report][10]; - return ($controle==$bv); + return ($controle == $bv); } diff --git a/htdocs/core/lib/geturl.lib.php b/htdocs/core/lib/geturl.lib.php index ac5cfab832f..ae0eb86882e 100644 --- a/htdocs/core/lib/geturl.lib.php +++ b/htdocs/core/lib/geturl.lib.php @@ -35,11 +35,11 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = { //declaring of global variables global $conf; - $USE_PROXY=empty($conf->global->MAIN_PROXY_USE)?0:$conf->global->MAIN_PROXY_USE; - $PROXY_HOST=empty($conf->global->MAIN_PROXY_HOST)?0:$conf->global->MAIN_PROXY_HOST; - $PROXY_PORT=empty($conf->global->MAIN_PROXY_PORT)?0:$conf->global->MAIN_PROXY_PORT; - $PROXY_USER=empty($conf->global->MAIN_PROXY_USER)?0:$conf->global->MAIN_PROXY_USER; - $PROXY_PASS=empty($conf->global->MAIN_PROXY_PASS)?0:$conf->global->MAIN_PROXY_PASS; + $USE_PROXY = empty($conf->global->MAIN_PROXY_USE) ? 0 : $conf->global->MAIN_PROXY_USE; + $PROXY_HOST = empty($conf->global->MAIN_PROXY_HOST) ? 0 : $conf->global->MAIN_PROXY_HOST; + $PROXY_PORT = empty($conf->global->MAIN_PROXY_PORT) ? 0 : $conf->global->MAIN_PROXY_PORT; + $PROXY_USER = empty($conf->global->MAIN_PROXY_USER) ? 0 : $conf->global->MAIN_PROXY_USER; + $PROXY_PASS = empty($conf->global->MAIN_PROXY_PASS) ? 0 : $conf->global->MAIN_PROXY_PASS; dol_syslog("getURLContent postorget=".$postorget." URL=".$url." param=".$param); @@ -54,51 +54,51 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'Dolibarr geturl function'); - @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, ($followlocation?true:false)); // We use @ here because this may return warning if safe mode is on or open_basedir is on + @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, ($followlocation ?true:false)); // We use @ here because this may return warning if safe mode is on or open_basedir is on if (count($addheaders)) curl_setopt($ch, CURLOPT_HTTPHEADER, $addheaders); - curl_setopt($ch, CURLINFO_HEADER_OUT, true); // To be able to retrieve request header and log it + curl_setopt($ch, CURLINFO_HEADER_OUT, true); // To be able to retrieve request header and log it // By default use tls decied by PHP. // You can force, if supported a version like TLSv1 or TLSv1.2 - if (! empty($conf->global->MAIN_CURL_SSLVERSION)) curl_setopt($ch, CURLOPT_SSLVERSION, $conf->global->MAIN_CURL_SSLVERSION); + if (!empty($conf->global->MAIN_CURL_SSLVERSION)) curl_setopt($ch, CURLOPT_SSLVERSION, $conf->global->MAIN_CURL_SSLVERSION); //curl_setopt($ch, CURLOPT_SSLVERSION, 6); for tls 1.2 //turning off the server and peer verification(TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT)?5:$conf->global->MAIN_USE_CONNECT_TIMEOUT); - curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT)?30:$conf->global->MAIN_USE_RESPONSE_TIMEOUT); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT) ? 5 : $conf->global->MAIN_USE_CONNECT_TIMEOUT); + curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT) ? 30 : $conf->global->MAIN_USE_RESPONSE_TIMEOUT); //curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); // PHP 5.5 - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // We want response + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // We want response if ($postorget == 'POST') { - curl_setopt($ch, CURLOPT_POST, 1); // POST - curl_setopt($ch, CURLOPT_POSTFIELDS, $param); // Setting param x=a&y=z as POST fields + curl_setopt($ch, CURLOPT_POST, 1); // POST + curl_setopt($ch, CURLOPT_POSTFIELDS, $param); // Setting param x=a&y=z as POST fields } elseif ($postorget == 'POSTALREADYFORMATED') { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); // HTTP request is 'POST' but param string is taken as it is - curl_setopt($ch, CURLOPT_POSTFIELDS, $param); // param = content of post, like a xml string + curl_setopt($ch, CURLOPT_POSTFIELDS, $param); // param = content of post, like a xml string } elseif ($postorget == 'PUT') { - $array_param=null; + $array_param = null; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // HTTP request is 'PUT' - if (! is_array($param)) parse_str($param, $array_param); + if (!is_array($param)) parse_str($param, $array_param); else { dol_syslog("parameter param must be a string", LOG_WARNING); - $array_param=$param; + $array_param = $param; } - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array_param)); // Setting param x=a&y=z as PUT fields + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array_param)); // Setting param x=a&y=z as PUT fields } elseif ($postorget == 'PUTALREADYFORMATED') { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // HTTP request is 'PUT' - curl_setopt($ch, CURLOPT_POSTFIELDS, $param); // param = content of post, like a xml string + curl_setopt($ch, CURLOPT_POSTFIELDS, $param); // param = content of post, like a xml string } elseif ($postorget == 'HEAD') { @@ -107,40 +107,40 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = } elseif ($postorget == 'DELETE') { - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); // POST + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); // POST } else { - curl_setopt($ch, CURLOPT_POST, 0); // GET + curl_setopt($ch, CURLOPT_POST, 0); // GET } //if USE_PROXY constant set at begin of this method. if ($USE_PROXY) { - dol_syslog("getURLContent set proxy to ".$PROXY_HOST. ":" . $PROXY_PORT." - ".$PROXY_USER. ":" . $PROXY_PASS); + dol_syslog("getURLContent set proxy to ".$PROXY_HOST.":".$PROXY_PORT." - ".$PROXY_USER.":".$PROXY_PASS); //curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); // Curl 7.10 - curl_setopt($ch, CURLOPT_PROXY, $PROXY_HOST. ":" . $PROXY_PORT); - if ($PROXY_USER) curl_setopt($ch, CURLOPT_PROXYUSERPWD, $PROXY_USER. ":" . $PROXY_PASS); + curl_setopt($ch, CURLOPT_PROXY, $PROXY_HOST.":".$PROXY_PORT); + if ($PROXY_USER) curl_setopt($ch, CURLOPT_PROXYUSERPWD, $PROXY_USER.":".$PROXY_PASS); } //getting response from server $response = curl_exec($ch); - $request = curl_getinfo($ch, CURLINFO_HEADER_OUT); // Reading of request must be done after sending request + $request = curl_getinfo($ch, CURLINFO_HEADER_OUT); // Reading of request must be done after sending request dol_syslog("getURLContent request=".$request); //dol_syslog("getURLContent response =".response); // This may contains binary data, so we dont output it - dol_syslog("getURLContent response size=".strlen($response)); // This may contains binary data, so we dont output it + dol_syslog("getURLContent response size=".strlen($response)); // This may contains binary data, so we dont output it - $rep=array(); + $rep = array(); if (curl_errno($ch)) { // Ad keys to $rep - $rep['content']=$response; + $rep['content'] = $response; // moving to display page to display curl errors - $rep['curl_error_no']=curl_errno($ch); - $rep['curl_error_msg']=curl_error($ch); + $rep['curl_error_no'] = curl_errno($ch); + $rep['curl_error_msg'] = curl_error($ch); dol_syslog("getURLContent response array is ".join(',', $rep)); } @@ -155,9 +155,9 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = dol_syslog("getURLContent http_code=".$rep['http_code']); // Add more keys to $rep - $rep['content']=$response; - $rep['curl_error_no']=''; - $rep['curl_error_msg']=''; + $rep['content'] = $response; + $rep['curl_error_no'] = ''; + $rep['curl_error_msg'] = ''; //closing the curl curl_close($ch); @@ -177,19 +177,19 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = */ function getDomainFromURL($url, $mode = 0) { - $tmpdomain = preg_replace('/^https?:\/\//i', '', $url); // Remove http(s):// - $tmpdomain = preg_replace('/\/.*$/i', '', $tmpdomain); // Remove part after domain + $tmpdomain = preg_replace('/^https?:\/\//i', '', $url); // Remove http(s):// + $tmpdomain = preg_replace('/\/.*$/i', '', $tmpdomain); // Remove part after domain if ($mode == 2) { - $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)\.([^\.]+)$/', '\1.\2.\3', $tmpdomain); // Remove part 'www.' before 'abc.mydomain.com' + $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)\.([^\.]+)$/', '\1.\2.\3', $tmpdomain); // Remove part 'www.' before 'abc.mydomain.com' } else { - $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)$/', '\1.\2', $tmpdomain); // Remove part 'www.abc.' before 'mydomain.com' + $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)$/', '\1.\2', $tmpdomain); // Remove part 'www.abc.' before 'mydomain.com' } if (empty($mode)) { - $tmpdomain = preg_replace('/\.[^\.]+$/', '', $tmpdomain); // Remove first level domain (.com, .net, ...) + $tmpdomain = preg_replace('/\.[^\.]+$/', '', $tmpdomain); // Remove first level domain (.com, .net, ...) } return $tmpdomain; @@ -205,12 +205,12 @@ function getDomainFromURL($url, $mode = 0) */ function getRootURLFromURL($url) { - $prefix=''; + $prefix = ''; $tmpurl = $url; $reg = null; if (preg_match('/^(https?:\/\/)/i', $tmpurl, $reg)) $prefix = $reg[1]; - $tmpurl = preg_replace('/^https?:\/\//i', '', $tmpurl); // Remove http(s):// - $tmpurl = preg_replace('/\/.*$/i', '', $tmpurl); // Remove part after domain + $tmpurl = preg_replace('/^https?:\/\//i', '', $tmpurl); // Remove http(s):// + $tmpurl = preg_replace('/\/.*$/i', '', $tmpurl); // Remove part after domain return $prefix.$tmpurl; } diff --git a/htdocs/core/lib/holiday.lib.php b/htdocs/core/lib/holiday.lib.php index f1b18df11b2..987895c27d8 100644 --- a/htdocs/core/lib/holiday.lib.php +++ b/htdocs/core/lib/holiday.lib.php @@ -44,10 +44,10 @@ function holiday_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; $upload_dir = $conf->holiday->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/holiday/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; diff --git a/htdocs/core/lib/hrm.lib.php b/htdocs/core/lib/hrm.lib.php index b61fba236e2..83eafa2548f 100644 --- a/htdocs/core/lib/hrm.lib.php +++ b/htdocs/core/lib/hrm.lib.php @@ -36,7 +36,7 @@ function establishment_prepare_head($object) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/hrm/establishment/card.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/hrm/establishment/card.php?id='.$object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; $h++; @@ -47,7 +47,7 @@ function establishment_prepare_head($object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'establishment'); - $head[$h][0] = DOL_URL_ROOT.'/hrm/establishment/info.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/hrm/establishment/info.php?id='.$object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; diff --git a/htdocs/core/lib/images.lib.php b/htdocs/core/lib/images.lib.php index 1e6ebfa6d85..a8469d6bb8b 100644 --- a/htdocs/core/lib/images.lib.php +++ b/htdocs/core/lib/images.lib.php @@ -328,7 +328,7 @@ function correctExifImageOrientation($fileSource, $fileDest, $quality = 95) $infoImg = getimagesize($fileSource); // Get image infos $orientation = $exif['Orientation']; - if($orientation != 1){ + if ($orientation != 1) { $img = imagecreatefromjpeg($fileSource); $deg = 0; switch ($orientation) { @@ -413,42 +413,42 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName = '_small', { require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - global $conf,$langs; + global $conf, $langs; dol_syslog("vignette file=".$file." extName=".$extName." maxWidth=".$maxWidth." maxHeight=".$maxHeight." quality=".$quality." outdir=".$outdir." targetformat=".$targetformat); // Clean parameters - $file=trim($file); + $file = trim($file); // Check parameters - if (! $file) + if (!$file) { // Si le fichier n'a pas ete indique return 'ErrorBadParameters'; } - elseif (! file_exists($file)) + elseif (!file_exists($file)) { // Si le fichier passe en parametre n'existe pas dol_syslog($langs->trans("ErrorFileNotFound", $file), LOG_ERR); return $langs->trans("ErrorFileNotFound", $file); } - elseif(image_format_supported($file) < 0) + elseif (image_format_supported($file) < 0) { dol_syslog('This file '.$file.' does not seem to be an image format file name.', LOG_WARNING); return 'ErrorBadImageFormat'; } - elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < -1) { + elseif (!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < -1) { // Si la largeur max est incorrecte (n'est pas numerique, est vide, ou est inferieure a 0) dol_syslog('Wrong value for parameter maxWidth', LOG_ERR); return 'Error: Wrong value for parameter maxWidth'; } - elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < -1) { + elseif (!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < -1) { // Si la hauteur max est incorrecte (n'est pas numerique, est vide, ou est inferieure a 0) dol_syslog('Wrong value for parameter maxHeight', LOG_ERR); return 'Error: Wrong value for parameter maxHeight'; } - $filetoread = realpath(dol_osencode($file)); // Chemin canonique absolu de l'image + $filetoread = realpath(dol_osencode($file)); // Chemin canonique absolu de l'image $infoImg = getimagesize($filetoread); // Recuperation des infos de l'image $imgWidth = $infoImg[0]; // Largeur de l'image @@ -462,8 +462,8 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName = '_small', } } - if ($maxWidth == -1) $maxWidth=$infoImg[0]; // If size is -1, we keep unchanged - if ($maxHeight == -1) $maxHeight=$infoImg[1]; // If size is -1, we keep unchanged + if ($maxWidth == -1) $maxWidth = $infoImg[0]; // If size is -1, we keep unchanged + if ($maxHeight == -1) $maxHeight = $infoImg[1]; // If size is -1, we keep unchanged // Si l'image est plus petite que la largeur et la hauteur max, on ne cree pas de vignette if ($infoImg[0] < $maxWidth && $infoImg[1] < $maxHeight) @@ -531,7 +531,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName = '_small', break; } - if (! is_resource($img)) + if (!is_resource($img)) { dol_syslog('Failed to detect type of image. We found infoImg[2]='.$infoImg[2], LOG_WARNING); return 0; @@ -539,7 +539,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName = '_small', $exifAngle = false; if ($ort && !empty($conf->global->MAIN_USE_EXIF_ROTATION)) { - switch($ort) + switch ($ort) { case 3: // 180 rotate left $exifAngle = 180; @@ -563,7 +563,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName = '_small', { $rotated = false; - if($infoImg[2] === 'IMAGETYPE_PNG') // In fact there is no exif on PNG but just in case + if ($infoImg[2] === 'IMAGETYPE_PNG') // In fact there is no exif on PNG but just in case { imagealphablending($img, false); imagesavealpha($img, true); diff --git a/htdocs/core/lib/import.lib.php b/htdocs/core/lib/import.lib.php index 32f9d0d87d2..8fa6a995331 100644 --- a/htdocs/core/lib/import.lib.php +++ b/htdocs/core/lib/import.lib.php @@ -36,12 +36,12 @@ function import_prepare_head($param, $maxstep = 0) { global $langs; - if (empty($maxstep)) $maxstep=6; + if (empty($maxstep)) $maxstep = 6; - $h=0; + $h = 0; $head = array(); - $i=1; - while($i <= $maxstep) + $i = 1; + while ($i <= $maxstep) { $head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step='.$i.$param; $head[$h][1] = $langs->trans("Step")." ".$i; diff --git a/htdocs/core/lib/invoice.lib.php b/htdocs/core/lib/invoice.lib.php index 15de60eb791..703d50c97f8 100644 --- a/htdocs/core/lib/invoice.lib.php +++ b/htdocs/core/lib/invoice.lib.php @@ -50,28 +50,28 @@ function facture_prepare_head($object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/compta/facture/contact.php?facid='.$object->id; $head[$h][1] = $langs->trans('ContactsAddresses'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } //if ($fac->mode_reglement_code == 'PRE') - if (! empty($conf->prelevement->enabled)) + if (!empty($conf->prelevement->enabled)) { - $nbStandingOrders=0; + $nbStandingOrders = 0; $sql = "SELECT COUNT(pfd.rowid) as nb"; $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; $sql .= " WHERE pfd.fk_facture = ".$object->id; - $resql=$db->query($sql); + $resql = $db->query($sql); if ($resql) { - $obj=$db->fetch_object($resql); + $obj = $db->fetch_object($resql); if ($obj) $nbStandingOrders = $obj->nb; } else dol_print_error($db); $head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$object->id; $head[$h][1] = $langs->trans('StandingOrders'); - if ($nbStandingOrders > 0) $head[$h][1].= ''.$nbStandingOrders.''; + if ($nbStandingOrders > 0) $head[$h][1] .= ''.$nbStandingOrders.''; $head[$h][2] = 'standingorders'; $h++; } @@ -85,23 +85,23 @@ function facture_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/compta/facture/note.php?facid='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->facture->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->facture->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/compta/facture/document.php?facid='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; diff --git a/htdocs/core/lib/invoice2.lib.php b/htdocs/core/lib/invoice2.lib.php index 6e79021e17b..d5ca3431845 100644 --- a/htdocs/core/lib/invoice2.lib.php +++ b/htdocs/core/lib/invoice2.lib.php @@ -50,83 +50,83 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filter, $dateafterdate, $datebeforedate, $paymentdateafter, $paymentdatebefore, $usestdout, $regenerate = 0, $filesuffix = '', $paymentbankid = '', $thirdpartiesid = '', $fileprefix = 'mergedpdf') { $sql = "SELECT DISTINCT f.rowid, f.ref"; - $sql.= " FROM ".MAIN_DB_PREFIX."facture as f"; - $sqlwhere=''; - $sqlorder=''; + $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; + $sqlwhere = ''; + $sqlorder = ''; if (in_array('all', $filter)) { $sqlorder = " ORDER BY f.ref ASC"; } if (in_array('date', $filter)) { - if (empty($sqlwhere)) $sqlwhere=' WHERE '; - else $sqlwhere.=" AND"; - $sqlwhere.= " f.fk_statut > 0"; - $sqlwhere.= " AND f.datef >= '".$db->idate($dateafterdate)."'"; - $sqlwhere.= " AND f.datef <= '".$db->idate($datebeforedate)."'"; + if (empty($sqlwhere)) $sqlwhere = ' WHERE '; + else $sqlwhere .= " AND"; + $sqlwhere .= " f.fk_statut > 0"; + $sqlwhere .= " AND f.datef >= '".$db->idate($dateafterdate)."'"; + $sqlwhere .= " AND f.datef <= '".$db->idate($datebeforedate)."'"; $sqlorder = " ORDER BY f.datef ASC"; } if (in_array('nopayment', $filter)) { - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture"; - if (empty($sqlwhere)) $sqlwhere=' WHERE '; - else $sqlwhere.=" AND"; - $sqlwhere.= " f.fk_statut > 0"; - $sqlwhere.= " AND pf.fk_paiement IS NULL"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture"; + if (empty($sqlwhere)) $sqlwhere = ' WHERE '; + else $sqlwhere .= " AND"; + $sqlwhere .= " f.fk_statut > 0"; + $sqlwhere .= " AND pf.fk_paiement IS NULL"; } if (in_array('payments', $filter) || in_array('bank', $filter)) { - $sql.= ", ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."paiement as p"; - if (in_array('bank', $filter)) $sql.= ", ".MAIN_DB_PREFIX."bank as b"; - if (empty($sqlwhere)) $sqlwhere=' WHERE '; - else $sqlwhere.=" AND"; - $sqlwhere.= " f.fk_statut > 0"; - $sqlwhere.= " AND f.rowid = pf.fk_facture"; - $sqlwhere.= " AND pf.fk_paiement = p.rowid"; + $sql .= ", ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."paiement as p"; + if (in_array('bank', $filter)) $sql .= ", ".MAIN_DB_PREFIX."bank as b"; + if (empty($sqlwhere)) $sqlwhere = ' WHERE '; + else $sqlwhere .= " AND"; + $sqlwhere .= " f.fk_statut > 0"; + $sqlwhere .= " AND f.rowid = pf.fk_facture"; + $sqlwhere .= " AND pf.fk_paiement = p.rowid"; if (in_array('payments', $filter)) { - $sqlwhere.= " AND p.datep >= '".$db->idate($paymentdateafter)."'"; - $sqlwhere.= " AND p.datep <= '".$db->idate($paymentdatebefore)."'"; + $sqlwhere .= " AND p.datep >= '".$db->idate($paymentdateafter)."'"; + $sqlwhere .= " AND p.datep <= '".$db->idate($paymentdatebefore)."'"; } if (in_array('bank', $filter)) { - $sqlwhere.= " AND p.fk_bank = b.rowid"; - $sqlwhere.= " AND b.fk_account = ".$paymentbankid; + $sqlwhere .= " AND p.fk_bank = b.rowid"; + $sqlwhere .= " AND b.fk_account = ".$paymentbankid; } $sqlorder = " ORDER BY p.datep ASC"; } if (in_array('nodeposit', $filter)) { - if (empty($sqlwhere)) $sqlwhere=' WHERE '; - else $sqlwhere.=" AND"; - $sqlwhere.=' type <> 3'; + if (empty($sqlwhere)) $sqlwhere = ' WHERE '; + else $sqlwhere .= " AND"; + $sqlwhere .= ' type <> 3'; } if (in_array('noreplacement', $filter)) { - if (empty($sqlwhere)) $sqlwhere=' WHERE '; - else $sqlwhere.=" AND"; - $sqlwhere.=' type <> 1'; + if (empty($sqlwhere)) $sqlwhere = ' WHERE '; + else $sqlwhere .= " AND"; + $sqlwhere .= ' type <> 1'; } if (in_array('nocreditnote', $filter)) { - if (empty($sqlwhere)) $sqlwhere=' WHERE '; - else $sqlwhere.=" AND"; - $sqlwhere.=' type <> 2'; + if (empty($sqlwhere)) $sqlwhere = ' WHERE '; + else $sqlwhere .= " AND"; + $sqlwhere .= ' type <> 2'; } if (in_array('excludethirdparties', $filter) && is_array($thirdpartiesid)) { - if (empty($sqlwhere)) $sqlwhere=' WHERE '; - else $sqlwhere.=" AND"; - $sqlwhere.=' f.fk_soc NOT IN ('.join(',', $thirdpartiesid).')'; + if (empty($sqlwhere)) $sqlwhere = ' WHERE '; + else $sqlwhere .= " AND"; + $sqlwhere .= ' f.fk_soc NOT IN ('.join(',', $thirdpartiesid).')'; } if (in_array('onlythirdparties', $filter) && is_array($thirdpartiesid)) { - if (empty($sqlwhere)) $sqlwhere=' WHERE '; - else $sqlwhere.=" AND"; - $sqlwhere.=' f.fk_soc IN ('.join(',', $thirdpartiesid).')'; + if (empty($sqlwhere)) $sqlwhere = ' WHERE '; + else $sqlwhere .= " AND"; + $sqlwhere .= ' f.fk_soc IN ('.join(',', $thirdpartiesid).')'; } - if ($sqlwhere) $sql.=$sqlwhere; - if ($sqlorder) $sql.=$sqlorder; + if ($sqlwhere) $sql .= $sqlwhere; + if ($sqlorder) $sql .= $sqlorder; //print $sql; exit; dol_syslog("scripts/invoices/rebuild_merge.php:", LOG_DEBUG); @@ -138,10 +138,10 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte $error = 0; $result = 0; - $files = array() ; // liste les fichiers + $files = array(); // liste les fichiers dol_syslog("scripts/invoices/rebuild_merge.php", LOG_DEBUG); - if ( $resql=$db->query($sql) ) + if ($resql = $db->query($sql)) { $num = $db->num_rows($resql); $cpt = 0; @@ -159,11 +159,11 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte $obj = $db->fetch_object($resql); $fac = new Facture($db); - $result=$fac->fetch($obj->rowid); + $result = $fac->fetch($obj->rowid); if ($result > 0) { $outputlangs = $langs; - if (! empty($newlangid)) + if (!empty($newlangid)) { if ($outputlangs->defaultlang != $newlangid) { @@ -171,11 +171,11 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte $outputlangs->setDefaultLang($newlangid); } } - $filename=$conf->facture->dir_output.'/'.$fac->ref.'/'.$fac->ref.'.pdf'; - if ($regenerate || ! dol_is_file($filename)) + $filename = $conf->facture->dir_output.'/'.$fac->ref.'/'.$fac->ref.'.pdf'; + if ($regenerate || !dol_is_file($filename)) { if ($usestdout) print "Build PDF for invoice ".$obj->ref." - Lang = ".$outputlangs->defaultlang."\n"; - $result= $fac->generateDocument($regenerate?$regenerate:$fac->modelpdf, $outputlangs); + $result = $fac->generateDocument($regenerate ? $regenerate : $fac->modelpdf, $outputlangs); } else { if ($usestdout) print "PDF for invoice ".$obj->ref." already exists\n"; @@ -188,8 +188,8 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte if ($result <= 0) { $error++; - if ($usestdout) print "Error: Failed to build PDF for invoice ".($fac->ref?$fac->ref:' id '.$obj->rowid)."\n"; - else dol_syslog("Failed to build PDF for invoice ".($fac->ref?$fac->ref:' id '.$obj->rowid), LOG_ERR); + if ($usestdout) print "Error: Failed to build PDF for invoice ".($fac->ref ? $fac->ref : ' id '.$obj->rowid)."\n"; + else dol_syslog("Failed to build PDF for invoice ".($fac->ref ? $fac->ref : ' id '.$obj->rowid), LOG_ERR); } $cpt++; @@ -197,10 +197,10 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte // Define format of output PDF - $formatarray=pdf_getFormat($langs); + $formatarray = pdf_getFormat($langs); $page_largeur = $formatarray['width']; $page_hauteur = $formatarray['height']; - $format = array($page_largeur,$page_hauteur); + $format = array($page_largeur, $page_hauteur); if ($usestdout) print "Using output PDF format ".join('x', $format)."\n"; else dol_syslog("Using output PDF format ".join('x', $format), LOG_ERR); @@ -210,7 +210,7 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte //--------------------------------------------------------- // Create empty PDF - $pdf=pdf_getInstance($format); + $pdf = pdf_getInstance($format); if (class_exists('TCPDF')) { $pdf->setPrintHeader(false); @@ -222,7 +222,7 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte //$pdf->SetCompression(false); // Add all others - foreach($files as $file) + foreach ($files as $file) { if ($usestdout) print "Merge PDF file for invoice ".$file."\n"; else dol_syslog("Merge PDF file for invoice ".$file); @@ -242,21 +242,21 @@ function rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filte dol_mkdir($diroutputpdf); // Save merged file - $filename=$fileprefix; - if (empty($filename)) $filename='mergedpdf'; - if (! empty($filesuffix)) $filename.='_'.$filesuffix; - $file=$diroutputpdf.'/'.$filename.'.pdf'; + $filename = $fileprefix; + if (empty($filename)) $filename = 'mergedpdf'; + if (!empty($filesuffix)) $filename .= '_'.$filesuffix; + $file = $diroutputpdf.'/'.$filename.'.pdf'; - if (! $error && $pagecount) + if (!$error && $pagecount) { $pdf->Output($file, 'F'); - if (! empty($conf->global->MAIN_UMASK)) + if (!empty($conf->global->MAIN_UMASK)) @chmod($file, octdec($conf->global->MAIN_UMASK)); } if ($usestdout) { - if (! $error) print "Merged PDF has been built in ".$file."\n"; + if (!$error) print "Merged PDF has been built in ".$file."\n"; else print "Can't build PDF ".$file."\n"; } diff --git a/htdocs/core/lib/json.lib.php b/htdocs/core/lib/json.lib.php index 77b856e2d8e..44ad9cc6ff1 100644 --- a/htdocs/core/lib/json.lib.php +++ b/htdocs/core/lib/json.lib.php @@ -23,7 +23,7 @@ * \ingroup core */ -if (! function_exists('json_encode')) +if (!function_exists('json_encode')) { /** * Implement json_encode for PHP that does not have module enabled. @@ -49,14 +49,14 @@ function dol_json_encode($elements) { dol_syslog("For better performance, enable the native json in your PHP", LOG_WARNING); - $num=0; + $num = 0; if (is_object($elements)) // Count number of properties for an object { - foreach($elements as $key => $value) $num++; + foreach ($elements as $key => $value) $num++; } else { - $num=count($elements); + $num = count($elements); } //var_dump($num); @@ -64,16 +64,16 @@ function dol_json_encode($elements) if (is_numeric(key($elements)) && key($elements) == 0) { // indexed (list) - $keysofelements=array_keys($elements); // Elements array mus have key that does not start with 0 and end with num-1, so we will use this later. + $keysofelements = array_keys($elements); // Elements array mus have key that does not start with 0 and end with num-1, so we will use this later. $output = '['; for ($i = 0, $last = ($num - 1); $i < $num; $i++) { - if (! isset($elements[$keysofelements[$i]])) continue; - if (is_array($elements[$keysofelements[$i]]) || is_object($elements[$keysofelements[$i]])) $output.= json_encode($elements[$keysofelements[$i]]); + if (!isset($elements[$keysofelements[$i]])) continue; + if (is_array($elements[$keysofelements[$i]]) || is_object($elements[$keysofelements[$i]])) $output .= json_encode($elements[$keysofelements[$i]]); else $output .= _val($elements[$keysofelements[$i]]); - if ($i !== $last) $output.= ','; + if ($i !== $last) $output .= ','; } - $output.= ']'; + $output .= ']'; } else { @@ -81,18 +81,18 @@ function dol_json_encode($elements) $output = '{'; $last = $num - 1; $i = 0; - $tmpelements=array(); - if (is_array($elements)) $tmpelements=$elements; - if (is_object($elements)) $tmpelements=get_object_vars($elements); - foreach($tmpelements as $key => $value) + $tmpelements = array(); + if (is_array($elements)) $tmpelements = $elements; + if (is_object($elements)) $tmpelements = get_object_vars($elements); + foreach ($tmpelements as $key => $value) { $output .= '"'.$key.'":'; - if (is_array($value)) $output.= json_encode($value); + if (is_array($value)) $output .= json_encode($value); else $output .= _val($value); - if ($i !== $last) $output.= ','; + if ($i !== $last) $output .= ','; ++$i; } - $output.= '}'; + $output .= '}'; } // return @@ -204,7 +204,7 @@ function _val($val) else return 'null'; } -if (! function_exists('json_decode')) +if (!function_exists('json_decode')) { /** * Implement json_decode for PHP that does not support it @@ -234,34 +234,34 @@ function dol_json_decode($json, $assoc = false) $comment = false; - $out=''; - $strLength = strlen($json); // Must stay strlen and not dol_strlen because we want technical length, not visible length - for ($i=0; $i<$strLength; $i++) + $out = ''; + $strLength = strlen($json); // Must stay strlen and not dol_strlen because we want technical length, not visible length + for ($i = 0; $i < $strLength; $i++) { - if (! $comment) + if (!$comment) { - if (($json[$i] == '{') || ($json[$i] == '[')) $out.= 'array('; - elseif (($json[$i] == '}') || ($json[$i] == ']')) $out.= ')'; - elseif ($json[$i] == ':') $out.= ' => '; - else $out.=$json[$i]; + if (($json[$i] == '{') || ($json[$i] == '[')) $out .= 'array('; + elseif (($json[$i] == '}') || ($json[$i] == ']')) $out .= ')'; + elseif ($json[$i] == ':') $out .= ' => '; + else $out .= $json[$i]; } - else $out.= $json[$i]; - if ($json[$i] == '"' && $json[($i-1)]!="\\") $comment = !$comment; + else $out .= $json[$i]; + if ($json[$i] == '"' && $json[($i - 1)] != "\\") $comment = !$comment; } - $out=_unval($out); + $out = _unval($out); // Return an array if ($out != '') eval('$array = '.$out.';'); - else $array=array(); + else $array = array(); // Return an object - if (! $assoc) + if (!$assoc) { - if (! empty($array)) + if (!empty($array)) { $object = false; - if (count($array)>0) { + if (count($array) > 0) { $object = (object) array(); } foreach ($array as $key => $value) @@ -290,9 +290,9 @@ function _unval($val) while (preg_match('/\\\u([0-9A-F]{2})([0-9A-F]{2})/i', $val, $reg)) { // single, escaped unicode character - $utf16 = chr(hexdec($reg[1])) . chr(hexdec($reg[2])); + $utf16 = chr(hexdec($reg[1])).chr(hexdec($reg[2])); $utf8 = utf162utf8($utf16); - $val=preg_replace('/\\\u'.$reg[1].$reg[2].'/i', $utf8, $val); + $val = preg_replace('/\\\u'.$reg[1].$reg[2].'/i', $utf8, $val); } return $val; } @@ -316,7 +316,7 @@ function utf162utf8($utf16) $bytes = (ord($utf16[0]) << 8) | ord($utf16[1]); - switch(true) { + switch (true) { case ((0x7F & $bytes) == $bytes): // this case should never be reached, because we are in ASCII range // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 @@ -357,7 +357,7 @@ function utf82utf16($utf8) return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); } - switch(strlen($utf8)) { + switch (strlen($utf8)) { case 1: // this case should never be reached, because we are in ASCII range // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 @@ -366,12 +366,12 @@ function utf82utf16($utf8) case 2: // return a UTF-16 character from a 2-byte UTF-8 char // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x07 & (ord($utf8[0]) >> 2)) . chr((0xC0 & (ord($utf8[0]) << 6)) | (0x3F & ord($utf8[1]))); + return chr(0x07 & (ord($utf8[0]) >> 2)).chr((0xC0 & (ord($utf8[0]) << 6)) | (0x3F & ord($utf8[1]))); case 3: // return a UTF-16 character from a 3-byte UTF-8 char // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr((0xF0 & (ord($utf8[0]) << 4)) | (0x0F & (ord($utf8[1]) >> 2))) . chr((0xC0 & (ord($utf8[1]) << 6)) | (0x7F & ord($utf8[2]))); + return chr((0xF0 & (ord($utf8[0]) << 4)) | (0x0F & (ord($utf8[1]) >> 2))).chr((0xC0 & (ord($utf8[1]) << 6)) | (0x7F & ord($utf8[2]))); } // ignoring UTF-32 for now, sorry diff --git a/htdocs/core/lib/loan.lib.php b/htdocs/core/lib/loan.lib.php index e751dfd68c8..a3c352a0405 100644 --- a/htdocs/core/lib/loan.lib.php +++ b/htdocs/core/lib/loan.lib.php @@ -54,21 +54,21 @@ function loan_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->loan->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->loan->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$tab][0] = DOL_URL_ROOT.'/loan/document.php?id='.$object->id; $head[$tab][1] = $langs->trans("Documents"); - if (($nbFiles+$nbLinks) > 0) $head[$tab][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$tab][1] .= ''.($nbFiles + $nbLinks).''; $head[$tab][2] = 'documents'; $tab++; if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { - $nbNote = (empty($object->note_private)?0:1)+(empty($object->note_public)?0:1); + $nbNote = (empty($object->note_private) ? 0 : 1) + (empty($object->note_public) ? 0 : 1); $head[$tab][0] = DOL_URL_ROOT."/loan/note.php?id=".$object->id; $head[$tab][1] = $langs->trans("Notes"); - if($nbNote > 0) $head[$tab][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$tab][1] .= ''.$nbNote.''; $head[$tab][2] = 'note'; $tab++; } diff --git a/htdocs/core/lib/member.lib.php b/htdocs/core/lib/member.lib.php index 1f643dd8a48..d6993845488 100644 --- a/htdocs/core/lib/member.lib.php +++ b/htdocs/core/lib/member.lib.php @@ -42,8 +42,8 @@ function member_prepare_head(Adherent $object) $head[$h][2] = 'general'; $h++; - if ((! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_ACTIVE)) - && (empty($conf->global->MAIN_DISABLE_LDAP_TAB) || ! empty($user->admin))) + if ((!empty($conf->ldap->enabled) && !empty($conf->global->LDAP_MEMBER_ACTIVE)) + && (empty($conf->global->MAIN_DISABLE_LDAP_TAB) || !empty($user->admin))) { $langs->load("ldap"); @@ -53,13 +53,13 @@ function member_prepare_head(Adherent $object) $h++; } - if (! empty($user->rights->adherent->cotisation->lire)) + if (!empty($user->rights->adherent->cotisation->lire)) { - $nbSubscription = is_array($object->subscriptions)?count($object->subscriptions):0; + $nbSubscription = is_array($object->subscriptions) ?count($object->subscriptions) : 0; $head[$h][0] = DOL_URL_ROOT.'/adherents/subscription.php?rowid='.$object->id; $head[$h][1] = $langs->trans("Subscriptions"); $head[$h][2] = 'subscription'; - if ($nbSubscription > 0) $head[$h][1].= ''.$nbSubscription.''; + if ($nbSubscription > 0) $head[$h][1] .= ''.$nbSubscription.''; $h++; } @@ -70,13 +70,13 @@ function member_prepare_head(Adherent $object) complete_head_from_modules($conf, $langs, $object, $head, $h, 'member'); $nbNote = 0; - if(!empty($object->note)) $nbNote++; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/adherents/note.php?id='.$object->id; $head[$h][1] = $langs->trans("Note"); $head[$h][2] = 'note'; - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $h++; // Attachments @@ -84,22 +84,22 @@ function member_prepare_head(Adherent $object) require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; $upload_dir = $conf->adherent->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 1, $object, 'member'); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/adherents/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'document'; $h++; // Show agenda tab - if (! empty($conf->agenda->enabled)) + if (!empty($conf->agenda->enabled)) { $head[$h][0] = DOL_URL_ROOT."/adherents/agenda.php?id=".$object->id; $head[$h][1] = $langs->trans("Events"); - if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) + if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$h][1].= '/'; - $head[$h][1].= $langs->trans("Agenda"); + $head[$h][1] .= '/'; + $head[$h][1] .= $langs->trans("Agenda"); } $head[$h][2] = 'agenda'; $h++; @@ -120,7 +120,7 @@ function member_type_prepare_head(AdherentType $object) { global $langs, $conf, $user; - $h=0; + $h = 0; $head = array(); $head[$h][0] = DOL_URL_ROOT.'/adherents/type.php?rowid='.$object->id; @@ -129,7 +129,7 @@ function member_type_prepare_head(AdherentType $object) $h++; // Multilangs - if (! empty($conf->global->MAIN_MULTILANGS)) + if (!empty($conf->global->MAIN_MULTILANGS)) { $head[$h][0] = DOL_URL_ROOT."/adherents/type_translation.php?rowid=".$object->id; $head[$h][1] = $langs->trans("Translation"); @@ -137,8 +137,8 @@ function member_type_prepare_head(AdherentType $object) $h++; } - if ((! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE)) - && (empty($conf->global->MAIN_DISABLE_LDAP_TAB) || ! empty($user->admin))) + if ((!empty($conf->ldap->enabled) && !empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE)) + && (empty($conf->global->MAIN_DISABLE_LDAP_TAB) || !empty($user->admin))) { $langs->load("ldap"); diff --git a/htdocs/core/lib/memory.lib.php b/htdocs/core/lib/memory.lib.php index 22e660b2e22..ba1ed6bb8a0 100644 --- a/htdocs/core/lib/memory.lib.php +++ b/htdocs/core/lib/memory.lib.php @@ -21,14 +21,14 @@ * \brief Set of function for memory/cache management */ -global $shmkeys,$shmoffset; +global $shmkeys, $shmoffset; -$shmkeys=array('main'=>1,'admin'=>2,'dict'=>3,'companies'=>4,'suppliers'=>5,'products'=>6, - 'commercial'=>7,'compta'=>8,'projects'=>9,'cashdesk'=>10,'agenda'=>11,'bills'=>12, - 'propal'=>13,'boxes'=>14,'banks'=>15,'other'=>16,'errors'=>17,'members'=>18,'ecm'=>19, - 'orders'=>20,'users'=>21,'help'=>22,'stocks'=>23,'interventions'=>24, - 'donations'=>25,'contracts'=>26); -$shmoffset=1000; // Max number of entries found into a language file. If too low, some entries will be overwritten. +$shmkeys = array('main'=>1, 'admin'=>2, 'dict'=>3, 'companies'=>4, 'suppliers'=>5, 'products'=>6, + 'commercial'=>7, 'compta'=>8, 'projects'=>9, 'cashdesk'=>10, 'agenda'=>11, 'bills'=>12, + 'propal'=>13, 'boxes'=>14, 'banks'=>15, 'other'=>16, 'errors'=>17, 'members'=>18, 'ecm'=>19, + 'orders'=>20, 'users'=>21, 'help'=>22, 'stocks'=>23, 'interventions'=>24, + 'donations'=>25, 'contracts'=>26); +$shmoffset = 1000; // Max number of entries found into a language file. If too low, some entries will be overwritten. @@ -95,7 +95,7 @@ function dol_setcache($memoryid, $data) // Using shmop elseif (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_SPEED & 0x02)) { - $result=dol_setshmop($memoryid, $data); + $result = dol_setshmop($memoryid, $data); } return $result; @@ -167,7 +167,7 @@ function dol_getcache($memoryid) // Using shmop elseif (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_SPEED & 0x02)) { - $data=dol_getshmop($memoryid); + $data = dol_getshmop($memoryid); return $data; } @@ -184,9 +184,9 @@ function dol_getcache($memoryid) */ function dol_getshmopaddress($memoryid) { - global $shmkeys,$shmoffset; + global $shmkeys, $shmoffset; if (empty($shmkeys[$memoryid])) return 0; - return $shmkeys[$memoryid]+$shmoffset; + return $shmkeys[$memoryid] + $shmoffset; } /** @@ -196,13 +196,13 @@ function dol_getshmopaddress($memoryid) */ function dol_listshmop() { - global $shmkeys,$shmoffset; + global $shmkeys, $shmoffset; - $resarray=array(); - foreach($shmkeys as $key => $val) + $resarray = array(); + foreach ($shmkeys as $key => $val) { - $result=dol_getshmop($key); - if (! is_numeric($result) || $result > 0) $resarray[$key]=$result; + $result = dol_getshmop($key); + if (!is_numeric($result) || $result > 0) $resarray[$key] = $result; } return $resarray; } @@ -216,25 +216,25 @@ function dol_listshmop() */ function dol_setshmop($memoryid, $data) { - global $shmkeys,$shmoffset; + global $shmkeys, $shmoffset; //print 'dol_setshmop memoryid='.$memoryid."
    \n"; - if (empty($shmkeys[$memoryid]) || ! function_exists("shmop_write")) return 0; - $shmkey=dol_getshmopaddress($memoryid); - $newdata=serialize($data); - $size=strlen($newdata); + if (empty($shmkeys[$memoryid]) || !function_exists("shmop_write")) return 0; + $shmkey = dol_getshmopaddress($memoryid); + $newdata = serialize($data); + $size = strlen($newdata); //print 'dol_setshmop memoryid='.$memoryid." shmkey=".$shmkey." newdata=".$size."bytes
    \n"; - $handle=shmop_open($shmkey, 'c', 0644, 6+$size); + $handle = shmop_open($shmkey, 'c', 0644, 6 + $size); if ($handle) { - $shm_bytes_written1=shmop_write($handle, str_pad($size, 6), 0); - $shm_bytes_written2=shmop_write($handle, $newdata, 6); - if (($shm_bytes_written1 + $shm_bytes_written2) != (6+dol_strlen($newdata))) + $shm_bytes_written1 = shmop_write($handle, str_pad($size, 6), 0); + $shm_bytes_written2 = shmop_write($handle, $newdata, 6); + if (($shm_bytes_written1 + $shm_bytes_written2) != (6 + dol_strlen($newdata))) { print "Couldn't write the entire length of data\n"; } shmop_close($handle); - return ($shm_bytes_written1+$shm_bytes_written2); + return ($shm_bytes_written1 + $shm_bytes_written2); } else { @@ -251,16 +251,16 @@ function dol_setshmop($memoryid, $data) */ function dol_getshmop($memoryid) { - global $shmkeys,$shmoffset; + global $shmkeys, $shmoffset; - if (empty($shmkeys[$memoryid]) || ! function_exists("shmop_open")) return 0; - $shmkey=dol_getshmopaddress($memoryid); + if (empty($shmkeys[$memoryid]) || !function_exists("shmop_open")) return 0; + $shmkey = dol_getshmopaddress($memoryid); //print 'dol_getshmop memoryid='.$memoryid." shmkey=".$shmkey."
    \n"; - $handle=@shmop_open($shmkey, 'a', 0, 0); + $handle = @shmop_open($shmkey, 'a', 0, 0); if ($handle) { - $size=trim(shmop_read($handle, 0, 6)); - if ($size) $data=unserialize(shmop_read($handle, 6, $size)); + $size = trim(shmop_read($handle, 0, 6)); + if ($size) $data = unserialize(shmop_read($handle, 6, $size)); else return -1; shmop_close($handle); } diff --git a/htdocs/core/lib/multicurrency.lib.php b/htdocs/core/lib/multicurrency.lib.php index f17d79c6207..85142e0e631 100644 --- a/htdocs/core/lib/multicurrency.lib.php +++ b/htdocs/core/lib/multicurrency.lib.php @@ -55,10 +55,10 @@ function multicurrencyLimitPrepareHead($aCurrencies) { global $langs; - $i=0; + $i = 0; $head = array(); - foreach($aCurrencies as $currency) + foreach ($aCurrencies as $currency) { $head[$i][0] = $_SERVER['PHP_SELF'].'?currencycode='.$currency; $head[$i][1] = $langs->trans("Currency".$currency).' ('.$langs->getCurrencySymbol($currency).')'; diff --git a/htdocs/core/lib/oauth.lib.php b/htdocs/core/lib/oauth.lib.php index eb1a5495a95..34e1d99bd80 100644 --- a/htdocs/core/lib/oauth.lib.php +++ b/htdocs/core/lib/oauth.lib.php @@ -24,20 +24,20 @@ // Supported OAUTH (a provider is supported when a file xxx_oauthcallback.php is available into htdocs/core/modules/oauth) -$supportedoauth2array=array( +$supportedoauth2array = array( 'OAUTH_GOOGLE_NAME'=>'google', ); if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - $supportedoauth2array['OAUTH_STRIPE_TEST_NAME']='stripetest'; - $supportedoauth2array['OAUTH_STRIPE_LIVE_NAME']='stripelive'; + $supportedoauth2array['OAUTH_STRIPE_TEST_NAME'] = 'stripetest'; + $supportedoauth2array['OAUTH_STRIPE_LIVE_NAME'] = 'stripelive'; } -$supportedoauth2array['OAUTH_GITHUB_NAME']='github'; +$supportedoauth2array['OAUTH_GITHUB_NAME'] = 'github'; // API access parameters OAUTH -$list = array ( +$list = array( array( 'OAUTH_AMAZON_NAME', 'OAUTH_AMAZON_ID', diff --git a/htdocs/core/lib/order.lib.php b/htdocs/core/lib/order.lib.php index 54d850d99b6..3d2847e926b 100644 --- a/htdocs/core/lib/order.lib.php +++ b/htdocs/core/lib/order.lib.php @@ -53,7 +53,7 @@ function commande_prepare_head(Commande $object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/commande/contact.php?id='.$object->id; $head[$h][1] = $langs->trans('ContactsAddresses'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -61,16 +61,16 @@ function commande_prepare_head(Commande $object) if (($conf->expedition_bon->enabled && $user->rights->expedition->lire) || ($conf->livraison_bon->enabled && $user->rights->expedition->livraison->lire)) { - $nbShipments=$object->getNbOfShipments(); $nbReceiption=0; + $nbShipments = $object->getNbOfShipments(); $nbReceiption = 0; $head[$h][0] = DOL_URL_ROOT.'/expedition/shipment.php?id='.$object->id; - $text=''; - if ($conf->expedition_bon->enabled) $text.=$langs->trans("Shipments"); - if ($conf->expedition_bon->enabled && $conf->livraison_bon->enabled) $text.='/'; - if ($conf->livraison_bon->enabled) $text.=$langs->trans("Receivings"); - if ($nbShipments > 0 || $nbReceiption > 0) $text.= ''.($nbShipments?$nbShipments:0); - if ($conf->expedition_bon->enabled && $conf->livraison_bon->enabled && ($nbShipments > 0 || $nbReceiption > 0)) $text.='/'; - if ($conf->expedition_bon->enabled && $conf->livraison_bon->enabled && ($nbShipments > 0 || $nbReceiption > 0)) $text.= ($nbReceiption?$nbReceiption:0); - if ($nbShipments > 0 || $nbReceiption > 0) $text.= ''; + $text = ''; + if ($conf->expedition_bon->enabled) $text .= $langs->trans("Shipments"); + if ($conf->expedition_bon->enabled && $conf->livraison_bon->enabled) $text .= '/'; + if ($conf->livraison_bon->enabled) $text .= $langs->trans("Receivings"); + if ($nbShipments > 0 || $nbReceiption > 0) $text .= ''.($nbShipments ? $nbShipments : 0); + if ($conf->expedition_bon->enabled && $conf->livraison_bon->enabled && ($nbShipments > 0 || $nbReceiption > 0)) $text .= '/'; + if ($conf->expedition_bon->enabled && $conf->livraison_bon->enabled && ($nbShipments > 0 || $nbReceiption > 0)) $text .= ($nbReceiption ? $nbReceiption : 0); + if ($nbShipments > 0 || $nbReceiption > 0) $text .= ''; $head[$h][1] = $text; $head[$h][2] = 'shipping'; $h++; @@ -85,23 +85,23 @@ function commande_prepare_head(Commande $object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/commande/note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->commande->multidir_output[$object->entity] . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->commande->multidir_output[$object->entity]."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/commande/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; diff --git a/htdocs/core/lib/parsemd.lib.php b/htdocs/core/lib/parsemd.lib.php index 280e77dcc9c..7dfd025609c 100644 --- a/htdocs/core/lib/parsemd.lib.php +++ b/htdocs/core/lib/parsemd.lib.php @@ -33,7 +33,7 @@ function dolMd2Html($content, $parser = 'parsedown', $replaceimagepath = null) { if (is_array($replaceimagepath)) { - foreach($replaceimagepath as $key => $val) + foreach ($replaceimagepath as $key => $val) { $keytoreplace = ']('.$key; $valafter = ']('.$val; @@ -67,7 +67,7 @@ function dolMd2Asciidoc($content, $parser = 'dolibarr', $replaceimagepath = null { if (is_array($replaceimagepath)) { - foreach($replaceimagepath as $key => $val) + foreach ($replaceimagepath as $key => $val) { $keytoreplace = ']('.$key; $valafter = ']('.$val; diff --git a/htdocs/core/lib/payments.lib.php b/htdocs/core/lib/payments.lib.php index e7a9bd51034..80aed36f674 100644 --- a/htdocs/core/lib/payments.lib.php +++ b/htdocs/core/lib/payments.lib.php @@ -99,22 +99,22 @@ function getValidOnlinePaymentMethods($paymentmethod = '') { global $conf, $langs; - $validpaymentmethod=array(); + $validpaymentmethod = array(); - if ((empty($paymentmethod) || $paymentmethod == 'paypal') && ! empty($conf->paypal->enabled)) + if ((empty($paymentmethod) || $paymentmethod == 'paypal') && !empty($conf->paypal->enabled)) { $langs->load("paypal"); - $validpaymentmethod['paypal']='valid'; + $validpaymentmethod['paypal'] = 'valid'; } - if ((empty($paymentmethod) || $paymentmethod == 'paybox') && ! empty($conf->paybox->enabled)) + if ((empty($paymentmethod) || $paymentmethod == 'paybox') && !empty($conf->paybox->enabled)) { $langs->load("paybox"); - $validpaymentmethod['paybox']='valid'; + $validpaymentmethod['paybox'] = 'valid'; } - if ((empty($paymentmethod) || $paymentmethod == 'stripe') && ! empty($conf->stripe->enabled)) + if ((empty($paymentmethod) || $paymentmethod == 'stripe') && !empty($conf->stripe->enabled)) { $langs->load("stripe"); - $validpaymentmethod['stripe']='valid'; + $validpaymentmethod['stripe'] = 'valid'; } // TODO Add trigger @@ -173,107 +173,107 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = '9.99', $freetag if ($type == 'free') { - $out=$urltouse.'/public/payment/newpayment.php?amount='.($mode?'':'').$amount.($mode?'':'').'&tag='.($mode?'':'').$freetag.($mode?'':''); - if (! empty($conf->global->PAYMENT_SECURITY_TOKEN)) + $out = $urltouse.'/public/payment/newpayment.php?amount='.($mode ? '' : '').$amount.($mode ? '' : '').'&tag='.($mode ? '' : '').$freetag.($mode ? '' : ''); + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out.='&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; - else $out.='&securekey='.dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); + if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; + else $out .= '&securekey='.dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); } //if ($mode) $out.='&noidempotency=1'; } elseif ($type == 'order') { - $out=$urltouse.'/public/payment/newpayment.php?source=order&ref='.($mode?'':''); - if ($mode == 1) $out.='order_ref'; - if ($mode == 0) $out.=urlencode($ref); - $out.=($mode?'':''); - if (! empty($conf->global->PAYMENT_SECURITY_TOKEN)) + $out = $urltouse.'/public/payment/newpayment.php?source=order&ref='.($mode ? '' : ''); + if ($mode == 1) $out .= 'order_ref'; + if ($mode == 0) $out .= urlencode($ref); + $out .= ($mode ? '' : ''); + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out.='&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; + if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; else { - $out.='&securekey='.($mode?'':''); - if ($mode == 1) $out.="hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + order_ref)"; - if ($mode == 0) $out.= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . $type . $ref, 2); - $out.=($mode?'':''); + $out .= '&securekey='.($mode ? '' : ''); + if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + order_ref)"; + if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); + $out .= ($mode ? '' : ''); } } } elseif ($type == 'invoice') { - $out=$urltouse.'/public/payment/newpayment.php?source=invoice&ref='.($mode?'':''); - if ($mode == 1) $out.='invoice_ref'; - if ($mode == 0) $out.=urlencode($ref); - $out.=($mode?'':''); - if (! empty($conf->global->PAYMENT_SECURITY_TOKEN)) + $out = $urltouse.'/public/payment/newpayment.php?source=invoice&ref='.($mode ? '' : ''); + if ($mode == 1) $out .= 'invoice_ref'; + if ($mode == 0) $out .= urlencode($ref); + $out .= ($mode ? '' : ''); + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out.='&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; + if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; else { - $out.='&securekey='.($mode?'':''); - if ($mode == 1) $out.="hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + invoice_ref)"; - if ($mode == 0) $out.= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . $type . $ref, 2); - $out.=($mode?'':''); + $out .= '&securekey='.($mode ? '' : ''); + if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + invoice_ref)"; + if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); + $out .= ($mode ? '' : ''); } } } elseif ($type == 'contractline') { - $out=$urltouse.'/public/payment/newpayment.php?source=contractline&ref='.($mode?'':''); - if ($mode == 1) $out.='contractline_ref'; - if ($mode == 0) $out.=urlencode($ref); - $out.=($mode?'':''); - if (! empty($conf->global->PAYMENT_SECURITY_TOKEN)) + $out = $urltouse.'/public/payment/newpayment.php?source=contractline&ref='.($mode ? '' : ''); + if ($mode == 1) $out .= 'contractline_ref'; + if ($mode == 0) $out .= urlencode($ref); + $out .= ($mode ? '' : ''); + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out.='&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; + if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; else { - $out.='&securekey='.($mode?'':''); - if ($mode == 1) $out.="hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + contractline_ref)"; - if ($mode == 0) $out.= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . $type . $ref, 2); - $out.=($mode?'':''); + $out .= '&securekey='.($mode ? '' : ''); + if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + contractline_ref)"; + if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); + $out .= ($mode ? '' : ''); } } } elseif ($type == 'member' || $type == 'membersubscription') { - $out=$urltouse.'/public/payment/newpayment.php?source=membersubscription&ref='.($mode?'':''); - if ($mode == 1) $out.='member_ref'; - if ($mode == 0) $out.=urlencode($ref); - $out.=($mode?'':''); - if (! empty($conf->global->PAYMENT_SECURITY_TOKEN)) + $out = $urltouse.'/public/payment/newpayment.php?source=membersubscription&ref='.($mode ? '' : ''); + if ($mode == 1) $out .= 'member_ref'; + if ($mode == 0) $out .= urlencode($ref); + $out .= ($mode ? '' : ''); + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out.='&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; + if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; else { - $out.='&securekey='.($mode?'':''); - if ($mode == 1) $out.="hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + member_ref)"; - if ($mode == 0) $out.= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . $type . $ref, 2); - $out.=($mode?'':''); + $out .= '&securekey='.($mode ? '' : ''); + if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + member_ref)"; + if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); + $out .= ($mode ? '' : ''); } } } if ($type == 'donation') { - $out=$urltouse.'/public/payment/newpayment.php?source=donation&ref='.($mode?'':''); - if ($mode == 1) $out.='donation_ref'; - if ($mode == 0) $out.=urlencode($ref); - $out.=($mode?'':''); - if (! empty($conf->global->PAYMENT_SECURITY_TOKEN)) + $out = $urltouse.'/public/payment/newpayment.php?source=donation&ref='.($mode ? '' : ''); + if ($mode == 1) $out .= 'donation_ref'; + if ($mode == 0) $out .= urlencode($ref); + $out .= ($mode ? '' : ''); + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out.='&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; + if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) $out .= '&securekey='.$conf->global->PAYMENT_SECURITY_TOKEN; else { - $out.='&securekey='.($mode?'':''); - if ($mode == 1) $out.="hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + donation_ref)"; - if ($mode == 0) $out.= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . $type . $ref, 2); - $out.=($mode?'':''); + $out .= '&securekey='.($mode ? '' : ''); + if ($mode == 1) $out .= "hash('".$conf->global->PAYMENT_SECURITY_TOKEN."' + '".$type."' + donation_ref)"; + if ($mode == 0) $out .= dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$type.$ref, 2); + $out .= ($mode ? '' : ''); } } } // For multicompany - if (! empty($out) && ! empty($conf->multicompany->enabled)) $out.="&entity=".$conf->entity; // Check the entity because we may have the same reference in several entities + if (!empty($out) && !empty($conf->multicompany->enabled)) $out .= "&entity=".$conf->entity; // Check the entity because we may have the same reference in several entities return $out; } diff --git a/htdocs/core/lib/prelevement.lib.php b/htdocs/core/lib/prelevement.lib.php index 035f0adb754..eca43aef3f6 100644 --- a/htdocs/core/lib/prelevement.lib.php +++ b/htdocs/core/lib/prelevement.lib.php @@ -78,8 +78,8 @@ function prelevement_prepare_head(BonPrelevement $object) function prelevement_check_config() { global $conf; - if(empty($conf->global->PRELEVEMENT_ID_BANKACCOUNT)) return -1; - if(empty($conf->global->PRELEVEMENT_ICS)) return -1; - if(empty($conf->global->PRELEVEMENT_USER)) return -1; + if (empty($conf->global->PRELEVEMENT_ID_BANKACCOUNT)) return -1; + if (empty($conf->global->PRELEVEMENT_ICS)) return -1; + if (empty($conf->global->PRELEVEMENT_USER)) return -1; return 0; } diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 9b9f000cf17..428d976ab6d 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -487,10 +487,10 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t } // Ref of task - if (count($arrayfields)>0 && !empty($arrayfields['t.ref']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.ref']['checked'])) { print ''; if ($showlineingray) { - print '' . img_object('', 'projecttask') . ' ' . $lines[$i]->ref . ''; + print ''.img_object('', 'projecttask').' '.$lines[$i]->ref.''; } else { print $taskstatic->getNomUrl(1, 'withproject'); } @@ -498,7 +498,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t } // Title of task - if (count($arrayfields)>0 && !empty($arrayfields['t.label']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.label']['checked'])) { print ""; if ($showlineingray) print ''; @@ -516,21 +516,21 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t print "\n"; } - if (count($arrayfields)>0 && !empty($arrayfields['t.description']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.description']['checked'])) { print ""; print $lines[$i]->description; print "\n"; } // Date start - if (count($arrayfields)>0 && !empty($arrayfields['t.dateo']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.dateo']['checked'])) { print ''; print dol_print_date($lines[$i]->date_start, 'dayhour'); print ''; } // Date end - if (count($arrayfields)>0 && !empty($arrayfields['t.datee']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.datee']['checked'])) { print ''; print dol_print_date($lines[$i]->date_end, 'dayhour'); if ($taskstatic->hasDelay()) @@ -544,7 +544,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t if (!empty($conf->global->PROJECT_TIMES_SPENT_FORMAT)) $timespentoutputformat = $conf->global->PROJECT_TIME_SPENT_FORMAT; // Planned Workload (in working hours) - if (count($arrayfields)>0 && !empty($arrayfields['t.planned_workload']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.planned_workload']['checked'])) { print ''; $fullhour = convertSecondToTime($lines[$i]->planned_workload, $plannedworkloadoutputformat); $workingdelay = convertSecondToTime($lines[$i]->planned_workload, 'all', 86400, 7); // TODO Replace 86400 and 7 to take account working hours per day and working day per weeks @@ -558,11 +558,11 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t } // Time spent - if (count($arrayfields)>0 && !empty($arrayfields['t.duration_effective']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.duration_effective']['checked'])) { print ''; if ($showlineingray) print ''; - else print ''; + else print ''; if ($lines[$i]->duration) print convertSecondToTime($lines[$i]->duration, $timespentoutputformat); else print '--:--'; @@ -573,18 +573,18 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t } // Progress calculated (Note: ->duration is time spent) - if (count($arrayfields)>0 && !empty($arrayfields['t.progress_calculated']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.progress_calculated']['checked'])) { print ''; if ($lines[$i]->planned_workload || $lines[$i]->duration) { if ($lines[$i]->planned_workload) - print round(100 * $lines[$i]->duration / $lines[$i]->planned_workload, 2) . ' %'; - else print '' . $langs->trans('WorkloadNotDefined') . ''; + print round(100 * $lines[$i]->duration / $lines[$i]->planned_workload, 2).' %'; + else print ''.$langs->trans('WorkloadNotDefined').''; } print ''; } // Progress declared - if (count($arrayfields)>0 && !empty($arrayfields['t.progress']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.progress']['checked'])) { print ''; if ($lines[$i]->progress != '') { print getTaskProgressBadge($taskstatic); @@ -593,7 +593,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t } // resume - if (count($arrayfields)>0 && !empty($arrayfields['t.progress_summary']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.progress_summary']['checked'])) { print ''; if ($lines[$i]->progress != '' && $lines[$i]->duration) { print getTaskProgressView($taskstatic, false, false); @@ -604,25 +604,25 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t if ($showbilltime) { // Time not billed - if (count($arrayfields)>0 && !empty($arrayfields['t.tobill']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.tobill']['checked'])) { print ''; if ($lines[$i]->usage_bill_time) { print convertSecondToTime($lines[$i]->tobill, 'allhourmin'); $total_projectlinesa_tobill += $lines[$i]->tobill; } else { - print '' . $langs->trans("NA") . ''; + print ''.$langs->trans("NA").''; } print ''; } // Time billed - if (count($arrayfields)>0 && !empty($arrayfields['t.billed']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.billed']['checked'])) { print ''; if ($lines[$i]->usage_bill_time) { print convertSecondToTime($lines[$i]->billed, 'allhourmin'); $total_projectlinesa_billed += $lines[$i]->billed; } else { - print '' . $langs->trans("NA") . ''; + print ''.$langs->trans("NA").''; } print ''; } @@ -650,12 +650,12 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t } // Extra fields - $extrafieldsobjectkey=$taskstatic->table_element; - $obj=$lines[$i]; + $extrafieldsobjectkey = $taskstatic->table_element; + $obj = $lines[$i]; include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook - $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$lines[$i]); - $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook + $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$lines[$i]); + $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Tick to drag and drop @@ -693,18 +693,18 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t print ''; print ''.$langs->trans("Total").''; if ($showproject) print ''; - if (count($arrayfields)>0 && !empty($arrayfields['t.label']['checked'])) print ''; - if (count($arrayfields)>0 && !empty($arrayfields['t.dateo']['checked'])) print ''; - if (count($arrayfields)>0 && !empty($arrayfields['t.datee']['checked'])) print ''; - if (count($arrayfields)>0 && !empty($arrayfields['t.planned_workload']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.label']['checked'])) print ''; + if (count($arrayfields) > 0 && !empty($arrayfields['t.dateo']['checked'])) print ''; + if (count($arrayfields) > 0 && !empty($arrayfields['t.datee']['checked'])) print ''; + if (count($arrayfields) > 0 && !empty($arrayfields['t.planned_workload']['checked'])) { print ''; print convertSecondToTime($total_projectlinesa_planned, 'allhourmin'); print ''; } - if (count($arrayfields)>0 && !empty($arrayfields['t.duration_effective']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.duration_effective']['checked'])) { print ''; if ($projectidfortotallink > 0) - print ''; + print ''; print convertSecondToTime($total_projectlinesa_spent, 'allhourmin'); if ($projectidfortotallink > 0) print ''; @@ -734,27 +734,27 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t } } - if (count($arrayfields)>0 && !empty($arrayfields['t.progress_calculated']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.progress_calculated']['checked'])) { print ''; if ($total_projectlinesa_planned) - print $totalCalculatedProgress . ' %'; + print $totalCalculatedProgress.' %'; print ''; } - if (count($arrayfields)>0 && !empty($arrayfields['t.progress']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.progress']['checked'])) { print ''; if ($total_projectlinesa_planned) - print '' . $totalAverageDeclaredProgress . ' %'; + print ''.$totalAverageDeclaredProgress.' %'; print ''; } // resume - if (count($arrayfields)>0 && !empty($arrayfields['t.progress_summary']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.progress_summary']['checked'])) { print ''; if ($total_projectlinesa_planned) { print ''; - print '
    '; - print '
    '; + print '
    '; + print '
    '; print '
    '; print '
    '; } @@ -763,12 +763,12 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t if ($showbilltime) { - if (count($arrayfields)>0 && !empty($arrayfields['t.tobill']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.tobill']['checked'])) { print ''; print convertSecondToTime($total_projectlinesa_tobill, 'allhourmin'); print ''; } - if (count($arrayfields)>0 && !empty($arrayfields['t.billed']['checked'])) { + if (count($arrayfields) > 0 && !empty($arrayfields['t.billed']['checked'])) { print ''; print convertSecondToTime($total_projectlinesa_billed, 'allhourmin'); print ''; @@ -2073,7 +2073,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks $listofstatus = array_keys($listofoppstatus); - if (is_array($listofstatus) && ! empty($conf->global->USE_COLOR_FOR_PROSPECTION_STATUS)) { + if (is_array($listofstatus) && !empty($conf->global->USE_COLOR_FOR_PROSPECTION_STATUS)) { // Define $themeColorId and array $statusOppList for each $listofstatus $themeColorId = 0; $statusOppList = array(); @@ -2216,7 +2216,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks if ($userAccess >= 0) { $projectstatic->ref = $objp->ref; - $projectstatic->statut = $objp->status; // deprecated + $projectstatic->statut = $objp->status; // deprecated $projectstatic->status = $objp->status; $projectstatic->title = $objp->title; $projectstatic->datee = $db->jdate($objp->datee); diff --git a/htdocs/core/lib/propal.lib.php b/htdocs/core/lib/propal.lib.php index 9e12e9d4229..fcdf4bbb79d 100644 --- a/htdocs/core/lib/propal.lib.php +++ b/htdocs/core/lib/propal.lib.php @@ -42,14 +42,14 @@ function propal_prepare_head($object) $head[$h][2] = 'comm'; $h++; - if ((empty($conf->commande->enabled) && ((! empty($conf->expedition->enabled) && ! empty($conf->expedition_bon->enabled) && $user->rights->expedition->lire) - || (! empty($conf->expedition->enabled) && ! empty($conf->livraison_bon->enabled) && $user->rights->expedition->livraison->lire)))) + if ((empty($conf->commande->enabled) && ((!empty($conf->expedition->enabled) && !empty($conf->expedition_bon->enabled) && $user->rights->expedition->lire) + || (!empty($conf->expedition->enabled) && !empty($conf->livraison_bon->enabled) && $user->rights->expedition->livraison->lire)))) { $langs->load("sendings"); $text = ''; $head[$h][0] = DOL_URL_ROOT.'/expedition/propal.php?id='.$object->id; - if ($conf->expedition_bon->enabled) $text=$langs->trans("Shipment"); - if ($conf->livraison_bon->enabled) $text.='/'.$langs->trans("Receivings"); + if ($conf->expedition_bon->enabled) $text = $langs->trans("Shipment"); + if ($conf->livraison_bon->enabled) $text .= '/'.$langs->trans("Receivings"); $head[$h][1] = $text; $head[$h][2] = 'shipping'; $h++; @@ -60,7 +60,7 @@ function propal_prepare_head($object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/comm/propal/contact.php?id='.$object->id; $head[$h][1] = $langs->trans('ContactsAddresses'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -74,23 +74,23 @@ function propal_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/comm/propal/note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->propal->multidir_output[$object->entity] . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->propal->multidir_output[$object->entity]."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/comm/propal/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'document'; $h++; diff --git a/htdocs/core/lib/reception.lib.php b/htdocs/core/lib/reception.lib.php index 33591b3beea..3cf9a535eaa 100644 --- a/htdocs/core/lib/reception.lib.php +++ b/htdocs/core/lib/reception.lib.php @@ -60,7 +60,7 @@ function reception_prepare_head(Reception $object) $nbContact = count($objectsrc->liste_contact(-1, 'internal')) + count($objectsrc->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT."/reception/contact.php?id=".$object->id; $head[$h][1] = $langs->trans("ContactsAddresses"); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -70,7 +70,7 @@ function reception_prepare_head(Reception $object) if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT."/reception/note.php?id=".$object->id; $head[$h][1] = $langs->trans("Notes"); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; @@ -103,7 +103,7 @@ function reception_admin_prepare_head() $h++; - if (! empty($conf->global->MAIN_SUBMODULE_RECEPTION)) + if (!empty($conf->global->MAIN_SUBMODULE_RECEPTION)) { $head[$h][0] = DOL_URL_ROOT.'/admin/reception_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFields"); @@ -111,7 +111,7 @@ function reception_admin_prepare_head() $h++; } - if (! empty($conf->global->MAIN_SUBMODULE_RECEPTION)) + if (!empty($conf->global->MAIN_SUBMODULE_RECEPTION)) { $head[$h][0] = DOL_URL_ROOT.'/admin/commande_fournisseur_dispatch_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFieldsLines"); diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php index 979583e8b4d..5a8d5d2530e 100644 --- a/htdocs/core/lib/report.lib.php +++ b/htdocs/core/lib/report.lib.php @@ -44,11 +44,11 @@ function report_header($reportname, $notused, $period, $periodlink, $description print "\n\n\n"; - if(! empty($varlink)) $varlink = '?'.$varlink; + if (!empty($varlink)) $varlink = '?'.$varlink; $head = array(); - $h=0; + $h = 0; $head[$h][0] = $_SERVER["PHP_SELF"].$varlink; $head[$h][1] = $langs->trans("Report"); $head[$h][2] = 'report'; @@ -58,7 +58,7 @@ function report_header($reportname, $notused, $period, $periodlink, $description dol_fiche_head($head, 'report'); - foreach($moreparam as $key => $value) + foreach ($moreparam as $key => $value) { print ''."\n"; } diff --git a/htdocs/core/lib/resource.lib.php b/htdocs/core/lib/resource.lib.php index 7bd2454dbe6..e6a0998ba6f 100644 --- a/htdocs/core/lib/resource.lib.php +++ b/htdocs/core/lib/resource.lib.php @@ -45,7 +45,7 @@ function resource_prepare_head($object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/resource/contact.php?id='.$object->id; $head[$h][1] = $langs->trans('ContactsAddresses'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -59,30 +59,30 @@ function resource_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/resource/note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $upload_dir = $conf->resource->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->resource->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); $head[$h][0] = DOL_URL_ROOT.'/resource/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); - if($nbFiles > 0) $head[$h][1].= ''.$nbFiles.''; + if ($nbFiles > 0) $head[$h][1] .= ''.$nbFiles.''; $head[$h][2] = 'documents'; $h++; $head[$h][0] = DOL_URL_ROOT.'/resource/agenda.php?id='.$object->id; $head[$h][1] = $langs->trans("Events"); - if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) + if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$h][1].= '/'; - $head[$h][1].= $langs->trans("Agenda"); + $head[$h][1] .= '/'; + $head[$h][1] .= $langs->trans("Agenda"); } $head[$h][2] = 'agenda'; $h++; diff --git a/htdocs/core/lib/salaries.lib.php b/htdocs/core/lib/salaries.lib.php index 01b3cafd60d..0e2328bc7e7 100644 --- a/htdocs/core/lib/salaries.lib.php +++ b/htdocs/core/lib/salaries.lib.php @@ -46,12 +46,12 @@ function salaries_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->salaries->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->salaries->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/salaries/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; diff --git a/htdocs/core/lib/security2.lib.php b/htdocs/core/lib/security2.lib.php index b9a606b98b4..04d16084365 100644 --- a/htdocs/core/lib/security2.lib.php +++ b/htdocs/core/lib/security2.lib.php @@ -221,7 +221,7 @@ if (!function_exists('dol_loginfunction')) // Show logo (search in order: small company logo, large company logo, theme logo, common logo) $width = 0; - $urllogo=DOL_URL_ROOT.'/theme/common/login_logo.png'; + $urllogo = DOL_URL_ROOT.'/theme/common/login_logo.png'; if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) { diff --git a/htdocs/core/lib/sendings.lib.php b/htdocs/core/lib/sendings.lib.php index 7f8de19e2e5..34dd845cdfa 100644 --- a/htdocs/core/lib/sendings.lib.php +++ b/htdocs/core/lib/sendings.lib.php @@ -37,7 +37,7 @@ function shipping_prepare_head($object) global $db, $langs, $conf, $user; // Load translation files required by the page - $langs->loadLangs(array("sendings","deliveries")); + $langs->loadLangs(array("sendings", "deliveries")); $h = 0; $head = array(); @@ -74,19 +74,19 @@ function shipping_prepare_head($object) $nbContact = count($objectsrc->liste_contact(-1, 'internal')) + count($objectsrc->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT."/expedition/contact.php?id=".$object->id; $head[$h][1] = $langs->trans("ContactsAddresses"); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->commande->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/expedition/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; @@ -95,7 +95,7 @@ function shipping_prepare_head($object) if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT."/expedition/note.php?id=".$object->id; $head[$h][1] = $langs->trans("Notes"); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; @@ -122,7 +122,7 @@ function delivery_prepare_head($object) global $langs, $db, $conf, $user; // Load translation files required by the page - $langs->loadLangs(array("sendings","deliveries")); + $langs->loadLangs(array("sendings", "deliveries")); $h = 0; $head = array(); @@ -165,12 +165,12 @@ function delivery_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($tmpobject->ref); + $upload_dir = $conf->commande->dir_output."/".dol_sanitizeFileName($tmpobject->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $tmpobject->element, $tmpobject->id); + $nbLinks = Link::count($db, $tmpobject->element, $tmpobject->id); $head[$h][0] = DOL_URL_ROOT.'/expedition/document.php?id='.$tmpobject->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; @@ -179,7 +179,7 @@ function delivery_prepare_head($object) if (!empty($tmpobject->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT."/expedition/note.php?id=".$tmpobject->id; $head[$h][1] = $langs->trans("Notes"); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; @@ -206,29 +206,29 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') global $db, $conf, $langs; global $form; - $product_static=new Product($db); - $expedition=new Expedition($db); - $warehousestatic=new Entrepot($db); + $product_static = new Product($db); + $expedition = new Expedition($db); + $warehousestatic = new Entrepot($db); $sql = "SELECT obj.rowid, obj.fk_product, obj.label, obj.description, obj.product_type as fk_product_type, obj.qty as qty_asked, obj.date_start, obj.date_end,"; - $sql.= " ed.rowid as edrowid, ed.qty as qty_shipped, ed.fk_expedition as expedition_id, ed.fk_origin_line, ed.fk_entrepot as warehouse_id,"; - $sql.= " e.rowid as sendingid, e.ref as exp_ref, e.date_creation, e.date_delivery, e.date_expedition,"; + $sql .= " ed.rowid as edrowid, ed.qty as qty_shipped, ed.fk_expedition as expedition_id, ed.fk_origin_line, ed.fk_entrepot as warehouse_id,"; + $sql .= " e.rowid as sendingid, e.ref as exp_ref, e.date_creation, e.date_delivery, e.date_expedition,"; //if ($conf->livraison_bon->enabled) $sql .= " l.rowid as livraison_id, l.ref as livraison_ref, l.date_delivery, ld.qty as qty_received,"; - $sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid, p.tobatch as product_tobatch,'; - $sql.= ' p.description as product_desc'; - $sql.= " FROM ".MAIN_DB_PREFIX."expeditiondet as ed"; - $sql.= ", ".MAIN_DB_PREFIX."expedition as e"; - $sql.= ", ".MAIN_DB_PREFIX.$origin."det as obj"; + $sql .= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid, p.tobatch as product_tobatch,'; + $sql .= ' p.description as product_desc'; + $sql .= " FROM ".MAIN_DB_PREFIX."expeditiondet as ed"; + $sql .= ", ".MAIN_DB_PREFIX."expedition as e"; + $sql .= ", ".MAIN_DB_PREFIX.$origin."det as obj"; //if ($conf->livraison_bon->enabled) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."livraison as l ON l.fk_expedition = e.rowid LEFT JOIN ".MAIN_DB_PREFIX."livraisondet as ld ON ld.fk_livraison = l.rowid AND obj.rowid = ld.fk_origin_line"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON obj.fk_product = p.rowid"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON obj.fk_product = p.rowid"; //TODO Add link to expeditiondet_batch - $sql.= " WHERE e.entity IN (".getEntity('expedition').")"; - $sql.= " AND obj.fk_".$origin." = ".$origin_id; - $sql.= " AND obj.rowid = ed.fk_origin_line"; - $sql.= " AND ed.fk_expedition = e.rowid"; - if ($filter) $sql.= $filter; + $sql .= " WHERE e.entity IN (".getEntity('expedition').")"; + $sql .= " AND obj.fk_".$origin." = ".$origin_id; + $sql .= " AND obj.rowid = ed.fk_origin_line"; + $sql .= " AND ed.fk_expedition = e.rowid"; + if ($filter) $sql .= $filter; - $sql.= " ORDER BY obj.fk_product"; + $sql .= " ORDER BY obj.fk_product"; dol_syslog("show_list_sending_receive", LOG_DEBUG); $resql = $db->query($sql); @@ -250,7 +250,7 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') print ''.$langs->trans("DateCreation").''; print ''.$langs->trans("DateDeliveryPlanned").''; print ''.$langs->trans("QtyPreparedOrShipped").''; - if (! empty($conf->stock->enabled)) + if (!empty($conf->stock->enabled)) { print ''.$langs->trans("Warehouse").''; } @@ -260,7 +260,7 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') print ''; print ''; }*/ - if (! empty($conf->livraison_bon->enabled)) + if (!empty($conf->livraison_bon->enabled)) { print ''.$langs->trans("DeliveryOrder").''; //print ''.$langs->trans("QtyReceived").''; @@ -283,52 +283,52 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') if ($objp->fk_product > 0) { // Define output language - if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) + if (!empty($conf->global->MAIN_MULTILANGS) && !empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) { $object = new $origin($db); $object->fetch($origin_id); $object->fetch_thirdparty(); $prod = new Product($db); - $prod->id=$objp->fk_product; + $prod->id = $objp->fk_product; $prod->getMultiLangs(); $outputlangs = $langs; - $newlang=''; - if (empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if (empty($newlang)) $newlang=$object->thirdparty->default_lang; - if (! empty($newlang)) + $newlang = ''; + if (empty($newlang) && !empty($_REQUEST['lang_id'])) $newlang = $_REQUEST['lang_id']; + if (empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (!empty($newlang)) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlang); } - $label = (! empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $objp->product_label; + $label = (!empty($prod->multilangs[$outputlangs->defaultlang]["label"])) ? $prod->multilangs[$outputlangs->defaultlang]["label"] : $objp->product_label; } else { - $label = (! empty($objp->label)?$objp->label:$objp->product_label); + $label = (!empty($objp->label) ? $objp->label : $objp->product_label); } print ''; // Show product and description - $product_static->type=$objp->fk_product_type; - $product_static->id=$objp->fk_product; - $product_static->ref=$objp->ref; - $product_static->status_batch=$objp->product_tobatch; - $text=$product_static->getNomUrl(1); - $text.= ' - '.$label; - $description=(! empty($conf->global->PRODUIT_DESC_IN_FORM)?'':dol_htmlentitiesbr($objp->description)); + $product_static->type = $objp->fk_product_type; + $product_static->id = $objp->fk_product; + $product_static->ref = $objp->ref; + $product_static->status_batch = $objp->product_tobatch; + $text = $product_static->getNomUrl(1); + $text .= ' - '.$label; + $description = (!empty($conf->global->PRODUIT_DESC_IN_FORM) ? '' : dol_htmlentitiesbr($objp->description)); print $form->textwithtooltip($text, $description, 3, '', '', $i); // Show range print_date_range($objp->date_start, $objp->date_end); // Add description in form - if (! empty($conf->global->PRODUIT_DESC_IN_FORM)) + if (!empty($conf->global->PRODUIT_DESC_IN_FORM)) { - print (! empty($objp->description) && $objp->description!=$objp->product)?'
    '.dol_htmlentitiesbr($objp->description):''; + print (!empty($objp->description) && $objp->description != $objp->product) ? '
    '.dol_htmlentitiesbr($objp->description) : ''; } print ''; @@ -336,11 +336,11 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') else { print ""; - if ($objp->fk_product_type==1) $text = img_object($langs->trans('Service'), 'service'); + if ($objp->fk_product_type == 1) $text = img_object($langs->trans('Service'), 'service'); else $text = img_object($langs->trans('Product'), 'product'); - if (! empty($objp->label)) { - $text.= ' '.$objp->label.''; + if (!empty($objp->label)) { + $text .= ' '.$objp->label.''; print $form->textwithtooltip($text, $objp->description, 3, '', '', $i); } else { print $text.' '.nl2br($objp->description); @@ -363,7 +363,7 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') print ''.$objp->qty_shipped.''; // Warehouse - if (! empty($conf->stock->enabled)) + if (!empty($conf->stock->enabled)) { print ''; if ($objp->warehouse_id > 0) @@ -407,17 +407,17 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') }*/ // Informations on receipt - if (! empty($conf->livraison_bon->enabled)) + if (!empty($conf->livraison_bon->enabled)) { include_once DOL_DOCUMENT_ROOT.'/livraison/class/livraison.class.php'; - $expedition->id=$objp->sendingid; + $expedition->id = $objp->sendingid; $expedition->fetchObjectLinked($expedition->id, $expedition->element); //var_dump($expedition->linkedObjects); - $receiving=''; - if (count($expedition->linkedObjects['delivery']) > 0) $receiving=reset($expedition->linkedObjects['delivery']); // Take first link + $receiving = ''; + if (count($expedition->linkedObjects['delivery']) > 0) $receiving = reset($expedition->linkedObjects['delivery']); // Take first link - if (! empty($receiving)) + if (!empty($receiving)) { // $expedition->fk_origin_line = id of det line of order // $receiving->fk_origin_line = id of det line of order diff --git a/htdocs/core/lib/supplier_proposal.lib.php b/htdocs/core/lib/supplier_proposal.lib.php index 6549b362c11..ddc85616ba6 100644 --- a/htdocs/core/lib/supplier_proposal.lib.php +++ b/htdocs/core/lib/supplier_proposal.lib.php @@ -34,7 +34,7 @@ function supplier_proposal_prepare_head($object) global $db, $langs, $conf, $user; // Load translation files required by the page - $langs->loadLangs(array("supplier_proposal","compta")); + $langs->loadLangs(array("supplier_proposal", "compta")); $h = 0; $head = array(); @@ -49,7 +49,7 @@ function supplier_proposal_prepare_head($object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/contact.php?id='.$object->id; $head[$h][1] = $langs->trans('ContactsAddresses'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -63,23 +63,23 @@ function supplier_proposal_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; - if(!empty($object->note_public)) $nbNote++; + if (!empty($object->note_private)) $nbNote++; + if (!empty($object->note_public)) $nbNote++; $head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ''.$nbNote.''; + if ($nbNote > 0) $head[$h][1] .= ''.$nbNote.''; $head[$h][2] = 'note'; $h++; } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->supplier_proposal->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->supplier_proposal->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/supplier_proposal/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'document'; $h++; diff --git a/htdocs/core/lib/takepos.lib.php b/htdocs/core/lib/takepos.lib.php index 6cf8189f3c8..8a883ceef91 100644 --- a/htdocs/core/lib/takepos.lib.php +++ b/htdocs/core/lib/takepos.lib.php @@ -47,7 +47,7 @@ function takepos_prepare_head() for ($i = 1; $i <= $numterminals; $i++) { $head[$h][0] = DOL_URL_ROOT.'/takepos/admin/terminal.php?terminal='.$i; - $head[$h][1] = $langs->trans("Terminal"). " ".$i; + $head[$h][1] = $langs->trans("Terminal")." ".$i; $head[$h][2] = 'terminal'.$i; $h++; } diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php index ade6a7f49cf..cdf9fe29b1c 100644 --- a/htdocs/core/lib/tax.lib.php +++ b/htdocs/core/lib/tax.lib.php @@ -54,12 +54,12 @@ function tax_prepare_head(ChargeSociales $object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->tax->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->tax->dir_output."/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$h][0] = DOL_URL_ROOT.'/compta/sociales/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= ''.($nbFiles + $nbLinks).''; $head[$h][2] = 'documents'; $h++; @@ -93,131 +93,131 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di global $conf; // If we use date_start and date_end, we must not use $y, $m, $q - if (($date_start || $date_end) && (! empty($y) || ! empty($m) || ! empty($q))) + if (($date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) { dol_print_error('', 'Bad value of input parameter for tax_by_rate'); } - $list=array(); + $list = array(); if ($direction == 'sell') { - $invoicetable='facture'; - $invoicedettable='facturedet'; - $fk_facture='fk_facture'; - $fk_facture2='fk_facture'; - $fk_payment='fk_paiement'; - $total_tva='total_tva'; - $paymenttable='paiement'; - $paymentfacturetable='paiement_facture'; - $invoicefieldref='ref'; + $invoicetable = 'facture'; + $invoicedettable = 'facturedet'; + $fk_facture = 'fk_facture'; + $fk_facture2 = 'fk_facture'; + $fk_payment = 'fk_paiement'; + $total_tva = 'total_tva'; + $paymenttable = 'paiement'; + $paymentfacturetable = 'paiement_facture'; + $invoicefieldref = 'ref'; } elseif ($direction == 'buy') { - $invoicetable='facture_fourn'; - $invoicedettable='facture_fourn_det'; - $fk_facture='fk_facture_fourn'; - $fk_facture2='fk_facturefourn'; - $fk_payment='fk_paiementfourn'; - $total_tva='tva'; - $paymenttable='paiementfourn'; - $paymentfacturetable='paiementfourn_facturefourn'; - $invoicefieldref='ref'; + $invoicetable = 'facture_fourn'; + $invoicedettable = 'facture_fourn_det'; + $fk_facture = 'fk_facture_fourn'; + $fk_facture2 = 'fk_facturefourn'; + $fk_payment = 'fk_paiementfourn'; + $total_tva = 'tva'; + $paymenttable = 'paiementfourn'; + $paymentfacturetable = 'paiementfourn_facturefourn'; + $invoicefieldref = 'ref'; } if (strpos($type, 'localtax') === 0) { - $f_rate = $type . '_tx'; + $f_rate = $type.'_tx'; } else { $f_rate = 'tva_tx'; } - $total_localtax1='total_localtax1'; - $total_localtax2='total_localtax2'; + $total_localtax1 = 'total_localtax1'; + $total_localtax2 = 'total_localtax2'; // CAS DES BIENS/PRODUITS // Define sql request - $sql=''; + $sql = ''; if (($direction == 'sell' && $conf->global->TAX_MODE_SELL_PRODUCT == 'invoice') || ($direction == 'buy' && $conf->global->TAX_MODE_BUY_PRODUCT == 'invoice')) { // Count on delivery date (use invoice date as delivery is unknown) $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity IN (".getEntity($invoicetable).")"; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - $sql.= " AND s.rowid = f.fk_soc"; + $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql .= " d.date_start as date_start, d.date_end as date_end,"; + $sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; + $sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql .= " 0 as payment_id, 0 as payment_amount"; + $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql .= " ".MAIN_DB_PREFIX."societe as s,"; + $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql .= " WHERE f.entity IN (".getEntity($invoicetable).")"; + $sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; + $sql .= " AND f.rowid = d.".$fk_facture; + $sql .= " AND s.rowid = f.fk_soc"; if ($y && $m) { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 0"; // Limit to products - $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of products - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; - $sql.= " ORDER BY d.rowid, d.".$fk_facture; + if ($q) $sql .= " AND (date_format(f.datef,'%m') > ".(($q - 1) * 3)." AND date_format(f.datef,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = 0"; // Limit to products + $sql .= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of products + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; + $sql .= " ORDER BY d.rowid, d.".$fk_facture; } else { // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,"; - $sql.= " pa.datep as datep"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; - $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity IN (".getEntity($invoicetable).")"; - $sql.= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - $sql.= " AND s.rowid = f.fk_soc"; - $sql.= " AND pf.".$fk_facture2." = f.rowid"; - $sql.= " AND pa.rowid = pf.".$fk_payment; + $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql .= " d.date_start as date_start, d.date_end as date_end,"; + $sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; + $sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql .= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,"; + $sql .= " pa.datep as datep"; + $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql .= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; + $sql .= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; + $sql .= " ".MAIN_DB_PREFIX."societe as s,"; + $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql .= " WHERE f.entity IN (".getEntity($invoicetable).")"; + $sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) + if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; + $sql .= " AND f.rowid = d.".$fk_facture; + $sql .= " AND s.rowid = f.fk_soc"; + $sql .= " AND pf.".$fk_facture2." = f.rowid"; + $sql .= " AND pa.rowid = pf.".$fk_payment; if ($y && $m) { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND pa.datep >= '".$db->idate($date_start)."' AND pa.datep <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 0"; // Limit to products - $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of products - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; - $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; + if ($q) $sql .= " AND (date_format(pa.datep,'%m') > ".(($q - 1) * 3)." AND date_format(pa.datep,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND pa.datep >= '".$db->idate($date_start)."' AND pa.datep <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = 0"; // Limit to products + $sql .= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of products + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; + $sql .= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; } - if (! $sql) return -1; + if (!$sql) return -1; if ($sql == 'TODO') return -2; if ($sql != 'TODO') { @@ -227,17 +227,17 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di if ($resql) { $company_id = -1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) + $oldrowid = ''; + while ($assoc = $db->fetch_array($resql)) { - if (! isset($list[$assoc['company_id']]['totalht'])) $list[$assoc['company_id']]['totalht']=0; - if (! isset($list[$assoc['company_id']]['vat'])) $list[$assoc['company_id']]['vat']=0; - if (! isset($list[$assoc['company_id']]['localtax1'])) $list[$assoc['company_id']]['localtax1']=0; - if (! isset($list[$assoc['company_id']]['localtax2'])) $list[$assoc['company_id']]['localtax2']=0; + if (!isset($list[$assoc['company_id']]['totalht'])) $list[$assoc['company_id']]['totalht'] = 0; + if (!isset($list[$assoc['company_id']]['vat'])) $list[$assoc['company_id']]['vat'] = 0; + if (!isset($list[$assoc['company_id']]['localtax1'])) $list[$assoc['company_id']]['localtax1'] = 0; + if (!isset($list[$assoc['company_id']]['localtax2'])) $list[$assoc['company_id']]['localtax2'] = 0; if ($assoc['rowid'] != $oldrowid) // Si rupture sur d.rowid { - $oldrowid=$assoc['rowid']; + $oldrowid = $assoc['rowid']; $list[$assoc['company_id']]['totalht'] += $assoc['total_ht']; $list[$assoc['company_id']]['vat'] += $assoc['total_vat']; $list[$assoc['company_id']]['localtax1'] += $assoc['total_localtax1']; @@ -262,7 +262,7 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di $list[$assoc['company_id']]['totalht_list'][] = $assoc['total_ht']; $list[$assoc['company_id']]['vat_list'][] = $assoc['total_vat']; $list[$assoc['company_id']]['localtax1_list'][] = $assoc['total_localtax1']; - $list[$assoc['company_id']]['localtax2_list'][] = $assoc['total_localtax2']; + $list[$assoc['company_id']]['localtax2_list'][] = $assoc['total_localtax2']; $list[$assoc['company_id']]['pid'][] = $assoc['pid']; $list[$assoc['company_id']]['pref'][] = $assoc['pref']; @@ -285,90 +285,90 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di // CAS DES SERVICES // Define sql request - $sql=''; + $sql = ''; if (($direction == 'sell' && $conf->global->TAX_MODE_SELL_SERVICE == 'invoice') || ($direction == 'buy' && $conf->global->TAX_MODE_BUY_SERVICE == 'invoice')) { // Count on invoice date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity IN (".getEntity($invoicetable).")"; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - $sql.= " AND s.rowid = f.fk_soc"; + $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql .= " d.date_start as date_start, d.date_end as date_end,"; + $sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; + $sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql .= " 0 as payment_id, 0 as payment_amount"; + $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql .= " ".MAIN_DB_PREFIX."societe as s,"; + $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql .= " WHERE f.entity IN (".getEntity($invoicetable).")"; + $sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; + $sql .= " AND f.rowid = d.".$fk_facture; + $sql .= " AND s.rowid = f.fk_soc"; if ($y && $m) { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 1"; // Limit to services - $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; - $sql.= " ORDER BY d.rowid, d.".$fk_facture; + if ($q) $sql .= " AND (date_format(f.datef,'%m') > ".(($q - 1) * 3)." AND date_format(f.datef,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = 1"; // Limit to services + $sql .= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; + $sql .= " ORDER BY d.rowid, d.".$fk_facture; } else { // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,"; - $sql.= " pa.datep as datep"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; - $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity IN (".getEntity($invoicetable).")"; - $sql.= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - $sql.= " AND s.rowid = f.fk_soc"; - $sql.= " AND pf.".$fk_facture2." = f.rowid"; - $sql.= " AND pa.rowid = pf.".$fk_payment; + $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql .= " d.date_start as date_start, d.date_end as date_end,"; + $sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; + $sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql .= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,"; + $sql .= " pa.datep as datep"; + $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql .= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; + $sql .= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; + $sql .= " ".MAIN_DB_PREFIX."societe as s,"; + $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql .= " WHERE f.entity IN (".getEntity($invoicetable).")"; + $sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) + if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; + $sql .= " AND f.rowid = d.".$fk_facture; + $sql .= " AND s.rowid = f.fk_soc"; + $sql .= " AND pf.".$fk_facture2." = f.rowid"; + $sql .= " AND pa.rowid = pf.".$fk_payment; if ($y && $m) { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND pa.datep >= '".$db->idate($date_start)."' AND pa.datep <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 1"; // Limit to services - $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; - $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; + if ($q) $sql .= " AND (date_format(pa.datep,'%m') > ".(($q - 1) * 3)." AND date_format(pa.datep,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND pa.datep >= '".$db->idate($date_start)."' AND pa.datep <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = 1"; // Limit to services + $sql .= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; + $sql .= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; } - if (! $sql) + if (!$sql) { dol_syslog("Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR); - return -1; // -1 = Not accountancy module enabled + return -1; // -1 = Not accountancy module enabled } if ($sql == 'TODO') return -2; // -2 = Feature not yet available if ($sql != 'TODO') @@ -378,17 +378,17 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di if ($resql) { $company_id = -1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) + $oldrowid = ''; + while ($assoc = $db->fetch_array($resql)) { - if (! isset($list[$assoc['company_id']]['totalht'])) $list[$assoc['company_id']]['totalht']=0; - if (! isset($list[$assoc['company_id']]['vat'])) $list[$assoc['company_id']]['vat']=0; - if (! isset($list[$assoc['company_id']]['localtax1'])) $list[$assoc['company_id']]['localtax1']=0; - if (! isset($list[$assoc['company_id']]['localtax2'])) $list[$assoc['company_id']]['localtax2']=0; + if (!isset($list[$assoc['company_id']]['totalht'])) $list[$assoc['company_id']]['totalht'] = 0; + if (!isset($list[$assoc['company_id']]['vat'])) $list[$assoc['company_id']]['vat'] = 0; + if (!isset($list[$assoc['company_id']]['localtax1'])) $list[$assoc['company_id']]['localtax1'] = 0; + if (!isset($list[$assoc['company_id']]['localtax2'])) $list[$assoc['company_id']]['localtax2'] = 0; if ($assoc['rowid'] != $oldrowid) // Si rupture sur d.rowid { - $oldrowid=$assoc['rowid']; + $oldrowid = $assoc['rowid']; $list[$assoc['company_id']]['totalht'] += $assoc['total_ht']; $list[$assoc['company_id']]['vat'] += $assoc['total_vat']; $list[$assoc['company_id']]['localtax1'] += $assoc['total_localtax1']; @@ -438,40 +438,40 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di if ($direction == 'buy') // buy only for expense reports { // Define sql request - $sql=''; + $sql = ''; // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, e.rowid as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.total_tva as total_vat, e.note_private as descr,"; - $sql .=" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, "; - $sql.= " e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,"; - $sql.= " e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,"; - $sql.= " p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref"; - $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as e"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport_det as d ON d.fk_expensereport = e.rowid "; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."payment_expensereport as p ON p.fk_expensereport = e.rowid "; - $sql.= " WHERE e.entity = " . $conf->entity; - $sql.= " AND e.fk_statut in (6)"; + $sql .= " d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, "; + $sql .= " e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,"; + $sql .= " e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,"; + $sql .= " p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref"; + $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as e"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport_det as d ON d.fk_expensereport = e.rowid "; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."payment_expensereport as p ON p.fk_expensereport = e.rowid "; + $sql .= " WHERE e.entity = ".$conf->entity; + $sql .= " AND e.fk_statut in (6)"; if ($y && $m) { - $sql.= " AND p.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND p.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND p.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND p.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND p.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND p.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND p.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND p.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(p.datep,'%m') > ".(($q-1)*3)." AND date_format(p.datep,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = -1"; - $sql.= " OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)"; // enhance detection of service - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.total_tva <> 0)"; - $sql.= " ORDER BY e.rowid"; + if ($q) $sql .= " AND (date_format(p.datep,'%m') > ".(($q - 1) * 3)." AND date_format(p.datep,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = -1"; + $sql .= " OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)"; // enhance detection of service + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.total_tva <> 0)"; + $sql .= " ORDER BY e.rowid"; - if (! $sql) + if (!$sql) { dol_syslog("Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR); - return -1; // -1 = Not accountancy module enabled + return -1; // -1 = Not accountancy module enabled } if ($sql == 'TODO') return -2; // -2 = Feature not yet available if ($sql != 'TODO') @@ -481,18 +481,18 @@ function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $di if ($resql) { $company_id = -1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) + $oldrowid = ''; + while ($assoc = $db->fetch_array($resql)) { - if (! isset($list[$assoc['company_id']]['totalht'])) $list[$assoc['company_id']]['totalht']=0; - if (! isset($list[$assoc['company_id']]['vat'])) $list[$assoc['company_id']]['vat']=0; - if (! isset($list[$assoc['company_id']]['localtax1'])) $list[$assoc['company_id']]['localtax1']=0; - if (! isset($list[$assoc['company_id']]['localtax2'])) $list[$assoc['company_id']]['localtax2']=0; + if (!isset($list[$assoc['company_id']]['totalht'])) $list[$assoc['company_id']]['totalht'] = 0; + if (!isset($list[$assoc['company_id']]['vat'])) $list[$assoc['company_id']]['vat'] = 0; + if (!isset($list[$assoc['company_id']]['localtax1'])) $list[$assoc['company_id']]['localtax1'] = 0; + if (!isset($list[$assoc['company_id']]['localtax2'])) $list[$assoc['company_id']]['localtax2'] = 0; if ($assoc['rowid'] != $oldrowid) // Si rupture sur d.rowid { - $oldrowid=$assoc['rowid']; - $list[$assoc['company_id']]['totalht'] += $assoc['total_ht']; + $oldrowid = $assoc['rowid']; + $list[$assoc['company_id']]['totalht'] += $assoc['total_ht']; $list[$assoc['company_id']]['vat'] += $assoc['total_vat']; $list[$assoc['company_id']]['localtax1'] += $assoc['total_localtax1']; $list[$assoc['company_id']]['localtax2'] += $assoc['total_localtax2']; @@ -561,132 +561,132 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire global $conf; // If we use date_start and date_end, we must not use $y, $m, $q - if (($date_start || $date_end) && (! empty($y) || ! empty($m) || ! empty($q))) + if (($date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) { dol_print_error('', 'Bad value of input parameter for tax_by_rate'); } - $list=array(); + $list = array(); if ($direction == 'sell') { - $invoicetable='facture'; - $invoicedettable='facturedet'; - $fk_facture='fk_facture'; - $fk_facture2='fk_facture'; - $fk_payment='fk_paiement'; - $total_tva='total_tva'; - $paymenttable='paiement'; - $paymentfacturetable='paiement_facture'; - $invoicefieldref='ref'; + $invoicetable = 'facture'; + $invoicedettable = 'facturedet'; + $fk_facture = 'fk_facture'; + $fk_facture2 = 'fk_facture'; + $fk_payment = 'fk_paiement'; + $total_tva = 'total_tva'; + $paymenttable = 'paiement'; + $paymentfacturetable = 'paiement_facture'; + $invoicefieldref = 'ref'; } else { - $invoicetable='facture_fourn'; - $invoicedettable='facture_fourn_det'; - $fk_facture='fk_facture_fourn'; - $fk_facture2='fk_facturefourn'; - $fk_payment='fk_paiementfourn'; - $total_tva='tva'; - $paymenttable='paiementfourn'; - $paymentfacturetable='paiementfourn_facturefourn'; - $invoicefieldref='ref'; + $invoicetable = 'facture_fourn'; + $invoicedettable = 'facture_fourn_det'; + $fk_facture = 'fk_facture_fourn'; + $fk_facture2 = 'fk_facturefourn'; + $fk_payment = 'fk_paiementfourn'; + $total_tva = 'tva'; + $paymenttable = 'paiementfourn'; + $paymentfacturetable = 'paiementfourn_facturefourn'; + $invoicefieldref = 'ref'; } - if ( strpos($type, 'localtax') === 0 ) { - $f_rate = $type . '_tx'; + if (strpos($type, 'localtax') === 0) { + $f_rate = $type.'_tx'; } else { $f_rate = 'tva_tx'; } - $total_localtax1='total_localtax1'; - $total_localtax2='total_localtax2'; + $total_localtax1 = 'total_localtax1'; + $total_localtax2 = 'total_localtax2'; // CAS DES BIENS/PRODUITS // Define sql request - $sql=''; + $sql = ''; if (($direction == 'sell' && $conf->global->TAX_MODE_SELL_PRODUCT == 'invoice') || ($direction == 'buy' && $conf->global->TAX_MODE_BUY_PRODUCT == 'invoice')) { // Count on delivery date (use invoice date as delivery is unknown) $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity IN (".getEntity($invoicetable).")"; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - $sql.= " AND s.rowid = f.fk_soc"; + $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql .= " d.date_start as date_start, d.date_end as date_end,"; + $sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; + $sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql .= " 0 as payment_id, 0 as payment_amount"; + $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql .= " ".MAIN_DB_PREFIX."societe as s,"; + $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql .= " WHERE f.entity IN (".getEntity($invoicetable).")"; + $sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; + $sql .= " AND f.rowid = d.".$fk_facture; + $sql .= " AND s.rowid = f.fk_soc"; if ($y && $m) { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 0"; // Limit to products - $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of products - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; - $sql.= " ORDER BY d.rowid, d.".$fk_facture; + if ($q) $sql .= " AND (date_format(f.datef,'%m') > ".(($q - 1) * 3)." AND date_format(f.datef,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = 0"; // Limit to products + $sql .= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of products + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; + $sql .= " ORDER BY d.rowid, d.".$fk_facture; } else { // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,"; - $sql.= " pa.datep as datep"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; - $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity IN (".getEntity($invoicetable).")"; - $sql.= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - $sql.= " AND s.rowid = f.fk_soc"; - $sql.= " AND pf.".$fk_facture2." = f.rowid"; - $sql.= " AND pa.rowid = pf.".$fk_payment; + $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql .= " d.date_start as date_start, d.date_end as date_end,"; + $sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; + $sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql .= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,"; + $sql .= " pa.datep as datep"; + $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql .= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; + $sql .= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; + $sql .= " ".MAIN_DB_PREFIX."societe as s,"; + $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql .= " WHERE f.entity IN (".getEntity($invoicetable).")"; + $sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) + if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; + $sql .= " AND f.rowid = d.".$fk_facture; + $sql .= " AND s.rowid = f.fk_soc"; + $sql .= " AND pf.".$fk_facture2." = f.rowid"; + $sql .= " AND pa.rowid = pf.".$fk_payment; if ($y && $m) { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND pa.datep >= '".$db->idate($date_start)."' AND pa.datep <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 0"; // Limit to products - $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of products - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; - $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; + if ($q) $sql .= " AND (date_format(pa.datep,'%m') > ".(($q - 1) * 3)." AND date_format(pa.datep,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND pa.datep >= '".$db->idate($date_start)."' AND pa.datep <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = 0"; // Limit to products + $sql .= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of products + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; + $sql .= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; } - if (! $sql) return -1; + if (!$sql) return -1; if ($sql == 'TODO') return -2; if ($sql != 'TODO') { @@ -696,18 +696,18 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire if ($resql) { $rate = -1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) + $oldrowid = ''; + while ($assoc = $db->fetch_array($resql)) { // Code to avoid warnings when array entry not defined - if (! isset($list[$assoc['rate']]['totalht'])) $list[$assoc['rate']]['totalht']=0; - if (! isset($list[$assoc['rate']]['vat'])) $list[$assoc['rate']]['vat']=0; - if (! isset($list[$assoc['rate']]['localtax1'])) $list[$assoc['rate']]['localtax1']=0; - if (! isset($list[$assoc['rate']]['localtax2'])) $list[$assoc['rate']]['localtax2']=0; + if (!isset($list[$assoc['rate']]['totalht'])) $list[$assoc['rate']]['totalht'] = 0; + if (!isset($list[$assoc['rate']]['vat'])) $list[$assoc['rate']]['vat'] = 0; + if (!isset($list[$assoc['rate']]['localtax1'])) $list[$assoc['rate']]['localtax1'] = 0; + if (!isset($list[$assoc['rate']]['localtax2'])) $list[$assoc['rate']]['localtax2'] = 0; if ($assoc['rowid'] != $oldrowid) // Si rupture sur d.rowid { - $oldrowid=$assoc['rowid']; + $oldrowid = $assoc['rowid']; $list[$assoc['rate']]['totalht'] += $assoc['total_ht']; $list[$assoc['rate']]['vat'] += $assoc['total_vat']; $list[$assoc['rate']]['localtax1'] += $assoc['total_localtax1']; @@ -754,90 +754,90 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire // CAS DES SERVICES // Define sql request - $sql=''; + $sql = ''; if (($direction == 'sell' && $conf->global->TAX_MODE_SELL_SERVICE == 'invoice') || ($direction == 'buy' && $conf->global->TAX_MODE_BUY_SERVICE == 'invoice')) { // Count on invoice date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity IN (".getEntity($invoicetable).")"; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - $sql.= " AND s.rowid = f.fk_soc"; + $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql .= " d.date_start as date_start, d.date_end as date_end,"; + $sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; + $sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql .= " 0 as payment_id, 0 as payment_amount"; + $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql .= " ".MAIN_DB_PREFIX."societe as s,"; + $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql .= " WHERE f.entity IN (".getEntity($invoicetable).")"; + $sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; + $sql .= " AND f.rowid = d.".$fk_facture; + $sql .= " AND s.rowid = f.fk_soc"; if ($y && $m) { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 1"; // Limit to services - $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; - $sql.= " ORDER BY d.rowid, d.".$fk_facture; + if ($q) $sql .= " AND (date_format(f.datef,'%m') > ".(($q - 1) * 3)." AND date_format(f.datef,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = 1"; // Limit to services + $sql .= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; + $sql .= " ORDER BY d.rowid, d.".$fk_facture; } else { // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,"; - $sql.= " pa.datep as datep"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; - $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; - $sql.= " ".MAIN_DB_PREFIX."societe as s,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity IN (".getEntity($invoicetable).")"; - $sql.= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - $sql.= " AND s.rowid = f.fk_soc"; - $sql.= " AND pf.".$fk_facture2." = f.rowid"; - $sql.= " AND pa.rowid = pf.".$fk_payment; + $sql .= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql .= " d.date_start as date_start, d.date_end as date_end,"; + $sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,"; + $sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql .= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,"; + $sql .= " pa.datep as datep"; + $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql .= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; + $sql .= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; + $sql .= " ".MAIN_DB_PREFIX."societe as s,"; + $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql .= " WHERE f.entity IN (".getEntity($invoicetable).")"; + $sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) + if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .= " AND f.type IN (0,1,2,5)"; + else $sql .= " AND f.type IN (0,1,2,3,5)"; + $sql .= " AND f.rowid = d.".$fk_facture; + $sql .= " AND s.rowid = f.fk_soc"; + $sql .= " AND pf.".$fk_facture2." = f.rowid"; + $sql .= " AND pa.rowid = pf.".$fk_payment; if ($y && $m) { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND pa.datep >= '".$db->idate($date_start)."' AND pa.datep <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 1"; // Limit to services - $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; - $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; + if ($q) $sql .= " AND (date_format(pa.datep,'%m') > ".(($q - 1) * 3)." AND date_format(pa.datep,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND pa.datep >= '".$db->idate($date_start)."' AND pa.datep <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = 1"; // Limit to services + $sql .= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.".$total_tva." <> 0)"; + $sql .= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; } - if (! $sql) + if (!$sql) { dol_syslog("Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR); - return -1; // -1 = Not accountancy module enabled + return -1; // -1 = Not accountancy module enabled } if ($sql == 'TODO') return -2; // -2 = Feature not yet available if ($sql != 'TODO') @@ -847,18 +847,18 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire if ($resql) { $rate = -1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) + $oldrowid = ''; + while ($assoc = $db->fetch_array($resql)) { // Code to avoid warnings when array entry not defined - if (! isset($list[$assoc['rate']]['totalht'])) $list[$assoc['rate']]['totalht']=0; - if (! isset($list[$assoc['rate']]['vat'])) $list[$assoc['rate']]['vat']=0; - if (! isset($list[$assoc['rate']]['localtax1'])) $list[$assoc['rate']]['localtax1']=0; - if (! isset($list[$assoc['rate']]['localtax2'])) $list[$assoc['rate']]['localtax2']=0; + if (!isset($list[$assoc['rate']]['totalht'])) $list[$assoc['rate']]['totalht'] = 0; + if (!isset($list[$assoc['rate']]['vat'])) $list[$assoc['rate']]['vat'] = 0; + if (!isset($list[$assoc['rate']]['localtax1'])) $list[$assoc['rate']]['localtax1'] = 0; + if (!isset($list[$assoc['rate']]['localtax2'])) $list[$assoc['rate']]['localtax2'] = 0; if ($assoc['rowid'] != $oldrowid) // Si rupture sur d.rowid { - $oldrowid=$assoc['rowid']; + $oldrowid = $assoc['rowid']; $list[$assoc['rate']]['totalht'] += $assoc['total_ht']; $list[$assoc['rate']]['vat'] += $assoc['total_vat']; $list[$assoc['rate']]['localtax1'] += $assoc['total_localtax1']; @@ -907,40 +907,40 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire if ($direction == 'buy') // buy only for expense reports { // Define sql request - $sql=''; + $sql = ''; // Count on payments date $sql = "SELECT d.rowid, d.product_type as dtype, e.rowid as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.total_tva as total_vat, e.note_private as descr,"; - $sql .=" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, "; - $sql.= " e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,"; - $sql.= " e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,"; - $sql.= " p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref"; - $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as e "; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport_det as d ON d.fk_expensereport = e.rowid "; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."payment_expensereport as p ON p.fk_expensereport = e.rowid "; - $sql.= " WHERE e.entity = " . $conf->entity; - $sql.= " AND e.fk_statut in (6)"; + $sql .= " d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, "; + $sql .= " e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,"; + $sql .= " e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,"; + $sql .= " p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref"; + $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as e "; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport_det as d ON d.fk_expensereport = e.rowid "; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."payment_expensereport as p ON p.fk_expensereport = e.rowid "; + $sql .= " WHERE e.entity = ".$conf->entity; + $sql .= " AND e.fk_statut in (6)"; if ($y && $m) { - $sql.= " AND p.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; - $sql.= " AND p.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; + $sql .= " AND p.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'"; + $sql .= " AND p.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'"; } elseif ($y) { - $sql.= " AND p.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; - $sql.= " AND p.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; + $sql .= " AND p.datep >= '".$db->idate(dol_get_first_day($y, 1, false))."'"; + $sql .= " AND p.datep <= '".$db->idate(dol_get_last_day($y, 12, false))."'"; } - if ($q) $sql.= " AND (date_format(p.datep,'%m') > ".(($q-1)*3)." AND date_format(p.datep,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = -1"; - $sql.= " OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)"; // enhance detection of service - if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql.= " AND (d.".$f_rate." <> 0 OR d.total_tva <> 0)"; - $sql.= " ORDER BY e.rowid"; + if ($q) $sql .= " AND (date_format(p.datep,'%m') > ".(($q - 1) * 3)." AND date_format(p.datep,'%m') <= ".($q * 3).")"; + if ($date_start && $date_end) $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; + $sql .= " AND (d.product_type = -1"; + $sql .= " OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)"; // enhance detection of service + if (empty($conf->global->MAIN_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .= " AND (d.".$f_rate." <> 0 OR d.total_tva <> 0)"; + $sql .= " ORDER BY e.rowid"; - if (! $sql) + if (!$sql) { dol_syslog("Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR); - return -1; // -1 = Not accountancy module enabled + return -1; // -1 = Not accountancy module enabled } if ($sql == 'TODO') return -2; // -2 = Feature not yet available if ($sql != 'TODO') @@ -950,20 +950,20 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire if ($resql) { $rate = -1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) + $oldrowid = ''; + while ($assoc = $db->fetch_array($resql)) { // Code to avoid warnings when array entry not defined - if (! isset($list[$assoc['rate']]['totalht'])) $list[$assoc['rate']]['totalht']=0; - if (! isset($list[$assoc['rate']]['vat'])) $list[$assoc['rate']]['vat']=0; - if (! isset($list[$assoc['rate']]['localtax1'])) $list[$assoc['rate']]['localtax1']=0; - if (! isset($list[$assoc['rate']]['localtax2'])) $list[$assoc['rate']]['localtax2']=0; + if (!isset($list[$assoc['rate']]['totalht'])) $list[$assoc['rate']]['totalht'] = 0; + if (!isset($list[$assoc['rate']]['vat'])) $list[$assoc['rate']]['vat'] = 0; + if (!isset($list[$assoc['rate']]['localtax1'])) $list[$assoc['rate']]['localtax1'] = 0; + if (!isset($list[$assoc['rate']]['localtax2'])) $list[$assoc['rate']]['localtax2'] = 0; if ($assoc['rowid'] != $oldrowid) // Si rupture sur d.rowid { - $oldrowid=$assoc['rowid']; + $oldrowid = $assoc['rowid']; $list[$assoc['rate']]['totalht'] += $assoc['total_ht']; - $list[$assoc['rate']]['vat'] += $assoc['total_vat']; + $list[$assoc['rate']]['vat'] += $assoc['total_vat']; $list[$assoc['rate']]['localtax1'] += $assoc['total_localtax1']; $list[$assoc['rate']]['localtax2'] += $assoc['total_localtax2']; } diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php index fe7fb4ba5a7..e12531b3846 100644 --- a/htdocs/core/lib/ticket.lib.php +++ b/htdocs/core/lib/ticket.lib.php @@ -87,7 +87,7 @@ function ticket_prepare_head($object) $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/ticket/contact.php?track_id='.$object->track_id; $head[$h][1] = $langs->trans('ContactsAddresses'); - if ($nbContact > 0) $head[$h][1].= ''.$nbContact.''; + if ($nbContact > 0) $head[$h][1] .= ''.$nbContact.''; $head[$h][2] = 'contact'; $h++; } @@ -95,13 +95,13 @@ function ticket_prepare_head($object) complete_head_from_modules($conf, $langs, $object, $head, $h, 'ticket'); // Attached files - include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; - $upload_dir = $conf->ticket->dir_output . "/" . $object->ref; + include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $upload_dir = $conf->ticket->dir_output."/".$object->ref; $nbFiles = count(dol_dir_list($upload_dir, 'files')); - $head[$h][0] = dol_buildpath('/ticket/document.php', 1) . '?id=' . $object->id; + $head[$h][0] = dol_buildpath('/ticket/document.php', 1).'?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); if ($nbFiles > 0) { - $head[$h][1] .= '' . $nbFiles . ''; + $head[$h][1] .= ''.$nbFiles.''; } $head[$h][2] = 'tabTicketDocument'; @@ -218,39 +218,39 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $ // Define urllogo $width = 0; - if (! empty($conf->global->TICKET_SHOW_COMPANY_LOGO) || ! empty($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC)) { + if (!empty($conf->global->TICKET_SHOW_COMPANY_LOGO) || !empty($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC)) { // Print logo - if (! empty($conf->global->TICKET_SHOW_COMPANY_LOGO)) + if (!empty($conf->global->TICKET_SHOW_COMPANY_LOGO)) { - $urllogo = DOL_URL_ROOT . '/theme/common/login_logo.png'; + $urllogo = DOL_URL_ROOT.'/theme/common/login_logo.png'; - if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output . '/logos/thumbs/' . $mysoc->logo_small)) { - $urllogo = DOL_URL_ROOT . '/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file=' . urlencode('logos/thumbs/'.$mysoc->logo_small); + if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) { + $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$mysoc->logo_small); $width = 150; - } elseif (!empty($mysoc->logo) && is_readable($conf->mycompany->dir_output . '/logos/' . $mysoc->logo)) { - $urllogo = DOL_URL_ROOT . '/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file=' . urlencode('logos/'.$mysoc->logo); + } elseif (!empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) { + $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$mysoc->logo); $width = 150; - } elseif (is_readable(DOL_DOCUMENT_ROOT . '/theme/dolibarr_logo.png')) { - $urllogo = DOL_URL_ROOT . '/theme/dolibarr_logo.png'; + } elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.png')) { + $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.png'; } } } print '
    '; // Output html code for logo - if ($urllogo || ! empty($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC)) + if ($urllogo || !empty($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC)) { print '
    '; print '
    '; if ($urllogo) { - print ''; + print ''; print ''; print ''; } - if (! empty($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC)) { - print '
    ' . ($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC ? $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC : $langs->trans("TicketSystem")) . ''; + if (!empty($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC)) { + print '
    '.($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC ? $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC : $langs->trans("TicketSystem")).''; } print '
    '; if (empty($conf->global->MAIN_HIDE_POWERED_BY)) { @@ -721,64 +721,64 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no if ($user->rights->agenda->allactions->create || (($actionstatic->authorid == $user->id || $actionstatic->userownerid == $user->id) && $user->rights->agenda->myactions->create)) { - $out.=''; + $out .= ''; } - $out.=''; + $out .= ''; // Date - $out.=' '; - $out.=dol_print_date($histo[$key]['datestart'], 'dayhour'); + $out .= ' '; + $out .= dol_print_date($histo[$key]['datestart'], 'dayhour'); if ($histo[$key]['dateend'] && $histo[$key]['dateend'] != $histo[$key]['datestart']) { - $tmpa=dol_getdate($histo[$key]['datestart'], true); - $tmpb=dol_getdate($histo[$key]['dateend'], true); - if ($tmpa['mday'] == $tmpb['mday'] && $tmpa['mon'] == $tmpb['mon'] && $tmpa['year'] == $tmpb['year']) $out.='-'.dol_print_date($histo[$key]['dateend'], 'hour'); - else $out.='-'.dol_print_date($histo[$key]['dateend'], 'dayhour'); + $tmpa = dol_getdate($histo[$key]['datestart'], true); + $tmpb = dol_getdate($histo[$key]['dateend'], true); + if ($tmpa['mday'] == $tmpb['mday'] && $tmpa['mon'] == $tmpb['mon'] && $tmpa['year'] == $tmpb['year']) $out .= '-'.dol_print_date($histo[$key]['dateend'], 'hour'); + else $out .= '-'.dol_print_date($histo[$key]['dateend'], 'dayhour'); } - $late=0; - if ($histo[$key]['percent'] == 0 && $histo[$key]['datestart'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late=1; - if ($histo[$key]['percent'] == 0 && ! $histo[$key]['datestart'] && $histo[$key]['dateend'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late=1; - if ($histo[$key]['percent'] > 0 && $histo[$key]['percent'] < 100 && $histo[$key]['dateend'] && $histo[$key]['dateend'] < ($now - $delay_warning)) $late=1; - if ($histo[$key]['percent'] > 0 && $histo[$key]['percent'] < 100 && ! $histo[$key]['dateend'] && $histo[$key]['datestart'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late=1; - if ($late) $out.=img_warning($langs->trans("Late")).' '; - $out.="\n"; + $late = 0; + if ($histo[$key]['percent'] == 0 && $histo[$key]['datestart'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late = 1; + if ($histo[$key]['percent'] == 0 && !$histo[$key]['datestart'] && $histo[$key]['dateend'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late = 1; + if ($histo[$key]['percent'] > 0 && $histo[$key]['percent'] < 100 && $histo[$key]['dateend'] && $histo[$key]['dateend'] < ($now - $delay_warning)) $late = 1; + if ($histo[$key]['percent'] > 0 && $histo[$key]['percent'] < 100 && !$histo[$key]['dateend'] && $histo[$key]['datestart'] && $histo[$key]['datestart'] < ($now - $delay_warning)) $late = 1; + if ($late) $out .= img_warning($langs->trans("Late")).' '; + $out .= "\n"; // Ref - $out.='

    '; + $out .= '

    '; // Author of event - $out.=''; + $out .= ''; if ($histo[$key]['userid'] > 0) { - if(!isset($userGetNomUrlCache[$histo[$key]['userid']])){ // is in cache ? + if (!isset($userGetNomUrlCache[$histo[$key]['userid']])) { // is in cache ? $userstatic->fetch($histo[$key]['userid']); $userGetNomUrlCache[$histo[$key]['userid']] = $userstatic->getNomUrl(-1, '', 0, 0, 16, 0, 'firstelselast', ''); } - $out.= $userGetNomUrlCache[$histo[$key]['userid']]; + $out .= $userGetNomUrlCache[$histo[$key]['userid']]; } - $out.=''; + $out .= ''; // Title $out .= ' '; - if($actionstatic->code == 'TICKET_MSG') { + if ($actionstatic->code == 'TICKET_MSG') { $out .= $langs->trans('TicketNewMessage'); } - elseif($actionstatic->code == 'TICKET_MSG_PRIVATE') { + elseif ($actionstatic->code == 'TICKET_MSG_PRIVATE') { $out .= $langs->trans('TicketNewMessage').' ('.$langs->trans('Private').')'; - }else{ + } else { if (isset($histo[$key]['type']) && $histo[$key]['type'] == 'action') { - $transcode = $langs->trans("Action" . $histo[$key]['acode']); - $libelle = ($transcode != "Action" . $histo[$key]['acode'] ? $transcode : $histo[$key]['alabel']); + $transcode = $langs->trans("Action".$histo[$key]['acode']); + $libelle = ($transcode != "Action".$histo[$key]['acode'] ? $transcode : $histo[$key]['alabel']); $libelle = $histo[$key]['note']; $actionstatic->id = $histo[$key]['id']; $out .= dol_trunc($libelle, 120); } if (isset($histo[$key]['type']) && $histo[$key]['type'] == 'mailing') { - $out .= '' . img_object($langs->trans("ShowEMailing"), "email") . ' '; - $transcode = $langs->trans("Action" . $histo[$key]['acode']); - $libelle = ($transcode != "Action" . $histo[$key]['acode'] ? $transcode : 'Send mass mailing'); + $out .= ''.img_object($langs->trans("ShowEMailing"), "email").' '; + $transcode = $langs->trans("Action".$histo[$key]['acode']); + $libelle = ($transcode != "Action".$histo[$key]['acode'] ? $transcode : 'Send mass mailing'); $out .= dol_trunc($libelle, 120); } } @@ -835,25 +835,25 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no if ($result > 0) { $footer .= $contact->getNomUrl(1); if (isset($histo[$key]['acode']) && $histo[$key]['acode'] == 'AC_TEL') { - if (! empty($contact->phone_pro)) - $footer .= '(' . dol_print_phone($contact->phone_pro) . ')'; + if (!empty($contact->phone_pro)) + $footer .= '('.dol_print_phone($contact->phone_pro).')'; } } } - $documents = getTicketActionCommEcmList($actionstatic) ; - if(!empty($documents)) + $documents = getTicketActionCommEcmList($actionstatic); + if (!empty($documents)) { - $footer.= ''; } @@ -881,19 +881,19 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no - if(!empty($footer)){ - $out.=''; + if (!empty($footer)) { + $out .= ''; } - $out.='

    '."\n"; // end timeline-item + $out .= '
    '."\n"; // end timeline-item - $out.=''; - $out.=''; + $out .= ''; + $out .= ''; $i++; } - $out.="\n"; + $out .= "\n"; } @@ -915,12 +915,12 @@ function getTicketActionCommEcmList($object) $documents = array(); $sql = 'SELECT ecm.rowid as id, ecm.src_object_type, ecm.src_object_id, ecm.filepath, ecm.filename'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'ecm_files ecm'; - $sql.= ' WHERE ecm.filepath = \'agenda/'.$object->id.'\''; + $sql .= ' FROM '.MAIN_DB_PREFIX.'ecm_files ecm'; + $sql .= ' WHERE ecm.filepath = \'agenda/'.$object->id.'\''; //$sql.= ' ecm.src_object_type = \''.$object->element.'\' AND ecm.src_object_id = '.$object->id; // Actually upload file doesn't add type - $sql.= ' ORDER BY ecm.position ASC'; + $sql .= ' ORDER BY ecm.position ASC'; - $resql= $db->query($sql); + $resql = $db->query($sql); if ($resql) { if ($db->num_rows($resql)) { while ($obj = $db->fetch_object($resql)) { diff --git a/htdocs/core/lib/treeview.lib.php b/htdocs/core/lib/treeview.lib.php index cb4088c6bf2..0dcb6e8242d 100644 --- a/htdocs/core/lib/treeview.lib.php +++ b/htdocs/core/lib/treeview.lib.php @@ -35,19 +35,19 @@ */ function tree_showpad(&$fulltree, $key, $silent = 0) { - $pos=1; + $pos = 1; // Loop on each pos, because we will output an img for each pos while ($pos <= $fulltree[$key]['level'] && $fulltree[$key]['level'] > 0) { // Process for column $pos - $atleastoneofthislevelafter=0; - $nbofdirinsub=0; - $nbofdocinsub=0; - $found=0; + $atleastoneofthislevelafter = 0; + $nbofdirinsub = 0; + $nbofdocinsub = 0; + $found = 0; //print 'x'.$key; - foreach($fulltree as $key2 => $val2) + foreach ($fulltree as $key2 => $val2) { //print "x".$pos." ".$key2." ".$found." ".$fulltree[$key2]['level']; if ($found == 1) // We are after the entry to show @@ -55,11 +55,11 @@ function tree_showpad(&$fulltree, $key, $silent = 0) if ($fulltree[$key2]['level'] > $pos) { $nbofdirinsub++; - if (isset($fulltree[$key2]['cachenbofdoc']) && $fulltree[$key2]['cachenbofdoc'] > 0) $nbofdocinsub+=$fulltree[$key2]['cachenbofdoc']; + if (isset($fulltree[$key2]['cachenbofdoc']) && $fulltree[$key2]['cachenbofdoc'] > 0) $nbofdocinsub += $fulltree[$key2]['cachenbofdoc']; } if ($fulltree[$key2]['level'] == $pos) { - $atleastoneofthislevelafter=1; + $atleastoneofthislevelafter = 1; } if ($fulltree[$key2]['level'] <= $pos) { @@ -68,12 +68,12 @@ function tree_showpad(&$fulltree, $key, $silent = 0) } if ($key2 == $key) // We found ourself, so now every lower level will be counted { - $found=1; + $found = 1; } } //print $atleastoneofthislevelafter; - if (! $silent) + if (!$silent) { if ($atleastoneofthislevelafter) { @@ -89,7 +89,7 @@ function tree_showpad(&$fulltree, $key, $silent = 0) $pos++; } - return array($atleastoneofthislevelafter,$nbofdirinsub,$nbofdocinsub); + return array($atleastoneofthislevelafter, $nbofdirinsub, $nbofdocinsub); } @@ -117,7 +117,7 @@ function tree_recur($tab, $pere, $rang, $iddivjstree = 'iddivjstree', $donoreset { global $tree_recur_alreadyadded, $menu_handler_to_search; - if ($rang == 0 && empty($donoresetalreadyloaded)) $tree_recur_alreadyadded=array(); + if ($rang == 0 && empty($donoresetalreadyloaded)) $tree_recur_alreadyadded = array(); if ($rang == 0) { @@ -141,30 +141,30 @@ function tree_recur($tab, $pere, $rang, $iddivjstree = 'iddivjstree', $donoreset if ($rang > 50) { - return; // Protect against infinite loop. Max 50 depth + return; // Protect against infinite loop. Max 50 depth } //ballayage du tableau - $sizeoftab=count($tab); - $ulprinted=0; - for ($x=0; $x < $sizeoftab; $x++) + $sizeoftab = count($tab); + $ulprinted = 0; + for ($x = 0; $x < $sizeoftab; $x++) { //var_dump($tab[$x]);exit; // If an element has $pere for parent if ($tab[$x]['fk_menu'] != -1 && $tab[$x]['fk_menu'] == $pere['rowid']) { //print 'rang='.$rang.'-x='.$x." rowid=".$tab[$x]['rowid']." tab[x]['fk_leftmenu'] = ".$tab[$x]['fk_leftmenu']." leftmenu pere = ".$pere['leftmenu']."
    \n"; - if (empty($ulprinted) && ! empty($pere['rowid'])) + if (empty($ulprinted) && !empty($pere['rowid'])) { - if (! empty($tree_recur_alreadyadded[$tab[$x]['rowid']])) + if (!empty($tree_recur_alreadyadded[$tab[$x]['rowid']])) { dol_syslog('Error, record with id '.$tab[$x]['rowid'].' seems to be a child of record with id '.$pere['rowid'].' but it was already output. Complete field "leftmenu" and "mainmenu" on ALL records to avoid ambiguity.', LOG_WARNING); continue; } - print ''; $ulprinted++; + print ''; $ulprinted++; } - print "\n".'
  • '; + print "\n".'
  • '; if ($showfk) { print ''; // Year print ''; @@ -251,11 +251,11 @@ print ''; print '';*/ print ''; -$oldyear=0; +$oldyear = 0; foreach ($data as $val) { $year = $val['year']; - while (! empty($year) && $oldyear > $year+1) + while (!empty($year) && $oldyear > $year + 1) { // If we have empty year $oldyear--; print ''; @@ -273,7 +273,7 @@ foreach ($data as $val) /*print ''; print '';*/ print ''; - $oldyear=$year; + $oldyear = $year; } print '
    '; @@ -180,26 +180,26 @@ function tree_recur($tab, $pere, $rang, $iddivjstree = 'iddivjstree', $donoreset print $tab[$x]['entry']; } //print ' -> A '.$tab[$x]['rowid'].' mainmenu='.$tab[$x]['mainmenu'].' leftmenu='.$tab[$x]['leftmenu'].' fk_mainmenu='.$tab[$x]['fk_mainmenu'].' fk_leftmenu='.$tab[$x]['fk_leftmenu'].'
    '."\n"; - $tree_recur_alreadyadded[$tab[$x]['rowid']]=($rang + 1); + $tree_recur_alreadyadded[$tab[$x]['rowid']] = ($rang + 1); // And now we search all its sons of lower level - tree_recur($tab, $tab[$x], $rang+1, 'iddivjstree', 0, $showfk); + tree_recur($tab, $tab[$x], $rang + 1, 'iddivjstree', 0, $showfk); print ''; } - elseif (! empty($tab[$x]['rowid']) && $tab[$x]['fk_menu'] == -1 && $tab[$x]['fk_mainmenu'] == $pere['mainmenu'] && $tab[$x]['fk_leftmenu'] == $pere['leftmenu']) + elseif (!empty($tab[$x]['rowid']) && $tab[$x]['fk_menu'] == -1 && $tab[$x]['fk_mainmenu'] == $pere['mainmenu'] && $tab[$x]['fk_leftmenu'] == $pere['leftmenu']) { //print 'rang='.$rang.'-x='.$x." rowid=".$tab[$x]['rowid']." tab[x]['fk_leftmenu'] = ".$tab[$x]['fk_leftmenu']." leftmenu pere = ".$pere['leftmenu']."
    \n"; - if (empty($ulprinted) && ! empty($pere['rowid'])) + if (empty($ulprinted) && !empty($pere['rowid'])) { - if (! empty($tree_recur_alreadyadded[$tab[$x]['rowid']])) + if (!empty($tree_recur_alreadyadded[$tab[$x]['rowid']])) { dol_syslog('Error, record with id '.$tab[$x]['rowid'].' seems to be a child of record with id '.$pere['rowid'].' but it was already output. Complete field "leftmenu" and "mainmenu" on ALL records to avoid ambiguity.', LOG_WARNING); //print 'Error, record with id '.$tab[$x]['rowid'].' seems to be a child of record with id '.$pere['rowid'].' but it was already output. Complete field "leftmenu" and "mainmenu" on ALL records to avoid ambiguity.'; continue; } - print ''; $ulprinted++; + print ''; $ulprinted++; } - print "\n".'
  • '; + print "\n".'
  • '; if ($showfk) { print ''; print ''; - print ''; print ''; - print ''; print ''; @@ -685,7 +685,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colorbacktitle1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacktitle1))); + $default = (empty($colorbacktitle1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacktitle1))); print ''; print ''; @@ -698,7 +698,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) { print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default")); } - print '   ('.$langs->trans("Default").': '.$default.') '; // $colorbacktitle1 in CSS + print '   ('.$langs->trans("Default").': '.$default.') '; // $colorbacktitle1 in CSS print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; print ''; @@ -712,7 +712,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colortexttitle) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitle))); + $default = (empty($colortexttitle) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitle))); print ''; print ''; @@ -739,11 +739,11 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colorbacklineimpair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklineimpair1))); + $default = (empty($colorbacklineimpair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklineimpair1))); print ''; print ''; - print ''; print ''; - print ''; print ''; @@ -857,22 +857,22 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) */ } else { - $default=(empty($colorbacklinepairhover) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairhover))); + $default = (empty($colorbacklinepairhover) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairhover))); print ''; print ''; - print ''; print ''; diff --git a/htdocs/core/lib/vat.lib.php b/htdocs/core/lib/vat.lib.php index 1649e686ec2..0bc3bb66e90 100644 --- a/htdocs/core/lib/vat.lib.php +++ b/htdocs/core/lib/vat.lib.php @@ -49,12 +49,12 @@ function vat_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->tax->dir_output . "/vat/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->tax->dir_output."/vat/".dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); + $nbLinks = Link::count($db, $object->element, $object->id); $head[$tab][0] = DOL_URL_ROOT.'/compta/tva/document.php?id='.$object->id; $head[$tab][1] = $langs->trans("Documents"); - if (($nbFiles+$nbLinks) > 0) $head[$tab][1].= ''.($nbFiles+$nbLinks).''; + if (($nbFiles + $nbLinks) > 0) $head[$tab][1] .= ''.($nbFiles + $nbLinks).''; $head[$tab][2] = 'documents'; $tab++; diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 0822109d45e..af8840b33ae 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -562,7 +562,7 @@ function getStructuredData($type, $data = array()) } elseif ($type == 'blogpost') { - if (! empty($websitepage->author_alias)) + if (!empty($websitepage->author_alias)) { //include_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; //$tmpuser = new User($db); @@ -665,24 +665,24 @@ function getSocialNetworkSharingLinks() $hashtags = trim(join(' #', array_map('trim', explode(',', $websitepage->keywords)))); $out = ''."\n"; - $out.= ' -global->MAIN_VIEW_LINE_NUMBER)) { ?> - +global->MAIN_VIEW_LINE_NUMBER)) { ?> + info_bits & 2) != 2) { - print 'fk_prev_id != null ) print ' readonly'; + print 'fk_prev_id != null) print ' readonly'; print '>%'; } else { ?>   @@ -216,7 +216,7 @@ $coldisplay++; ?> - global->MAIN_VIEW_LINE_NUMBER)) { ?> + global->MAIN_VIEW_LINE_NUMBER)) { ?> - "; print "\n"; - if ( $object->socid && ! empty($conf->societe->enabled) && ! empty($conf->global->DONATION_USE_THIRDPARTIES) ) { - $company=new Societe($db); - $result=$company->fetch($object->socid); + if ($object->socid && !empty($conf->societe->enabled) && !empty($conf->global->DONATION_USE_THIRDPARTIES)) { + $company = new Societe($db); + $result = $company->fetch($object->socid); print ''; } else { @@ -547,14 +547,14 @@ if (!empty($id) && $action == 'edit') // Zip / Town print ''; // Country print ''; if ($object->socid) { - $company=new Societe($db); - $result=$company->fetch($object->socid); + $company = new Societe($db); + $result = $company->fetch($object->socid); print ''; } else { @@ -865,7 +865,7 @@ if (!empty($id) && $action != 'edit') $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); // Show online payment link - $useonlinepayment = (! empty($conf->paypal->enabled) || ! empty($conf->stripe->enabled) || ! empty($conf->paybox->enabled)); + $useonlinepayment = (!empty($conf->paypal->enabled) || !empty($conf->stripe->enabled) || !empty($conf->paybox->enabled)); if ($useonlinepayment) //$object->statut != Facture::STATUS_DRAFT && { diff --git a/htdocs/don/class/api_donations.class.php b/htdocs/don/class/api_donations.class.php index 95ea92f1ff3..872e2009b9b 100644 --- a/htdocs/don/class/api_donations.class.php +++ b/htdocs/don/class/api_donations.class.php @@ -63,16 +63,16 @@ class Donations extends DolibarrApi */ public function get($id) { - if(! DolibarrApiAccess::$user->rights->don->lire) { + if (!DolibarrApiAccess::$user->rights->don->lire) { throw new RestException(401); } $result = $this->don->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'Donation not found'); } - if( ! DolibarrApi::_checkAccessToResource('don', $this->don->id)) { + if (!DolibarrApi::_checkAccessToResource('don', $this->don->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } @@ -109,33 +109,33 @@ class Donations extends DolibarrApi $socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids; $sql = "SELECT t.rowid"; - if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) ) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) - $sql.= " FROM ".MAIN_DB_PREFIX."don as t"; + if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids)) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) + $sql .= " FROM ".MAIN_DB_PREFIX."don as t"; - $sql.= ' WHERE t.entity IN ('.getEntity('don').')'; - if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) ) $sql.= " AND t.fk_soc = sc.fk_soc"; - if ($thirdparty_ids) $sql.= " AND t.fk_soc = ".$thirdparty_ids." "; + $sql .= ' WHERE t.entity IN ('.getEntity('don').')'; + if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids)) $sql .= " AND t.fk_soc = sc.fk_soc"; + if ($thirdparty_ids) $sql .= " AND t.fk_soc = ".$thirdparty_ids." "; // Add sql filters if ($sqlfilters) { - if (! DolibarrApi::_checkFilters($sqlfilters)) + if (!DolibarrApi::_checkFilters($sqlfilters)) { throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); } - $regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; - $sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; + $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } - $sql.= $db->order($sortfield, $sortorder); - if ($limit) { + $sql .= $db->order($sortfield, $sortorder); + if ($limit) { if ($page < 0) { $page = 0; } $offset = $limit * $page; - $sql.= $db->plimit($limit + 1, $offset); + $sql .= $db->plimit($limit + 1, $offset); } dol_syslog("API Rest request"); @@ -145,12 +145,12 @@ class Donations extends DolibarrApi { $num = $db->num_rows($result); $min = min($num, ($limit <= 0 ? $num : $limit)); - $i=0; + $i = 0; while ($i < $min) { $obj = $db->fetch_object($result); $don_static = new Don($db); - if($don_static->fetch($obj->rowid)) { + if ($don_static->fetch($obj->rowid)) { // Add external contacts ids //$don_static->contacts_ids = $don_static->liste_contact(-1, 'external', 1); $obj_ret[] = $this->_cleanObjectDatas($don_static); @@ -161,7 +161,7 @@ class Donations extends DolibarrApi else { throw new RestException(503, 'Error when retrieve donation list : '.$db->lasterror()); } - if( ! count($obj_ret)) { + if (!count($obj_ret)) { throw new RestException(404, 'No donation found'); } @@ -176,7 +176,7 @@ class Donations extends DolibarrApi */ public function post($request_data = null) { - if (! DolibarrApiAccess::$user->rights->don->creer) { + if (!DolibarrApiAccess::$user->rights->don->creer) { throw new RestException(401, "Insuffisant rights"); } // Check mandatory fields @@ -210,16 +210,16 @@ class Donations extends DolibarrApi */ public function put($id, $request_data = null) { - if (! DolibarrApiAccess::$user->rights->don->creer) { + if (!DolibarrApiAccess::$user->rights->don->creer) { throw new RestException(401); } $result = $this->don->fetch($id); - if (! $result) { + if (!$result) { throw new RestException(404, 'Donation not found'); } - if (! DolibarrApi::_checkAccessToResource('donation', $this->don->id)) { + if (!DolibarrApi::_checkAccessToResource('donation', $this->don->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } foreach ($request_data as $field => $value) { @@ -245,19 +245,19 @@ class Donations extends DolibarrApi */ public function delete($id) { - if(! DolibarrApiAccess::$user->rights->don->supprimer) { + if (!DolibarrApiAccess::$user->rights->don->supprimer) { throw new RestException(401); } $result = $this->don->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'Donation not found'); } - if( ! DolibarrApi::_checkAccessToResource('donation', $this->don->id)) { + if (!DolibarrApi::_checkAccessToResource('donation', $this->don->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - if( ! $this->don->delete(DolibarrApiAccess::$user)) { + if (!$this->don->delete(DolibarrApiAccess::$user)) { throw new RestException(500, 'Error when delete donation : '.$this->don->error); } @@ -293,15 +293,15 @@ class Donations extends DolibarrApi */ public function validate($id, $idwarehouse = 0, $notrigger = 0) { - if(! DolibarrApiAccess::$user->rights->don->creer) { + if (!DolibarrApiAccess::$user->rights->don->creer) { throw new RestException(401); } $result = $this->don->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'Donation not found'); } - if( ! DolibarrApi::_checkAccessToResource('don', $this->don->id)) { + if (!DolibarrApi::_checkAccessToResource('don', $this->don->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } @@ -313,11 +313,11 @@ class Donations extends DolibarrApi throw new RestException(500, 'Error when validating Order: '.$this->don->error); } $result = $this->don->fetch($id); - if( ! $result ) { + if (!$result) { throw new RestException(404, 'Order not found'); } - if( ! DolibarrApi::_checkAccessToResource('don', $this->don->id)) { + if (!DolibarrApi::_checkAccessToResource('don', $this->don->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } @@ -360,7 +360,7 @@ class Donations extends DolibarrApi $don = array(); foreach (Orders::$FIELDS as $field) { if (!isset($data[$field])) - throw new RestException(400, $field ." field missing"); + throw new RestException(400, $field." field missing"); $don[$field] = $data[$field]; } return $don; diff --git a/htdocs/don/class/donstats.class.php b/htdocs/don/class/donstats.class.php index 607d6555337..5370bdcaf73 100644 --- a/htdocs/don/class/donstats.class.php +++ b/htdocs/don/class/donstats.class.php @@ -24,9 +24,9 @@ * \brief File of class to manage donations statistics */ -include_once DOL_DOCUMENT_ROOT . '/core/class/stats.class.php'; -include_once DOL_DOCUMENT_ROOT . '/don/class/don.class.php'; -include_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php'; +include_once DOL_DOCUMENT_ROOT.'/core/class/stats.class.php'; +include_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; +include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; /** @@ -76,15 +76,15 @@ class DonationStats extends Stats $this->userid = $userid; $this->cachefilesuffix = $mode; - $object=new Don($this->db); + $object = new Don($this->db); $this->from = MAIN_DB_PREFIX.$object->table_element." as d"; //$this->from.= ", ".MAIN_DB_PREFIX."societe as s"; //$this->field='weight'; // Warning, unit of weight is NOT USED AND MUST BE - $this->where.= " d.fk_statut > 0"; // Not draft and not cancelled + $this->where .= " d.fk_statut > 0"; // Not draft and not cancelled //$this->where.= " AND c.fk_soc = s.rowid AND c.entity = ".$conf->entity; - $this->where.= " AND d.entity = ".$conf->entity; - if ($this->userid > 0) $this->where.=' WHERE c.fk_user_author = '.$this->userid; + $this->where .= " AND d.entity = ".$conf->entity; + if ($this->userid > 0) $this->where .= ' WHERE c.fk_user_author = '.$this->userid; } /** @@ -99,13 +99,13 @@ class DonationStats extends Stats global $user; $sql = "SELECT date_format(d.datedon,'%m') as dm, COUNT(*) as nb"; - $sql.= " FROM ".$this->from; - $sql.= " WHERE d.datedon BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; - $sql.= " AND ".$this->where; - $sql.= " GROUP BY dm"; - $sql.= $this->db->order('dm', 'DESC'); + $sql .= " FROM ".$this->from; + $sql .= " WHERE d.datedon BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; + $sql .= " AND ".$this->where; + $sql .= " GROUP BY dm"; + $sql .= $this->db->order('dm', 'DESC'); - $res=$this->_getNbByMonth($year, $sql, $format); + $res = $this->_getNbByMonth($year, $sql, $format); return $res; } @@ -120,10 +120,10 @@ class DonationStats extends Stats global $user; $sql = "SELECT date_format(d.datedon,'%Y') as dm, COUNT(*) as nb, SUM(d.".$this->field.")"; - $sql.= " FROM ".$this->from; - $sql.= " WHERE ".$this->where; - $sql.= " GROUP BY dm"; - $sql.= $this->db->order('dm', 'DESC'); + $sql .= " FROM ".$this->from; + $sql .= " WHERE ".$this->where; + $sql .= " GROUP BY dm"; + $sql .= $this->db->order('dm', 'DESC'); return $this->_getNbByYear($sql); } @@ -138,10 +138,10 @@ class DonationStats extends Stats global $user; $sql = "SELECT date_format(d.datedon,'%Y') as year, COUNT(*) as nb, SUM(d.".$this->field.") as total, AVG(".$this->field.") as avg"; - $sql.= " FROM ".$this->from; - $sql.= " WHERE ".$this->where; - $sql.= " GROUP BY year"; - $sql.= $this->db->order('year', 'DESC'); + $sql .= " FROM ".$this->from; + $sql .= " WHERE ".$this->where; + $sql .= " GROUP BY year"; + $sql .= $this->db->order('year', 'DESC'); return $this->_getAllByYear($sql); } diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index 22b75cd777b..ee8156c229e 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -32,12 +32,12 @@ class PaymentDonation extends CommonObject /** * @var string ID to identify managed object */ - public $element='payment_donation'; + public $element = 'payment_donation'; /** * @var string Name of table without prefix where object is stored */ - public $table_element='payment_donation'; + public $table_element = 'payment_donation'; /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png @@ -54,11 +54,11 @@ class PaymentDonation extends CommonObject */ public $fk_donation; - public $datec=''; - public $tms=''; - public $datep=''; - public $amount; // Total amount of payment - public $amounts=array(); // Array of amounts + public $datec = ''; + public $tms = ''; + public $datep = ''; + public $amount; // Total amount of payment + public $amounts = array(); // Array of amounts public $typepayment; public $num_payment; @@ -109,23 +109,23 @@ class PaymentDonation extends CommonObject { global $conf, $langs; - $error=0; + $error = 0; - $now=dol_now(); + $now = dol_now(); // Validate parameters - if (! $this->datepaid) + if (!$this->datepaid) { - $this->error='ErrorBadValueForParameterCreatePaymentDonation'; + $this->error = 'ErrorBadValueForParameterCreatePaymentDonation'; return -1; } // Clean parameters if (isset($this->fk_donation)) $this->fk_donation = (int) $this->fk_donation; - if (isset($this->amount)) $this->amount=trim($this->amount); - if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); - if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); - if (isset($this->note_public)) $this->note_public=trim($this->note_public); + if (isset($this->amount)) $this->amount = trim($this->amount); + if (isset($this->fk_typepayment)) $this->fk_typepayment = trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment = trim($this->num_payment); + if (isset($this->note_public)) $this->note_public = trim($this->note_public); if (isset($this->fk_bank)) $this->fk_bank = (int) $this->fk_bank; if (isset($this->fk_user_creat)) $this->fk_user_creat = (int) $this->fk_user_creat; if (isset($this->fk_user_modif)) $this->fk_user_modif = (int) $this->fk_user_modif; @@ -148,15 +148,15 @@ class PaymentDonation extends CommonObject if ($totalamount != 0) { $sql = "INSERT INTO ".MAIN_DB_PREFIX."payment_donation (fk_donation, datec, datep, amount,"; - $sql.= " fk_typepayment, num_payment, note, fk_user_creat, fk_bank)"; - $sql.= " VALUES ($this->chid, '".$this->db->idate($now)."',"; - $sql.= " '".$this->db->idate($this->datepaid)."',"; - $sql.= " ".$totalamount.","; - $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note_public)."', ".$user->id.","; - $sql.= " 0)"; + $sql .= " fk_typepayment, num_payment, note, fk_user_creat, fk_bank)"; + $sql .= " VALUES ($this->chid, '".$this->db->idate($now)."',"; + $sql .= " '".$this->db->idate($this->datepaid)."',"; + $sql .= " ".$totalamount.","; + $sql .= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note_public)."', ".$user->id.","; + $sql .= " 0)"; dol_syslog(get_class($this)."::create", LOG_DEBUG); - $resql=$this->db->query($sql); + $resql = $this->db->query($sql); if ($resql) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_donation"); @@ -168,24 +168,24 @@ class PaymentDonation extends CommonObject } } - if (! $error && ! $notrigger) + if (!$error && !$notrigger) { // Call triggers - $result=$this->call_trigger('DONATION_PAYMENT_CREATE', $user); + $result = $this->call_trigger('DONATION_PAYMENT_CREATE', $user); if ($result < 0) { $error++; } // End call triggers } - if ($totalamount != 0 && ! $error) + if ($totalamount != 0 && !$error) { - $this->amount=$totalamount; - $this->total=$totalamount; // deprecated + $this->amount = $totalamount; + $this->total = $totalamount; // deprecated $this->db->commit(); return $this->id; } else { - $this->error=$this->db->error(); + $this->error = $this->db->error(); $this->db->rollback(); return -1; } @@ -201,27 +201,27 @@ class PaymentDonation extends CommonObject { global $langs; $sql = "SELECT"; - $sql.= " t.rowid,"; - $sql.= " t.fk_donation,"; - $sql.= " t.datec,"; - $sql.= " t.tms,"; - $sql.= " t.datep,"; - $sql.= " t.amount,"; - $sql.= " t.fk_typepayment,"; - $sql.= " t.num_payment,"; - $sql.= " t.note as note_public,"; - $sql.= " t.fk_bank,"; - $sql.= " t.fk_user_creat,"; - $sql.= " t.fk_user_modif,"; - $sql.= " pt.code as type_code, pt.libelle as type_label,"; - $sql.= ' b.fk_account'; - $sql.= " FROM ".MAIN_DB_PREFIX."payment_donation as t"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as pt ON t.fk_typepayment = pt.id"; - $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON t.fk_bank = b.rowid'; - $sql.= " WHERE t.rowid = ".$id; + $sql .= " t.rowid,"; + $sql .= " t.fk_donation,"; + $sql .= " t.datec,"; + $sql .= " t.tms,"; + $sql .= " t.datep,"; + $sql .= " t.amount,"; + $sql .= " t.fk_typepayment,"; + $sql .= " t.num_payment,"; + $sql .= " t.note as note_public,"; + $sql .= " t.fk_bank,"; + $sql .= " t.fk_user_creat,"; + $sql .= " t.fk_user_modif,"; + $sql .= " pt.code as type_code, pt.libelle as type_label,"; + $sql .= ' b.fk_account'; + $sql .= " FROM ".MAIN_DB_PREFIX."payment_donation as t"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as pt ON t.fk_typepayment = pt.id"; + $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON t.fk_bank = b.rowid'; + $sql .= " WHERE t.rowid = ".$id; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); - $resql=$this->db->query($sql); + $resql = $this->db->query($sql); if ($resql) { if ($this->db->num_rows($resql)) @@ -231,23 +231,23 @@ class PaymentDonation extends CommonObject $this->id = $obj->rowid; $this->ref = $obj->rowid; - $this->fk_donation = $obj->fk_donation; + $this->fk_donation = $obj->fk_donation; $this->datec = $this->db->jdate($obj->datec); - $this->tms = $this->db->jdate($obj->tms); + $this->tms = $this->db->jdate($obj->tms); $this->datep = $this->db->jdate($obj->datep); - $this->amount = $obj->amount; - $this->fk_typepayment = $obj->fk_typepayment; - $this->num_payment = $obj->num_payment; - $this->note_public = $obj->note_public; - $this->fk_bank = $obj->fk_bank; + $this->amount = $obj->amount; + $this->fk_typepayment = $obj->fk_typepayment; + $this->num_payment = $obj->num_payment; + $this->note_public = $obj->note_public; + $this->fk_bank = $obj->fk_bank; $this->fk_user_creat = $obj->fk_user_creat; $this->fk_user_modif = $obj->fk_user_modif; - $this->type_code = $obj->type_code; - $this->type_label = $obj->type_label; + $this->type_code = $obj->type_code; + $this->type_label = $obj->type_label; - $this->bank_account = $obj->fk_account; - $this->bank_line = $obj->fk_bank; + $this->bank_account = $obj->fk_account; + $this->bank_line = $obj->fk_bank; } $this->db->free($resql); @@ -255,7 +255,7 @@ class PaymentDonation extends CommonObject } else { - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); return -1; } } @@ -271,15 +271,15 @@ class PaymentDonation extends CommonObject public function update($user, $notrigger = 0) { global $conf, $langs; - $error=0; + $error = 0; // Clean parameters if (isset($this->fk_donation)) $this->fk_donation = (int) $this->fk_donation; - if (isset($this->amount)) $this->amount=trim($this->amount); - if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); - if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); - if (isset($this->note_public)) $this->note_public=trim($this->note_public); + if (isset($this->amount)) $this->amount = trim($this->amount); + if (isset($this->fk_typepayment)) $this->fk_typepayment = trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment = trim($this->num_payment); + if (isset($this->note_public)) $this->note_public = trim($this->note_public); if (isset($this->fk_bank)) $this->fk_bank = (int) $this->fk_bank; if (isset($this->fk_user_creat)) $this->fk_user_creat = (int) $this->fk_user_creat; if (isset($this->fk_user_modif)) $this->fk_user_modif = (int) $this->fk_user_modif; @@ -289,36 +289,36 @@ class PaymentDonation extends CommonObject // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."payment_donation SET"; - $sql.= " fk_donation=".(isset($this->fk_donation)?$this->fk_donation:"null").","; - $sql.= " datec=".(dol_strlen($this->datec)!=0 ? "'".$this->db->idate($this->datec)."'" : 'null').","; - $sql.= " tms=".(dol_strlen($this->tms)!=0 ? "'".$this->db->idate($this->tms)."'" : 'null').","; - $sql.= " datep=".(dol_strlen($this->datep)!=0 ? "'".$this->db->idate($this->datep)."'" : 'null').","; - $sql.= " amount=".(isset($this->amount)?$this->amount:"null").","; - $sql.= " fk_typepayment=".(isset($this->fk_typepayment)?$this->fk_typepayment:"null").","; - $sql.= " num_payment=".(isset($this->num_payment)?"'".$this->db->escape($this->num_payment)."'":"null").","; - $sql.= " note=".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null").","; - $sql.= " fk_bank=".(isset($this->fk_bank)?$this->fk_bank:"null").","; - $sql.= " fk_user_creat=".(isset($this->fk_user_creat)?$this->fk_user_creat:"null").","; - $sql.= " fk_user_modif=".(isset($this->fk_user_modif)?$this->fk_user_modif:"null").""; - $sql.= " WHERE rowid=".(int) $this->id; + $sql .= " fk_donation=".(isset($this->fk_donation) ? $this->fk_donation : "null").","; + $sql .= " datec=".(dol_strlen($this->datec) != 0 ? "'".$this->db->idate($this->datec)."'" : 'null').","; + $sql .= " tms=".(dol_strlen($this->tms) != 0 ? "'".$this->db->idate($this->tms)."'" : 'null').","; + $sql .= " datep=".(dol_strlen($this->datep) != 0 ? "'".$this->db->idate($this->datep)."'" : 'null').","; + $sql .= " amount=".(isset($this->amount) ? $this->amount : "null").","; + $sql .= " fk_typepayment=".(isset($this->fk_typepayment) ? $this->fk_typepayment : "null").","; + $sql .= " num_payment=".(isset($this->num_payment) ? "'".$this->db->escape($this->num_payment)."'" : "null").","; + $sql .= " note=".(isset($this->note_public) ? "'".$this->db->escape($this->note_public)."'" : "null").","; + $sql .= " fk_bank=".(isset($this->fk_bank) ? $this->fk_bank : "null").","; + $sql .= " fk_user_creat=".(isset($this->fk_user_creat) ? $this->fk_user_creat : "null").","; + $sql .= " fk_user_modif=".(isset($this->fk_user_modif) ? $this->fk_user_modif : "null").""; + $sql .= " WHERE rowid=".(int) $this->id; $this->db->begin(); dol_syslog(get_class($this)."::update", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) { + if (!$resql) { $error++; - $this->errors[]="Error ".$this->db->lasterror(); + $this->errors[] = "Error ".$this->db->lasterror(); } - if (! $error) + if (!$error) { - if (! $notrigger) + if (!$notrigger) { - if (! $error && ! $notrigger) + if (!$error && !$notrigger) { // Call triggers - $result=$this->call_trigger('DONATION_PAYMENT_MODIFY', $user); + $result = $this->call_trigger('DONATION_PAYMENT_MODIFY', $user); if ($result < 0) { $error++; } // End call triggers } @@ -328,13 +328,13 @@ class PaymentDonation extends CommonObject // Commit or rollback if ($error) { - foreach($this->errors as $errmsg) + foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR); - $this->error.=($this->error?', '.$errmsg:$errmsg); + $this->error .= ($this->error ? ', '.$errmsg : $errmsg); } $this->db->rollback(); - return -1*$error; + return -1 * $error; } else { @@ -354,41 +354,41 @@ class PaymentDonation extends CommonObject public function delete($user, $notrigger = 0) { global $conf, $langs; - $error=0; + $error = 0; $this->db->begin(); - if (! $error) + if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url"; - $sql.= " WHERE type='payment_donation' AND url_id=".(int) $this->id; + $sql .= " WHERE type='payment_donation' AND url_id=".(int) $this->id; dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } } - if (! $error) + if (!$error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."payment_donation"; - $sql.= " WHERE rowid=".$this->id; + $sql .= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) { + if (!$resql) { $error++; - $this->errors[]="Error ".$this->db->lasterror(); + $this->errors[] = "Error ".$this->db->lasterror(); } } - if (! $error) + if (!$error) { - if (! $notrigger) + if (!$notrigger) { - if (! $error && ! $notrigger) + if (!$error && !$notrigger) { // Call triggers - $result=$this->call_trigger('DONATION_PAYMENT_DELETE', $user); + $result = $this->call_trigger('DONATION_PAYMENT_DELETE', $user); if ($result < 0) { $error++; } // End call triggers } @@ -398,13 +398,13 @@ class PaymentDonation extends CommonObject // Commit or rollback if ($error) { - foreach($this->errors as $errmsg) + foreach ($this->errors as $errmsg) { dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); - $this->error.=($this->error?', '.$errmsg:$errmsg); + $this->error .= ($this->error ? ', '.$errmsg : $errmsg); } $this->db->rollback(); - return -1*$error; + return -1 * $error; } else { @@ -424,39 +424,39 @@ class PaymentDonation extends CommonObject */ public function createFromClone(User $user, $fromid) { - $error=0; + $error = 0; - $object=new PaymentDonation($this->db); + $object = new PaymentDonation($this->db); $this->db->begin(); // Load source object $object->fetch($fromid); - $object->id=0; - $object->statut=0; + $object->id = 0; + $object->statut = 0; // Clear fields // ... // Create clone $object->context['createfromclone'] = 'createfromclone'; - $result=$object->create($user); + $result = $object->create($user); // Other options if ($result < 0) { - $this->error=$object->error; + $this->error = $object->error; $error++; } - if (! $error) + if (!$error) { } unset($object->context['createfromclone']); // End - if (! $error) + if (!$error) { $this->db->commit(); return $object->id; @@ -506,19 +506,19 @@ class PaymentDonation extends CommonObject */ public function initAsSpecimen() { - $this->id=0; + $this->id = 0; - $this->fk_donation=''; - $this->datec=''; - $this->tms=''; - $this->datep=''; - $this->amount=''; - $this->fk_typepayment=''; - $this->num_payment=''; - $this->note_public=''; - $this->fk_bank=''; - $this->fk_user_creat=''; - $this->fk_user_modif=''; + $this->fk_donation = ''; + $this->datec = ''; + $this->tms = ''; + $this->datep = ''; + $this->amount = ''; + $this->fk_typepayment = ''; + $this->num_payment = ''; + $this->note_public = ''; + $this->fk_bank = ''; + $this->fk_user_creat = ''; + $this->fk_user_modif = ''; } @@ -538,22 +538,22 @@ class PaymentDonation extends CommonObject { global $conf; - $error=0; + $error = 0; - if (! empty($conf->banque->enabled)) + if (!empty($conf->banque->enabled)) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); $acc->fetch($accountid); - $total=$this->total; - if ($mode == 'payment_donation') $amount=$total; + $total = $this->total; + if ($mode == 'payment_donation') $amount = $total; // Insert payment into llx_bank $bank_line_id = $acc->addline( $this->datepaid, - $this->paymenttype, // Payment mode id or code ("CHQ or VIR for example") + $this->paymenttype, // Payment mode id or code ("CHQ or VIR for example") $label, $amount, $this->num_payment, @@ -567,7 +567,7 @@ class PaymentDonation extends CommonObject // On connait ainsi le paiement qui a genere l'ecriture bancaire if ($bank_line_id > 0) { - $result=$this->update_fk_bank($bank_line_id); + $result = $this->update_fk_bank($bank_line_id); if ($result <= 0) { $error++; @@ -575,11 +575,11 @@ class PaymentDonation extends CommonObject } // Add link 'payment', 'payment_supplier', 'payment_donation' in bank_url between payment and bank transaction - $url=''; - if ($mode == 'payment_donation') $url=DOL_URL_ROOT.'/don/payment/card.php?rowid='; + $url = ''; + if ($mode == 'payment_donation') $url = DOL_URL_ROOT.'/don/payment/card.php?rowid='; if ($url) { - $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(paiement)', $mode); + $result = $acc->add_url_line($bank_line_id, $this->id, $url, '(paiement)', $mode); if ($result <= 0) { $error++; @@ -589,12 +589,12 @@ class PaymentDonation extends CommonObject } else { - $this->error=$acc->error; + $this->error = $acc->error; $error++; } } - if (! $error) + if (!$error) { return 1; } @@ -625,7 +625,7 @@ class PaymentDonation extends CommonObject } else { - $this->error=$this->db->error(); + $this->error = $this->db->error(); return 0; } } @@ -641,18 +641,18 @@ class PaymentDonation extends CommonObject { global $langs; - $result=''; + $result = ''; $label = $langs->trans("ShowPayment").': '.$this->ref; if (!empty($this->id)) { $link = ''; - $linkend=''; + $linkend = ''; - if ($withpicto) $result.=($link.img_object($label, 'payment', 'class="classfortooltip"').$linkend.' '); - if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->ref, $maxlen):$this->ref).$linkend; + if ($withpicto) $result .= ($link.img_object($label, 'payment', 'class="classfortooltip"').$linkend.' '); + if ($withpicto && $withpicto != 2) $result .= ' '; + if ($withpicto != 2) $result .= $link.($maxlen ?dol_trunc($this->ref, $maxlen) : $this->ref).$linkend; } return $result; diff --git a/htdocs/don/document.php b/htdocs/don/document.php index dba5b4cff7b..8dbb6f99fda 100644 --- a/htdocs/don/document.php +++ b/htdocs/don/document.php @@ -50,7 +50,7 @@ $confirm = GETPOST('confirm', 'alpha'); $projectid = (GETPOST('projectid') ? GETPOST('projectid', 'int') : 0); // Security check -if ($user->socid) $socid=$user->socid; +if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'don', $id, ''); @@ -101,27 +101,27 @@ if ($object->id) { $object->fetch_thirdparty(); - $head=donation_prepare_head($object); + $head = donation_prepare_head($object); dol_fiche_head($head, 'documents', $langs->trans("Donation"), -1, 'generic'); // Build file list - $filearray=dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC), 1); - $totalsize=0; - foreach($filearray as $key => $file) + $filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ?SORT_DESC:SORT_ASC), 1); + $totalsize = 0; + foreach ($filearray as $key => $file) { - $totalsize+=$file['size']; + $totalsize += $file['size']; } - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref='
    '; + $morehtmlref = '
    '; // Project - if (! empty($conf->projet->enabled)) + if (!empty($conf->projet->enabled)) { $langs->load("projects"); - $morehtmlref.=$langs->trans('Project') . ' '; + $morehtmlref .= $langs->trans('Project').' '; if ($user->rights->don->creer) { if ($action != 'classify') { @@ -129,28 +129,28 @@ if ($object->id) } if ($action == 'classify') { //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.=''; + $morehtmlref .= '
    '; + $morehtmlref .= ''; + $morehtmlref .= ''; + $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref .= ''; + $morehtmlref .= ''; } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); } } else { - if (! empty($object->fk_project)) { + if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref.=''; - $morehtmlref.=$proj->ref; - $morehtmlref.=''; + $morehtmlref .= ''; + $morehtmlref .= $proj->ref; + $morehtmlref .= ''; } else { - $morehtmlref.=''; + $morehtmlref .= ''; } } } - $morehtmlref.='
    '; + $morehtmlref .= '
    '; dol_banner_tab($object, 'rowid', $linkback, 1, 'rowid', 'ref', $morehtmlref); diff --git a/htdocs/don/info.php b/htdocs/don/info.php index e2249e082a7..cff4aceae79 100644 --- a/htdocs/don/info.php +++ b/htdocs/don/info.php @@ -34,12 +34,12 @@ if (!empty($conf->projet->enabled)) $langs->load("donations"); $id = GETPOST('id', 'int'); -$ref=GETPOST('ref', 'alpha'); -$action=GETPOST('action', 'alpha'); +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action', 'alpha'); $projectid = (GETPOST('projectid') ? GETPOST('projectid', 'int') : 0); // Security check -if ($user->socid) $socid=$user->socid; +if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'don', $id, ''); $object = new Don($db); @@ -69,14 +69,14 @@ $head = donation_prepare_head($object); dol_fiche_head($head, 'info', $langs->trans("Donation"), -1, 'generic'); -$linkback = ''.$langs->trans("BackToList").''; +$linkback = ''.$langs->trans("BackToList").''; -$morehtmlref='
    '; +$morehtmlref = '
    '; // Project -if (! empty($conf->projet->enabled)) +if (!empty($conf->projet->enabled)) { $langs->load("projects"); - $morehtmlref.=$langs->trans('Project') . ' '; + $morehtmlref .= $langs->trans('Project').' '; if ($user->rights->don->creer) { if ($action != 'classify') { @@ -84,28 +84,28 @@ if (! empty($conf->projet->enabled)) } if ($action == 'classify') { //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.=''; + $morehtmlref .= '
    '; + $morehtmlref .= ''; + $morehtmlref .= ''; + $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref .= ''; + $morehtmlref .= ''; } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); } } else { - if (! empty($object->fk_project)) { + if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref.=''; - $morehtmlref.=$proj->ref; - $morehtmlref.=''; + $morehtmlref .= ''; + $morehtmlref .= $proj->ref; + $morehtmlref .= ''; } else { - $morehtmlref.=''; + $morehtmlref .= ''; } } } -$morehtmlref.='
    '; +$morehtmlref .= '
    '; dol_banner_tab($object, 'rowid', $linkback, 1, 'rowid', 'ref', $morehtmlref); diff --git a/htdocs/don/note.php b/htdocs/don/note.php index 128ea2163c7..08b8c05b520 100644 --- a/htdocs/don/note.php +++ b/htdocs/don/note.php @@ -29,35 +29,35 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -if (! empty($conf->projet->enabled)) +if (!empty($conf->projet->enabled)) { require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; } // Load translation files required by the page -$langs->loadLangs(array("companies","bills","donations")); +$langs->loadLangs(array("companies", "bills", "donations")); -$id=(GETPOST('id', 'int')?GETPOST('id', 'int'):GETPOST('facid', 'int')); // For backward compatibility -$ref=GETPOST('ref', 'alpha'); -$action=GETPOST('action', 'alpha'); +$id = (GETPOST('id', 'int') ?GETPOST('id', 'int') : GETPOST('facid', 'int')); // For backward compatibility +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action', 'alpha'); $projectid = (GETPOST('projectid') ? GETPOST('projectid', 'int') : 0); // Security check -$socid=0; -if ($user->socid) $socid=$user->socid; -$result=restrictedArea($user, 'don', $id, ''); +$socid = 0; +if ($user->socid) $socid = $user->socid; +$result = restrictedArea($user, 'don', $id, ''); $object = new Don($db); $object->fetch($id); -$permissionnote=$user->rights->don->creer; // Used by the include of actions_setnotes.inc.php +$permissionnote = $user->rights->don->creer; // Used by the include of actions_setnotes.inc.php /* * Actions */ -include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once +include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once if ($action == 'classin' && $user->rights->don->creer) { @@ -85,14 +85,14 @@ if ($id > 0 || !empty($ref)) dol_fiche_head($head, 'note', $langs->trans("Donation"), -1, 'generic'); - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref='
    '; + $morehtmlref = '
    '; // Project - if (! empty($conf->projet->enabled)) + if (!empty($conf->projet->enabled)) { $langs->load("projects"); - $morehtmlref.=$langs->trans('Project') . ' '; + $morehtmlref .= $langs->trans('Project').' '; if ($user->rights->don->creer) { if ($action != 'classify') { @@ -100,35 +100,35 @@ if ($id > 0 || !empty($ref)) } if ($action == 'classify') { //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.=''; + $morehtmlref .= '
    '; + $morehtmlref .= ''; + $morehtmlref .= ''; + $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref .= ''; + $morehtmlref .= ''; } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); } } else { - if (! empty($object->fk_project)) { + if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref.=''; - $morehtmlref.=$proj->ref; - $morehtmlref.=''; + $morehtmlref .= ''; + $morehtmlref .= $proj->ref; + $morehtmlref .= ''; } else { - $morehtmlref.=''; + $morehtmlref .= ''; } } } - $morehtmlref.='
    '; + $morehtmlref .= '
    '; dol_banner_tab($object, 'rowid', $linkback, 1, 'rowid', 'ref', $morehtmlref); print '
    '; print '
    '; - $cssclass="titlefield"; + $cssclass = "titlefield"; include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; dol_fiche_end(); diff --git a/htdocs/don/payment/card.php b/htdocs/don/payment/card.php index c5517a72696..0017f0a8556 100644 --- a/htdocs/don/payment/card.php +++ b/htdocs/don/payment/card.php @@ -27,24 +27,24 @@ require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/don/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; -if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; +if (!empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // Load translation files required by the page -$langs->loadLangs(array("bills","banks","companies")); +$langs->loadLangs(array("bills", "banks", "companies")); // Security check -$id=GETPOST('rowid')?GETPOST('rowid', 'int'):GETPOST('id', 'int'); -$action=GETPOST('action', 'aZ09'); -$confirm=GETPOST('confirm'); -if ($user->socid) $socid=$user->socid; +$id = GETPOST('rowid') ?GETPOST('rowid', 'int') : GETPOST('id', 'int'); +$action = GETPOST('action', 'aZ09'); +$confirm = GETPOST('confirm'); +if ($user->socid) $socid = $user->socid; // TODO Add rule to restrict access payment //$result = restrictedArea($user, 'facture', $id,''); $object = new PaymentDonation($db); if ($id > 0) { - $result=$object->fetch($id); - if (! $result) dol_print_error($db, 'Failed to get payment id '.$id); + $result = $object->fetch($id); + if (!$result) dol_print_error($db, 'Failed to get payment id '.$id); } @@ -76,20 +76,20 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->don->cree { $db->begin(); - $result=$object->valide(); + $result = $object->valide(); if ($result > 0) { $db->commit(); - $factures=array(); // TODO Get all id of invoices linked to this payment - foreach($factures as $id) + $factures = array(); // TODO Get all id of invoices linked to this payment + foreach ($factures as $id) { $fac = new Facture($db); $fac->fetch($id); $outputlangs = $langs; - if (! empty($_REQUEST['lang_id'])) + if (!empty($_REQUEST['lang_id'])) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); @@ -119,7 +119,7 @@ llxHeader(); $don = new Don($db); $form = new Form($db); -$h=0; +$h = 0; $head[$h][0] = DOL_URL_ROOT.'/don/payment/card.php?id='.$id; $head[$h][1] = $langs->trans("Card"); @@ -176,11 +176,11 @@ print '
    '; // Bank account -if (! empty($conf->banque->enabled)) +if (!empty($conf->banque->enabled)) { if ($object->bank_account) { - $bankline=new AccountLine($db); + $bankline = new AccountLine($db); $bankline->fetch($object->bank_line); print ''; @@ -201,13 +201,13 @@ print '
    '; @@ -216,14 +216,14 @@ function tree_recur($tab, $pere, $rang, $iddivjstree = 'iddivjstree', $donoreset print $tab[$x]['entry']; } //print ' -> B '.$tab[$x]['rowid'].' mainmenu='.$tab[$x]['mainmenu'].' leftmenu='.$tab[$x]['leftmenu'].' fk_mainmenu='.$tab[$x]['fk_mainmenu'].' fk_leftmenu='.$tab[$x]['fk_leftmenu'].'
    '."\n"; - $tree_recur_alreadyadded[$tab[$x]['rowid']]=($rang + 1); + $tree_recur_alreadyadded[$tab[$x]['rowid']] = ($rang + 1); // And now we search all its sons of lower level //print 'Call tree_recur for x='.$x.' rowid='.$tab[$x]['rowid']." fk_mainmenu pere = ".$tab[$x]['fk_mainmenu']." fk_leftmenu pere = ".$tab[$x]['fk_leftmenu']."
    \n"; - tree_recur($tab, $tab[$x], $rang+1, 'iddivjstree', 0, $showfk); + tree_recur($tab, $tab[$x], $rang + 1, 'iddivjstree', 0, $showfk); print ''; } } - if (! empty($ulprinted) && ! empty($pere['rowid'])) { print ''."\n"; } + if (!empty($ulprinted) && !empty($pere['rowid'])) { print ''."\n"; } if ($rang == 0) print ''; } diff --git a/htdocs/core/lib/trip.lib.php b/htdocs/core/lib/trip.lib.php index cb54b263a00..ec8c6a6858f 100644 --- a/htdocs/core/lib/trip.lib.php +++ b/htdocs/core/lib/trip.lib.php @@ -34,7 +34,7 @@ function trip_prepare_head(Deplacement $object) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT . '/compta/deplacement/card.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/compta/deplacement/card.php?id='.$object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; $h++; @@ -50,7 +50,7 @@ function trip_prepare_head(Deplacement $object) $head[$h][2] = 'documents'; $h++; - $head[$h][0] = DOL_URL_ROOT . '/compta/deplacement/info.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT.'/compta/deplacement/info.php?id='.$object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 2b510373299..bc20612c747 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -582,11 +582,11 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colorbackhmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackhmenu1))); + $default = (empty($colorbackhmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackhmenu1))); print '
    '.$langs->trans("TopMenuBackgroundColor").''; + print ''; if ($edit) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1, array()), ''), 'THEME_ELDY_TOPMENU_BACK1', 'formcolor', 1).' '; @@ -630,11 +630,11 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colorbackvmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackvmenu1))); + $default = (empty($colorbackvmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackvmenu1))); print '
    '.$langs->trans("LeftMenuBackgroundColor").''; + print ''; if ($edit) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_VERMENU_BACK1, array()), ''), 'THEME_ELDY_VERMENU_BACK1', 'formcolor', 1).' '; @@ -658,7 +658,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colortexttitlenotab) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitlenotab))); + $default = (empty($colortexttitlenotab) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitlenotab))); print '
    '.$langs->trans("TextTitleColor").'
    '.$langs->trans("BackgroundTableTitleColor").'
    '.$langs->trans("BackgroundTableTitleTextColor").'
    '.$langs->trans("BackgroundTableLineOddColor").''; + print ''; if ($edit) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEIMPAIR1, array()), ''), 'THEME_ELDY_LINEIMPAIR1', 'formcolor', 1).' '; @@ -767,11 +767,11 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colorbacklinepair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepair1))); + $default = (empty($colorbacklinepair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepair1))); print '
    '.$langs->trans("BackgroundTableLineEvenColor").''; + print ''; if ($edit) { print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEPAIR1, array()), ''), 'THEME_ELDY_LINEPAIR1', 'formcolor', 1).' '; @@ -815,7 +815,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colortextlink) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortextlink))); + $default = (empty($colortextlink) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortextlink))); print '
    '.$langs->trans("LinkColor").'
    '.$langs->trans("HighlightLinesColor").''; + print ''; //print ''; //print '   ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; if ($edit) { - if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color=colorArrayToHex(colorStringToArray($colorbacklinepairhover)); + if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color = colorArrayToHex(colorStringToArray($colorbacklinepairhover)); else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER, array()), ''); print $formother->selectColor($color, 'THEME_ELDY_USE_HOVER', 'formcolor', 1).' '; } else { - if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color=colorArrayToHex(colorStringToArray($colorbacklinepairhover)); + if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color = colorArrayToHex(colorStringToArray($colorbacklinepairhover)); else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER, array()), ''); if ($color) { @@ -903,7 +903,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) } else { - $default=(empty($colorbacklinepairchecked) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairchecked))); + $default = (empty($colorbacklinepairchecked) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairchecked))); print '
    '.$langs->trans("HighlightLinesChecked").'
    - product->enabled) || ! empty($conf->service->enabled)) { ?> + product->enabled) || !empty($conf->service->enabled)) { ?> @@ -264,17 +264,17 @@ if (!empty($extrafields)) } ?> -service->enabled) && $line->product_type == 1 && $dateSelector) { ?> +service->enabled) && $line->product_type == 1 && $dateSelector) { ?>
    trans('ServiceLimitedDuration').' '.$langs->trans('From').' '; ?> + trans('ServiceLimitedDuration').' '.$langs->trans('From').' '; ?> global->MAIN_USE_HOURMIN_IN_DATE_RANGE)?$conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE:''); - print $form->selectDate($line->date_start, 'date_start', $hourmin, $hourmin, $line->date_start?0:1, "updateline", 1, 0); + $hourmin = (isset($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE) ? $conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE : ''); + print $form->selectDate($line->date_start, 'date_start', $hourmin, $hourmin, $line->date_start ? 0 : 1, "updateline", 1, 0); print ' '.$langs->trans('to').' '; - print $form->selectDate($line->date_end, 'date_end', $hourmin, $hourmin, $line->date_end?0:1, "updateline", 1, 0); + print $form->selectDate($line->date_end, 'date_end', $hourmin, $hourmin, $line->date_end ? 0 : 1, "updateline", 1, 0); print '"; -print ''; -print ''; +print ''; +print ''; print ''; print ''; if ($conf->global->MAIN_MULTILANGS) { - print ''; } -$subject = 'DATAPOLICIESSUBJECT_' . $l; -$linka = 'TXTLINKDATAPOLICIESACCEPT_' . $l; -$linkr = 'TXTLINKDATAPOLICIESREFUSE_' . $l; -$content = 'DATAPOLICIESCONTENT_' . $l; -$acc = 'DATAPOLICIESACCEPT_' . $l; -$ref = 'DATAPOLICIESREFUSE_' . $l; +$subject = 'DATAPOLICIESSUBJECT_'.$l; +$linka = 'TXTLINKDATAPOLICIESACCEPT_'.$l; +$linkr = 'TXTLINKDATAPOLICIESREFUSE_'.$l; +$content = 'DATAPOLICIESCONTENT_'.$l; +$acc = 'DATAPOLICIESACCEPT_'.$l; +$ref = 'DATAPOLICIESREFUSE_'.$l; print ''; print ''; print ''; print ''; print ''; print '
    ' . $form->editfieldkey('DefaultLang', 'default_lang', '', null, 0) . '' . "\n"; + print '
    '.$form->editfieldkey('DefaultLang', 'default_lang', '', null, 0).''."\n"; print $formadmin->select_language((GETPOST('l') ? GETPOST('l') : $langs->defaultlang), 'default_lang', 0, 0, 1, 0, 0, 'maxwidth200onsmartphone'); print '
    '; -print $langs->trans('DATAPOLICIESSUBJECTMAIL') . ''; -print ''; +print $langs->trans('DATAPOLICIESSUBJECTMAIL').''; +print ''; print '
    '; print $langs->trans('DATAPOLICIESCONTENTMAIL').''; -print $langs->trans('DATAPOLICIESSUBSITUTION');echo'__LINKACCEPT__,__LINKREFUSED__,__FIRSTNAME__,__NAME__,__CIVILITY__'; +print $langs->trans('DATAPOLICIESSUBSITUTION'); echo'__LINKACCEPT__,__LINKREFUSED__,__FIRSTNAME__,__NAME__,__CIVILITY__'; $doleditor = new DolEditor($content, $conf->global->$content, '', 250, 'Full', '', false, true, 1, 200, 70); $doleditor->Create(); print '
    '; -print $langs->trans('TXTLINKDATAPOLICIESACCEPT') . ''; -print ''; +print $langs->trans('TXTLINKDATAPOLICIESACCEPT').''; +print ''; print '
    '; -print $langs->trans('TXTLINKDATAPOLICIESREFUSE') . ''; -print ''; +print $langs->trans('TXTLINKDATAPOLICIESREFUSE').''; +print ''; print '
    '; @@ -149,7 +149,7 @@ $doleditor->Create(); print '
    '; -print '
    '; +print '
    '; print ''; diff --git a/htdocs/datapolicy/class/actions_datapolicy.class.php b/htdocs/datapolicy/class/actions_datapolicy.class.php index 7d467729841..3ef5a12d720 100644 --- a/htdocs/datapolicy/class/actions_datapolicy.class.php +++ b/htdocs/datapolicy/class/actions_datapolicy.class.php @@ -133,22 +133,22 @@ class ActionsDatapolicy header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv'); header('Pragma: no-cache'); $object->fetch(GETPOST('socid')); - echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;' . PHP_EOL; - echo $object->name . ';'; + echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL; + echo $object->name.';'; echo ';'; echo ';'; echo ';'; echo ';'; - echo $object->address . ';'; - echo $object->zip . ';'; - echo $object->town . ';'; - echo $object->state . ';'; - echo $object->country . ';'; - echo $object->email . ';'; - echo $object->phone . ';'; + echo $object->address.';'; + echo $object->zip.';'; + echo $object->town.';'; + echo $object->state.';'; + echo $object->country.';'; + echo $object->email.';'; + echo $object->phone.';'; echo ';'; echo ';'; - echo $object->skype . ';'; + echo $object->skype.';'; echo ';'; exit; } elseif ($parameters['currentcontext'] == 'membercard' && $action == 'datapolicy_portabilite') { @@ -157,23 +157,23 @@ class ActionsDatapolicy header('Pragma: no-cache'); $soc = $object->fetch_thirdparty(); - echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;' . PHP_EOL; - echo $object->lastname . ';'; - echo $object->firstname . ';'; - echo $object->getCivilityLabel() . ';'; - echo ($soc != -1 ? $object->thirdparty->name : '') . ';'; + echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL; + echo $object->lastname.';'; + echo $object->firstname.';'; + echo $object->getCivilityLabel().';'; + echo ($soc != -1 ? $object->thirdparty->name : '').';'; echo ';'; - echo $object->address . ';'; - echo $object->zip . ';'; - echo $object->town . ';'; - echo $object->state . ';'; - echo $object->country . ';'; - echo $object->email . ';'; - echo $object->phone . ';'; - echo $object->phone_perso . ';'; - echo $object->phone_mobile . ';'; - echo $object->skype . ';'; - echo dol_print_date($object->birth) . ';'; + echo $object->address.';'; + echo $object->zip.';'; + echo $object->town.';'; + echo $object->state.';'; + echo $object->country.';'; + echo $object->email.';'; + echo $object->phone.';'; + echo $object->phone_perso.';'; + echo $object->phone_mobile.';'; + echo $object->skype.';'; + echo dol_print_date($object->birth).';'; exit; } elseif ($parameters['currentcontext'] == 'contactcard' && $action == 'datapolicy_portabilite') { $object->fetch(GETPOST('id')); @@ -181,39 +181,39 @@ class ActionsDatapolicy header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv'); header('Pragma: no-cache'); $soc = $object->fetch_thirdparty(); - echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;' . PHP_EOL; - echo $object->lastname . ';'; - echo $object->firstname . ';'; - echo $object->getCivilityLabel() . ';'; - echo ($soc != -1 ? $object->thirdparty->name : '') . ';'; - echo $object->poste . ';'; - echo $object->address . ';'; - echo $object->zip . ';'; - echo $object->town . ';'; - echo $object->state . ';'; - echo $object->country . ';'; - echo $object->email . ';'; - echo $object->phone_pro . ';'; - echo $object->phone_perso . ';'; - echo $object->phone_mobile . ';'; - echo $object->jabberid . ';'; - echo dol_print_date($object->birth) . ';'; + echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL; + echo $object->lastname.';'; + echo $object->firstname.';'; + echo $object->getCivilityLabel().';'; + echo ($soc != -1 ? $object->thirdparty->name : '').';'; + echo $object->poste.';'; + echo $object->address.';'; + echo $object->zip.';'; + echo $object->town.';'; + echo $object->state.';'; + echo $object->country.';'; + echo $object->email.';'; + echo $object->phone_pro.';'; + echo $object->phone_perso.';'; + echo $object->phone_mobile.';'; + echo $object->jabberid.';'; + echo dol_print_date($object->birth).';'; exit; } elseif ($parameters['currentcontext'] == 'contactcard' && $action == 'send_datapolicy') { $object->fetch(GETPOST('id')); - require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php'; - require_once DOL_DOCUMENT_ROOT . '/datapolicy/class/datapolicy.class.php'; + require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; + require_once DOL_DOCUMENT_ROOT.'/datapolicy/class/datapolicy.class.php'; DataPolicy::sendMailDataPolicyContact($object); } elseif ($parameters['currentcontext'] == 'membercard' && $action == 'send_datapolicy') { $object->fetch(GETPOST('id')); - require_once DOL_DOCUMENT_ROOT . '/adherents/class/adherent.class.php'; - require_once DOL_DOCUMENT_ROOT . '/datapolicy/class/datapolicy.class.php'; + require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; + require_once DOL_DOCUMENT_ROOT.'/datapolicy/class/datapolicy.class.php'; DataPolicy::sendMailDataPolicyAdherent($object); } elseif ($parameters['currentcontext'] == 'thirdpartycard' && $action == 'send_datapolicy') { $object->fetch(GETPOST('socid')); - require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; - require_once DOL_DOCUMENT_ROOT . '/datapolicy/class/datapolicy.class.php'; + require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; + require_once DOL_DOCUMENT_ROOT.'/datapolicy/class/datapolicy.class.php'; DataPolicy::sendMailDataPolicyCompany($object); } @@ -278,7 +278,7 @@ class ActionsDatapolicy /* print_r($parameters); print_r($object); echo "action: " . $action; */ if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) { // do something only for the context 'somecontext1' or 'somecontext2' - $this->resprints = ''; + $this->resprints = ''; } if (!$error) { @@ -308,7 +308,7 @@ class ActionsDatapolicy $ret = 0; $deltemp = array(); - dol_syslog(get_class($this) . '::executeHooks action=' . $action); + dol_syslog(get_class($this).'::executeHooks action='.$action); /* print_r($parameters); print_r($object); echo "action: " . $action; */ if (in_array($parameters['currentcontext'], array('somecontext1', 'somecontext2'))) { // do something only for the context 'somecontext1' or 'somecontext2' @@ -332,10 +332,10 @@ class ActionsDatapolicy global $conf, $user, $langs; $langs->load('datapolicy@datapolicy'); - if (! empty($conf->global->DATAPOLICIES_ENABLE_EMAILS)) + if (!empty($conf->global->DATAPOLICIES_ENABLE_EMAILS)) { - $dialog = '
    '.$langs->trans("LinkedToDolibarrThirdParty").''.$company->getNomUrl(1).'
    '.$langs->trans("Zip").' / '.$langs->trans("Town").''; - print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$object->zip), 'zipcode', array('town','selectcountry_id','state_id'), 6); + print $formcompany->select_ziptown((isset($_POST["zipcode"]) ? $_POST["zipcode"] : $object->zip), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6); print ' '; - print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$object->town), 'town', array('zipcode','selectcountry_id','state_id')); + print $formcompany->select_ziptown((isset($_POST["town"]) ? $_POST["town"] : $object->town), 'town', array('zipcode', 'selectcountry_id', 'state_id')); print '
    '.$langs->trans('Country').''; - print $form->select_country((!empty($object->country_id)?$object->country_id:$mysoc->country_code), 'country_id'); + print $form->select_country((!empty($object->country_id) ? $object->country_id : $mysoc->country_code), 'country_id'); if ($user->admin) { print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); } @@ -634,43 +634,43 @@ if (!empty($id) && $action != 'edit') // Print form confirm print $formconfirm; - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref='
    '; + $morehtmlref = '
    '; // Project - if (! empty($conf->projet->enabled)) + if (!empty($conf->projet->enabled)) { $langs->load("projects"); - $morehtmlref.=$langs->trans('Project') . ' '; + $morehtmlref .= $langs->trans('Project').' '; if ($user->rights->don->creer) { if ($action != 'classify') { - $morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; + $morehtmlref .= ''.img_edit($langs->transnoentitiesnoconv('SetProject')).' : '; } if ($action == 'classify') { //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1, 0, 'maxwidth500'); - $morehtmlref.=''; - $morehtmlref.='
    '; + $morehtmlref .= '
    '; + $morehtmlref .= ''; + $morehtmlref .= ''; + $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1, 0, 'maxwidth500'); + $morehtmlref .= ''; + $morehtmlref .= '
    '; } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); } } else { - if (! empty($object->fk_project)) { + if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); - $morehtmlref.=''; - $morehtmlref.=$proj->ref; - $morehtmlref.=''; + $morehtmlref .= ''; + $morehtmlref .= $proj->ref; + $morehtmlref .= ''; } else { - $morehtmlref.=''; + $morehtmlref .= ''; } } } - $morehtmlref.='
    '; + $morehtmlref .= '
    '; dol_banner_tab($object, 'rowid', $linkback, 1, 'rowid', 'ref', $morehtmlref); @@ -696,8 +696,8 @@ if (!empty($id) && $action != 'edit') print '
    '.$langs->trans("LinkedToDolibarrThirdParty").''.$company->getNomUrl(1).'
    '.$langs->trans('Amount').''.price($object->amount, 0, $ print '
    '.$langs->trans('Note').''.nl2br($object->note_public).'
    '; $disable_delete = 0; $sql = 'SELECT d.rowid as did, d.paid, d.amount as d_amount, pd.amount'; -$sql.= ' FROM '.MAIN_DB_PREFIX.'payment_donation as pd,'.MAIN_DB_PREFIX.'don as d'; -$sql.= ' WHERE pd.fk_donation = d.rowid'; -$sql.= ' AND d.entity = '.$conf->entity; -$sql.= ' AND pd.rowid = '.$id; +$sql .= ' FROM '.MAIN_DB_PREFIX.'payment_donation as pd,'.MAIN_DB_PREFIX.'don as d'; +$sql .= ' WHERE pd.fk_donation = d.rowid'; +$sql .= ' AND d.entity = '.$conf->entity; +$sql .= ' AND pd.rowid = '.$id; dol_syslog("don/payment/card.php", LOG_DEBUG); -$resql=$db->query($sql); +$resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); @@ -286,7 +286,7 @@ if (empty($action)) { if ($user->rights->don->supprimer) { - if (! $disable_delete) + if (!$disable_delete) { print ''.$langs->trans('Delete').''; } diff --git a/htdocs/don/stats/index.php b/htdocs/don/stats/index.php index 182f7697601..46b0d93d564 100644 --- a/htdocs/don/stats/index.php +++ b/htdocs/don/stats/index.php @@ -29,11 +29,11 @@ require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/don/class/donstats.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; -$WIDTH=DolGraph::getDefaultGraphSizeForStats('width'); -$HEIGHT=DolGraph::getDefaultGraphSizeForStats('height'); +$WIDTH = DolGraph::getDefaultGraphSizeForStats('width'); +$HEIGHT = DolGraph::getDefaultGraphSizeForStats('height'); -$userid=GETPOST('userid', 'int'); -$socid=GETPOST('socid', 'int'); +$userid = GETPOST('userid', 'int'); +$socid = GETPOST('socid', 'int'); // Security check if ($user->socid > 0) { @@ -41,21 +41,21 @@ if ($user->socid > 0) $socid = $user->socid; } -$nowyear=strftime("%Y", dol_now()); -$year = GETPOST('year')>0?GETPOST('year'):$nowyear; +$nowyear = strftime("%Y", dol_now()); +$year = GETPOST('year') > 0 ?GETPOST('year') : $nowyear; //$startyear=$year-2; -$startyear=$year-1; -$endyear=$year; +$startyear = $year - 1; +$endyear = $year; // Load translation files required by the page -$langs->loadLangs(array("companies","other","sendings")); +$langs->loadLangs(array("companies", "other", "sendings")); /* * View */ -$form=new Form($db); +$form = new Form($db); llxHeader(); @@ -64,7 +64,7 @@ print load_fiche_titre($langs->trans("StatisticsOfSendings"), $mesg); dol_mkdir($dir); -$stats = new DonationStats($db, $socid, '', ($userid>0?$userid:0)); +$stats = new DonationStats($db, $socid, '', ($userid > 0 ? $userid : 0)); // Build graphic number of object $data = $stats->getNbByMonthWithPrevYear($endyear, $startyear); @@ -83,13 +83,13 @@ else $px1 = new DolGraph(); $mesg = $px1->isGraphKo(); -if (! $mesg) +if (!$mesg) { $px1->SetData($data); - $i=$startyear;$legend=array(); + $i = $startyear; $legend = array(); while ($i <= $endyear) { - $legend[]=$i; + $legend[] = $i; $i++; } $px1->SetLegend($legend); @@ -100,7 +100,7 @@ if (! $mesg) $px1->SetYLabel($langs->trans("NbOfSendings")); $px1->SetShading(3); $px1->SetHorizTickIncrement(1); - $px1->mode='depth'; + $px1->mode = 'depth'; $px1->SetTitle($langs->trans("NumberOfShipmentsByMonth")); $px1->draw($filenamenb, $fileurlnb); @@ -188,22 +188,22 @@ if (! $mesg) // Show array $data = $stats->getAllByYear(); -$arrayyears=array(); -foreach($data as $val) { - if (! empty($val['year'])) { - $arrayyears[$val['year']]=$val['year']; +$arrayyears = array(); +foreach ($data as $val) { + if (!empty($val['year'])) { + $arrayyears[$val['year']] = $val['year']; } } -if (! count($arrayyears)) $arrayyears[$nowyear]=$nowyear; +if (!count($arrayyears)) $arrayyears[$nowyear] = $nowyear; -$h=0; +$h = 0; $head = array(); -$head[$h][0] = DOL_URL_ROOT . '/don/stats/index.php'; +$head[$h][0] = DOL_URL_ROOT.'/don/stats/index.php'; $head[$h][1] = $langs->trans("ByMonthYear"); $head[$h][2] = 'byyear'; $h++; -$type='donation_stats'; +$type = 'donation_stats'; complete_head_from_modules($conf, $langs, null, $head, $h, $type); @@ -231,8 +231,8 @@ print '
    '; print '
  • '.$langs->trans("Year").''; - if (! in_array($year, $arrayyears)) $arrayyears[$year]=$year; - if (! in_array($nowyear, $arrayyears)) $arrayyears[$nowyear]=$nowyear; + if (!in_array($year, $arrayyears)) $arrayyears[$year] = $year; + if (!in_array($nowyear, $arrayyears)) $arrayyears[$nowyear] = $nowyear; arsort($arrayyears); print $form->selectarray('year', $arrayyears, $year, 0); print '
    '.$langs->trans("NbOfSendings").''.$langs->trans("AmountAverage").'
    '.price(price2num($val['total'],'MT'),1).''.price(price2num($val['avg'],'MT'),1).'
    '; diff --git a/htdocs/don/tpl/linkedobjectblock.tpl.php b/htdocs/don/tpl/linkedobjectblock.tpl.php index 94a676f964d..18c410ba4d0 100644 --- a/htdocs/don/tpl/linkedobjectblock.tpl.php +++ b/htdocs/don/tpl/linkedobjectblock.tpl.php @@ -29,13 +29,13 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock']; $langs->load("donations"); -$total=0; -$ilink=0; -foreach($linkedObjectBlock as $key => $objectlink) { +$total = 0; +$ilink = 0; +foreach ($linkedObjectBlock as $key => $objectlink) { $ilink++; - $trclass='oddeven'; - if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; + $trclass = 'oddeven'; + if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass .= ' liste_sub_total'; print ''; print ''.$langs->trans("Donation").''; print ''.$objectlink->getNomUrl(1).''; @@ -52,7 +52,7 @@ print ''; if (count($linkedObjectBlock) > 1) { ?> - + trans("Total"); ?> diff --git a/htdocs/ecm/ajax/ecmdatabase.php b/htdocs/ecm/ajax/ecmdatabase.php index 754f68a9930..9f4820cd723 100644 --- a/htdocs/ecm/ajax/ecmdatabase.php +++ b/htdocs/ecm/ajax/ecmdatabase.php @@ -20,15 +20,15 @@ * \brief File to build ecm database */ -if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Disables token renewal -if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); -if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Disables token renewal +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); +if (!defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -$action = GETPOST('action', 'alpha'); +$action = GETPOST('action', 'alpha'); $element = GETPOST('element', 'alpha'); /* @@ -40,13 +40,13 @@ top_httphead(); //print ''."\n"; // Load original field value -if (isset($action) && ! empty($action)) +if (isset($action) && !empty($action)) { - $error=0; + $error = 0; - if ($action == 'build' && ! empty($element)) + if ($action == 'build' && !empty($element)) { - require_once DOL_DOCUMENT_ROOT . '/ecm/class/ecmdirectory.class.php'; + require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; $ecmdirstatic = new EcmDirectory($db); $ecmdirtmp = new EcmDirectory($db); @@ -54,57 +54,57 @@ if (isset($action) && ! empty($action)) // This part of code is same than into file index.php for action refreshmanual TODO Remove duplicate clearstatcache(); - $diroutputslash=str_replace('\\', '/', $conf->$element->dir_output); - $diroutputslash.='/'; + $diroutputslash = str_replace('\\', '/', $conf->$element->dir_output); + $diroutputslash .= '/'; // Scan directory tree on disk - $disktree=dol_dir_list($conf->$element->dir_output, 'directories', 1, '', array('^temp$'), '', '', 0); + $disktree = dol_dir_list($conf->$element->dir_output, 'directories', 1, '', array('^temp$'), '', '', 0); // Scan directory tree in database - $sqltree=$ecmdirstatic->get_full_arbo(0); + $sqltree = $ecmdirstatic->get_full_arbo(0); - $adirwascreated=0; + $adirwascreated = 0; // Now we compare both trees to complete missing trees into database //var_dump($disktree); //var_dump($sqltree); - foreach($disktree as $dirdesc) // Loop on tree onto disk + foreach ($disktree as $dirdesc) // Loop on tree onto disk { set_time_limit(0); // To force restarts the timeout counter from zero - $dirisindatabase=0; - foreach($sqltree as $dirsqldesc) + $dirisindatabase = 0; + foreach ($sqltree as $dirsqldesc) { if ($conf->$element->dir_output.'/'.$dirsqldesc['fullrelativename'] == $dirdesc['fullname']) { - $dirisindatabase=1; + $dirisindatabase = 1; break; } } - if (! $dirisindatabase) + if (!$dirisindatabase) { - $txt="Directory found on disk ".$dirdesc['fullname'].", not found into database so we add it"; + $txt = "Directory found on disk ".$dirdesc['fullname'].", not found into database so we add it"; dol_syslog($txt); // We must first find the fk_parent of directory to create $dirdesc['fullname'] - $fk_parent=-1; - $relativepathmissing=str_replace($diroutputslash, '', $dirdesc['fullname']); - $relativepathtosearchparent=$relativepathmissing; + $fk_parent = -1; + $relativepathmissing = str_replace($diroutputslash, '', $dirdesc['fullname']); + $relativepathtosearchparent = $relativepathmissing; //dol_syslog("Try to find parent id for directory ".$relativepathtosearchparent); if (preg_match('/\//', $relativepathtosearchparent)) //while (preg_match('/\//',$relativepathtosearchparent)) { - $relativepathtosearchparent=preg_replace('/\/[^\/]*$/', '', $relativepathtosearchparent); - $txt="Is relative parent path ".$relativepathtosearchparent." for ".$relativepathmissing." found in sql tree ?"; + $relativepathtosearchparent = preg_replace('/\/[^\/]*$/', '', $relativepathtosearchparent); + $txt = "Is relative parent path ".$relativepathtosearchparent." for ".$relativepathmissing." found in sql tree ?"; dol_syslog($txt); //print $txt." -> "; - $parentdirisindatabase=0; - foreach($sqltree as $dirsqldesc) + $parentdirisindatabase = 0; + foreach ($sqltree as $dirsqldesc) { if ($dirsqldesc['fullrelativename'] == $relativepathtosearchparent) { - $parentdirisindatabase=$dirsqldesc['id']; + $parentdirisindatabase = $dirsqldesc['id']; break; } } @@ -112,7 +112,7 @@ if (isset($action) && ! empty($action)) { dol_syslog("Yes with id ".$parentdirisindatabase); //print "Yes with id ".$parentdirisindatabase."
    \n"; - $fk_parent=$parentdirisindatabase; + $fk_parent = $parentdirisindatabase; //break; // We found parent, we can stop the while loop } else @@ -124,7 +124,7 @@ if (isset($action) && ! empty($action)) else { dol_syslog("Parent is root"); - $fk_parent=0; // Parent is root + $fk_parent = 0; // Parent is root } if ($fk_parent >= 0) @@ -134,20 +134,20 @@ if (isset($action) && ! empty($action)) $ecmdirtmp->description = ''; $ecmdirtmp->fk_parent = $fk_parent; - $txt="We create directory ".$ecmdirtmp->label." with parent ".$fk_parent; + $txt = "We create directory ".$ecmdirtmp->label." with parent ".$fk_parent; dol_syslog($txt); //print $txt."
    \n"; $id = $ecmdirtmp->create($user); if ($id > 0) { - $newdirsql=array('id'=>$id, + $newdirsql = array('id'=>$id, 'id_mere'=>$ecmdirtmp->fk_parent, 'label'=>$ecmdirtmp->label, 'description'=>$ecmdirtmp->description, 'fullrelativename'=>$relativepathmissing); - $sqltree[]=$newdirsql; // We complete fulltree for following loops + $sqltree[] = $newdirsql; // We complete fulltree for following loops //var_dump($sqltree); - $adirwascreated=1; + $adirwascreated = 1; } else { @@ -155,7 +155,7 @@ if (isset($action) && ! empty($action)) } } else { - $txt="Parent of ".$dirdesc['fullname']." not found"; + $txt = "Parent of ".$dirdesc['fullname']." not found"; dol_syslog($txt); //print $txt."
    \n"; } @@ -163,19 +163,19 @@ if (isset($action) && ! empty($action)) } // Loop now on each sql tree to check if dir exists - foreach($sqltree as $dirdesc) // Loop on each sqltree to check dir is on disk + foreach ($sqltree as $dirdesc) // Loop on each sqltree to check dir is on disk { - $dirtotest=$conf->$element->dir_output.'/'.$dirdesc['fullrelativename']; - if (! dol_is_dir($dirtotest)) + $dirtotest = $conf->$element->dir_output.'/'.$dirdesc['fullrelativename']; + if (!dol_is_dir($dirtotest)) { - $mesg.=$dirtotest." not found onto disk. We delete from database dir with id=".$dirdesc['id']."
    \n"; - $ecmdirtmp->id=$dirdesc['id']; + $mesg .= $dirtotest." not found onto disk. We delete from database dir with id=".$dirdesc['id']."
    \n"; + $ecmdirtmp->id = $dirdesc['id']; $ecmdirtmp->delete($user, 'databaseonly'); //exit; } } - $sql="UPDATE ".MAIN_DB_PREFIX."ecm_directories set cachenbofdoc = -1 WHERE cachenbofdoc < 0"; // If pb into cahce counting, we set to value -1 = "unknown" + $sql = "UPDATE ".MAIN_DB_PREFIX."ecm_directories set cachenbofdoc = -1 WHERE cachenbofdoc < 0"; // If pb into cahce counting, we set to value -1 = "unknown" dol_syslog("sql = ".$sql); $db->query($sql); } diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index c8c67f82b9c..3bddd70bfaa 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -30,7 +30,7 @@ class EcmDirectory // extends CommonObject /** * @var string ID to identify managed object */ - public $element='ecm_directories'; + public $element = 'ecm_directories'; /** * @var string Name of table without prefix where object is stored @@ -62,7 +62,7 @@ class EcmDirectory // extends CommonObject */ public $description; - public $cachenbofdoc=-1; // By default cache initialized with value 'not calculated' + public $cachenbofdoc = -1; // By default cache initialized with value 'not calculated' public $date_c; public $date_m; @@ -81,11 +81,11 @@ class EcmDirectory // extends CommonObject */ public $ref; - public $cats=array(); - public $motherof=array(); + public $cats = array(); + public $motherof = array(); - public $forbiddenchars = array('<','>',':','/','\\','?','*','|','"'); - public $forbiddencharsdir = array('<','>',':','?','*','|','"'); + public $forbiddenchars = array('<', '>', ':', '/', '\\', '?', '*', '|', '"'); + public $forbiddencharsdir = array('<', '>', ':', '?', '*', '|', '"'); public $full_arbo_loaded; @@ -122,46 +122,46 @@ class EcmDirectory // extends CommonObject { global $conf, $langs; - $error=0; - $now=dol_now(); + $error = 0; + $now = dol_now(); // Clean parameters - $this->label=dol_sanitizeFileName(trim($this->label)); - $this->fk_parent=trim($this->fk_parent); - $this->description=trim($this->description); - $this->date_c=$now; - $this->fk_user_c=$user->id; - if ($this->fk_parent <= 0) $this->fk_parent=0; + $this->label = dol_sanitizeFileName(trim($this->label)); + $this->fk_parent = trim($this->fk_parent); + $this->description = trim($this->description); + $this->date_c = $now; + $this->fk_user_c = $user->id; + if ($this->fk_parent <= 0) $this->fk_parent = 0; // Check if same directory does not exists with this name - $relativepath=$this->label; + $relativepath = $this->label; if ($this->fk_parent) { $parent = new EcmDirectory($this->db); $parent->fetch($this->fk_parent); - $relativepath=$parent->getRelativePath().$relativepath; + $relativepath = $parent->getRelativePath().$relativepath; } - $relativepath=preg_replace('/([\/])+/i', '/', $relativepath); // Avoid duplicate / or \ + $relativepath = preg_replace('/([\/])+/i', '/', $relativepath); // Avoid duplicate / or \ //print $relativepath.'
    '; $cat = new EcmDirectory($this->db); $cate_arbo = $cat->get_full_arbo(1); - $pathfound=0; + $pathfound = 0; foreach ($cate_arbo as $key => $categ) { - $path=str_replace($this->forbiddencharsdir, '_', $categ['fullrelativename']); + $path = str_replace($this->forbiddencharsdir, '_', $categ['fullrelativename']); //print $relativepath.' - '.$path.'
    '; if ($path == $relativepath) { - $pathfound=1; + $pathfound = 1; break; } } if ($pathfound) { - $this->error="ErrorDirAlreadyExists"; + $this->error = "ErrorDirAlreadyExists"; dol_syslog(get_class($this)."::create ".$this->error, LOG_WARNING); return -1; } @@ -171,39 +171,39 @@ class EcmDirectory // extends CommonObject // Insert request $sql = "INSERT INTO ".MAIN_DB_PREFIX."ecm_directories("; - $sql.= "label,"; - $sql.= "entity,"; - $sql.= "fk_parent,"; - $sql.= "description,"; - $sql.= "cachenbofdoc,"; - $sql.= "date_c,"; - $sql.= "fk_user_c"; - $sql.= ") VALUES ("; - $sql.= " '".$this->db->escape($this->label)."',"; - $sql.= " '".$this->db->escape($conf->entity)."',"; - $sql.= " '".$this->db->escape($this->fk_parent)."',"; - $sql.= " '".$this->db->escape($this->description)."',"; - $sql.= " ".$this->cachenbofdoc.","; - $sql.= " '".$this->db->idate($this->date_c)."',"; - $sql.= " '".$this->db->escape($this->fk_user_c)."'"; - $sql.= ")"; + $sql .= "label,"; + $sql .= "entity,"; + $sql .= "fk_parent,"; + $sql .= "description,"; + $sql .= "cachenbofdoc,"; + $sql .= "date_c,"; + $sql .= "fk_user_c"; + $sql .= ") VALUES ("; + $sql .= " '".$this->db->escape($this->label)."',"; + $sql .= " '".$this->db->escape($conf->entity)."',"; + $sql .= " '".$this->db->escape($this->fk_parent)."',"; + $sql .= " '".$this->db->escape($this->description)."',"; + $sql .= " ".$this->cachenbofdoc.","; + $sql .= " '".$this->db->idate($this->date_c)."',"; + $sql .= " '".$this->db->escape($this->fk_user_c)."'"; + $sql .= ")"; dol_syslog(get_class($this)."::create", LOG_DEBUG); - $resql=$this->db->query($sql); + $resql = $this->db->query($sql); if ($resql) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."ecm_directories"); - $dir=$conf->ecm->dir_output.'/'.$this->getRelativePath(); - $result=dol_mkdir($dir); - if ($result < 0) { $error++; $this->error="ErrorFailedToCreateDir"; } + $dir = $conf->ecm->dir_output.'/'.$this->getRelativePath(); + $result = dol_mkdir($dir); + if ($result < 0) { $error++; $this->error = "ErrorFailedToCreateDir"; } // Call trigger - $result=$this->call_trigger('MYECMDIR_CREATE', $user); + $result = $this->call_trigger('MYECMDIR_CREATE', $user); if ($result < 0) { $error++; } // End call triggers - if (! $error) + if (!$error) { $this->db->commit(); return $this->id; @@ -216,7 +216,7 @@ class EcmDirectory // extends CommonObject } else { - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); $this->db->rollback(); return -1; } @@ -234,12 +234,12 @@ class EcmDirectory // extends CommonObject { global $conf, $langs; - $error=0; + $error = 0; // Clean parameters - $this->label=trim($this->label); - $this->fk_parent=trim($this->fk_parent); - $this->description=trim($this->description); + $this->label = trim($this->label); + $this->fk_parent = trim($this->fk_parent); + $this->description = trim($this->description); // Check parameters // Put here code to add control on parameters values @@ -248,28 +248,28 @@ class EcmDirectory // extends CommonObject // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."ecm_directories SET"; - $sql.= " label='".$this->db->escape($this->label)."',"; - $sql.= " fk_parent='".$this->db->escape($this->fk_parent)."',"; - $sql.= " description='".$this->db->escape($this->description)."'"; - $sql.= " WHERE rowid=".$this->id; + $sql .= " label='".$this->db->escape($this->label)."',"; + $sql .= " fk_parent='".$this->db->escape($this->fk_parent)."',"; + $sql .= " description='".$this->db->escape($this->description)."'"; + $sql .= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::update", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) + if (!$resql) { $error++; - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); } - if (! $error && ! $notrigger) + if (!$error && !$notrigger) { // Call trigger - $result=$this->call_trigger('MYECMDIR_MODIFY', $user); + $result = $this->call_trigger('MYECMDIR_MODIFY', $user); if ($result < 0) { $error++; } // End call triggers } - if (! $error) + if (!$error) { $this->db->commit(); return 1; @@ -292,15 +292,15 @@ class EcmDirectory // extends CommonObject { // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."ecm_directories SET"; - if (preg_match('/[0-9]+/', $value)) $sql.= " cachenbofdoc = ".(int) $value; - else $sql.= " cachenbofdoc = cachenbofdoc ".$value." 1"; - $sql.= " WHERE rowid = ".$this->id; + if (preg_match('/[0-9]+/', $value)) $sql .= " cachenbofdoc = ".(int) $value; + else $sql .= " cachenbofdoc = cachenbofdoc ".$value." 1"; + $sql .= " WHERE rowid = ".$this->id; dol_syslog(get_class($this)."::changeNbOfFiles", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) + if (!$resql) { - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); return -1; } else @@ -323,20 +323,20 @@ class EcmDirectory // extends CommonObject public function fetch($id) { $sql = "SELECT"; - $sql.= " t.rowid,"; - $sql.= " t.label,"; - $sql.= " t.fk_parent,"; - $sql.= " t.description,"; - $sql.= " t.cachenbofdoc,"; - $sql.= " t.fk_user_c,"; - $sql.= " t.fk_user_m,"; - $sql.= " t.date_c as date_c,"; - $sql.= " t.date_m as date_m"; - $sql.= " FROM ".MAIN_DB_PREFIX."ecm_directories as t"; - $sql.= " WHERE t.rowid = ".$id; + $sql .= " t.rowid,"; + $sql .= " t.label,"; + $sql .= " t.fk_parent,"; + $sql .= " t.description,"; + $sql .= " t.cachenbofdoc,"; + $sql .= " t.fk_user_c,"; + $sql .= " t.fk_user_m,"; + $sql .= " t.date_c as date_c,"; + $sql .= " t.date_m as date_m"; + $sql .= " FROM ".MAIN_DB_PREFIX."ecm_directories as t"; + $sql .= " WHERE t.rowid = ".$id; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); - $resql=$this->db->query($sql); + $resql = $this->db->query($sql); if ($resql) { $obj = $this->db->fetch_object($resql); @@ -357,11 +357,11 @@ class EcmDirectory // extends CommonObject $this->db->free($resql); - return $obj?1:0; + return $obj ? 1 : 0; } else { - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); return -1; } } @@ -380,29 +380,29 @@ class EcmDirectory // extends CommonObject global $conf, $langs; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $error=0; + $error = 0; - if ($mode != 'databaseonly') $relativepath=$this->getRelativePath(1); // Ex: dir1/dir2/dir3 + if ($mode != 'databaseonly') $relativepath = $this->getRelativePath(1); // Ex: dir1/dir2/dir3 - dol_syslog(get_class($this)."::delete remove directory id=".$this->id." mode=".$mode.(($mode == 'databaseonly')?'':' relativepath='.$relativepath)); + dol_syslog(get_class($this)."::delete remove directory id=".$this->id." mode=".$mode.(($mode == 'databaseonly') ? '' : ' relativepath='.$relativepath)); $this->db->begin(); $sql = "DELETE FROM ".MAIN_DB_PREFIX."ecm_directories"; - $sql.= " WHERE rowid=".$this->id; + $sql .= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) + if (!$resql) { $this->db->rollback(); - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); return -2; } else { // Call trigger - $result=$this->call_trigger('MYECMDIR_DELETE', $user); + $result = $this->call_trigger('MYECMDIR_DELETE', $user); if ($result < 0) { $this->db->rollback(); @@ -413,30 +413,30 @@ class EcmDirectory // extends CommonObject if ($mode != 'databaseonly') { - $file = $conf->ecm->dir_output . "/" . $relativepath; + $file = $conf->ecm->dir_output."/".$relativepath; if ($deletedirrecursive) { - $result=@dol_delete_dir_recursive($file, 0, 0); + $result = @dol_delete_dir_recursive($file, 0, 0); } else { - $result=@dol_delete_dir($file, 0); + $result = @dol_delete_dir($file, 0); } } - if ($result || ! @is_dir(dol_osencode($file))) + if ($result || !@is_dir(dol_osencode($file))) { $this->db->commit(); } else { - $this->error='ErrorFailToDeleteDir'; + $this->error = 'ErrorFailToDeleteDir'; dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR); $this->db->rollback(); $error++; } - if (! $error) return 1; + if (!$error) return 1; else return -1; } @@ -450,11 +450,11 @@ class EcmDirectory // extends CommonObject */ public function initAsSpecimen() { - $this->id=0; + $this->id = 0; - $this->label='MyDirectory'; - $this->fk_parent='0'; - $this->description='This is a directory'; + $this->label = 'MyDirectory'; + $this->fk_parent = '0'; + $this->description = 'This is a directory'; } @@ -472,24 +472,24 @@ class EcmDirectory // extends CommonObject { global $langs; - $result=''; + $result = ''; //$newref=str_replace('_',' ',$this->ref); - $newref=$this->ref; - $label=$langs->trans("ShowECMSection").': '.$newref; - $linkclose='"'.($more?' '.$more:'').' title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; + $newref = $this->ref; + $label = $langs->trans("ShowECMSection").': '.$newref; + $linkclose = '"'.($more ? ' '.$more : '').' title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkstart = 'picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1); - if ($withpicto != 2) $result.= ($max?dol_trunc($newref, $max, 'middle'):$newref); + if ($withpicto) $result .= img_object(($notooltip ? '' : $label), $this->picto, ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); + if ($withpicto != 2) $result .= ($max ?dol_trunc($newref, $max, 'middle') : $newref); $result .= $linkend; return $result; @@ -505,17 +505,17 @@ class EcmDirectory // extends CommonObject { $this->get_full_arbo($force); - $ret=''; - $idtosearch=$this->id; - $i=0; + $ret = ''; + $idtosearch = $this->id; + $i = 0; do { // Get index cursor in this->cats for id_mere - $cursorindex=-1; + $cursorindex = -1; foreach ($this->cats as $key => $val) { if ($this->cats[$key]['id'] == $idtosearch) { - $cursorindex=$key; + $cursorindex = $key; break; } } @@ -524,13 +524,13 @@ class EcmDirectory // extends CommonObject if ($cursorindex >= 0) { // Path is label sanitized (no space and no special char) and concatenated - $ret=dol_sanitizeFileName($this->cats[$cursorindex]['label']).'/'.$ret; + $ret = dol_sanitizeFileName($this->cats[$cursorindex]['label']).'/'.$ret; - $idtosearch=$this->cats[$cursorindex]['id_mere']; + $idtosearch = $this->cats[$cursorindex]['id_mere']; $i++; } } - while ($cursorindex >= 0 && ! empty($idtosearch) && $i < 100); // i avoid infinite loop + while ($cursorindex >= 0 && !empty($idtosearch) && $i < 100); // i avoid infinite loop return $ret; } @@ -546,22 +546,22 @@ class EcmDirectory // extends CommonObject // phpcs:enable global $conf; - $this->motherof=array(); + $this->motherof = array(); // Load array[child]=parent $sql = "SELECT fk_parent as id_parent, rowid as id_son"; - $sql.= " FROM ".MAIN_DB_PREFIX."ecm_directories"; - $sql.= " WHERE fk_parent != 0"; - $sql.= " AND entity = ".$conf->entity; + $sql .= " FROM ".MAIN_DB_PREFIX."ecm_directories"; + $sql .= " WHERE fk_parent != 0"; + $sql .= " AND entity = ".$conf->entity; dol_syslog(get_class($this)."::load_motherof", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { // This assignment in condition is not a bug. It allows walking the results. - while ($obj=$this->db->fetch_object($resql)) + while ($obj = $this->db->fetch_object($resql)) { - $this->motherof[$obj->id_son]=$obj->id_parent; + $this->motherof[$obj->id_son] = $obj->id_parent; } return 1; } @@ -625,7 +625,7 @@ class EcmDirectory // extends CommonObject // phpcs:enable global $conf; - if (empty($force) && ! empty($this->full_arbo_loaded)) + if (empty($force) && !empty($this->full_arbo_loaded)) { return $this->cats; } @@ -635,29 +635,29 @@ class EcmDirectory // extends CommonObject // Charge tableau des categories $sql = "SELECT c.rowid as rowid, c.label as label,"; - $sql.= " c.description as description, c.cachenbofdoc,"; - $sql.= " c.fk_user_c,"; - $sql.= " c.date_c,"; - $sql.= " u.login as login_c,"; - $sql.= " ca.rowid as rowid_fille"; - $sql.= " FROM ".MAIN_DB_PREFIX."user as u, ".MAIN_DB_PREFIX."ecm_directories as c"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."ecm_directories as ca"; - $sql.= " ON c.rowid = ca.fk_parent"; - $sql.= " WHERE c.fk_user_c = u.rowid"; - $sql.= " AND c.entity = ".$conf->entity; - $sql.= " ORDER BY c.label, c.rowid"; + $sql .= " c.description as description, c.cachenbofdoc,"; + $sql .= " c.fk_user_c,"; + $sql .= " c.date_c,"; + $sql .= " u.login as login_c,"; + $sql .= " ca.rowid as rowid_fille"; + $sql .= " FROM ".MAIN_DB_PREFIX."user as u, ".MAIN_DB_PREFIX."ecm_directories as c"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."ecm_directories as ca"; + $sql .= " ON c.rowid = ca.fk_parent"; + $sql .= " WHERE c.fk_user_c = u.rowid"; + $sql .= " AND c.entity = ".$conf->entity; + $sql .= " ORDER BY c.label, c.rowid"; dol_syslog(get_class($this)."::get_full_arbo", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { $this->cats = array(); - $i=0; + $i = 0; // This assignment in condition is not a bug. It allows walking the results. while ($obj = $this->db->fetch_object($resql)) { $this->cats[$obj->rowid]['id'] = $obj->rowid; - $this->cats[$obj->rowid]['id_mere'] = (isset($this->motherof[$obj->rowid])?$this->motherof[$obj->rowid]:''); + $this->cats[$obj->rowid]['id_mere'] = (isset($this->motherof[$obj->rowid]) ? $this->motherof[$obj->rowid] : ''); $this->cats[$obj->rowid]['label'] = $obj->label; $this->cats[$obj->rowid]['description'] = $obj->description; $this->cats[$obj->rowid]['cachenbofdoc'] = $obj->cachenbofdoc; @@ -665,18 +665,18 @@ class EcmDirectory // extends CommonObject $this->cats[$obj->rowid]['fk_user_c'] = $obj->fk_user_c; $this->cats[$obj->rowid]['login_c'] = $obj->login_c; - if (! empty($obj->rowid_fille)) + if (!empty($obj->rowid_fille)) { if (isset($this->cats[$obj->rowid]['id_children']) && is_array($this->cats[$obj->rowid]['id_children'])) { - $newelempos=count($this->cats[$obj->rowid]['id_children']); + $newelempos = count($this->cats[$obj->rowid]['id_children']); //print "this->cats[$i]['id_children'] est deja un tableau de $newelem elements
    "; - $this->cats[$obj->rowid]['id_children'][$newelempos]=$obj->rowid_fille; + $this->cats[$obj->rowid]['id_children'][$newelempos] = $obj->rowid_fille; } else { //print "this->cats[".$obj->rowid."]['id_children'] n'est pas encore un tableau
    "; - $this->cats[$obj->rowid]['id_children']=array($obj->rowid_fille); + $this->cats[$obj->rowid]['id_children'] = array($obj->rowid_fille); } } $i++; @@ -689,14 +689,14 @@ class EcmDirectory // extends CommonObject } // We add properties fullxxx to all elements - foreach($this->cats as $key => $val) + foreach ($this->cats as $key => $val) { if (isset($motherof[$key])) continue; $this->build_path_from_id_categ($key, 0); } - $this->cats=dol_sort_array($this->cats, 'fulllabel', 'asc', true, false); - $this->full_arbo_loaded=1; + $this->cats = dol_sort_array($this->cats, 'fulllabel', 'asc', true, false); + $this->full_arbo_loaded = 1; return $this->cats; } @@ -714,30 +714,30 @@ class EcmDirectory // extends CommonObject { // phpcs:enable // Define fullpath - if (! empty($this->cats[$id_categ]['id_mere'])) + if (!empty($this->cats[$id_categ]['id_mere'])) { - $this->cats[$id_categ]['fullpath'] =$this->cats[$this->cats[$id_categ]['id_mere']]['fullpath']; - $this->cats[$id_categ]['fullpath'].='_'.$id_categ; - $this->cats[$id_categ]['fullrelativename'] =$this->cats[$this->cats[$id_categ]['id_mere']]['fullrelativename']; - $this->cats[$id_categ]['fullrelativename'].='/'.$this->cats[$id_categ]['label']; - $this->cats[$id_categ]['fulllabel'] =$this->cats[$this->cats[$id_categ]['id_mere']]['fulllabel']; - $this->cats[$id_categ]['fulllabel'].=' >> '.$this->cats[$id_categ]['label']; + $this->cats[$id_categ]['fullpath'] = $this->cats[$this->cats[$id_categ]['id_mere']]['fullpath']; + $this->cats[$id_categ]['fullpath'] .= '_'.$id_categ; + $this->cats[$id_categ]['fullrelativename'] = $this->cats[$this->cats[$id_categ]['id_mere']]['fullrelativename']; + $this->cats[$id_categ]['fullrelativename'] .= '/'.$this->cats[$id_categ]['label']; + $this->cats[$id_categ]['fulllabel'] = $this->cats[$this->cats[$id_categ]['id_mere']]['fulllabel']; + $this->cats[$id_categ]['fulllabel'] .= ' >> '.$this->cats[$id_categ]['label']; } else { - $this->cats[$id_categ]['fullpath']='_'.$id_categ; - $this->cats[$id_categ]['fullrelativename']=$this->cats[$id_categ]['label']; - $this->cats[$id_categ]['fulllabel']=$this->cats[$id_categ]['label']; + $this->cats[$id_categ]['fullpath'] = '_'.$id_categ; + $this->cats[$id_categ]['fullrelativename'] = $this->cats[$id_categ]['label']; + $this->cats[$id_categ]['fulllabel'] = $this->cats[$id_categ]['label']; } // We count number of _ to have level (we use strlen that is faster than dol_strlen) - $this->cats[$id_categ]['level']=strlen(preg_replace('/([^_])/i', '', $this->cats[$id_categ]['fullpath'])); + $this->cats[$id_categ]['level'] = strlen(preg_replace('/([^_])/i', '', $this->cats[$id_categ]['fullpath'])); // Traite ces enfants $protection++; - if ($protection > 20) return; // On ne traite pas plus de 20 niveaux + if ($protection > 20) return; // On ne traite pas plus de 20 niveaux if (isset($this->cats[$id_categ]['id_children']) && is_array($this->cats[$id_categ]['id_children'])) { - foreach($this->cats[$id_categ]['id_children'] as $key => $val) + foreach ($this->cats[$id_categ]['id_children'] as $key => $val) { $this->build_path_from_id_categ($val, $protection); } @@ -755,34 +755,34 @@ class EcmDirectory // extends CommonObject global $conf; include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $dir=$conf->ecm->dir_output.'/'.$this->getRelativePath(); - $filelist=dol_dir_list($dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'); + $dir = $conf->ecm->dir_output.'/'.$this->getRelativePath(); + $filelist = dol_dir_list($dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'); // Test if filelist is in database // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."ecm_directories SET"; - $sql.= " cachenbofdoc = '".count($filelist)."'"; + $sql .= " cachenbofdoc = '".count($filelist)."'"; if (empty($all)) // By default { - $sql.= " WHERE rowid = ".$this->id; + $sql .= " WHERE rowid = ".$this->id; } else { - $sql.= " WHERE entity = ".$conf->entity; + $sql .= " WHERE entity = ".$conf->entity; } dol_syslog(get_class($this)."::refreshcachenboffile", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - $this->cachenbofdoc=count($filelist); + $this->cachenbofdoc = count($filelist); return $this->cachenbofdoc; } else { - $this->error="Error ".$this->db->lasterror(); + $this->error = "Error ".$this->db->lasterror(); return -1; } } @@ -803,19 +803,19 @@ class EcmDirectory // extends CommonObject public function call_trigger($triggerName, $user) { // phpcs:enable - global $langs,$conf; + global $langs, $conf; - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($this->db); - $result=$interface->run_triggers($triggerName, $this, $user, $langs, $conf); + include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; + $interface = new Interfaces($this->db); + $result = $interface->run_triggers($triggerName, $this, $user, $langs, $conf); if ($result < 0) { if (!empty($this->errors)) { - $this->errors=array_merge($this->errors, $interface->errors); + $this->errors = array_merge($this->errors, $interface->errors); } else { - $this->errors=$interface->errors; + $this->errors = $interface->errors; } } return $result; diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 01f6228ad83..0c7c4c4cebb 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -27,7 +27,7 @@ */ // Put here all includes required by your class file -require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; /** * Class to manage ECM files @@ -60,7 +60,7 @@ class EcmFiles extends CommonObject */ public $label; - public $share; // hash for file sharing, empty by default (example: getRandomPassword(true)) + public $share; // hash for file sharing, empty by default (example: getRandomPassword(true)) /** * @var int Entity @@ -79,7 +79,7 @@ class EcmFiles extends CommonObject public $keywords; public $cover; public $position; - public $gen_or_uploaded; // can be 'generated', 'uploaded', 'unknown' + public $gen_or_uploaded; // can be 'generated', 'uploaded', 'unknown' public $extraparams; public $date_c = ''; public $date_m = ''; @@ -142,7 +142,7 @@ class EcmFiles extends CommonObject } if (isset($this->filepath)) { $this->filepath = trim($this->filepath); - $this->filepath = preg_replace('/[\\/]+$/', '', $this->filepath); // Remove last / + $this->filepath = preg_replace('/[\\/]+$/', '', $this->filepath); // Remove last / } if (isset($this->fullpath_orig)) { $this->fullpath_orig = trim($this->fullpath_orig); @@ -179,20 +179,20 @@ class EcmFiles extends CommonObject // If ref not defined $ref = ''; - if (! empty($this->ref)) + if (!empty($this->ref)) { - $ref=$this->ref; + $ref = $this->ref; } else { include_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; $ref = dol_hash($this->filepath.'/'.$this->filename, 3); } - $maxposition=0; + $maxposition = 0; if (empty($this->position)) // Get max used { - $sql = "SELECT MAX(position) as maxposition FROM " . MAIN_DB_PREFIX . $this->table_element; - $sql.= " WHERE filepath ='".$this->db->escape($this->filepath)."'"; + $sql = "SELECT MAX(position) as maxposition FROM ".MAIN_DB_PREFIX.$this->table_element; + $sql .= " WHERE filepath ='".$this->db->escape($this->filepath)."'"; $resql = $this->db->query($sql); if ($resql) @@ -202,14 +202,14 @@ class EcmFiles extends CommonObject } else { - $this->errors[] = 'Error ' . $this->db->lasterror(); + $this->errors[] = 'Error '.$this->db->lasterror(); return --$error; } - $maxposition=$maxposition+1; + $maxposition = $maxposition + 1; } else { - $maxposition=$this->position; + $maxposition = $this->position; } // Check parameters @@ -218,75 +218,75 @@ class EcmFiles extends CommonObject $this->errors[] = 'Bad property filename or filepath'; return --$error; } - if (! isset($this->entity)) + if (!isset($this->entity)) { $this->entity = $conf->entity; } // Put here code to add control on parameters values // Insert request - $sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element . '('; - $sql.= 'ref,'; - $sql.= 'label,'; - $sql.= 'share,'; - $sql.= 'entity,'; - $sql.= 'filename,'; - $sql.= 'filepath,'; - $sql.= 'fullpath_orig,'; - $sql.= 'description,'; - $sql.= 'keywords,'; - $sql.= 'cover,'; - $sql.= 'position,'; - $sql.= 'gen_or_uploaded,'; - $sql.= 'extraparams,'; - $sql.= 'date_c,'; - $sql.= 'date_m,'; - $sql.= 'fk_user_c,'; - $sql.= 'fk_user_m,'; - $sql.= 'acl,'; - $sql.= 'src_object_type,'; - $sql.= 'src_object_id'; + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.'('; + $sql .= 'ref,'; + $sql .= 'label,'; + $sql .= 'share,'; + $sql .= 'entity,'; + $sql .= 'filename,'; + $sql .= 'filepath,'; + $sql .= 'fullpath_orig,'; + $sql .= 'description,'; + $sql .= 'keywords,'; + $sql .= 'cover,'; + $sql .= 'position,'; + $sql .= 'gen_or_uploaded,'; + $sql .= 'extraparams,'; + $sql .= 'date_c,'; + $sql .= 'date_m,'; + $sql .= 'fk_user_c,'; + $sql .= 'fk_user_m,'; + $sql .= 'acl,'; + $sql .= 'src_object_type,'; + $sql .= 'src_object_id'; $sql .= ') VALUES ('; $sql .= " '".$ref."', "; - $sql .= ' '.(! isset($this->label)?'NULL':"'".$this->db->escape($this->label)."'").','; - $sql .= ' '.(! isset($this->share)?'NULL':"'".$this->db->escape($this->share)."'").','; + $sql .= ' '.(!isset($this->label) ? 'NULL' : "'".$this->db->escape($this->label)."'").','; + $sql .= ' '.(!isset($this->share) ? 'NULL' : "'".$this->db->escape($this->share)."'").','; $sql .= ' '.$this->entity.','; - $sql .= ' '.(! isset($this->filename)?'NULL':"'".$this->db->escape($this->filename)."'").','; - $sql .= ' '.(! isset($this->filepath)?'NULL':"'".$this->db->escape($this->filepath)."'").','; - $sql .= ' '.(! isset($this->fullpath_orig)?'NULL':"'".$this->db->escape($this->fullpath_orig)."'").','; - $sql .= ' '.(! isset($this->description)?'NULL':"'".$this->db->escape($this->description)."'").','; - $sql .= ' '.(! isset($this->keywords)?'NULL':"'".$this->db->escape($this->keywords)."'").','; - $sql .= ' '.(! isset($this->cover)?'NULL':"'".$this->db->escape($this->cover)."'").','; + $sql .= ' '.(!isset($this->filename) ? 'NULL' : "'".$this->db->escape($this->filename)."'").','; + $sql .= ' '.(!isset($this->filepath) ? 'NULL' : "'".$this->db->escape($this->filepath)."'").','; + $sql .= ' '.(!isset($this->fullpath_orig) ? 'NULL' : "'".$this->db->escape($this->fullpath_orig)."'").','; + $sql .= ' '.(!isset($this->description) ? 'NULL' : "'".$this->db->escape($this->description)."'").','; + $sql .= ' '.(!isset($this->keywords) ? 'NULL' : "'".$this->db->escape($this->keywords)."'").','; + $sql .= ' '.(!isset($this->cover) ? 'NULL' : "'".$this->db->escape($this->cover)."'").','; $sql .= ' '.$maxposition.','; - $sql .= ' '.(! isset($this->gen_or_uploaded)?'NULL':"'".$this->db->escape($this->gen_or_uploaded)."'").','; - $sql .= ' '.(! isset($this->extraparams)?'NULL':"'".$this->db->escape($this->extraparams)."'").','; + $sql .= ' '.(!isset($this->gen_or_uploaded) ? 'NULL' : "'".$this->db->escape($this->gen_or_uploaded)."'").','; + $sql .= ' '.(!isset($this->extraparams) ? 'NULL' : "'".$this->db->escape($this->extraparams)."'").','; $sql .= ' '."'".$this->db->idate($this->date_c)."'".','; - $sql .= ' '.(! isset($this->date_m) || dol_strlen($this->date_m)==0?'NULL':"'".$this->db->idate($this->date_m)."'").','; - $sql .= ' '.(! isset($this->fk_user_c)?$user->id:$this->fk_user_c).','; - $sql .= ' '.(! isset($this->fk_user_m)?'NULL':$this->fk_user_m).','; - $sql .= ' '.(! isset($this->acl)?'NULL':"'".$this->db->escape($this->acl)."'").','; - $sql .= ' '.(! isset($this->src_object_type)?'NULL':"'".$this->db->escape($this->src_object_type)."'").','; - $sql .= ' '.(! isset($this->src_object_id)?'NULL':$this->src_object_id); + $sql .= ' '.(!isset($this->date_m) || dol_strlen($this->date_m) == 0 ? 'NULL' : "'".$this->db->idate($this->date_m)."'").','; + $sql .= ' '.(!isset($this->fk_user_c) ? $user->id : $this->fk_user_c).','; + $sql .= ' '.(!isset($this->fk_user_m) ? 'NULL' : $this->fk_user_m).','; + $sql .= ' '.(!isset($this->acl) ? 'NULL' : "'".$this->db->escape($this->acl)."'").','; + $sql .= ' '.(!isset($this->src_object_type) ? 'NULL' : "'".$this->db->escape($this->src_object_type)."'").','; + $sql .= ' '.(!isset($this->src_object_id) ? 'NULL' : $this->src_object_id); $sql .= ')'; $this->db->begin(); $resql = $this->db->query($sql); if (!$resql) { - $error ++; - $this->errors[] = 'Error ' . $this->db->lasterror(); - dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR); } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . $this->table_element); + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); $this->position = $maxposition; // Triggers - if (! $notrigger) + if (!$notrigger) { // Call triggers - $result=$this->call_trigger(strtoupper(get_class($this)).'_CREATE', $user); + $result = $this->call_trigger(strtoupper(get_class($this)).'_CREATE', $user); if ($result < 0) { $error++; } // End call triggers } @@ -296,7 +296,7 @@ class EcmFiles extends CommonObject if ($error) { $this->db->rollback(); - return - 1 * $error; + return -1 * $error; } else { $this->db->commit(); @@ -344,25 +344,25 @@ class EcmFiles extends CommonObject $sql .= " t.acl,"; $sql .= " t.src_object_type,"; $sql .= " t.src_object_id"; - $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; - $sql.= ' WHERE 1 = 1'; + $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; + $sql .= ' WHERE 1 = 1'; /* Fetching this table depends on filepath+filename, it must not depends on entity if (! empty($conf->multicompany->enabled)) { $sql .= " AND entity IN (" . getEntity('ecmfiles') . ")"; }*/ if ($relativepath) { - $sql .= " AND t.filepath = '" . $this->db->escape(dirname($relativepath)) . "' AND t.filename = '".$this->db->escape(basename($relativepath))."'"; - $sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index + $sql .= " AND t.filepath = '".$this->db->escape(dirname($relativepath))."' AND t.filename = '".$this->db->escape(basename($relativepath))."'"; + $sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index } - elseif (! empty($ref)) { // hash of file path + elseif (!empty($ref)) { // hash of file path $sql .= " AND t.ref = '".$this->db->escape($ref)."'"; - $sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index + $sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index } - elseif (! empty($hashoffile)) { // hash of content + elseif (!empty($hashoffile)) { // hash of content $sql .= " AND t.label = '".$this->db->escape($hashoffile)."'"; - $sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index + $sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index } - elseif (! empty($hashforshare)) { + elseif (!empty($hashforshare)) { $sql .= " AND t.share = '".$this->db->escape($hashforshare)."'"; //$sql .= " AND t.entity = ".$conf->entity; // hashforshare already unique } @@ -373,10 +373,10 @@ class EcmFiles extends CommonObject $sql .= " AND t.entity = ".$conf->entity; } else { - $sql .= ' AND t.rowid = '.$this->db->escape($id); // rowid already unique + $sql .= ' AND t.rowid = '.$this->db->escape($id); // rowid already unique } - $this->db->plimit(1); // When we search on src or on hash of content (hashforfile) to solve hash conflict when several files has same content, we take first one only + $this->db->plimit(1); // When we search on src or on hash of content (hashforfile) to solve hash conflict when several files has same content, we take first one only $this->db->order('t.rowid', 'ASC'); $resql = $this->db->query($sql); @@ -422,8 +422,8 @@ class EcmFiles extends CommonObject return 0; } } else { - $this->errors[] = 'Error ' . $this->db->lasterror(); - dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR); return -1; } @@ -466,28 +466,28 @@ class EcmFiles extends CommonObject $sql .= " t.acl,"; $sql .= " t.src_object_type,"; $sql .= " t.src_object_id"; - $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; + $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; // Manage filter $sqlwhere = array(); if (count($filter) > 0) { foreach ($filter as $key => $value) { - $sqlwhere [] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; + $sqlwhere [] = $key.' LIKE \'%'.$this->db->escape($value).'%\''; } } - $sql.= ' WHERE 1 = 1'; + $sql .= ' WHERE 1 = 1'; /* Fetching this table depends on filepath+filename, it must not depends on entity if (! empty($conf->multicompany->enabled)) { $sql .= " AND entity IN (" . getEntity('ecmfiles') . ")"; }*/ if (count($sqlwhere) > 0) { - $sql .= ' AND ' . implode(' '.$filtermode.' ', $sqlwhere); + $sql .= ' AND '.implode(' '.$filtermode.' ', $sqlwhere); } if (!empty($sortfield)) { $sql .= $this->db->order($sortfield, $sortorder); } if (!empty($limit)) { - $sql .= ' ' . $this->db->plimit($limit, $offset); + $sql .= ' '.$this->db->plimit($limit, $offset); } $this->lines = array(); @@ -526,10 +526,10 @@ class EcmFiles extends CommonObject return $num; } else { - $this->errors[] = 'Error ' . $this->db->lasterror(); - dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR); - return - 1; + return -1; } } @@ -601,42 +601,42 @@ class EcmFiles extends CommonObject // Put here code to add a control on parameters values // Update request - $sql = 'UPDATE ' . MAIN_DB_PREFIX . $this->table_element . ' SET'; + $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET'; $sql .= " ref = '".dol_hash($this->filepath.'/'.$this->filename, 3)."',"; - $sql .= ' label = '.(isset($this->label)?"'".$this->db->escape($this->label)."'":"null").','; - $sql .= ' share = '.(! empty($this->share)?"'".$this->db->escape($this->share)."'":"null").','; - $sql .= ' entity = '.(isset($this->entity)?$this->entity:$conf->entity).','; - $sql .= ' filename = '.(isset($this->filename)?"'".$this->db->escape($this->filename)."'":"null").','; - $sql .= ' filepath = '.(isset($this->filepath)?"'".$this->db->escape($this->filepath)."'":"null").','; - $sql .= ' fullpath_orig = '.(isset($this->fullpath_orig)?"'".$this->db->escape($this->fullpath_orig)."'":"null").','; - $sql .= ' description = '.(isset($this->description)?"'".$this->db->escape($this->description)."'":"null").','; - $sql .= ' keywords = '.(isset($this->keywords)?"'".$this->db->escape($this->keywords)."'":"null").','; - $sql .= ' cover = '.(isset($this->cover)?"'".$this->db->escape($this->cover)."'":"null").','; - $sql .= ' position = '.(isset($this->position)?$this->db->escape($this->position):"0").','; - $sql .= ' gen_or_uploaded = '.(isset($this->gen_or_uploaded)?"'".$this->db->escape($this->gen_or_uploaded)."'":"null").','; - $sql .= ' extraparams = '.(isset($this->extraparams)?"'".$this->db->escape($this->extraparams)."'":"null").','; - $sql .= ' date_c = '.(! isset($this->date_c) || dol_strlen($this->date_c) != 0 ? "'".$this->db->idate($this->date_c)."'" : 'null').','; + $sql .= ' label = '.(isset($this->label) ? "'".$this->db->escape($this->label)."'" : "null").','; + $sql .= ' share = '.(!empty($this->share) ? "'".$this->db->escape($this->share)."'" : "null").','; + $sql .= ' entity = '.(isset($this->entity) ? $this->entity : $conf->entity).','; + $sql .= ' filename = '.(isset($this->filename) ? "'".$this->db->escape($this->filename)."'" : "null").','; + $sql .= ' filepath = '.(isset($this->filepath) ? "'".$this->db->escape($this->filepath)."'" : "null").','; + $sql .= ' fullpath_orig = '.(isset($this->fullpath_orig) ? "'".$this->db->escape($this->fullpath_orig)."'" : "null").','; + $sql .= ' description = '.(isset($this->description) ? "'".$this->db->escape($this->description)."'" : "null").','; + $sql .= ' keywords = '.(isset($this->keywords) ? "'".$this->db->escape($this->keywords)."'" : "null").','; + $sql .= ' cover = '.(isset($this->cover) ? "'".$this->db->escape($this->cover)."'" : "null").','; + $sql .= ' position = '.(isset($this->position) ? $this->db->escape($this->position) : "0").','; + $sql .= ' gen_or_uploaded = '.(isset($this->gen_or_uploaded) ? "'".$this->db->escape($this->gen_or_uploaded)."'" : "null").','; + $sql .= ' extraparams = '.(isset($this->extraparams) ? "'".$this->db->escape($this->extraparams)."'" : "null").','; + $sql .= ' date_c = '.(!isset($this->date_c) || dol_strlen($this->date_c) != 0 ? "'".$this->db->idate($this->date_c)."'" : 'null').','; //$sql .= ' date_m = '.(! isset($this->date_m) || dol_strlen($this->date_m) != 0 ? "'".$this->db->idate($this->date_m)."'" : 'null').','; // Field automatically updated - $sql .= ' fk_user_m = '.($this->fk_user_m > 0?$this->fk_user_m:$user->id).','; - $sql .= ' acl = '.(isset($this->acl)?"'".$this->db->escape($this->acl)."'":"null").','; - $sql .= ' src_object_id = '.($this->src_object_id > 0?$this->src_object_id:"null").','; - $sql .= ' src_object_type = '.(isset($this->src_object_type)?"'".$this->db->escape($this->src_object_type)."'":"null"); - $sql .= ' WHERE rowid=' . $this->id; + $sql .= ' fk_user_m = '.($this->fk_user_m > 0 ? $this->fk_user_m : $user->id).','; + $sql .= ' acl = '.(isset($this->acl) ? "'".$this->db->escape($this->acl)."'" : "null").','; + $sql .= ' src_object_id = '.($this->src_object_id > 0 ? $this->src_object_id : "null").','; + $sql .= ' src_object_type = '.(isset($this->src_object_type) ? "'".$this->db->escape($this->src_object_type)."'" : "null"); + $sql .= ' WHERE rowid='.$this->id; $this->db->begin(); $resql = $this->db->query($sql); if (!$resql) { - $error ++; - $this->errors[] = 'Error ' . $this->db->lasterror(); - dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR); } // Triggers - if (! $error && ! $notrigger) + if (!$error && !$notrigger) { // Call triggers - $result=$this->call_trigger(strtoupper(get_class($this)).'_MODIFY', $user); + $result = $this->call_trigger(strtoupper(get_class($this)).'_MODIFY', $user); if ($result < 0) { $error++; } //Do also here what you must do to rollback action if trigger fail // End call triggers } @@ -645,7 +645,7 @@ class EcmFiles extends CommonObject if ($error) { $this->db->rollback(); - return - 1 * $error; + return -1 * $error; } else { $this->db->commit(); @@ -670,10 +670,10 @@ class EcmFiles extends CommonObject $this->db->begin(); // Triggers - if (! $notrigger) + if (!$notrigger) { // Call triggers - $result=$this->call_trigger(strtoupper(get_class($this)).'_DELETE', $user); + $result = $this->call_trigger(strtoupper(get_class($this)).'_DELETE', $user); if ($result < 0) { $error++; } //Do also here what you must do to rollback action if trigger fail // End call triggers } @@ -681,14 +681,14 @@ class EcmFiles extends CommonObject // If you need to delete child tables to, you can insert them here if (!$error) { - $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . $this->table_element; - $sql .= ' WHERE rowid=' . $this->id; + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element; + $sql .= ' WHERE rowid='.$this->id; $resql = $this->db->query($sql); if (!$resql) { - $error ++; - $this->errors[] = 'Error ' . $this->db->lasterror(); - dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR); } } @@ -696,7 +696,7 @@ class EcmFiles extends CommonObject if ($error) { $this->db->rollback(); - return - 1 * $error; + return -1 * $error; } else { $this->db->commit(); @@ -734,9 +734,9 @@ class EcmFiles extends CommonObject // Other options if ($result < 0) { - $error ++; + $error++; $this->errors = $object->errors; - dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); + dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR); } unset($object->context['createfromclone']); @@ -749,7 +749,7 @@ class EcmFiles extends CommonObject } else { $this->db->rollback(); - return - 1; + return -1; } } @@ -769,40 +769,40 @@ class EcmFiles extends CommonObject global $dolibarr_main_authentication, $dolibarr_main_demo; global $menumanager; - if (! empty($conf->dol_no_mouse_hover)) $notooltip=1; // Force disable tooltips + if (!empty($conf->dol_no_mouse_hover)) $notooltip = 1; // Force disable tooltips $result = ''; $companylink = ''; - $label = '' . $langs->trans("MyModule") . ''; - $label.= '
    '; - $label.= '' . $langs->trans('Ref') . ': ' . $this->ref; + $label = ''.$langs->trans("MyModule").''; + $label .= '
    '; + $label .= ''.$langs->trans('Ref').': '.$this->ref; $url = DOL_URL_ROOT.'/ecm/'.$this->table_name.'_card.php?id='.$this->id; - $linkclose=''; + $linkclose = ''; if (empty($notooltip)) { - if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label=$langs->trans("ShowProject"); - $linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"'; + $label = $langs->trans("ShowProject"); + $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } - $linkclose.=' title="'.dol_escape_htmltag($label, 1).'"'; - $linkclose.=' class="classfortooltip'.($morecss?' '.$morecss:'').'"'; + $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; + $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; } - else $linkclose = ($morecss?' class="'.$morecss.'"':''); + else $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); $linkstart = '
    '; - $linkend=''; + $linkstart .= $linkclose.'>'; + $linkend = ''; if ($withpicto) { - $result.=($linkstart.img_object(($notooltip?'':$label), 'label', ($notooltip?'':'class="classfortooltip"')).$linkend); - if ($withpicto != 2) $result.=' '; + $result .= ($linkstart.img_object(($notooltip ? '' : $label), 'label', ($notooltip ? '' : 'class="classfortooltip"')).$linkend); + if ($withpicto != 2) $result .= ' '; } - $result.= $linkstart . $this->ref . $linkend; + $result .= $linkstart.$this->ref.$linkend; return $result; } @@ -841,7 +841,7 @@ class EcmFiles extends CommonObject */ public function initAsSpecimen() { - global $conf,$user; + global $conf, $user; $this->id = 0; @@ -891,7 +891,7 @@ class EcmfilesLine public $keywords; public $cover; public $position; - public $gen_or_uploaded; // can be 'generated', 'uploaded', 'unknown' + public $gen_or_uploaded; // can be 'generated', 'uploaded', 'unknown' public $extraparams; public $date_c = ''; public $date_m = ''; diff --git a/htdocs/ecm/class/htmlecm.form.class.php b/htdocs/ecm/class/htmlecm.form.class.php index 92cee2570bc..de9f289eb79 100644 --- a/htdocs/ecm/class/htmlecm.form.class.php +++ b/htdocs/ecm/class/htmlecm.form.class.php @@ -35,7 +35,7 @@ class FormEcm /** * @var string Error code (or message) */ - public $error=''; + public $error = ''; /** @@ -62,9 +62,9 @@ class FormEcm global $conf, $langs; $langs->load("ecm"); - if ($select_name=='') $select_name="catParent"; + if ($select_name == '') $select_name = "catParent"; - $cate_arbo=null; + $cate_arbo = null; if ($module == 'ecm') { $cat = new EcmDirectory($this->db); @@ -74,17 +74,17 @@ class FormEcm { include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $path = $conf->medias->multidir_output[$conf->entity]; - $cate_arbo = dol_dir_list($path, 'directories', 1, '', array('(\.meta|_preview.*\.png)$','^\.'), 'relativename', SORT_ASC); + $cate_arbo = dol_dir_list($path, 'directories', 1, '', array('(\.meta|_preview.*\.png)$', '^\.'), 'relativename', SORT_ASC); } $output = ''; - $output.=ajax_combobox($select_name); - $output.= "\n"; + $output .= ''; + $output .= ajax_combobox($select_name); + $output .= "\n"; return $output; } } diff --git a/htdocs/ecm/dir_add_card.php b/htdocs/ecm/dir_add_card.php index 979d4cf2709..0c9190b9a4c 100644 --- a/htdocs/ecm/dir_add_card.php +++ b/htdocs/ecm/dir_add_card.php @@ -29,7 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/ecm/class/htmlecm.form.class.php'; require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; // Load translation files required by the page -$langs->loadLangs(array("ecm","companies","other","users","orders","propal","bills","contracts","categories")); +$langs->loadLangs(array("ecm", "companies", "other", "users", "orders", "propal", "bills", "contracts", "categories")); // Get parameters $socid = GETPOST('socid', 'int'); @@ -41,7 +41,7 @@ $confirm = GETPOST('confirm', 'alpha'); $module = GETPOST('module', 'alpha'); $website = GETPOST('website', 'alpha'); $pageid = GETPOST('pageid', 'int'); -if (empty($module)) $module='ecm'; +if (empty($module)) $module = 'ecm'; // Security check if ($user->socid > 0) @@ -50,8 +50,8 @@ if ($user->socid > 0) $socid = $user->socid; } -$section=$urlsection=GETPOST('section', 'alpha'); -if (empty($urlsection)) $urlsection='misc'; +$section = $urlsection = GETPOST('section', 'alpha'); +if (empty($urlsection)) $urlsection = 'misc'; if ($module == 'ecm') { @@ -69,14 +69,14 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="label"; +if (!$sortorder) $sortorder = "ASC"; +if (!$sortfield) $sortfield = "label"; $ecmdir = new EcmDirectory($db); -if (! empty($section)) +if (!empty($section)) { - $result=$ecmdir->fetch($section); - if (! $result > 0) + $result = $ecmdir->fetch($section); + if (!$result > 0) { dol_print_error($db, $ecmdir->error); exit; @@ -97,7 +97,7 @@ if ($module == 'medias') $permtoupload = ($user->rights->mailing->creer || $user->rights->website->write); } -if (! $permtoadd) accessforbidden(); +if (!$permtoadd) accessforbidden(); @@ -110,14 +110,14 @@ if ($action == 'add' && $permtoadd) { if ($cancel) { - if (! empty($backtopage)) + if (!empty($backtopage)) { header("Location: ".$backtopage); exit; } else { - header("Location: ".DOL_URL_ROOT.'/ecm/index.php?action=file_manager'.($module?'&module='.$module:'')); + header("Location: ".DOL_URL_ROOT.'/ecm/index.php?action=file_manager'.($module ? '&module='.$module : '')); exit; } } @@ -125,10 +125,10 @@ if ($action == 'add' && $permtoadd) $ref = trim(GETPOST("ref", 'alpha')); $label = trim(GETPOST("label", 'alpha')); $desc = trim(GETPOST("desc", 'alpha')); - $catParent = GETPOST("catParent", 'alpha'); // Can be an int (with ECM) or a string (with generic filemanager) - if ($catParent == '-1') $catParent=0; + $catParent = GETPOST("catParent", 'alpha'); // Can be an int (with ECM) or a string (with generic filemanager) + if ($catParent == '-1') $catParent = 0; - $error=0; + $error = 0; if (empty($label)) { @@ -137,7 +137,7 @@ if ($action == 'add' && $permtoadd) $error++; } - if (! $error) + if (!$error) { if ($module == 'ecm') { @@ -168,9 +168,9 @@ if ($action == 'add' && $permtoadd) dol_print_error('', 'Bad value for module. Not supported.'); } - if (! $error) + if (!$error) { - $fullpathofdir = $dirfornewdir.'/'.($catParent? $catParent.'/' : '').$label; + $fullpathofdir = $dirfornewdir.'/'.($catParent ? $catParent.'/' : '').$label; $result = dol_mkdir($fullpathofdir, DOL_DATA_ROOT); if ($result < 0) { @@ -185,9 +185,9 @@ if ($action == 'add' && $permtoadd) } } - if (! $error) + if (!$error) { - if (! empty($backtopage)) + if (!empty($backtopage)) { header("Location: ".$backtopage); exit; @@ -203,7 +203,7 @@ if ($action == 'add' && $permtoadd) // Deleting file elseif ($action == 'confirm_deletesection' && $confirm == 'yes') { - $result=$ecmdir->delete($user); + $result = $ecmdir->delete($user); setEventMessages($langs->trans("ECMSectionWasRemoved", $ecmdir->label), null, 'mesgs'); } @@ -216,8 +216,8 @@ elseif ($action == 'confirm_deletesection' && $confirm == 'yes') llxHeader('', $langs->trans("ECMNewSection")); -$form=new Form($db); -$formecm=new FormEcm($db); +$form = new Form($db); +$formecm = new FormEcm($db); if ($action == 'create') { @@ -232,7 +232,7 @@ if ($action == 'create') if ($website) print ''; if ($pageid) print ''; - $title=$langs->trans("ECMNewSection"); + $title = $langs->trans("ECMNewSection"); print load_fiche_titre($title); dol_fiche_head(); diff --git a/htdocs/ecm/dir_card.php b/htdocs/ecm/dir_card.php index 3793be8a784..42c6b140f3c 100644 --- a/htdocs/ecm/dir_card.php +++ b/htdocs/ecm/dir_card.php @@ -39,7 +39,7 @@ $confirm = GETPOST('confirm', 'alpha'); $module = GETPOST('module', 'alpha'); $website = GETPOST('website', 'alpha'); $pageid = GETPOST('pageid', 'int'); -if (empty($module)) $module='ecm'; +if (empty($module)) $module = 'ecm'; // Get parameters $sortfield = GETPOST("sortfield", 'alpha'); @@ -49,11 +49,11 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="name"; +if (!$sortorder) $sortorder = "ASC"; +if (!$sortfield) $sortfield = "name"; -$section=GETPOST("section", 'alpha')?GETPOST("section", 'alpha'):GETPOST("relativedir", 'alpha'); -if (! $section) +$section = GETPOST("section", 'alpha') ?GETPOST("section", 'alpha') : GETPOST("relativedir", 'alpha'); +if (!$section) { dol_print_error('', "ErrorSectionParamNotDefined"); exit; @@ -64,14 +64,14 @@ $ecmdir = new EcmDirectory($db); if ($module == 'ecm') { - $result=$ecmdir->fetch($section); - if (! $result > 0) + $result = $ecmdir->fetch($section); + if (!$result > 0) { dol_print_error($db, $ecmdir->error); exit; } - $relativepath=$ecmdir->getRelativePath(); + $relativepath = $ecmdir->getRelativePath(); $upload_dir = $conf->ecm->dir_output.'/'.$relativepath; } else // For example $module == 'medias' @@ -101,14 +101,14 @@ if ($module == 'medias') */ // Upload file -if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC)) +if (GETPOST("sendit") && !empty($conf->global->MAIN_UPLOAD_DOC)) { if (dol_mkdir($upload_dir) >= 0) { - $resupload = dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . dol_unescapefile($_FILES['userfile']['name']), 0, 0, $_FILES['userfile']['error']); + $resupload = dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir."/".dol_unescapefile($_FILES['userfile']['name']), 0, 0, $_FILES['userfile']['error']); if (is_numeric($resupload) && $resupload > 0) { - $result=$ecmdir->changeNbOfFiles('+'); + $result = $ecmdir->changeNbOfFiles('+'); } else { @@ -138,12 +138,12 @@ if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC)) if ($action == 'confirm_deletefile' && $confirm == 'yes') { $langs->load("other"); - $file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). - $ret=dol_delete_file($file); + $file = $upload_dir."/".GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). + $ret = dol_delete_file($file); if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); - $result=$ecmdir->changeNbOfFiles('-'); + $result = $ecmdir->changeNbOfFiles('-'); } // Remove dir @@ -160,7 +160,7 @@ if ($action == 'confirm_deletedir' && $confirm == 'yes') if ($module == 'ecm') { // Fetch was already done - $result=$ecmdir->delete($user, 'all', $deletedirrecursive); + $result = $ecmdir->delete($user, 'all', $deletedirrecursive); if ($result <= 0) { $langs->load('errors'); @@ -193,20 +193,20 @@ if ($action == 'confirm_deletedir' && $confirm == 'yes') } // Update dirname or description -if ($action == 'update' && ! GETPOST('cancel', 'alpha')) +if ($action == 'update' && !GETPOST('cancel', 'alpha')) { - $error=0; + $error = 0; if ($module == 'ecm') { - $oldlabel=$ecmdir->label; - $olddir=$ecmdir->getRelativePath(0); - $olddir=$conf->ecm->dir_output.'/'.$olddir; + $oldlabel = $ecmdir->label; + $olddir = $ecmdir->getRelativePath(0); + $olddir = $conf->ecm->dir_output.'/'.$olddir; } else { - $olddir=GETPOST('section', 'alpha'); - $olddir=$conf->medias->multidir_output[$conf->entity].'/'.$relativepath; + $olddir = GETPOST('section', 'alpha'); + $olddir = $conf->medias->multidir_output[$conf->entity].'/'.$relativepath; } if ($module == 'ecm') @@ -216,17 +216,17 @@ if ($action == 'update' && ! GETPOST('cancel', 'alpha')) // Fetch was already done $ecmdir->label = dol_sanitizeFileName(GETPOST("label")); $ecmdir->description = GETPOST("description"); - $result=$ecmdir->update($user); + $result = $ecmdir->update($user); if ($result > 0) { // Try to rename file if changed - if ($oldlabel != $ecmdir->label && file_exists($olddir)) + if ($oldlabel != $ecmdir->label && file_exists($olddir)) { - $newdir=$ecmdir->getRelativePath(1); // return "xxx/zzz/" from ecm directory - $newdir=$conf->ecm->dir_output.'/'.$newdir; + $newdir = $ecmdir->getRelativePath(1); // return "xxx/zzz/" from ecm directory + $newdir = $conf->ecm->dir_output.'/'.$newdir; //print $olddir.'-'.$newdir; - $result=@rename($olddir, $newdir); - if (! $result) + $result = @rename($olddir, $newdir); + if (!$result) { $langs->load('errors'); setEventMessages($langs->trans('ErrorFailToRenameDir', $olddir, $newdir), null, 'errors'); @@ -234,12 +234,12 @@ if ($action == 'update' && ! GETPOST('cancel', 'alpha')) } } - if (! $error) + if (!$error) { $db->commit(); // Set new value after renaming - $relativepath=$ecmdir->getRelativePath(); + $relativepath = $ecmdir->getRelativePath(); $upload_dir = $conf->ecm->dir_output.'/'.$relativepath; } else @@ -257,18 +257,18 @@ if ($action == 'update' && ! GETPOST('cancel', 'alpha')) { $newdir = $conf->medias->multidir_output[$conf->entity].'/'.GETPOST('oldrelparentdir', 'alpha').'/'.GETPOST('label', 'alpha'); - $result=@rename($olddir, $newdir); - if (! $result) + $result = @rename($olddir, $newdir); + if (!$result) { $langs->load('errors'); setEventMessages($langs->trans('ErrorFailToRenameDir', $olddir, $newdir), null, 'errors'); $error++; } - if (! $error) + if (!$error) { // Set new value after renaming - $relativepath=GETPOST('oldrelparentdir', 'alpha').'/'.GETPOST('label', 'alpha'); + $relativepath = GETPOST('oldrelparentdir', 'alpha').'/'.GETPOST('label', 'alpha'); $upload_dir = $conf->medias->multidir_output[$conf->entity].'/'.$relativepath; $section = $relativepath; } @@ -281,9 +281,9 @@ if ($action == 'update' && ! GETPOST('cancel', 'alpha')) * View ********************************************************************/ -$form=new Form($db); +$form = new Form($db); -$object=new EcmDirectory($db); // Need to create a new one instance +$object = new EcmDirectory($db); // Need to create a new one instance if ($module == 'ecm') { @@ -293,12 +293,12 @@ if ($module == 'ecm') llxHeader(); // Built the file List -$filearrayall=dol_dir_list($upload_dir, "all", 0, '', '', $sortfield, (strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC), 1); -$filearray=dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC), 1); -$totalsize=0; -foreach($filearray as $key => $file) +$filearrayall = dol_dir_list($upload_dir, "all", 0, '', '', $sortfield, (strtolower($sortorder) == 'desc' ?SORT_DESC:SORT_ASC), 1); +$filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ?SORT_DESC:SORT_ASC), 1); +$totalsize = 0; +foreach ($filearray as $key => $file) { - $totalsize+=$file['size']; + $totalsize += $file['size']; } @@ -316,33 +316,33 @@ if ($action == 'edit') } -$morehtml=''; +$morehtml = ''; $morehtmlref = '/'.$module.'/'.$relativepath; if ($module == 'ecm') { - $s=''; + $s = ''; $result = 1; - $i=0; - $tmpecmdir=new EcmDirectory($db); // Need to create a new one + $i = 0; + $tmpecmdir = new EcmDirectory($db); // Need to create a new one $tmpecmdir->fetch($ecmdir->id); while ($tmpecmdir && $result > 0) { - $tmpecmdir->ref=$tmpecmdir->label; + $tmpecmdir->ref = $tmpecmdir->label; if ($i == 0 && $action == 'edit') { - $s=''; + $s = ''; } - else $s=$tmpecmdir->getNomUrl(1).$s; + else $s = $tmpecmdir->getNomUrl(1).$s; if ($tmpecmdir->fk_parent) { - $s=' -> '.$s; - $result=$tmpecmdir->fetch($tmpecmdir->fk_parent); + $s = ' -> '.$s; + $result = $tmpecmdir->fetch($tmpecmdir->fk_parent); } else { - $tmpecmdir=0; + $tmpecmdir = 0; } $i++; } @@ -351,25 +351,25 @@ if ($module == 'ecm') } if ($module == 'medias') { - $s='medias -> '; + $s = 'medias -> '; $result = 1; - $subdirs=explode('/', $section); - $i=0; - foreach($subdirs as $subdir) + $subdirs = explode('/', $section); + $i = 0; + foreach ($subdirs as $subdir) { if ($i == (count($subdirs) - 1)) { if ($action == 'edit') { - $s.=''; - $s.=''; - $s.=''; + $s .= ''; + $s .= ''; + $s .= ''; } - else $s.=$subdir; + else $s .= $subdir; } if ($i < (count($subdirs) - 1)) { - $s.=$subdir.' -> '; + $s .= $subdir.' -> '; } $i++; } @@ -401,7 +401,7 @@ if ($module == 'ecm') print ''; print ''.$langs->trans("ECMCreationUser").''; - $userecm=new User($db); + $userecm = new User($db); $userecm->fetch($ecmdir->fk_user_c); print $userecm->getNomUrl(1); print ''; @@ -428,7 +428,7 @@ else } print ''; print ''.$langs->trans("ECMNbOfDocs").''; -$nbofiles=count($filearray); +$nbofiles = count($filearray); print $nbofiles; if ($ecmdir->id > 0) { @@ -470,12 +470,12 @@ if ($action != 'edit' && $action != 'delete') if ($permtoadd) { - print ''.$langs->trans('Edit').''; + print ''.$langs->trans('Edit').''; } if ($permtoadd) { - print ''.$langs->trans('ECMAddSection').''; + print ''.$langs->trans('ECMAddSection').''; } else { @@ -486,7 +486,7 @@ if ($action != 'edit' && $action != 'delete') //{ if ($permtoadd) { - print ''.$langs->trans('Delete').''; + print ''.$langs->trans('Delete').''; } else { @@ -512,18 +512,18 @@ if ($action == 'delete') // Confirm remove file if ($action == 'delete_dir') { - $relativepathwithoutslash=preg_replace('/[\/]$/', '', $relativepath); + $relativepathwithoutslash = preg_replace('/[\/]$/', '', $relativepath); //Form to close proposal (signed or not) if (count($filearrayall) > 0) { $langs->load("other"); $formquestion = array( - array('type' => 'checkbox', 'name' => 'deletedirrecursive', 'label' => $langs->trans("ContentOfDirectoryIsNotEmpty").'
    '.$langs->trans("DeleteAlsoContentRecursively"),'value' => '0') // Field to complete private note (not replace) + array('type' => 'checkbox', 'name' => 'deletedirrecursive', 'label' => $langs->trans("ContentOfDirectoryIsNotEmpty").'
    '.$langs->trans("DeleteAlsoContentRecursively"), 'value' => '0') // Field to complete private note (not replace) ); } - print $form->formconfirm($_SERVER["PHP_SELF"].'?section='.GETPOST('section', 'alpha').($module?'&module='.$module:'').($backtopage ? '&backtopage='.urlencode($backtopage) : ''), $langs->trans('DeleteSection'), $langs->trans('ConfirmDeleteSection', $relativepathwithoutslash), 'confirm_deletedir', $formquestion, 1, 1); + print $form->formconfirm($_SERVER["PHP_SELF"].'?section='.GETPOST('section', 'alpha').($module ? '&module='.$module : '').($backtopage ? '&backtopage='.urlencode($backtopage) : ''), $langs->trans('DeleteSection'), $langs->trans('ConfirmDeleteSection', $relativepathwithoutslash), 'confirm_deletedir', $formquestion, 1, 1); } diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index e88417c526a..9e51da09899 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -32,18 +32,18 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php'; require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; // Load translation files required by the page -$langs->loadLangs(array("ecm","companies","other","users","orders","propal","bills","contracts")); +$langs->loadLangs(array("ecm", "companies", "other", "users", "orders", "propal", "bills", "contracts")); // Security check -if ($user->socid) $socid=$user->socid; +if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'ecm', 0); // Get parameters -$socid=GETPOST('socid', 'int'); -$action=GETPOST('action', 'aZ09'); -$section=GETPOST('section', 'int')?GETPOST('section', 'int'):GETPOST('section_id', 'int'); -if (! $section) $section=0; -$section_dir=GETPOST('section_dir', 'alpha'); +$socid = GETPOST('socid', 'int'); +$action = GETPOST('action', 'aZ09'); +$section = GETPOST('section', 'int') ?GETPOST('section', 'int') : GETPOST('section_id', 'int'); +if (!$section) $section = 0; +$section_dir = GETPOST('section_dir', 'alpha'); $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); @@ -52,25 +52,25 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="fullname"; +if (!$sortorder) $sortorder = "ASC"; +if (!$sortfield) $sortfield = "fullname"; $ecmdir = new EcmDirectory($db); if ($section) { - $result=$ecmdir->fetch($section); - if (! $result > 0) + $result = $ecmdir->fetch($section); + if (!$result > 0) { dol_print_error($db, $ecmdir->error); exit; } } -$form=new Form($db); +$form = new Form($db); $ecmdirstatic = new EcmDirectory($db); $userstatic = new User($db); -$error=0; +$error = 0; /* @@ -82,23 +82,23 @@ $error=0; //include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; // Upload file (code similar but different than actions_linkedfiles.inc.php) -if (GETPOST("sendit", 'none') && ! empty($conf->global->MAIN_UPLOAD_DOC)) +if (GETPOST("sendit", 'none') && !empty($conf->global->MAIN_UPLOAD_DOC)) { // Define relativepath and upload_dir - $relativepath=''; - if ($ecmdir->id) $relativepath=$ecmdir->getRelativePath(); - else $relativepath=$section_dir; + $relativepath = ''; + if ($ecmdir->id) $relativepath = $ecmdir->getRelativePath(); + else $relativepath = $section_dir; $upload_dir = $conf->ecm->dir_output.'/'.$relativepath; - if (is_array($_FILES['userfile']['tmp_name'])) $userfiles=$_FILES['userfile']['tmp_name']; - else $userfiles=array($_FILES['userfile']['tmp_name']); + if (is_array($_FILES['userfile']['tmp_name'])) $userfiles = $_FILES['userfile']['tmp_name']; + else $userfiles = array($_FILES['userfile']['tmp_name']); - foreach($userfiles as $key => $userfile) + foreach ($userfiles as $key => $userfile) { if (empty($_FILES['userfile']['tmp_name'][$key])) { $error++; - if ($_FILES['userfile']['error'][$key] == 1 || $_FILES['userfile']['error'][$key] == 2){ + if ($_FILES['userfile']['error'][$key] == 1 || $_FILES['userfile']['error'][$key] == 2) { setEventMessages($langs->trans('ErrorFileSizeTooLarge'), null, 'errors'); } else { @@ -107,13 +107,13 @@ if (GETPOST("sendit", 'none') && ! empty($conf->global->MAIN_UPLOAD_DOC)) } } - if (! $error) + if (!$error) { $generatethumbs = 0; $res = dol_add_file_process($upload_dir, 0, 1, 'userfile', '', null, '', $generatethumbs); if ($res > 0) { - $result=$ecmdir->changeNbOfFiles('+'); + $result = $ecmdir->changeNbOfFiles('+'); } } } @@ -126,14 +126,14 @@ if ($action == 'confirm_deletefile') // GETPOST('urlfile','alpha') is full relative URL from ecm root dir. Contains path of all sections. //var_dump(GETPOST('urlfile'));exit; - $upload_dir = $conf->ecm->dir_output.($relativepath?'/'.$relativepath:''); - $file = $upload_dir . "/" . GETPOST('urlfile', 'alpha'); + $upload_dir = $conf->ecm->dir_output.($relativepath ? '/'.$relativepath : ''); + $file = $upload_dir."/".GETPOST('urlfile', 'alpha'); - $ret=dol_delete_file($file); // This include also the delete from file index in database. + $ret = dol_delete_file($file); // This include also the delete from file index in database. if ($ret) { setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile', 'alpha')), null, 'mesgs'); - $result=$ecmdir->changeNbOfFiles('-'); + $result = $ecmdir->changeNbOfFiles('-'); } else { @@ -142,7 +142,7 @@ if ($action == 'confirm_deletefile') clearstatcache(); } - $action='file_manager'; + $action = 'file_manager'; } // Add directory @@ -170,7 +170,7 @@ if ($action == 'add' && $user->rights->ecm->setup) // Remove directory if ($action == 'confirm_deletesection' && GETPOST('confirm') == 'yes') { - $result=$ecmdir->delete($user); + $result = $ecmdir->delete($user); setEventMessages($langs->trans("ECMSectionWasRemoved", $ecmdir->label), null, 'mesgs'); clearstatcache(); @@ -186,56 +186,56 @@ if ($action == 'refreshmanual') // This part of code is same than into file ecm/ajax/ecmdatabase.php TODO Remove duplicate clearstatcache(); - $diroutputslash=str_replace('\\', '/', $conf->ecm->dir_output); - $diroutputslash.='/'; + $diroutputslash = str_replace('\\', '/', $conf->ecm->dir_output); + $diroutputslash .= '/'; // Scan directory tree on disk - $disktree=dol_dir_list($conf->ecm->dir_output, 'directories', 1, '', '^temp$', '', '', 0); + $disktree = dol_dir_list($conf->ecm->dir_output, 'directories', 1, '', '^temp$', '', '', 0); // Scan directory tree in database - $sqltree=$ecmdirstatic->get_full_arbo(0); + $sqltree = $ecmdirstatic->get_full_arbo(0); - $adirwascreated=0; + $adirwascreated = 0; // Now we compare both trees to complete missing trees into database //var_dump($disktree); //var_dump($sqltree); - foreach($disktree as $dirdesc) // Loop on tree onto disk + foreach ($disktree as $dirdesc) // Loop on tree onto disk { - $dirisindatabase=0; - foreach($sqltree as $dirsqldesc) + $dirisindatabase = 0; + foreach ($sqltree as $dirsqldesc) { if ($conf->ecm->dir_output.'/'.$dirsqldesc['fullrelativename'] == $dirdesc['fullname']) { - $dirisindatabase=1; + $dirisindatabase = 1; break; } } - if (! $dirisindatabase) + if (!$dirisindatabase) { - $txt="Directory found on disk ".$dirdesc['fullname'].", not found into database so we add it"; + $txt = "Directory found on disk ".$dirdesc['fullname'].", not found into database so we add it"; dol_syslog($txt); //print $txt."
    \n"; // We must first find the fk_parent of directory to create $dirdesc['fullname'] - $fk_parent=-1; - $relativepathmissing=str_replace($diroutputslash, '', $dirdesc['fullname']); - $relativepathtosearchparent=$relativepathmissing; + $fk_parent = -1; + $relativepathmissing = str_replace($diroutputslash, '', $dirdesc['fullname']); + $relativepathtosearchparent = $relativepathmissing; //dol_syslog("Try to find parent id for directory ".$relativepathtosearchparent); if (preg_match('/\//', $relativepathtosearchparent)) //while (preg_match('/\//',$relativepathtosearchparent)) { - $relativepathtosearchparent=preg_replace('/\/[^\/]*$/', '', $relativepathtosearchparent); - $txt="Is relative parent path ".$relativepathtosearchparent." for ".$relativepathmissing." found in sql tree ?"; + $relativepathtosearchparent = preg_replace('/\/[^\/]*$/', '', $relativepathtosearchparent); + $txt = "Is relative parent path ".$relativepathtosearchparent." for ".$relativepathmissing." found in sql tree ?"; dol_syslog($txt); //print $txt." -> "; - $parentdirisindatabase=0; - foreach($sqltree as $dirsqldesc) + $parentdirisindatabase = 0; + foreach ($sqltree as $dirsqldesc) { if ($dirsqldesc['fullrelativename'] == $relativepathtosearchparent) { - $parentdirisindatabase=$dirsqldesc['id']; + $parentdirisindatabase = $dirsqldesc['id']; break; } } @@ -243,7 +243,7 @@ if ($action == 'refreshmanual') { dol_syslog("Yes with id ".$parentdirisindatabase); //print "Yes with id ".$parentdirisindatabase."
    \n"; - $fk_parent=$parentdirisindatabase; + $fk_parent = $parentdirisindatabase; //break; // We found parent, we can stop the while loop } else @@ -255,7 +255,7 @@ if ($action == 'refreshmanual') else { dol_syslog("Parent is root"); - $fk_parent=0; // Parent is root + $fk_parent = 0; // Parent is root } if ($fk_parent >= 0) @@ -265,20 +265,20 @@ if ($action == 'refreshmanual') $ecmdirtmp->description = ''; $ecmdirtmp->fk_parent = $fk_parent; - $txt="We create directory ".$ecmdirtmp->label." with parent ".$fk_parent; + $txt = "We create directory ".$ecmdirtmp->label." with parent ".$fk_parent; dol_syslog($txt); //print $ecmdirtmp->cachenbofdoc."
    \n";exit; $id = $ecmdirtmp->create($user); if ($id > 0) { - $newdirsql=array('id'=>$id, + $newdirsql = array('id'=>$id, 'id_mere'=>$ecmdirtmp->fk_parent, 'label'=>$ecmdirtmp->label, 'description'=>$ecmdirtmp->description, 'fullrelativename'=>$relativepathmissing); - $sqltree[]=$newdirsql; // We complete fulltree for following loops + $sqltree[] = $newdirsql; // We complete fulltree for following loops //var_dump($sqltree); - $adirwascreated=1; + $adirwascreated = 1; } else { @@ -286,7 +286,7 @@ if ($action == 'refreshmanual') } } else { - $txt="Parent of ".$dirdesc['fullname']." not found"; + $txt = "Parent of ".$dirdesc['fullname']." not found"; dol_syslog($txt); //print $txt."
    \n"; } @@ -294,24 +294,24 @@ if ($action == 'refreshmanual') } // Loop now on each sql tree to check if dir exists - foreach($sqltree as $dirdesc) // Loop on each sqltree to check dir is on disk + foreach ($sqltree as $dirdesc) // Loop on each sqltree to check dir is on disk { - $dirtotest=$conf->ecm->dir_output.'/'.$dirdesc['fullrelativename']; - if (! dol_is_dir($dirtotest)) + $dirtotest = $conf->ecm->dir_output.'/'.$dirdesc['fullrelativename']; + if (!dol_is_dir($dirtotest)) { - $ecmdirtmp->id=$dirdesc['id']; + $ecmdirtmp->id = $dirdesc['id']; $ecmdirtmp->delete($user, 'databaseonly'); //exit; } } - $sql="UPDATE ".MAIN_DB_PREFIX."ecm_directories set cachenbofdoc = -1 WHERE cachenbofdoc < 0"; // If pb into cahce counting, we set to value -1 = "unknown" + $sql = "UPDATE ".MAIN_DB_PREFIX."ecm_directories set cachenbofdoc = -1 WHERE cachenbofdoc < 0"; // If pb into cahce counting, we set to value -1 = "unknown" dol_syslog("sql = ".$sql); $db->query($sql); // If a directory was added, the fulltree array is not correctly completed and sorted, so we clean // it to be sure that fulltree array is not used without reloading it. - if ($adirwascreated) $sqltree=null; + if ($adirwascreated) $sqltree = null; } @@ -322,18 +322,18 @@ if ($action == 'refreshmanual') // Define height of file area (depends on $_SESSION["dol_screenheight"]) //print $_SESSION["dol_screenheight"]; -$maxheightwin=(isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenheight"] > 466)?($_SESSION["dol_screenheight"]-136):660; // Also into index_auto.php file +$maxheightwin = (isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenheight"] > 466) ? ($_SESSION["dol_screenheight"] - 136) : 660; // Also into index_auto.php file -$moreheadcss=''; -$moreheadjs=''; +$moreheadcss = ''; +$moreheadjs = ''; //$morejs=array(); -$morejs=array('includes/jquery/plugins/blockUI/jquery.blockUI.js','core/js/blockUI.js'); // Used by ecm/tpl/enabledfiletreeajax.tpl.pgp -if (empty($conf->global->MAIN_ECM_DISABLE_JS)) $morejs[]="includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js"; +$morejs = array('includes/jquery/plugins/blockUI/jquery.blockUI.js', 'core/js/blockUI.js'); // Used by ecm/tpl/enabledfiletreeajax.tpl.pgp +if (empty($conf->global->MAIN_ECM_DISABLE_JS)) $morejs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js"; -$moreheadjs.=''."\n"; +$moreheadjs .= ''."\n"; llxHeader($moreheadcss.$moreheadjs, $langs->trans("ECMArea"), '', '', '', '', $morejs, '', 0, 0); @@ -342,7 +342,7 @@ dol_fiche_head($head, 'index', $langs->trans("ECMArea").' - '.$langs->trans("ECM // Add filemanager component -$module='ecm'; +$module = 'ecm'; include DOL_DOCUMENT_ROOT.'/core/tpl/filemanager.tpl.php'; // End of page diff --git a/htdocs/ecm/index_auto.php b/htdocs/ecm/index_auto.php index be3cc7a372c..6c245e3ad1c 100644 --- a/htdocs/ecm/index_auto.php +++ b/htdocs/ecm/index_auto.php @@ -31,21 +31,21 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php'; require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; // Load translation files required by the page -$langs->loadLangs(array("ecm","companies","other","users","orders","propal","bills","contracts")); +$langs->loadLangs(array("ecm", "companies", "other", "users", "orders", "propal", "bills", "contracts")); // Security check -if ($user->socid) $socid=$user->socid; +if ($user->socid) $socid = $user->socid; $result = restrictedArea($user, 'ecm', 0); // Get parameters -$socid=GETPOST('socid', 'int'); -$action=GETPOST('action', 'aZ09'); -$section=GETPOST('section', 'int')?GETPOST('section', 'int'):GETPOST('section_id', 'int'); -$module=GETPOST('module', 'alpha'); -if (! $section) $section=0; -$section_dir=GETPOST('section_dir', 'alpha'); +$socid = GETPOST('socid', 'int'); +$action = GETPOST('action', 'aZ09'); +$section = GETPOST('section', 'int') ?GETPOST('section', 'int') : GETPOST('section_id', 'int'); +$module = GETPOST('module', 'alpha'); +if (!$section) $section = 0; +$section_dir = GETPOST('section_dir', 'alpha'); -$search_doc_ref=GETPOST('search_doc_ref', 'alpha'); +$search_doc_ref = GETPOST('search_doc_ref', 'alpha'); $sortfield = GETPOST("sortfield", 'alpha'); $sortorder = GETPOST("sortorder", 'alpha'); @@ -54,26 +54,26 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="fullname"; -if ($module == 'invoice_supplier' && $sortfield == "fullname") $sortfield="level1name"; +if (!$sortorder) $sortorder = "ASC"; +if (!$sortfield) $sortfield = "fullname"; +if ($module == 'invoice_supplier' && $sortfield == "fullname") $sortfield = "level1name"; $ecmdir = new EcmDirectory($db); if ($section) { - $result=$ecmdir->fetch($section); - if (! $result > 0) + $result = $ecmdir->fetch($section); + if (!$result > 0) { dol_print_error($db, $ecmdir->error); exit; } } -$form=new Form($db); +$form = new Form($db); $ecmdirstatic = new EcmDirectory($db); $userstatic = new User($db); -$error=0; +$error = 0; /* @@ -83,7 +83,7 @@ $error=0; // Purge search criteria if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers { - $search_doc_ref=''; + $search_doc_ref = ''; } @@ -119,33 +119,33 @@ if ($action == 'confirm_deletefile') $langs->load("other"); if ($section) { - $result=$ecmdir->fetch($section); - if (! ($result > 0)) + $result = $ecmdir->fetch($section); + if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } - $relativepath=$ecmdir->getRelativePath(); + $relativepath = $ecmdir->getRelativePath(); } - else $relativepath=''; - $upload_dir = $conf->ecm->dir_output.($relativepath?'/'.$relativepath:''); - $file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_POST are already decoded by PHP). + else $relativepath = ''; + $upload_dir = $conf->ecm->dir_output.($relativepath ? '/'.$relativepath : ''); + $file = $upload_dir."/".GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_POST are already decoded by PHP). - $ret=dol_delete_file($file); + $ret = dol_delete_file($file); if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('urlfile')), null, 'mesgs'); else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), null, 'errors'); - $result=$ecmdir->changeNbOfFiles('-'); + $result = $ecmdir->changeNbOfFiles('-'); clearstatcache(); } - $action='file_manager'; + $action = 'file_manager'; } // Remove directory if ($action == 'confirm_deletesection' && GETPOST('confirm') == 'yes') { - $result=$ecmdir->delete($user); + $result = $ecmdir->delete($user); setEventMessages($langs->trans("ECMSectionWasRemoved", $ecmdir->label), null, 'mesgs'); clearstatcache(); @@ -161,56 +161,56 @@ if ($action == 'refreshmanual') // This part of code is same than into file ecm/ajax/ecmdatabase.php TODO Remove duplicate clearstatcache(); - $diroutputslash=str_replace('\\', '/', $conf->ecm->dir_output); - $diroutputslash.='/'; + $diroutputslash = str_replace('\\', '/', $conf->ecm->dir_output); + $diroutputslash .= '/'; // Scan directory tree on disk - $disktree=dol_dir_list($conf->ecm->dir_output, 'directories', 1, '', '^temp$', '', '', 0); + $disktree = dol_dir_list($conf->ecm->dir_output, 'directories', 1, '', '^temp$', '', '', 0); // Scan directory tree in database - $sqltree=$ecmdirstatic->get_full_arbo(0); + $sqltree = $ecmdirstatic->get_full_arbo(0); - $adirwascreated=0; + $adirwascreated = 0; // Now we compare both trees to complete missing trees into database //var_dump($disktree); //var_dump($sqltree); - foreach($disktree as $dirdesc) // Loop on tree onto disk + foreach ($disktree as $dirdesc) // Loop on tree onto disk { - $dirisindatabase=0; - foreach($sqltree as $dirsqldesc) + $dirisindatabase = 0; + foreach ($sqltree as $dirsqldesc) { if ($conf->ecm->dir_output.'/'.$dirsqldesc['fullrelativename'] == $dirdesc['fullname']) { - $dirisindatabase=1; + $dirisindatabase = 1; break; } } - if (! $dirisindatabase) + if (!$dirisindatabase) { - $txt="Directory found on disk ".$dirdesc['fullname'].", not found into database so we add it"; + $txt = "Directory found on disk ".$dirdesc['fullname'].", not found into database so we add it"; dol_syslog($txt); //print $txt."
    \n"; // We must first find the fk_parent of directory to create $dirdesc['fullname'] - $fk_parent=-1; - $relativepathmissing=str_replace($diroutputslash, '', $dirdesc['fullname']); - $relativepathtosearchparent=$relativepathmissing; + $fk_parent = -1; + $relativepathmissing = str_replace($diroutputslash, '', $dirdesc['fullname']); + $relativepathtosearchparent = $relativepathmissing; //dol_syslog("Try to find parent id for directory ".$relativepathtosearchparent); if (preg_match('/\//', $relativepathtosearchparent)) //while (preg_match('/\//',$relativepathtosearchparent)) { - $relativepathtosearchparent=preg_replace('/\/[^\/]*$/', '', $relativepathtosearchparent); - $txt="Is relative parent path ".$relativepathtosearchparent." for ".$relativepathmissing." found in sql tree ?"; + $relativepathtosearchparent = preg_replace('/\/[^\/]*$/', '', $relativepathtosearchparent); + $txt = "Is relative parent path ".$relativepathtosearchparent." for ".$relativepathmissing." found in sql tree ?"; dol_syslog($txt); //print $txt." -> "; - $parentdirisindatabase=0; - foreach($sqltree as $dirsqldesc) + $parentdirisindatabase = 0; + foreach ($sqltree as $dirsqldesc) { if ($dirsqldesc['fullrelativename'] == $relativepathtosearchparent) { - $parentdirisindatabase=$dirsqldesc['id']; + $parentdirisindatabase = $dirsqldesc['id']; break; } } @@ -218,7 +218,7 @@ if ($action == 'refreshmanual') { dol_syslog("Yes with id ".$parentdirisindatabase); //print "Yes with id ".$parentdirisindatabase."
    \n"; - $fk_parent=$parentdirisindatabase; + $fk_parent = $parentdirisindatabase; //break; // We found parent, we can stop the while loop } else @@ -230,7 +230,7 @@ if ($action == 'refreshmanual') else { dol_syslog("Parent is root"); - $fk_parent=0; // Parent is root + $fk_parent = 0; // Parent is root } if ($fk_parent >= 0) @@ -240,20 +240,20 @@ if ($action == 'refreshmanual') $ecmdirtmp->description = ''; $ecmdirtmp->fk_parent = $fk_parent; - $txt="We create directory ".$ecmdirtmp->label." with parent ".$fk_parent; + $txt = "We create directory ".$ecmdirtmp->label." with parent ".$fk_parent; dol_syslog($txt); //print $ecmdirtmp->cachenbofdoc."
    \n";exit; $id = $ecmdirtmp->create($user); if ($id > 0) { - $newdirsql=array('id'=>$id, + $newdirsql = array('id'=>$id, 'id_mere'=>$ecmdirtmp->fk_parent, 'label'=>$ecmdirtmp->label, 'description'=>$ecmdirtmp->description, 'fullrelativename'=>$relativepathmissing); - $sqltree[]=$newdirsql; // We complete fulltree for following loops + $sqltree[] = $newdirsql; // We complete fulltree for following loops //var_dump($sqltree); - $adirwascreated=1; + $adirwascreated = 1; } else { @@ -261,7 +261,7 @@ if ($action == 'refreshmanual') } } else { - $txt="Parent of ".$dirdesc['fullname']." not found"; + $txt = "Parent of ".$dirdesc['fullname']." not found"; dol_syslog($txt); //print $txt."
    \n"; } @@ -269,24 +269,24 @@ if ($action == 'refreshmanual') } // Loop now on each sql tree to check if dir exists - foreach($sqltree as $dirdesc) // Loop on each sqltree to check dir is on disk + foreach ($sqltree as $dirdesc) // Loop on each sqltree to check dir is on disk { - $dirtotest=$conf->ecm->dir_output.'/'.$dirdesc['fullrelativename']; - if (! dol_is_dir($dirtotest)) + $dirtotest = $conf->ecm->dir_output.'/'.$dirdesc['fullrelativename']; + if (!dol_is_dir($dirtotest)) { - $ecmdirtmp->id=$dirdesc['id']; + $ecmdirtmp->id = $dirdesc['id']; $ecmdirtmp->delete($user, 'databaseonly'); //exit; } } - $sql="UPDATE ".MAIN_DB_PREFIX."ecm_directories set cachenbofdoc = -1 WHERE cachenbofdoc < 0"; // If pb into cahce counting, we set to value -1 = "unknown" + $sql = "UPDATE ".MAIN_DB_PREFIX."ecm_directories set cachenbofdoc = -1 WHERE cachenbofdoc < 0"; // If pb into cahce counting, we set to value -1 = "unknown" dol_syslog("sql = ".$sql); $db->query($sql); // If a directory was added, the fulltree array is not correctly completed and sorted, so we clean // it to be sure that fulltree array is not used without reloading it. - if ($adirwascreated) $sqltree=null; + if ($adirwascreated) $sqltree = null; } @@ -297,43 +297,43 @@ if ($action == 'refreshmanual') // Define height of file area (depends on $_SESSION["dol_screenheight"]) //print $_SESSION["dol_screenheight"]; -$maxheightwin=(isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenheight"] > 466)?($_SESSION["dol_screenheight"]-136):660; // Also into index.php file +$maxheightwin = (isset($_SESSION["dol_screenheight"]) && $_SESSION["dol_screenheight"] > 466) ? ($_SESSION["dol_screenheight"] - 136) : 660; // Also into index.php file -$moreheadcss=''; -$moreheadjs=''; +$moreheadcss = ''; +$moreheadjs = ''; //$morejs=array(); -$morejs=array('includes/jquery/plugins/blockUI/jquery.blockUI.js','core/js/blockUI.js'); // Used by ecm/tpl/enabledfiletreeajax.tpl.pgp -if (empty($conf->global->MAIN_ECM_DISABLE_JS)) $morejs[]="includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js"; +$morejs = array('includes/jquery/plugins/blockUI/jquery.blockUI.js', 'core/js/blockUI.js'); // Used by ecm/tpl/enabledfiletreeajax.tpl.pgp +if (empty($conf->global->MAIN_ECM_DISABLE_JS)) $morejs[] = "includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js"; -$moreheadjs.=''."\n"; +$moreheadjs .= ''."\n"; llxHeader($moreheadcss.$moreheadjs, $langs->trans("ECMArea"), '', '', '', '', $morejs, '', 0, 0); // Add sections to manage -$rowspan=0; -$sectionauto=array(); -if (! empty($conf->global->ECM_AUTO_TREE_ENABLED)) +$rowspan = 0; +$sectionauto = array(); +if (!empty($conf->global->ECM_AUTO_TREE_ENABLED)) { - if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) { $langs->load("products"); $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'product', 'test'=>(! empty($conf->product->enabled) || ! empty($conf->service->enabled)), 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); } - if (! empty($conf->societe->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'company', 'test'=>$conf->societe->enabled, 'label'=>$langs->trans("ThirdParties"), 'desc'=>$langs->trans("ECMDocsByThirdParties")); } - if (! empty($conf->propal->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'propal', 'test'=>$conf->propal->enabled, 'label'=>$langs->trans("Proposals"), 'desc'=>$langs->trans("ECMDocsByProposals")); } - if (! empty($conf->contrat->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'contract','test'=>$conf->contrat->enabled, 'label'=>$langs->trans("Contracts"), 'desc'=>$langs->trans("ECMDocsByContracts")); } - if (! empty($conf->commande->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'order', 'test'=>$conf->commande->enabled, 'label'=>$langs->trans("CustomersOrders"), 'desc'=>$langs->trans("ECMDocsByOrders")); } - if (! empty($conf->facture->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'invoice', 'test'=>$conf->facture->enabled, 'label'=>$langs->trans("CustomersInvoices"), 'desc'=>$langs->trans("ECMDocsByInvoices")); } - if (! empty($conf->supplier_proposal->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'supplier_proposal', 'test'=>$conf->supplier_proposal->enabled, 'label'=>$langs->trans("SupplierProposals"), 'desc'=>$langs->trans("ECMDocsBySupplierProposals")); } - if (! empty($conf->fournisseur->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'order_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsByOrders")); } - if (! empty($conf->fournisseur->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'invoice_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsByInvoices")); } - if (! empty($conf->tax->enabled)) { $langs->load("compta"); $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'tax', 'test'=>$conf->tax->enabled, 'label'=>$langs->trans("SocialContributions"), 'desc'=>$langs->trans("ECMDocsBySocialContributions")); } - if (! empty($conf->projet->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'project', 'test'=>$conf->projet->enabled, 'label'=>$langs->trans("Projects"), 'desc'=>$langs->trans("ECMDocsByProjects")); } - if (! empty($conf->ficheinter->enabled)) { $langs->load("interventions"); $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'fichinter', 'test'=>$conf->ficheinter->enabled, 'label'=>$langs->trans("Interventions"), 'desc'=>$langs->trans("ECMDocsByInterventions")); } - if (! empty($conf->expensereport->enabled)) { $langs->load("trips"); $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'expensereport', 'test'=>$conf->expensereport->enabled, 'label'=>$langs->trans("ExpenseReports"), 'desc'=>$langs->trans("ECMDocsByExpenseReports")); } - if (! empty($conf->holiday->enabled)) { $langs->load("holiday"); $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'holiday', 'test'=>$conf->holiday->enabled, 'label'=>$langs->trans("Holidays"), 'desc'=>$langs->trans("ECMDocsByHolidays")); } - if (! empty($conf->banque->enabled)) { $langs->load("banks"); $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'banque', 'test'=>$conf->banque->enabled, 'label'=>$langs->trans("BankAccount"), 'desc'=>$langs->trans("ECMDocsByBankAccount")); } - $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'user', 'test'=>1, 'label'=>$langs->trans("Users"), 'desc'=>$langs->trans("ECMDocsByUsers")); + if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { $langs->load("products"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'product', 'test'=>(!empty($conf->product->enabled) || !empty($conf->service->enabled)), 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); } + if (!empty($conf->societe->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'company', 'test'=>$conf->societe->enabled, 'label'=>$langs->trans("ThirdParties"), 'desc'=>$langs->trans("ECMDocsByThirdParties")); } + if (!empty($conf->propal->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'propal', 'test'=>$conf->propal->enabled, 'label'=>$langs->trans("Proposals"), 'desc'=>$langs->trans("ECMDocsByProposals")); } + if (!empty($conf->contrat->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'contract', 'test'=>$conf->contrat->enabled, 'label'=>$langs->trans("Contracts"), 'desc'=>$langs->trans("ECMDocsByContracts")); } + if (!empty($conf->commande->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'order', 'test'=>$conf->commande->enabled, 'label'=>$langs->trans("CustomersOrders"), 'desc'=>$langs->trans("ECMDocsByOrders")); } + if (!empty($conf->facture->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'invoice', 'test'=>$conf->facture->enabled, 'label'=>$langs->trans("CustomersInvoices"), 'desc'=>$langs->trans("ECMDocsByInvoices")); } + if (!empty($conf->supplier_proposal->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'supplier_proposal', 'test'=>$conf->supplier_proposal->enabled, 'label'=>$langs->trans("SupplierProposals"), 'desc'=>$langs->trans("ECMDocsBySupplierProposals")); } + if (!empty($conf->fournisseur->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'order_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsByOrders")); } + if (!empty($conf->fournisseur->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'invoice_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsByInvoices")); } + if (!empty($conf->tax->enabled)) { $langs->load("compta"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'tax', 'test'=>$conf->tax->enabled, 'label'=>$langs->trans("SocialContributions"), 'desc'=>$langs->trans("ECMDocsBySocialContributions")); } + if (!empty($conf->projet->enabled)) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'project', 'test'=>$conf->projet->enabled, 'label'=>$langs->trans("Projects"), 'desc'=>$langs->trans("ECMDocsByProjects")); } + if (!empty($conf->ficheinter->enabled)) { $langs->load("interventions"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'fichinter', 'test'=>$conf->ficheinter->enabled, 'label'=>$langs->trans("Interventions"), 'desc'=>$langs->trans("ECMDocsByInterventions")); } + if (!empty($conf->expensereport->enabled)) { $langs->load("trips"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'expensereport', 'test'=>$conf->expensereport->enabled, 'label'=>$langs->trans("ExpenseReports"), 'desc'=>$langs->trans("ECMDocsByExpenseReports")); } + if (!empty($conf->holiday->enabled)) { $langs->load("holiday"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'holiday', 'test'=>$conf->holiday->enabled, 'label'=>$langs->trans("Holidays"), 'desc'=>$langs->trans("ECMDocsByHolidays")); } + if (!empty($conf->banque->enabled)) { $langs->load("banks"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'banque', 'test'=>$conf->banque->enabled, 'label'=>$langs->trans("BankAccount"), 'desc'=>$langs->trans("ECMDocsByBankAccount")); } + $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'user', 'test'=>1, 'label'=>$langs->trans("Users"), 'desc'=>$langs->trans("ECMDocsByUsers")); } $head = ecm_prepare_dasboard_head(''); @@ -358,7 +358,7 @@ if ($action == 'delete' && empty($conf->use_javascript_ajax)) print '
    '; // Toolbar -$url=((! empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS))?'#':($_SERVER["PHP_SELF"].'?action=refreshmanual'.($module?'&module='.$module:'').($section?'&section='.$section:''))); +$url = ((!empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS)) ? '#' : ($_SERVER["PHP_SELF"].'?action=refreshmanual'.($module ? '&module='.$module : '').($section ? '&section='.$section : ''))); print ''; print ''; print ''; @@ -391,28 +391,28 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i', $act print ' '.$langs->trans("ECMSections"); print ''; - $showonrightsize=''; + $showonrightsize = ''; // Auto section if (count($sectionauto)) { - $htmltooltip=$langs->trans("ECMAreaDesc2"); + $htmltooltip = $langs->trans("ECMAreaDesc2"); - $sectionauto=dol_sort_array($sectionauto, 'label', 'ASC', true, false); + $sectionauto = dol_sort_array($sectionauto, 'label', 'ASC', true, false); print ''; print ''; print '