Merge pull request #2 from IAS-SYSTEMS-CSC/develop

develop > dolibarr-fixes
This commit is contained in:
Hytham Soliman 2018-07-11 10:03:18 +03:00 committed by GitHub
commit e17d5279ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1087 changed files with 10141 additions and 8439 deletions

170
ChangeLog
View File

@ -2,7 +2,173 @@
English Dolibarr ChangeLog English Dolibarr ChangeLog
-------------------------------------------------------------- --------------------------------------------------------------
***** ChangeLog for 8.0.0 compared to 7.0.3 ***** ***** ChangeLog for 8.0.0 compared to 7.0.0 *****
For Users:
NEW: Experimental module: Ticket
NEW: Experimental module: WebDAV
NEW: Accept anonymous events (no user assigned)
NEW: Accountancy - Add import on general ledger
NEW: Accountancy - Show journal name on journal page and hide button draft export (Add an option in admin)
NEW: Can create event from record card of a company and member
NEW: Add a button to create Stripe customer from the Payment mode tab
NEW: Add accounting account number on product tooltip
NEW: add any predefined mail content
NEW: Add arrows to navigate into containers in website module
NEW: Add a tab to specify accountant/auditor of the company
NEW: Add Date delivery and Availability on Propals List
NEW: Add date in goods reception supplier order table
NEW: Add delivery_time_days of suppliers in export profile
NEW: Add Documents'tab to expedition module
NEW: Use dol_print_phone in thirdparty list page to format phone
NEW: Add entry for the GDPR contact
NEW: Add extrafield type "html"
NEW: Add file number in accountant card and update export filename
NEW: Add files management on products lot
NEW: add filter on project task list
NEW: Add hidden option COMPANY_AQUARIUM_CLEAN_REGEX to clean generated
NEW: add internal stripe payment page for invoice
NEW: Add key __USER_REMOTE_IP__ into available substitution variables
NEW: Add link between credit note invoice and origin
NEW: Add linked file tab to vat
NEW: add link to stripe's info in bank menu
NEW: Add margin filters
NEW: Add mass action enable/disable on cron job list
NEW: Add mass action on project's list to close projects
NEW: Add method to register distributed payments on invoices
NEW: Add multicurrency support for product buy price for supplier propales, orders and invoices
NEW: Add name of day in the timesheet input page per day.
NEW: add new parameters for tcpf encryption
NEW: add optional esign field in pdf propal
NEW: Add option BANK_ACCOUNT_ALLOW_EXTERNAL_DOWNLOAD
NEW: Add option CONTRACT_SYNC_PLANNED_DATE_OF_SERVICES
NEW: Add param $dolibarr_main_restrict_ip in config file to limit ips
NEW: add pdf function to check if pdf file is protected/encrypted
NEW: Add pdf template for stock/warehouse module
NEW: Add phone format for a lot of countries
NEW: Add product and product categories filters on customer margins
NEW: Add product categories filter on product margin
NEW: Add romanian chart of accounts
NEW: Add stats in salaries module
NEW: add stripe transaction
NEW: Add tab contact on supplier proposals
NEW: Add total of time spent in timespent page at top of page too.
NEW: Add trigger CONTRACT_MODIFY
NEW: Add triggers on ECM object and add fill src_object_type/id fields
NEW: Add type of website container/page into dictionary
NEW: advance target filtering can be used everywhere with tpl and fk_element
NEW: Allow negative quantity for dispatch (supplier order)
NEW: bank reconcile: checkbox to select all bank operations
NEW: Better performance with openldap
NEW: Can add filter actiontype and notactiontype on event ical export
NEW: Can add product in supplier order/invoice even w/o predefined price
NEW: cancel orders on massaction
NEW: Can crop image files attached in "document" tabs of a member
NEW: Can delete dir content in media and ECM module recursively
NEW: Can dispatch if more than ordered (if hidden option set)
NEW: Can edit the text color for title line of tables
NEW: Can enter time spent from the list of time spent of project
NEW: Can export leave requests
NEW: Can filter on account range in general ledger grouped by account
NEW: Can filter on country and taxid into the binding page
NEW: Can filter on progression in timesheet
NEW: Can fix the bank account of a payment if payment not conciliated
NEW: Can force usage of shared link for photo of products
NEW: Can get template of email from its label
NEW: Can see Unit Purchase Value of product in stock movement
NEW: Can select from the user list into send form email (For field to and CC)
NEW: Can select sample to use when creating a new page
NEW: can send mail from project card
NEW: Can set position of images in module tickets
NEW: Can set the reply-to into email sent
NEW: Can set the start/end date of service line in invoice templates
NEW: Can share any file from the "Document" tab.
NEW: Can sort on priority in task scheduler list
NEW: Can sort order of files in attach tab for leave and expensereport
NEW: Can use setValueFrom without user modification field
NEW: Cat set the encryption algorithm for extrafields of type password
NEW: check idprof1 for country pt
NEW: default add action: new param $backurlforcard to redirect to card
NEW: default warehouse field for products + prefill warehouses when dispatching supplier orders
NEW: Display price HT on all commercial area boards
NEW: display total on contract service list
NEW: display weight volume in proposal
NEW: Edit of extrafields position page on the edit form
NEW: Experimental DAV module provides a public and private directory
NEW: export filter models can be share or not by user
NEW: Externalsite module can accept iframe content.
NEW: Filter export model is now by user
NEW: Finish implementation of option PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES
NEW: generalize use of button to create new element from list
NEW: hidden conf AGENDA_NB_WEEKS_IN_VIEW_PER_USER to set nb weeks to show into per user view
NEW: hidden conf to assign category to thirparty that are neither customer nor prospect or supplier
NEW: hidden conf to set nb weeks to show into user view
NEW: hidden option MAIN_DISABLE_FREE_LINES
NEW: improve way of adding users/sales representative to thirdparty
NEW: Introduce option THIRDPARTY_QUICKSEARCH_ON_FIELDS to personalize fields use to search on quick search.
NEW: Introduce permission "approve" for "leave request" like for "expense report"
NEW: Load product data optional fields to the line -> enables to use "line_options_{extrafield}"
NEW: Look and feel v8 - Show Picto "+" on all links "Add record"
NEW: Look and feel v8: Use a different picto for delete and unlink
NEW: mail templates for projects
NEW: Module variant supported on services
NEW: monthly VAT report show "Claimed for the period" + "Paid during this
NEW: Mutualize code for action="update_extras"
NEW: On invoice card, show accounting account linked
NEW: Online payment of invoice and subscription record the payment
NEW: OnSearchAndListGoOnCustomerOrSupplierCard conf
NEW: Optimize load of hooks classes (save 1-5Kb of memory)
NEW: Option MAIN_SHOW_REGION_IN_STATE renamed into MAIN_SHOW_REGION_IN_STATE_SELECT are more complete
NEW: Option to force all emails recipient
NEW: Hidden option to send to salaries into emails forms
NEW: order minimum amount
NEW: add price in burger menu on mouvement list
NEW: Report a list of leave requests for a month
NEW: Section of files generated by mass action not visible if empty
NEW: send mails from project card
NEW: Show also size in bytes in tooltip if visible unit is not bytes
NEW: Show keyboard shortcut of nav arrow into tooltip
NEW: Show last result code of cron jobs in error in red
NEW: Show region in company info & Global option to show state code MAIN_SHOW_STATE_CODE
NEW: Show total number of records by category
NEW: Show total of time consumed in week in time spent entry page
NEW: Stripe online payments reuse the same stripe customer account
NEW: Suggest link to pay online for customer orders
NEW: supplier credit notes is now supported like for customer credit notes
NEW: supplier order/order lines export: add supplier product ref
NEW: supplier relative discounts
NEW: Support alternative aliases of page name in website
NEW: syslog file autoclean
NEW: thirdparty categ filter on lists
NEW: Use a css style for weekend in time spent
NEW: Use common substitution rule for language to get translation in ODT
NEW: Variable __ONLINE_PAYMENT_URL__ available in email templates
For developers:
NEW: class reposition can also work on POST (not only GET)
NEW: add a hook in dol_print_phone
NEW: The field "visible" on extrafield can accept expression as condition
NEW: Upgrade of Stripe lib to 6.4.1
NEW: work on CommonObject 'array' field typeNew common object array
NEW: method Form::selectArrayFilter() + use in left menu search
NEW: [REST API] Add the possibility to remove a category from a thirdparty
NEW: doActions on categorycard
NEW: add "moreHtmlRef" hook
NEW: add hook for more permissions control
NEW: add hook moreHtmlStatus to complete to status on banners
NEW: Add hook printEmail
NEW: Add hook setContentSecurityPolicy
NEW: Add password_hash as a hash algorithm
NEW: Add dol_is_link function
NEW: Adds a contact to an invoice with REST API
NEW: Adds a payment for the list of invoices given as parameter
NEW: adds billing contacts ids to REST API returns
NEW: Add showempty parameter in country selection
NEW: add printUserListWhere hook
NEW: add "printUserPasswordField" hooks
NEW: Call to trigger on payment social contribution creation
NEW: Call to trigger on social contribution creation
NEW: hook getnomurltooltip is replaced with hook getNomUrl more powerfull
WARNING: WARNING:
@ -24,6 +190,8 @@ Following changes may create regressions for some external modules, but were nec
* Hook getnomurltooltip provide a duplicate feature compared to hook getNomUrl so all hooks getnomurltooltip * Hook getnomurltooltip provide a duplicate feature compared to hook getNomUrl so all hooks getnomurltooltip
are now replaced with hook getNomUrl. are now replaced with hook getNomUrl.
***** ChangeLog for 7.0.3 compared to 7.0.2 ***** ***** ChangeLog for 7.0.3 compared to 7.0.2 *****
FIX: 7.0 task contact card without withproject parameters FIX: 7.0 task contact card without withproject parameters
FIX: #8722 FIX: #8722

View File

@ -37,11 +37,11 @@ $rowid=GETPOST('rowid','int');
$entity=GETPOST('entity','int'); $entity=GETPOST('entity','int');
$action=GETPOST('action','alpha'); $action=GETPOST('action','alpha');
$update=GETPOST('update','alpha'); $update=GETPOST('update','alpha');
$delete=GETPOST('delete'); // Do not use alpha here $delete=GETPOST('delete','none'); // Do not use alpha here
$debug=GETPOST('debug','int'); $debug=GETPOST('debug','int');
$consts=GETPOST('const','array'); $consts=GETPOST('const','array');
$constname=GETPOST('constname','alpha'); $constname=GETPOST('constname','alpha');
$constvalue=GETPOST('constvalue'); $constvalue=GETPOST('constvalue','none'); // We shoul dbe able to send everything here
$constnote=GETPOST('constnote','alpha'); $constnote=GETPOST('constnote','alpha');

View File

@ -34,7 +34,7 @@ if (!$user->admin) accessforbidden();
$id=GETPOST('rowid','int'); $id=GETPOST('rowid','int');
$action=GETPOST('action','alpha'); $action=GETPOST('action','alpha');
$mode = GETPOST('mode')?GETPOST('mode'):'createform'; // 'createform', 'filters', 'sortorder', 'focus' $mode = GETPOST('mode','aZ09')?GETPOST('mode','aZ09'):'createform'; // 'createform', 'filters', 'sortorder', 'focus'
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
$sortfield = GETPOST("sortfield",'alpha'); $sortfield = GETPOST("sortfield",'alpha');

View File

@ -89,7 +89,7 @@ if ($action == 'update')
if ($result > 0) if ($result > 0)
{ {
$menu->titre=GETPOST('titre', 'alpha'); $menu->titre=GETPOST('titre', 'alpha');
$menu->leftmenu=GETPOST('leftmenu', 'alpha'); $menu->leftmenu=GETPOST('leftmenu', 'aZ09');
$menu->url=GETPOST('url','alpha'); $menu->url=GETPOST('url','alpha');
$menu->langs=GETPOST('langs','alpha'); $menu->langs=GETPOST('langs','alpha');
$menu->position=GETPOST('position','int'); $menu->position=GETPOST('position','int');

View File

@ -157,7 +157,7 @@ $i=0;
foreach($_SESSION as $key => $val) foreach($_SESSION as $key => $val)
{ {
if ($i > 0) print ', '; if ($i > 0) print ', ';
print $key.' => '.$val; print $key.' => '.dol_escape_htmltag($val);
$i++; $i++;
} }
print '</td></tr>'."\n"; print '</td></tr>'."\n";

View File

@ -67,92 +67,92 @@ if ($action == 'updateMask') {
} elseif ($action == 'setvar') { } elseif ($action == 'setvar') {
include_once DOL_DOCUMENT_ROOT . "/core/lib/files.lib.php"; include_once DOL_DOCUMENT_ROOT . "/core/lib/files.lib.php";
$notification_email = GETPOST('TICKETS_NOTIFICATION_EMAIL_FROM', 'alpha'); $notification_email = GETPOST('TICKET_NOTIFICATION_EMAIL_FROM', 'alpha');
if (!empty($notification_email)) { if (!empty($notification_email)) {
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_EMAIL_FROM', $notification_email, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_FROM', $notification_email, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_EMAIL_FROM', '', 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_FROM', '', 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
// altairis : differentiate notification email FROM and TO // altairis : differentiate notification email FROM and TO
$notification_email_to = GETPOST('TICKETS_NOTIFICATION_EMAIL_TO', 'alpha'); $notification_email_to = GETPOST('TICKET_NOTIFICATION_EMAIL_TO', 'alpha');
if (!empty($notification_email_to)) { if (!empty($notification_email_to)) {
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_EMAIL_TO', $notification_email_to, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_TO', $notification_email_to, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_EMAIL_TO', '', 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_TO', '', 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$mail_new_ticket = GETPOST('TICKETS_MESSAGE_MAIL_NEW', 'alpha'); $mail_new_ticket = GETPOST('TICKET_MESSAGE_MAIL_NEW', 'alpha');
if (!empty($mail_new_ticket)) { if (!empty($mail_new_ticket)) {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_NEW', $mail_new_ticket, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_NEW', $mail_new_ticket, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_NEW', $langs->trans('TicketMessageMailNewText'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_NEW', $langs->trans('TicketMessageMailNewText'), 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$mail_intro = GETPOST('TICKETS_MESSAGE_MAIL_INTRO', 'alpha'); $mail_intro = GETPOST('TICKET_MESSAGE_MAIL_INTRO', 'alpha');
if (!empty($mail_intro)) { if (!empty($mail_intro)) {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_INTRO', $mail_intro, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_INTRO', $mail_intro, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_INTRO', $langs->trans('TicketMessageMailIntroText'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_INTRO', $langs->trans('TicketMessageMailIntroText'), 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$mail_signature = GETPOST('TICKETS_MESSAGE_MAIL_SIGNATURE', 'alpha'); $mail_signature = GETPOST('TICKET_MESSAGE_MAIL_SIGNATURE', 'alpha');
if (!empty($mail_signature)) { if (!empty($mail_signature)) {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_SIGNATURE', $mail_signature, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_SIGNATURE', $mail_signature, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_SIGNATURE', $langs->trans('TicketMessageMailSignatureText'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_SIGNATURE', $langs->trans('TicketMessageMailSignatureText'), 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$url_interface = GETPOST('TICKETS_URL_PUBLIC_INTERFACE', 'alpha'); $url_interface = GETPOST('TICKET_URL_PUBLIC_INTERFACE', 'alpha');
if (!empty($mail_signature)) { if (!empty($mail_signature)) {
$res = dolibarr_set_const($db, 'TICKETS_URL_PUBLIC_INTERFACE', $url_interface, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_URL_PUBLIC_INTERFACE', $url_interface, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_URL_PUBLIC_INTERFACE', '', 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_URL_PUBLIC_INTERFACE', '', 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$topic_interface = GETPOST('TICKETS_PUBLIC_INTERFACE_TOPIC', 'alpha'); $topic_interface = GETPOST('TICKET_PUBLIC_INTERFACE_TOPIC', 'alpha');
if (!empty($mail_signature)) { if (!empty($mail_signature)) {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_INTERFACE_TOPIC', $topic_interface, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_PUBLIC_INTERFACE_TOPIC', $topic_interface, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_INTERFACE_TOPIC', '', 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_PUBLIC_INTERFACE_TOPIC', '', 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$text_home = GETPOST('TICKETS_PUBLIC_TEXT_HOME', 'alpha'); $text_home = GETPOST('TICKET_PUBLIC_TEXT_HOME', 'alpha');
if (!empty($mail_signature)) { if (!empty($mail_signature)) {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_TEXT_HOME', $text_home, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HOME', $text_home, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_TEXT_HOME', $langs->trans('TicketPublicInterfaceTextHome'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HOME', $langs->trans('TicketPublicInterfaceTextHome'), 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$text_help = GETPOST('TICKETS_PUBLIC_TEXT_HELP_MESSAGE', 'alpha'); $text_help = GETPOST('TICKET_PUBLIC_TEXT_HELP_MESSAGE', 'alpha');
if (!empty($text_help)) { if (!empty($text_help)) {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_TEXT_HELP_MESSAGE', $text_help, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HELP_MESSAGE', $text_help, 'chaine', 0, '', $conf->entity);
} else { } else {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_TEXT_HELP_MESSAGE', $langs->trans('TicketPublicPleaseBeAccuratelyDescribe'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HELP_MESSAGE', $langs->trans('TicketPublicPleaseBeAccuratelyDescribe'), 'chaine', 0, '', $conf->entity);
} }
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
@ -160,34 +160,34 @@ if ($action == 'updateMask') {
} }
if ($action == 'setvarother') { if ($action == 'setvarother') {
$param_enable_public_interface = GETPOST('TICKETS_ENABLE_PUBLIC_INTERFACE', 'alpha'); $param_enable_public_interface = GETPOST('TICKET_ENABLE_PUBLIC_INTERFACE', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_ENABLE_PUBLIC_INTERFACE', $param_enable_public_interface, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', $param_enable_public_interface, 'chaine', 0, '', $conf->entity);
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$param_must_exists = GETPOST('TICKETS_EMAIL_MUST_EXISTS', 'alpha'); $param_must_exists = GETPOST('TICKET_EMAIL_MUST_EXISTS', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_EMAIL_MUST_EXISTS', $param_must_exists, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_EMAIL_MUST_EXISTS', $param_must_exists, 'chaine', 0, '', $conf->entity);
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$param_disable_email = GETPOST('TICKETS_DISABLE_ALL_MAILS', 'alpha'); $param_disable_email = GETPOST('TICKET_DISABLE_ALL_MAILS', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_DISABLE_ALL_MAILS', $param_disable_email, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_DISABLE_ALL_MAILS', $param_disable_email, 'chaine', 0, '', $conf->entity);
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$param_activate_log_by_email = GETPOST('TICKETS_ACTIVATE_LOG_BY_EMAIL', 'alpha'); $param_activate_log_by_email = GETPOST('TICKET_ACTIVATE_LOG_BY_EMAIL', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_ACTIVATE_LOG_BY_EMAIL', $param_activate_log_by_email, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_ACTIVATE_LOG_BY_EMAIL', $param_activate_log_by_email, 'chaine', 0, '', $conf->entity);
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
if ($conf->global->MAIN_FEATURES_LEVEL >= 2) if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
{ {
$param_show_module_logo = GETPOST('TICKETS_SHOW_MODULE_LOGO', 'alpha'); $param_show_module_logo = GETPOST('TICKET_SHOW_MODULE_LOGO', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_SHOW_MODULE_LOGO', $param_show_module_logo, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_SHOW_MODULE_LOGO', $param_show_module_logo, 'chaine', 0, '', $conf->entity);
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
@ -195,21 +195,21 @@ if ($action == 'setvarother') {
if ($conf->global->MAIN_FEATURES_LEVEL >= 2) if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
{ {
$param_notification_also_main_addressemail = GETPOST('TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS', 'alpha'); $param_notification_also_main_addressemail = GETPOST('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS', $param_notification_also_main_addressemail, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', $param_notification_also_main_addressemail, 'chaine', 0, '', $conf->entity);
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
} }
$param_limit_view = GETPOST('TICKETS_LIMIT_VIEW_ASSIGNED_ONLY', 'alpha'); $param_limit_view = GETPOST('TICKET_LIMIT_VIEW_ASSIGNED_ONLY', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_LIMIT_VIEW_ASSIGNED_ONLY', $param_limit_view, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_LIMIT_VIEW_ASSIGNED_ONLY', $param_limit_view, 'chaine', 0, '', $conf->entity);
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
$param_auto_assign = GETPOST('TICKETS_AUTO_ASSIGN_USER_CREATE', 'alpha'); $param_auto_assign = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity);
if (!$res > 0) { if (!$res > 0) {
$error++; $error++;
} }
@ -358,10 +358,10 @@ print '<table class="noborder" width="100%">';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsActivatePublicInterface") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsActivatePublicInterface") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_ENABLE_PUBLIC_INTERFACE'); print ajax_constantonoff('TICKET_ENABLE_PUBLIC_INTERFACE');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_ENABLE_PUBLIC_INTERFACE", $arrval, $conf->global->TICKETS_ENABLE_PUBLIC_INTERFACE); print $form->selectarray("TICKET_ENABLE_PUBLIC_INTERFACE", $arrval, $conf->global->TICKET_ENABLE_PUBLIC_INTERFACE);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -373,10 +373,10 @@ print '</tr>';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsEmailMustExist") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsEmailMustExist") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_EMAIL_MUST_EXISTS'); print ajax_constantonoff('TICKET_EMAIL_MUST_EXISTS');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_EMAIL_MUST_EXISTS", $arrval, $conf->global->TICKETS_EMAIL_MUST_EXISTS); print $form->selectarray("TICKET_EMAIL_MUST_EXISTS", $arrval, $conf->global->TICKET_EMAIL_MUST_EXISTS);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -390,10 +390,10 @@ print '</tr>';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsShowModuleLogo") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsShowModuleLogo") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_SHOW_MODULE_LOGO'); print ajax_constantonoff('TICKET_SHOW_MODULE_LOGO');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_SHOW_MODULE_LOGO", $arrval, $conf->global->TICKETS_SHOW_MODULE_LOGO); print $form->selectarray("TICKET_SHOW_MODULE_LOGO", $arrval, $conf->global->TICKET_SHOW_MODULE_LOGO);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -406,10 +406,10 @@ print '</tr>';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsShowCompanyLogo") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsShowCompanyLogo") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_SHOW_COMPANY_LOGO'); print ajax_constantonoff('TICKET_SHOW_COMPANY_LOGO');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_SHOW_COMPANY_LOGO", $arrval, $conf->global->TICKETS_SHOW_COMPANY_LOGO); print $form->selectarray("TICKET_SHOW_COMPANY_LOGO", $arrval, $conf->global->TICKET_SHOW_COMPANY_LOGO);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -426,10 +426,10 @@ print '<table class="noborder" width="100%">';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsDisableEmail") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsDisableEmail") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_DISABLE_ALL_MAILS'); print ajax_constantonoff('TICKET_DISABLE_ALL_MAILS');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_DISABLE_ALL_MAILS", $arrval, $conf->global->TICKETS_DISABLE_ALL_MAILS); print $form->selectarray("TICKET_DISABLE_ALL_MAILS", $arrval, $conf->global->TICKET_DISABLE_ALL_MAILS);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -441,10 +441,10 @@ print '</tr>';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsLogEnableEmail") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsLogEnableEmail") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_ACTIVATE_LOG_BY_EMAIL'); print ajax_constantonoff('TICKET_ACTIVATE_LOG_BY_EMAIL');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_ACTIVATE_LOG_BY_EMAIL", $arrval, $conf->global->TICKETS_ACTIVATE_LOG_BY_EMAIL); print $form->selectarray("TICKET_ACTIVATE_LOG_BY_EMAIL", $arrval, $conf->global->TICKET_ACTIVATE_LOG_BY_EMAIL);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -458,10 +458,10 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsEmailAlsoSendToMainAddress") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsEmailAlsoSendToMainAddress") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS'); print ajax_constantonoff('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS", $arrval, $conf->global->TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS); print $form->selectarray("TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS", $arrval, $conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -474,10 +474,10 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsLimitViewAssignedOnly") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsLimitViewAssignedOnly") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_LIMIT_VIEW_ASSIGNED_ONLY'); print ajax_constantonoff('TICKET_LIMIT_VIEW_ASSIGNED_ONLY');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_LIMIT_VIEW_ASSIGNED_ONLY", $arrval, $conf->global->TICKETS_LIMIT_VIEW_ASSIGNED_ONLY); print $form->selectarray("TICKET_LIMIT_VIEW_ASSIGNED_ONLY", $arrval, $conf->global->TICKET_LIMIT_VIEW_ASSIGNED_ONLY);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -494,10 +494,10 @@ if (!$conf->use_javascript_ajax) {
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsAutoAssignTicket") . '</td>'; print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsAutoAssignTicket") . '</td>';
print '<td align="left">'; print '<td align="left">';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_AUTO_ASSIGN_USER_CREATE'); print ajax_constantonoff('TICKET_AUTO_ASSIGN_USER_CREATE');
} else { } else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_AUTO_ASSIGN_USER_CREATE", $arrval, $conf->global->TICKETS_AUTO_ASSIGN_USER_CREATE); print $form->selectarray("TICKET_AUTO_ASSIGN_USER_CREATE", $arrval, $conf->global->TICKET_AUTO_ASSIGN_USER_CREATE);
} }
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -533,7 +533,7 @@ if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) {
// Email d'envoi des notifications // Email d'envoi des notifications
print '<tr class="pair"><td>' . $langs->trans("TicketEmailNotificationFrom") . '</td>'; print '<tr class="pair"><td>' . $langs->trans("TicketEmailNotificationFrom") . '</td>';
print '<td align="left">'; print '<td align="left">';
print '<input type="text" name="TICKETS_NOTIFICATION_EMAIL_FROM" value="' . $conf->global->TICKETS_NOTIFICATION_EMAIL_FROM . '" size="20" ></td>'; print '<input type="text" name="TICKET_NOTIFICATION_EMAIL_FROM" value="' . $conf->global->TICKET_NOTIFICATION_EMAIL_FROM . '" size="20" ></td>';
print '<td align="center">'; print '<td align="center">';
print $form->textwithpicto('', $langs->trans("TicketEmailNotificationFromHelp"), 1, 'help'); print $form->textwithpicto('', $langs->trans("TicketEmailNotificationFromHelp"), 1, 'help');
print '</td>'; print '</td>';
@ -542,18 +542,18 @@ print '</tr>';
// Email de réception des notifications // Email de réception des notifications
print '<tr class="pair"><td>' . $langs->trans("TicketEmailNotificationTo") . '</td>'; print '<tr class="pair"><td>' . $langs->trans("TicketEmailNotificationTo") . '</td>';
print '<td align="left">'; print '<td align="left">';
print '<input type="text" name="TICKETS_NOTIFICATION_EMAIL_TO" value="' . (!empty($conf->global->TICKETS_NOTIFICATION_EMAIL_TO) ? $conf->global->TICKETS_NOTIFICATION_EMAIL_TO : $conf->global->TICKETS_NOTIFICATION_EMAIL_FROM) . '" size="20" ></td>'; print '<input type="text" name="TICKET_NOTIFICATION_EMAIL_TO" value="' . (!empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO) ? $conf->global->TICKET_NOTIFICATION_EMAIL_TO : $conf->global->TICKET_NOTIFICATION_EMAIL_FROM) . '" size="20" ></td>';
print '<td align="center">'; print '<td align="center">';
print $form->textwithpicto('', $langs->trans("TicketEmailNotificationToHelp"), 1, 'help'); print $form->textwithpicto('', $langs->trans("TicketEmailNotificationToHelp"), 1, 'help');
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
// Texte de création d'un ticket // Texte de création d'un ticket
$mail_mesg_new = $conf->global->TICKETS_MESSAGE_MAIL_NEW ? $conf->global->TICKETS_MESSAGE_MAIL_NEW : $langs->trans('TicketNewEmailBody'); $mail_mesg_new = $conf->global->TICKET_MESSAGE_MAIL_NEW ? $conf->global->TICKET_MESSAGE_MAIL_NEW : $langs->trans('TicketNewEmailBody');
print '<tr><td>' . $langs->trans("TicketNewEmailBodyLabel") . '</label>'; print '<tr><td>' . $langs->trans("TicketNewEmailBodyLabel") . '</label>';
print '</td><td>'; print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_MESSAGE_MAIL_NEW', $mail_mesg_new, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70); $doleditor = new DolEditor('TICKET_MESSAGE_MAIL_NEW', $mail_mesg_new, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor->Create(); $doleditor->Create();
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -561,11 +561,11 @@ print $form->textwithpicto('', $langs->trans("TicketNewEmailBodyHelp"), 1, 'help
print '</td></tr>'; print '</td></tr>';
// Texte d'introduction // Texte d'introduction
$mail_intro = $conf->global->TICKETS_MESSAGE_MAIL_INTRO ? $conf->global->TICKETS_MESSAGE_MAIL_INTRO : $langs->trans('TicketMessageMailIntroText'); $mail_intro = $conf->global->TICKET_MESSAGE_MAIL_INTRO ? $conf->global->TICKET_MESSAGE_MAIL_INTRO : $langs->trans('TicketMessageMailIntroText');
print '<tr><td>' . $langs->trans("TicketMessageMailIntroLabelAdmin") . '</label>'; print '<tr><td>' . $langs->trans("TicketMessageMailIntroLabelAdmin") . '</label>';
print '</td><td>'; print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_MESSAGE_MAIL_INTRO', $mail_intro, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70); $doleditor = new DolEditor('TICKET_MESSAGE_MAIL_INTRO', $mail_intro, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor->Create(); $doleditor->Create();
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -573,11 +573,11 @@ print $form->textwithpicto('', $langs->trans("TicketMessageMailIntroHelpAdmin"),
print '</td></tr>'; print '</td></tr>';
// Texte de signature // Texte de signature
$mail_signature = $conf->global->TICKETS_MESSAGE_MAIL_SIGNATURE ? $conf->global->TICKETS_MESSAGE_MAIL_SIGNATURE : $langs->trans('TicketMessageMailSignatureText'); $mail_signature = $conf->global->TICKET_MESSAGE_MAIL_SIGNATURE ? $conf->global->TICKET_MESSAGE_MAIL_SIGNATURE : $langs->trans('TicketMessageMailSignatureText');
print '<tr><td>' . $langs->trans("TicketMessageMailSignatureLabelAdmin") . '</label>'; print '<tr><td>' . $langs->trans("TicketMessageMailSignatureLabelAdmin") . '</label>';
print '</td><td>'; print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_MESSAGE_MAIL_SIGNATURE', $mail_signature, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70); $doleditor = new DolEditor('TICKET_MESSAGE_MAIL_SIGNATURE', $mail_signature, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor->Create(); $doleditor->Create();
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -589,31 +589,31 @@ print '<td colspan="3">' . $langs->trans("PublicInterface") . '</td>';
print "</tr>\n"; print "</tr>\n";
// Url public interface // Url public interface
$url_interface = $conf->global->TICKETS_URL_PUBLIC_INTERFACE; $url_interface = $conf->global->TICKET_URL_PUBLIC_INTERFACE;
print '<tr><td>' . $langs->trans("TicketUrlPublicInterfaceLabelAdmin") . '</label>'; print '<tr><td>' . $langs->trans("TicketUrlPublicInterfaceLabelAdmin") . '</label>';
print '</td><td>'; print '</td><td>';
print '<input type="text" name="TICKETS_URL_PUBLIC_INTERFACE" value="' . $conf->global->TICKETS_URL_PUBLIC_INTERFACE . '" size="40" ></td>'; print '<input type="text" name="TICKET_URL_PUBLIC_INTERFACE" value="' . $conf->global->TICKET_URL_PUBLIC_INTERFACE . '" size="40" ></td>';
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
print $form->textwithpicto('', $langs->trans("TicketUrlPublicInterfaceHelpAdmin"), 1, 'help'); print $form->textwithpicto('', $langs->trans("TicketUrlPublicInterfaceHelpAdmin"), 1, 'help');
print '</td></tr>'; print '</td></tr>';
// Interface topic // Interface topic
$url_interface = $conf->global->TICKETS_PUBLIC_INTERFACE_TOPIC; $url_interface = $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC;
print '<tr><td>' . $langs->trans("TicketPublicInterfaceTopicLabelAdmin") . '</label>'; print '<tr><td>' . $langs->trans("TicketPublicInterfaceTopicLabelAdmin") . '</label>';
print '</td><td>'; print '</td><td>';
print '<input type="text" name="TICKETS_PUBLIC_INTERFACE_TOPIC" value="' . $conf->global->TICKETS_PUBLIC_INTERFACE_TOPIC . '" size="40" ></td>'; print '<input type="text" name="TICKET_PUBLIC_INTERFACE_TOPIC" value="' . $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC . '" size="40" ></td>';
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTopicHelp"), 1, 'help'); print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTopicHelp"), 1, 'help');
print '</td></tr>'; print '</td></tr>';
// Texte d'accueil homepage // Texte d'accueil homepage
$public_text_home = $conf->global->TICKETS_PUBLIC_TEXT_HOME ? $conf->global->TICKETS_PUBLIC_TEXT_HOME : $langs->trans('TicketPublicInterfaceTextHome'); $public_text_home = $conf->global->TICKET_PUBLIC_TEXT_HOME ? $conf->global->TICKET_PUBLIC_TEXT_HOME : $langs->trans('TicketPublicInterfaceTextHome');
print '<tr><td>' . $langs->trans("TicketPublicInterfaceTextHomeLabelAdmin") . '</label>'; print '<tr><td>' . $langs->trans("TicketPublicInterfaceTextHomeLabelAdmin") . '</label>';
print '</td><td>'; print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_PUBLIC_TEXT_HOME', $public_text_home, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70); $doleditor = new DolEditor('TICKET_PUBLIC_TEXT_HOME', $public_text_home, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70);
$doleditor->Create(); $doleditor->Create();
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';
@ -621,11 +621,11 @@ print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTextHomeHelpA
print '</td></tr>'; print '</td></tr>';
// Texte d'aide à la saisie du message // Texte d'aide à la saisie du message
$public_text_help_message = $conf->global->TICKETS_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKETS_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe'); $public_text_help_message = $conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe');
print '<tr><td>' . $langs->trans("TicketPublicInterfaceTextHelpMessageLabelAdmin") . '</label>'; print '<tr><td>' . $langs->trans("TicketPublicInterfaceTextHelpMessageLabelAdmin") . '</label>';
print '</td><td>'; print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_PUBLIC_TEXT_HELP_MESSAGE', $public_text_help_message, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70); $doleditor = new DolEditor('TICKET_PUBLIC_TEXT_HELP_MESSAGE', $public_text_help_message, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70);
$doleditor->Create(); $doleditor->Create();
print '</td>'; print '</td>';
print '<td align="center">'; print '<td align="center">';

View File

@ -40,7 +40,7 @@ $transkey=GETPOST('transkey','alpha');
$transvalue=GETPOST('transvalue','alpha'); $transvalue=GETPOST('transvalue','alpha');
$mode = GETPOST('mode')?GETPOST('mode'):'overwrite'; $mode = GETPOST('mode','aZ09')?GETPOST('mode','aZ09'):'overwrite';
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
$sortfield = GETPOST("sortfield",'alpha'); $sortfield = GETPOST("sortfield",'alpha');

View File

@ -1290,7 +1290,7 @@ if (empty($reshook))
{ {
$arraylist = array('amount' => 'FixAmount','variable' => 'VarAmount'); $arraylist = array('amount' => 'FixAmount','variable' => 'VarAmount');
$descline = $langs->trans('Deposit'); $descline = $langs->trans('Deposit');
$descline.= ' - '.$langs->trans($arraylist[$typeamount]); //$descline.= ' - '.$langs->trans($arraylist[$typeamount]);
if ($typeamount=='amount') { if ($typeamount=='amount') {
$descline.= ' ('. price($valuedeposit, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).')'; $descline.= ' ('. price($valuedeposit, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).')';
} elseif ($typeamount=='variable') { } elseif ($typeamount=='variable') {
@ -2873,7 +2873,7 @@ if ($action == 'create')
if (($origin == 'propal') || ($origin == 'commande')) if (($origin == 'propal') || ($origin == 'commande'))
{ {
print '<td class="nowrap" style="padding-left: 5px">'; print '<td class="nowrap" style="padding-left: 5px">';
$arraylist = array('amount' => 'FixAmount','variable' => 'VarAmount'); $arraylist = array('amount' => $langs->transnoentitiesnoconv('FixAmount'), 'variable' => $langs->transnoentitiesnoconv('VarAmountOneLine', $langs->transnoentitiesnoconv('Deposit')));
print $form->selectarray('typedeposit', $arraylist, GETPOST('typedeposit'), 0, 0, 0, '', 1); print $form->selectarray('typedeposit', $arraylist, GETPOST('typedeposit'), 0, 0, 0, '', 1);
print '</td>'; print '</td>';
print '<td class="nowrap" style="padding-left: 5px">' . $langs->trans('Value') . ':<input type="text" id="valuedeposit" name="valuedeposit" size="3" value="' . GETPOST('valuedeposit', 'int') . '"/>'; print '<td class="nowrap" style="padding-left: 5px">' . $langs->trans('Value') . ':<input type="text" id="valuedeposit" name="valuedeposit" size="3" value="' . GETPOST('valuedeposit', 'int') . '"/>';

View File

@ -442,7 +442,7 @@ if ($search_montant_localtax2 != '') $sql.= natural_search('f.localtax2', $searc
if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1); if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1);
if ($search_categ_cus > 0) $sql.= " AND cc.fk_categorie = ".$db->escape($search_categ_cus); 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_categ_cus == -2) $sql.= " AND cc.fk_categorie IS NULL";
if ($search_status != '') if ($search_status != '-1' && $search_status != '')
{ {
if (is_numeric($search_status) && $search_status >= 0) if (is_numeric($search_status) && $search_status >= 0)
{ {

View File

@ -204,7 +204,7 @@ class Contact extends CommonObject
if (empty($this->priv)) $this->priv = 0; if (empty($this->priv)) $this->priv = 0;
if (empty($this->statut)) $this->statut = 0; // This is to convert '' into '0' to avoid bad sql request if (empty($this->statut)) $this->statut = 0; // This is to convert '' into '0' to avoid bad sql request
$entity = ((isset($this->entity) && is_numeric($this->entity))?$this->entity:$conf->entity); $this->entity = ((isset($this->entity) && is_numeric($this->entity))?$this->entity:$conf->entity);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."socpeople ("; $sql = "INSERT INTO ".MAIN_DB_PREFIX."socpeople (";
$sql.= " datec"; $sql.= " datec";
@ -228,7 +228,7 @@ class Contact extends CommonObject
$sql.= " ".$this->db->escape($this->priv).","; $sql.= " ".$this->db->escape($this->priv).",";
$sql.= " ".$this->db->escape($this->statut).","; $sql.= " ".$this->db->escape($this->statut).",";
$sql.= " ".(! empty($this->canvas)?"'".$this->db->escape($this->canvas)."'":"null").","; $sql.= " ".(! empty($this->canvas)?"'".$this->db->escape($this->canvas)."'":"null").",";
$sql.= " ".$this->db->escape($entity).","; $sql.= " ".$this->db->escape($this->entity).",";
$sql.= "'".$this->db->escape($this->ref_ext)."',"; $sql.= "'".$this->db->escape($this->ref_ext)."',";
$sql.= " ".(! empty($this->import_key)?"'".$this->db->escape($this->import_key)."'":"null"); $sql.= " ".(! empty($this->import_key)?"'".$this->db->escape($this->import_key)."'":"null");
$sql.= ")"; $sql.= ")";
@ -307,6 +307,8 @@ class Contact extends CommonObject
$this->id = $id; $this->id = $id;
$this->entity = ((isset($this->entity) && is_numeric($this->entity))?$this->entity:$conf->entity);
// Clean parameters // Clean parameters
$this->lastname=trim($this->lastname)?trim($this->lastname):trim($this->lastname); $this->lastname=trim($this->lastname)?trim($this->lastname):trim($this->lastname);
$this->firstname=trim($this->firstname); $this->firstname=trim($this->firstname);
@ -354,6 +356,7 @@ class Contact extends CommonObject
$sql .= ", fk_user_modif=".($user->id > 0 ? "'".$this->db->escape($user->id)."'":"NULL"); $sql .= ", fk_user_modif=".($user->id > 0 ? "'".$this->db->escape($user->id)."'":"NULL");
$sql .= ", default_lang=".($this->default_lang?"'".$this->db->escape($this->default_lang)."'":"NULL"); $sql .= ", default_lang=".($this->default_lang?"'".$this->db->escape($this->default_lang)."'":"NULL");
$sql .= ", no_email=".($this->no_email?"'".$this->db->escape($this->no_email)."'":"0"); $sql .= ", no_email=".($this->no_email?"'".$this->db->escape($this->no_email)."'":"0");
$sql .= ", entity = " . $this->db->escape($this->entity);
$sql .= " WHERE rowid=".$this->db->escape($id); $sql .= " WHERE rowid=".$this->db->escape($id);
dol_syslog(get_class($this)."::update", LOG_DEBUG); dol_syslog(get_class($this)."::update", LOG_DEBUG);

View File

@ -178,7 +178,7 @@ if ($action == 'add')
(GETPOST('alwayseditable', 'alpha')?1:0), (GETPOST('alwayseditable', 'alpha')?1:0),
(GETPOST('perms', 'alpha')?GETPOST('perms', 'alpha'):''), (GETPOST('perms', 'alpha')?GETPOST('perms', 'alpha'):''),
$visibility, $visibility,
0, GETPOST('help','alpha'),
GETPOST('computed_value','alpha'), GETPOST('computed_value','alpha'),
(GETPOST('entitycurrentorall', 'alpha')?0:''), (GETPOST('entitycurrentorall', 'alpha')?0:''),
GETPOST('langfile', 'alpha') GETPOST('langfile', 'alpha')
@ -344,7 +344,7 @@ if ($action == 'update')
(GETPOST('alwayseditable', 'alpha')?1:0), (GETPOST('alwayseditable', 'alpha')?1:0),
(GETPOST('perms', 'alpha')?GETPOST('perms', 'alpha'):''), (GETPOST('perms', 'alpha')?GETPOST('perms', 'alpha'):''),
$visibility, $visibility,
0, GETPOST('help','alpha'),
GETPOST('default_value','alpha'), GETPOST('default_value','alpha'),
GETPOST('computed_value','alpha'), GETPOST('computed_value','alpha'),
(GETPOST('entitycurrentorall', 'alpha')?0:''), (GETPOST('entitycurrentorall', 'alpha')?0:''),

View File

@ -256,10 +256,10 @@ class ExtraFields
if ($type == 'varchar' && empty($lengthdb)) $lengthdb='255'; if ($type == 'varchar' && empty($lengthdb)) $lengthdb='255';
} }
$field_desc = array( $field_desc = array(
'type'=>$typedb, 'type'=>$typedb,
'value'=>$lengthdb, 'value'=>$lengthdb,
'null'=>($required?'NOT NULL':'NULL'), 'null'=>($required?'NOT NULL':'NULL'),
'default' => $default_value 'default' => $default_value
); );
$result=$this->db->DDLAddField(MAIN_DB_PREFIX.$table, $attrname, $field_desc); $result=$this->db->DDLAddField(MAIN_DB_PREFIX.$table, $attrname, $field_desc);
@ -376,8 +376,8 @@ class ExtraFields
$sql.= " '".$this->db->escape($list)."',"; $sql.= " '".$this->db->escape($list)."',";
$sql.= " ".($default?"'".$this->db->escape($default)."'":"null").","; $sql.= " ".($default?"'".$this->db->escape($default)."'":"null").",";
$sql.= " ".($computed?"'".$this->db->escape($computed)."'":"null").","; $sql.= " ".($computed?"'".$this->db->escape($computed)."'":"null").",";
$sql .= " " . $user->id . ","; $sql .= " " . (is_object($user) ? $user->id : 0). ",";
$sql .= " " . $user->id . ","; $sql .= " " . (is_object($user) ? $user->id : 0). ",";
$sql .= "'" . $this->db->idate(dol_now()) . "',"; $sql .= "'" . $this->db->idate(dol_now()) . "',";
$sql.= " ".($enabled?"'".$this->db->escape($enabled)."'":"1").","; $sql.= " ".($enabled?"'".$this->db->escape($enabled)."'":"1").",";
$sql.= " ".($help?"'".$this->db->escape($help)."'":"null"); $sql.= " ".($help?"'".$this->db->escape($help)."'":"null");

View File

@ -193,7 +193,12 @@ class Form
$morealt=' style="width: '.$cols.'"'; $morealt=' style="width: '.$cols.'"';
$cols=''; $cols='';
} }
$ret.='<textarea id="'.$htmlname.'" name="'.$htmlname.'" wrap="soft" rows="'.($tmp[1]?$tmp[1]:'20').'"'.($cols?' cols="'.$cols.'"':'class="quatrevingtpercent"').$morealt.'">'.($editvalue?$editvalue:$value).'</textarea>';
$valuetoshow = ($editvalue?$editvalue:$value);
$ret.='<textarea id="'.$htmlname.'" name="'.$htmlname.'" wrap="soft" rows="'.($tmp[1]?$tmp[1]:'20').'"'.($cols?' cols="'.$cols.'"':'class="quatrevingtpercent"').$morealt.'">';
$ret.=dol_string_neverthesehtmltags($valuetoshow, array('textarea'));
$ret.='</textarea>';
} }
else if ($typeofdata == 'day' || $typeofdata == 'datepicker') else if ($typeofdata == 'day' || $typeofdata == 'datepicker')
{ {
@ -2666,7 +2671,7 @@ class Form
$sql.= " FROM ".MAIN_DB_PREFIX."product as p"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid";
$sql.= " WHERE pfp.entity IN (".getEntity('productprice').")"; $sql.= " WHERE pfp.entity IN (".getEntity('productsupplierprice').")";
$sql.= " AND p.tobuy = 1"; $sql.= " AND p.tobuy = 1";
$sql.= " AND s.fournisseur = 1"; $sql.= " AND s.fournisseur = 1";
$sql.= " AND p.rowid = ".$productid; $sql.= " AND p.rowid = ".$productid;

View File

@ -197,7 +197,7 @@ class FormActions
$newcardbutton=''; $newcardbutton='';
if (! empty($conf->agenda->enabled)) if (! empty($conf->agenda->enabled))
{ {
$newcardbutton = '<a class="butActionNew" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.dol_print_date(dol_now(),'dayhourlog').'&origin='.$typeelement.'&originid='.$object->id.($object->socid>0?'&socid='.$object->socid:'').($projectid>0?'&projectid='.$projectid:'').'&backtopage='.urlencode($urlbacktopage).'"><span class="valignmiddle">'.$langs->trans("AddEvent").'</span>'; $newcardbutton = '<a class="butActionNew" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.dol_print_date(dol_now(),'dayhourlog').'&origin='.$typeelement.'&originid='.$object->id.($object->socid>0?'&socid='.$object->socid:($socid>0?'&socid='.$socid:'')).($projectid>0?'&projectid='.$projectid:'').'&backtopage='.urlencode($urlbacktopage).'"><span class="valignmiddle">'.$langs->trans("AddEvent").'</span>';
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>'; $newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
$newcardbutton.= '</a>'; $newcardbutton.= '</a>';
} }

View File

@ -327,7 +327,7 @@ class FormTicket
// If public form, display more information // If public form, display more information
if ($this->ispublic) { if ($this->ispublic) {
print '<div class="warning">' . ($conf->global->TICKETS_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKETS_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe')) . '</div>'; print '<div class="warning">' . ($conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe')) . '</div>';
} }
include_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; include_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$uselocalbrowser = true; $uselocalbrowser = true;
@ -889,8 +889,8 @@ class FormTicket
} }
} }
if ($conf->global->TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS) { if ($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS) {
$sendto[] = $conf->global->TICKETS_NOTIFICATION_EMAIL_TO . '(generic email)'; $sendto[] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO . '(generic email)';
} }
// Print recipient list // Print recipient list
@ -906,7 +906,7 @@ class FormTicket
// Intro // Intro
// External users can't send message email // External users can't send message email
if ($user->rights->ticket->write && !$user->socid) { if ($user->rights->ticket->write && !$user->socid) {
$mail_intro = GETPOST('mail_intro') ? GETPOST('mail_intro') : $conf->global->TICKETS_MESSAGE_MAIL_INTRO; $mail_intro = GETPOST('mail_intro') ? GETPOST('mail_intro') : $conf->global->TICKET_MESSAGE_MAIL_INTRO;
print '<tr class="email_line"><td><label for="mail_intro">' . $langs->trans("TicketMessageMailIntro") . '</label>'; print '<tr class="email_line"><td><label for="mail_intro">' . $langs->trans("TicketMessageMailIntro") . '</label>';
print '</td><td>'; print '</td><td>';
@ -957,7 +957,7 @@ class FormTicket
// Signature // Signature
// External users can't send message email // External users can't send message email
if ($user->rights->ticket->write && !$user->socid) { if ($user->rights->ticket->write && !$user->socid) {
$mail_signature = GETPOST('mail_signature') ? GETPOST('mail_signature') : $conf->global->TICKETS_MESSAGE_MAIL_SIGNATURE; $mail_signature = GETPOST('mail_signature') ? GETPOST('mail_signature') : $conf->global->TICKET_MESSAGE_MAIL_SIGNATURE;
print '<tr class="email_line"><td><label for="mail_intro">' . $langs->trans("TicketMessageMailSignature") . '</label>'; print '<tr class="email_line"><td><label for="mail_intro">' . $langs->trans("TicketMessageMailSignature") . '</label>';
print '</td><td>'; print '</td><td>';

View File

@ -765,28 +765,36 @@ class DoliDBMysqli extends DoliDB
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment'); // ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
$sql= "ALTER TABLE ".$table." ADD ".$field_name." "; $sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
$sql.= $field_desc['type']; $sql.= $field_desc['type'];
if(preg_match("/^[^\s]/i",$field_desc['value'])) if (preg_match("/^[^\s]/i",$field_desc['value']))
{
if (! in_array($field_desc['type'],array('date','datetime'))) if (! in_array($field_desc['type'],array('date','datetime')))
{ {
$sql.= "(".$field_desc['value'].")"; $sql.= "(".$field_desc['value'].")";
} }
if(preg_match("/^[^\s]/i",$field_desc['attribute'])) }
$sql.= " ".$field_desc['attribute']; if (isset($field_desc['attribute']) && preg_match("/^[^\s]/i",$field_desc['attribute']))
if(preg_match("/^[^\s]/i",$field_desc['null'])) {
$sql.= " ".$field_desc['null']; $sql.= " ".$field_desc['attribute'];
if(preg_match("/^[^\s]/i",$field_desc['default'])) }
if (isset($field_desc['null']) && preg_match("/^[^\s]/i",$field_desc['null']))
{
$sql.= " ".$field_desc['null'];
}
if (isset($field_desc['default']) && preg_match("/^[^\s]/i",$field_desc['default']))
{ {
if(preg_match("/null/i",$field_desc['default'])) if(preg_match("/null/i",$field_desc['default']))
$sql.= " default ".$field_desc['default']; $sql.= " default ".$field_desc['default'];
else else
$sql.= " default '".$field_desc['default']."'"; $sql.= " default '".$field_desc['default']."'";
} }
if(preg_match("/^[^\s]/i",$field_desc['extra'])) if (isset($field_desc['extra']) && preg_match("/^[^\s]/i",$field_desc['extra']))
$sql.= " ".$field_desc['extra']; {
$sql.= " ".$field_desc['extra'];
}
$sql.= " ".$field_position; $sql.= " ".$field_position;
dol_syslog(get_class($this)."::DDLAddField ".$sql,LOG_DEBUG); dol_syslog(get_class($this)."::DDLAddField ".$sql,LOG_DEBUG);
if($this->query($sql)) { if ($this->query($sql)) {
return 1; return 1;
} }
return -1; return -1;

View File

@ -234,8 +234,8 @@ function societe_prepare_head(Societe $object)
$head[$h][1] = $langs->trans("WebSiteAccounts"); $head[$h][1] = $langs->trans("WebSiteAccounts");
$nbNote = 0; $nbNote = 0;
$sql = "SELECT COUNT(n.rowid) as nb"; $sql = "SELECT COUNT(n.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."website_account as n"; $sql.= " FROM ".MAIN_DB_PREFIX."societe_account as n";
$sql.= " WHERE fk_soc = ".$object->id; $sql.= " WHERE fk_soc = ".$object->id.' AND fk_website > 0';
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {

View File

@ -1219,7 +1219,7 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n
} }
else dol_syslog("Failed to remove file ".$filename, LOG_WARNING); else dol_syslog("Failed to remove file ".$filename, LOG_WARNING);
// TODO Failure to remove can be because file was already removed or because of permission // TODO Failure to remove can be because file was already removed or because of permission
// If error because of not exists, we must should return true and we should return false if this is a permission problem // If error because it does not exists, we should return true, and we should return false if this is a permission problem
} }
} }
else dol_syslog("No files to delete found", LOG_DEBUG); else dol_syslog("No files to delete found", LOG_DEBUG);

View File

@ -2021,7 +2021,7 @@ function dol_mktime($hour,$minute,$second,$month,$day,$year,$gm=false,$check=1)
} }
else else
{ {
dol_print_error('','PHP version must be 5.3+'); dol_print_error('','PHP version must be 5.4+');
return ''; return '';
} }
} }
@ -4549,7 +4549,7 @@ function price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerou
* 'MT'=Round to Max for totals with Tax (MAIN_MAX_DECIMALS_TOT) * 'MT'=Round to Max for totals with Tax (MAIN_MAX_DECIMALS_TOT)
* 'MS'=Round to Max for stock quantity (MAIN_MAX_DECIMALS_STOCK) * 'MS'=Round to Max for stock quantity (MAIN_MAX_DECIMALS_STOCK)
* @param int $alreadysqlnb Put 1 if you know that content is already universal format number * @param int $alreadysqlnb Put 1 if you know that content is already universal format number
* @return string Amount with universal numeric format (Example: '99.99999') or unchanged text if conversion fails. * @return string Amount with universal numeric format (Example: '99.99999') or unchanged text if conversion fails. If amount is null or '', it returns ''.
* *
* @see price Opposite function of price2num * @see price Opposite function of price2num
*/ */
@ -5477,7 +5477,7 @@ function picto_required()
* @param integer $strip_tags 0=Use internal strip, 1=Use strip_tags() php function (bugged when text contains a < char that is not for a html tag) * @param integer $strip_tags 0=Use internal strip, 1=Use strip_tags() php function (bugged when text contains a < char that is not for a html tag)
* @return string String cleaned * @return string String cleaned
* *
* @see dol_escape_htmltag strip_tags * @see dol_escape_htmltag strip_tags dol_string_onlythesehtmltags dol_string_neverthesehtmltags
*/ */
function dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0) function dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0)
{ {
@ -5509,6 +5509,51 @@ function dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UT
return trim($temp); return trim($temp);
} }
/**
* Clean a string to keep only desirable HTML tags.
*
* @param string $stringtoclean String to clean
* @return string String cleaned
*
* @see dol_escape_htmltag strip_tags dol_string_nohtmltag dol_string_neverthesehtmltags
*/
function dol_string_onlythesehtmltags($stringtoclean)
{
$allowed_tags = array(
"html", "head", "meta", "body", "b", "br", "div", "em", "font", "img", "hr", "i", "li", "link",
"ol", "p", "s", "section", "span", "strong", "title",
"table", "tr", "th", "td", "u", "ul"
);
$allowed_tags_string = join("><", $allowed_tags);
$allowed_tags_string = preg_replace('/^>/','',$allowed_tags_string);
$allowed_tags_string = preg_replace('/<$/','',$allowed_tags_string);
$temp = strip_tags($stringtoclean, $allowed_tags_string);
return $temp;
}
/**
* Clean a string from some undesirable HTML tags.
*
* @param string $stringtoclean String to clean
* @param array $disallowed_tags Array of tags not allowed
* @return string String cleaned
*
* @see dol_escape_htmltag strip_tags dol_string_nohtmltag dol_string_onlythesehtmltags
*/
function dol_string_neverthesehtmltags($stringtoclean, $disallowed_tags=array('textarea'))
{
$temp = $stringtoclean;
foreach($disallowed_tags as $tagtoremove)
{
$temp = preg_replace('/<\/?'.$tagtoremove.'>/', '', $temp);
$temp = preg_replace('/<\/?'.$tagtoremove.'\s+[^>]*>/', '', $temp);
}
return $temp;
}
/** /**
* Return first line of text. Cut will depends if content is HTML or not. * Return first line of text. Cut will depends if content is HTML or not.

View File

@ -150,7 +150,7 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $
top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); // Show html headers top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); // Show html headers
print '<body id="mainbody" class="publicnewticketform" style="margin-top: 10px;">'; print '<body id="mainbody" class="publicnewticketform" style="margin-top: 10px;">';
if (! empty($conf->global->TICKETS_SHOW_COMPANY_LOGO)) { if (! empty($conf->global->TICKET_SHOW_COMPANY_LOGO)) {
// Print logo // Print logo
$urllogo = DOL_URL_ROOT . '/theme/login_logo.png'; $urllogo = DOL_URL_ROOT . '/theme/login_logo.png';
@ -163,8 +163,8 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $
$urllogo = DOL_URL_ROOT . '/theme/dolibarr_logo.png'; $urllogo = DOL_URL_ROOT . '/theme/dolibarr_logo.png';
} }
print '<center>'; print '<center>';
print '<a href="' . ($conf->global->TICKETS_URL_PUBLIC_INTERFACE ? $conf->global->TICKETS_URL_PUBLIC_INTERFACE : dol_buildpath('/public/ticket/index.php', 1)) . '"><img alt="Logo" id="logosubscribe" title="" src="' . $urllogo . '" style="max-width: 440px" /></a><br>'; print '<a href="' . ($conf->global->TICKET_URL_PUBLIC_INTERFACE ? $conf->global->TICKET_URL_PUBLIC_INTERFACE : dol_buildpath('/public/ticket/index.php', 1)) . '"><img alt="Logo" id="logosubscribe" title="" src="' . $urllogo . '" style="max-width: 440px" /></a><br>';
print '<strong>' . ($conf->global->TICKETS_PUBLIC_INTERFACE_TOPIC ? $conf->global->TICKETS_PUBLIC_INTERFACE_TOPIC : $langs->trans("TicketSystem")) . '</strong>'; print '<strong>' . ($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC ? $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC : $langs->trans("TicketSystem")) . '</strong>';
print '</center><br>'; print '</center><br>';
} }

View File

@ -143,7 +143,10 @@ function user_prepare_head($object)
complete_head_from_modules($conf,$langs,$object,$head,$h,'user'); complete_head_from_modules($conf,$langs,$object,$head,$h,'user');
if ((! empty($conf->salaries->enabled) && ! empty($user->rights->salaries->read)) if ((! empty($conf->salaries->enabled) && ! empty($user->rights->salaries->read))
|| (! empty($conf->hrm->enabled) && ! empty($user->rights->hrm->employee->read))) || (! empty($conf->hrm->enabled) && ! empty($user->rights->hrm->employee->read))
|| (! empty($conf->expensereport->enabled) && ! empty($user->rights->expensereport->lire) && $user->id == $object->id)
|| (! empty($conf->holiday->enabled) && ! empty($user->rights->holiday->read) && $user->id == $object->id )
)
{ {
// Bank // Bank
$head[$h][0] = DOL_URL_ROOT.'/user/bank.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/user/bank.php?id='.$object->id;

View File

@ -35,27 +35,82 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
/** /**
* Classe permettant de generer les bons de livraison au modele Typho * Class to build Delivery Order documents with typhon model
*/ */
class pdf_typhon extends ModelePDFDeliveryOrder class pdf_typhon extends ModelePDFDeliveryOrder
{ {
var $db; /**
var $name; * @var DoliDb Database handler
var $description; */
var $type; public $db;
var $phpmin = array(4,3,0); // Minimum version of PHP required by module /**
var $version = 'dolibarr'; * @var string model name
*/
public $name;
var $page_largeur; /**
var $page_hauteur; * @var string model description (short text)
var $format; */
var $marge_gauche; public $description;
var $marge_droite;
var $marge_haute;
var $marge_basse;
var $emetteur; // Objet societe qui emet /**
* @var string document type
*/
public $type;
/**
* @var array() Minimum version of PHP required by module.
* e.g.: PHP 5.4 = array(5, 4)
*/
public $phpmin = array(5, 4);
/**
* Dolibarr version of the loaded document
* @public string
*/
public $version = 'dolibarr';
/**
* @var int page_largeur
*/
public $page_largeur;
/**
* @var int page_hauteur
*/
public $page_hauteur;
/**
* @var array format
*/
public $format;
/**
* @var int marge_gauche
*/
public $marge_gauche;
/**
* @var int marge_droite
*/
public $marge_droite;
/**
* @var int marge_haute
*/
public $marge_haute;
/**
* @var int marge_basse
*/
public $marge_basse;
/**
* Issuer
* @var Societe
*/
public $emetteur; // Objet societe qui emet
/** /**
* Constructor * Constructor

View File

@ -66,7 +66,7 @@ class modAccounting extends DolibarrModules
$this->depends = array("modFacture","modBanque","modTax"); // List of modules id that must be enabled if this module is enabled $this->depends = array("modFacture","modBanque","modTax"); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->conflictwith = array("modComptabilite"); // List of modules are in conflict with this module $this->conflictwith = array("modComptabilite"); // List of modules are in conflict with this module
$this->phpmin = array(5, 3); // Minimum version of PHP required by module $this->phpmin = array(5, 4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3, 9); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3, 9); // Minimum version of Dolibarr required by module
$this->langfiles = array("accountancy","compta"); $this->langfiles = array("accountancy","compta");

View File

@ -62,17 +62,17 @@ class modAdherent extends DolibarrModules
$this->dirs = array("/adherent/temp"); $this->dirs = array("/adherent/temp");
// Config pages // Config pages
//-------------
$this->config_page_url = array("adherent.php@adherents"); $this->config_page_url = array("adherent.php@adherents");
// Dependencies // Dependencies
//------------ $this->hidden = false; // A condition to hide module
$this->depends = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array('modMailmanSpip'); $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array('modMailmanSpip'); // List of module class names as string this module is in conflict with
$this->langfiles = array("members","companies"); $this->langfiles = array("members","companies");
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Constants // Constants
//-----------
$this->const = array(); $this->const = array();
$r=0; $r=0;

View File

@ -65,14 +65,15 @@ class modAgenda extends DolibarrModules
$this->dirs = array("/agenda/temp"); $this->dirs = array("/agenda/temp");
// Config pages // Config pages
//-------------
$this->config_page_url = array("agenda_other.php"); $this->config_page_url = array("agenda_other.php");
// Dependancies // Dependencies
//------------- $this->hidden = false; // A condition to hide module
$this->depends = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->langfiles = array("companies"); $this->langfiles = array("companies");
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Module parts // Module parts
$this->module_parts = array(); $this->module_parts = array();

View File

@ -82,7 +82,7 @@ class modApi extends DolibarrModules
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->conflictwith = array(); // List of modules id this module is in conflict with $this->conflictwith = array(); // List of modules id this module is in conflict with
$this->phpmin = array(5,3); // Minimum version of PHP required by module $this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("other"); $this->langfiles = array("other");
// Constants // Constants

View File

@ -96,7 +96,7 @@ class modAsset extends DolibarrModules
$this->requiredby = array(); // List of module ids to disable if this one is disabled $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with $this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->langfiles = array("assets"); $this->langfiles = array("assets");
$this->phpmin = array(5,3); // Minimum version of PHP required by module $this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(7,0); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(7,0); // Minimum version of Dolibarr required by module
$this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...) $this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
$this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...) $this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...)

View File

@ -63,9 +63,9 @@ class modBanque extends DolibarrModules
// Data directories to create when module is enabled // Data directories to create when module is enabled
$this->dirs = array("/banque/temp"); $this->dirs = array("/banque/temp");
// Config pages // Config pages
//------------- //-------------
$this->config_page_url = array("bank.php"); $this->config_page_url = array("bank.php");
// Dependancies // Dependancies
$this->depends = array(); $this->depends = array();
@ -160,11 +160,11 @@ class modBanque extends DolibarrModules
'b.datec'=>"account","bu.url_id"=>"company","s.nom"=>"company","s.code_compta"=>"company","s.code_compta_fournisseur"=>"company" 'b.datec'=>"account","bu.url_id"=>"company","s.nom"=>"company","s.code_compta"=>"company","s.code_compta_fournisseur"=>"company"
); );
$this->export_special_array[$r]=array('-b.amount'=>'NULLIFNEG','b.amount'=>'NULLIFNEG'); $this->export_special_array[$r]=array('-b.amount'=>'NULLIFNEG','b.amount'=>'NULLIFNEG');
if (empty($conf->fournisseur->enabled)) if (empty($conf->fournisseur->enabled))
{ {
unset($this->export_fields_array[$r]['s.code_compta_fournisseur']); unset($this->export_fields_array[$r]['s.code_compta_fournisseur']);
unset($this->export_entities_array[$r]['s.code_compta_fournisseur']); unset($this->export_entities_array[$r]['s.code_compta_fournisseur']);
} }
$this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'bank_account as ba, '.MAIN_DB_PREFIX.'bank as b)'; $this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'bank_account as ba, '.MAIN_DB_PREFIX.'bank as b)';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."bank_url as bu ON (bu.fk_bank = b.rowid AND bu.type = 'company')"; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."bank_url as bu ON (bu.fk_bank = b.rowid AND bu.type = 'company')";
@ -178,10 +178,10 @@ class modBanque extends DolibarrModules
$this->export_label[$r]='Bordereaux remise Chq/Fact'; $this->export_label[$r]='Bordereaux remise Chq/Fact';
$this->export_permission[$r]=array(array("banque","export")); $this->export_permission[$r]=array(array("banque","export"));
$this->export_fields_array[$r]=array("bch.rowid"=>"DepositId","bch.ref"=>"Numero","bch.ref_ext"=>"RefExt",'ba.ref'=>'AccountRef','ba.label'=>'AccountLabel','b.datev'=>'DateValue','b.num_chq'=>'ChequeOrTransferNumber','b.amount'=>'Credit','b.num_releve'=>'AccountStatement','b.datec'=>"DateCreation", $this->export_fields_array[$r]=array("bch.rowid"=>"DepositId","bch.ref"=>"Numero","bch.ref_ext"=>"RefExt",'ba.ref'=>'AccountRef','ba.label'=>'AccountLabel','b.datev'=>'DateValue','b.num_chq'=>'ChequeOrTransferNumber','b.amount'=>'Credit','b.num_releve'=>'AccountStatement','b.datec'=>"DateCreation",
"bch.date_bordereau"=>"Date","bch.amount"=>"Total","bch.nbcheque"=>"NbCheque","bu.url_id"=>"IdThirdParty","s.nom"=>"ThirdParty","f.facnumber"=>"InvoiceRef" "bch.date_bordereau"=>"Date","bch.amount"=>"Total","bch.nbcheque"=>"NbCheque","bu.url_id"=>"IdThirdParty","s.nom"=>"ThirdParty","s.code_compta"=>"CustomerAccountancyCode","f.facnumber"=>"InvoiceRef"
); );
$this->export_TypeFields_array[$r]=array('ba.ref'=>'Text','ba.label'=>'Text','b.datev'=>'Date','b.num_chq'=>'Text','b.amount'=>'Numeric','b.num_releve'=>'Text','b.datec'=>"Date", $this->export_TypeFields_array[$r]=array('ba.ref'=>'Text','ba.label'=>'Text','b.datev'=>'Date','b.num_chq'=>'Text','b.amount'=>'Numeric','b.num_releve'=>'Text','b.datec'=>"Date",
"bch.date_bordereau"=>"Date","bch.rowid"=>"Numeric","bch.ref"=>"Numeric","bch.ref_ext"=>"Text","bch.amount"=>"Numeric","bch.nbcheque"=>"Numeric","bu.url_id"=>"Text","s.nom"=>"Text","f.facnumber"=>"Text" "bch.date_bordereau"=>"Date","bch.rowid"=>"Numeric","bch.ref"=>"Numeric","bch.ref_ext"=>"Text","bch.amount"=>"Numeric","bch.nbcheque"=>"Numeric","bu.url_id"=>"Text","s.nom"=>"Text","s.code_compta"=>"Text","f.facnumber"=>"Text"
); );
$this->export_entities_array[$r]=array('ba.ref'=>'account','ba.label'=>'account','b.datev'=>'account','b.num_chq'=>'account','b.amount'=>'account','b.num_releve'=>'account','b.datec'=>"account", $this->export_entities_array[$r]=array('ba.ref'=>'account','ba.label'=>'account','b.datev'=>'account','b.num_chq'=>'account','b.amount'=>'account','b.num_releve'=>'account','b.datec'=>"account",
"bu.url_id"=>"company","s.nom"=>"company","s.code_compta"=>"company","s.code_compta_fournisseur"=>"company","f.facnumber"=>"invoice"); "bu.url_id"=>"company","s.nom"=>"company","s.code_compta"=>"company","s.code_compta_fournisseur"=>"company","f.facnumber"=>"invoice");
@ -203,12 +203,12 @@ class modBanque extends DolibarrModules
} }
/** /**
* Function called when module is enabled. * Function called when module is enabled.
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
* It also creates data directories. * It also creates data directories.
* *
* @param string $options Options when enabling module ('', 'noboxes') * @param string $options Options when enabling module ('', 'noboxes')
* @return int 1 if OK, 0 if KO * @return int 1 if OK, 0 if KO
*/ */
function init($options='') function init($options='')

View File

@ -64,9 +64,10 @@ class modCashDesk extends DolibarrModules
$this->config_page_url = array("cashdesk.php@cashdesk"); $this->config_page_url = array("cashdesk.php@cashdesk");
// Dependencies // Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array('always'=>"modBanque", 'always'=>"modFacture", 'always'=>"modProduct", 'FR'=>'modBlockedLog'); // List of modules id that must be enabled if this module is enabled $this->depends = array('always'=>"modBanque", 'always'=>"modFacture", 'always'=>"modProduct", 'FR'=>'modBlockedLog'); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4,1); // Minimum version of PHP required by module $this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(2,4); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(2,4); // Minimum version of Dolibarr required by module
$this->langfiles = array("cashdesk"); $this->langfiles = array("cashdesk");
$this->warnings_activation = array('FR'=>'WarningNoteModulePOSForFrenchLaw'); // Warning to show when we activate module. array('always'='text') or array('FR'='text') $this->warnings_activation = array('FR'=>'WarningNoteModulePOSForFrenchLaw'); // Warning to show when we activate module. array('always'='text') or array('FR'='text')

View File

@ -61,10 +61,11 @@ class modExpenseReport extends DolibarrModules
$this->config_page_url = array('expensereport.php'); $this->config_page_url = array('expensereport.php');
// Dependencies // Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
// $this->conflictwith = array("modDeplacement"); // Deactivate for access on old information // $this->conflictwith = array("modDeplacement"); // Deactivate for access on old information
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4,3); // Minimum version of PHP required by module $this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,7); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,7); // Minimum version of Dolibarr required by module
$this->langfiles = array("companies","trips"); $this->langfiles = array("companies","trips");

View File

@ -65,9 +65,11 @@ class modGeoIPMaxmind extends DolibarrModules
$this->config_page_url = array("geoipmaxmind.php"); $this->config_page_url = array("geoipmaxmind.php");
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(4,2,0); $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4);
$this->phpmax = array(); $this->phpmax = array();
$this->need_dolibarr_version = array(2,7,-1); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(2,7,-1); // Minimum version of Dolibarr required by module
$this->need_javascript_ajax = 1; $this->need_javascript_ajax = 1;

View File

@ -71,9 +71,11 @@ class modGravatar extends DolibarrModules
$this->config_page_url = array(); $this->config_page_url = array();
// Dependencies // Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->hidden = false; // A condition to hide module
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(4, 3); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5, 4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(2, 7); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(2, 7); // Minimum version of Dolibarr required by module
$this->langfiles = array(); $this->langfiles = array();

View File

@ -66,27 +66,16 @@ class modHRM extends DolibarrModules
$this->config_page_url = array('admin_hrm.php@hrm'); $this->config_page_url = array('admin_hrm.php@hrm');
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(/*" $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
modSalaries, $this->requiredby = array(/*"modSalaries, modExpenseReport, modHoliday"*/); // List of module ids to disable if this one is disabled
modExpenseReport, $this->conflictwith = array(); // List of module class names as string this module is in conflict with
modHoliday $this->phpmin = array(5,4); // Minimum version of PHP required by module
"*/); $this->need_dolibarr_version = array (3,9); // Minimum version of Dolibarr required by module
$this->conflictwith = array(); $this->langfiles = array ("hrm");
$this->phpmin = array (
5,
3
); // Minimum version of PHP required by module
$this->need_dolibarr_version = array (
3,
9
); // Minimum version of Dolibarr required by module
$this->langfiles = array (
"hrm"
);
// Dictionnaries // Dictionaries
$this->dictionnaries=array(); $this->dictionaries=array();
// Constantes // Constantes
$this->const = array (); $this->const = array ();

View File

@ -81,9 +81,11 @@ class modHoliday extends DolibarrModules
// $this->config_page_url = array("holiday.php?leftmenu=setup@holiday"); // $this->config_page_url = array("holiday.php?leftmenu=setup@holiday");
// Dependencies // Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->hidden = false; // A condition to hide module
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(4,3); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("holiday"); $this->langfiles = array("holiday");
@ -116,7 +118,8 @@ class modHoliday extends DolibarrModules
$r++; $r++;
// Array to add new pages in new tabs // Array to add new pages in new tabs
$this->tabs[] = array('data'=>'user:+paidholidays:CPTitreMenu:holiday:$user->rights->holiday->read:/holiday/list.php?mainmenu=hrm&id=__ID__'); // To add a new tab identified by code tabname1 //$this->tabs[] = array('data'=>'user:+paidholidays:CPTitreMenu:holiday:$user->rights->holiday->read:/holiday/list.php?mainmenu=hrm&id=__ID__'); // We avoid to get one tab for each module. RH data are already in RH tab.
$this->tabs[] = array(); // To add a new tab identified by code tabname1
// Boxes // Boxes
$this->boxes = array(); // List of boxes $this->boxes = array(); // List of boxes

View File

@ -60,9 +60,11 @@ class modImport extends DolibarrModules
$this->config_page_url = array(); $this->config_page_url = array();
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(4,3,0); // Need auto_detect_line_endings php option to solve MAC pbs. $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module - Need auto_detect_line_endings php option to solve MAC pbs.
$this->phpmax = array(); $this->phpmax = array();
$this->need_dolibarr_version = array(2,7,-1); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(2,7,-1); // Minimum version of Dolibarr required by module
$this->need_javascript_ajax = 1; $this->need_javascript_ajax = 1;

View File

@ -65,9 +65,11 @@ class modIncoterm extends DolibarrModules
$this->config_page_url = array(); $this->config_page_url = array();
// Dependencies // Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->hidden = false; // A condition to hide module
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(5,0); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("incoterm"); $this->langfiles = array("incoterm");

View File

@ -56,9 +56,12 @@ class modLabel extends DolibarrModules
// Data directories to create when module is enabled // Data directories to create when module is enabled
$this->dirs = array("/label/temp"); $this->dirs = array("/label/temp");
// Dependancies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages // Config pages
// $this->config_page_url = array("label.php"); // $this->config_page_url = array("label.php");

View File

@ -60,9 +60,12 @@ class modLdap extends DolibarrModules
// Config pages // Config pages
$this->config_page_url = array("ldap.php"); $this->config_page_url = array("ldap.php");
// Dependancies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Constants // Constants
$this->const = array( $this->const = array(

View File

@ -63,9 +63,11 @@ class modLoan extends DolibarrModules
$this->config_page_url = array('loan.php'); $this->config_page_url = array('loan.php');
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->conflictwith = array(); $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("loan"); $this->langfiles = array("loan");
// Constants // Constants

View File

@ -57,8 +57,11 @@ class modMailing extends DolibarrModules
$this->dirs = array("/mailing/temp"); $this->dirs = array("/mailing/temp");
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("mails"); $this->langfiles = array("mails");
// Config pages // Config pages

View File

@ -58,8 +58,11 @@ class modMailmanSpip extends DolibarrModules
$this->dirs = array(); $this->dirs = array();
// Dependencies // Dependencies
$this->depends = array('modAdherent'); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array('modAdherent'); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages // Config pages
$this->config_page_url = array('mailman.php'); $this->config_page_url = array('mailman.php');

View File

@ -68,9 +68,11 @@ class modMargin extends DolibarrModules
$this->config_page_url = array("margin.php@margin"); $this->config_page_url = array("margin.php@margin");
// Dependencies // Dependencies
$this->depends = array("modPropale", "modProduct"); // List of modules id that must be enabled if this module is enabled $this->hidden = false; // A condition to hide module
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->depends = array("modPropale", "modProduct"); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(5,1); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,2); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,2); // Minimum version of Dolibarr required by module
$this->langfiles = array("margins"); $this->langfiles = array("margins");

View File

@ -62,7 +62,7 @@ class modModuleBuilder extends DolibarrModules
//------------- //-------------
$this->config_page_url = array('setup@modulebuilder'); $this->config_page_url = array('setup@modulebuilder');
// Dependancies // Dependencies
//------------- //-------------
$this->hidden = false; // A condition to disable module $this->hidden = false; // A condition to disable module
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->depends = array(); // List of modules id that must be enabled if this module is enabled

View File

@ -88,7 +88,7 @@ class modMultiCurrency extends DolibarrModules
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->conflictwith = array(); // List of modules id this module is in conflict with $this->conflictwith = array(); // List of modules id this module is in conflict with
$this->phpmin = array(5, 0); // Minimum version of PHP required by module $this->phpmin = array(5, 4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3, 0); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3, 0); // Minimum version of Dolibarr required by module
$this->langfiles = array("multicurrency"); $this->langfiles = array("multicurrency");

View File

@ -55,8 +55,11 @@ class modNotification extends DolibarrModules
$this->dirs = array(); $this->dirs = array();
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("mails"); $this->langfiles = array("mails");
// Config pages // Config pages

View File

@ -67,9 +67,11 @@ class modOauth extends DolibarrModules
$this->config_page_url = array("oauth.php"); $this->config_page_url = array("oauth.php");
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(5,1); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,7,-2); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,7,-2); // Minimum version of Dolibarr required by module
$this->conflictwith = array(); $this->conflictwith = array();
$this->langfiles = array("oauth"); $this->langfiles = array("oauth");

View File

@ -72,9 +72,11 @@ class modOpenSurvey extends DolibarrModules
//$this->dirs[1] = DOL_DATA_ROOT.'/mymodule/temp; //$this->dirs[1] = DOL_DATA_ROOT.'/mymodule/temp;
// Dependencies // Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->hidden = false; // A condition to hide module
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(4,1); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,4,0); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,4,0); // Minimum version of Dolibarr required by module
// Constants // Constants

View File

@ -69,9 +69,11 @@ class modPayBox extends DolibarrModules
$this->config_page_url = array("paybox.php@paybox"); $this->config_page_url = array("paybox.php@paybox");
// Dependencies // Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->hidden = false; // A condition to hide module
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(4,1); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(2,6); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(2,6); // Minimum version of Dolibarr required by module
$this->langfiles = array("paybox"); $this->langfiles = array("paybox");

View File

@ -70,9 +70,11 @@ class modPaypal extends DolibarrModules
$this->config_page_url = array("paypal.php@paypal"); $this->config_page_url = array("paypal.php@paypal");
// Dependencies // Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->hidden = false; // A condition to hide module
$this->requiredby = array('modPaypalPlus'); // List of modules id to disable if this one is disabled $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(5,2); // Minimum version of PHP required by module $this->requiredby = array('modPaypalPlus'); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("paypal"); $this->langfiles = array("paypal");

View File

@ -63,9 +63,12 @@ class modPrelevement extends DolibarrModules
// Data directories to create when module is enabled // Data directories to create when module is enabled
$this->dirs = array("/prelevement/temp","/prelevement/receipts"); $this->dirs = array("/prelevement/temp","/prelevement/receipts");
// Dependancies // Dependencies
$this->depends = array("modFacture","modBanque"); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array("modFacture","modBanque"); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages // Config pages
$this->config_page_url = array("prelevement.php"); $this->config_page_url = array("prelevement.php");

View File

@ -66,9 +66,11 @@ class modPrinting extends DolibarrModules
$this->config_page_url = array("printing.php@printing"); $this->config_page_url = array("printing.php@printing");
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(5,1); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,7,-2); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,7,-2); // Minimum version of Dolibarr required by module
$this->conflictwith = array(); $this->conflictwith = array();
$this->langfiles = array("printing"); $this->langfiles = array("printing");

View File

@ -65,8 +65,11 @@ class modProduct extends DolibarrModules
$this->dirs = array("/product/temp"); $this->dirs = array("/product/temp");
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array("modStock","modBarcode","modProductBatch"); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array("modStock","modBarcode","modProductBatch"); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages // Config pages
$this->config_page_url = array("product.php@product"); $this->config_page_url = array("product.php@product");

View File

@ -68,9 +68,11 @@ class modProductBatch extends DolibarrModules
$this->config_page_url = array("product_lot_extrafields.php@product"); $this->config_page_url = array("product_lot_extrafields.php@product");
// Dependencies // Dependencies
$this->depends = array("modProduct","modStock","modExpedition","modFournisseur"); // List of modules id that must be enabled if this module is enabled. modExpedition is required to manage batch exit (by manual stock decrease on shipment), modSupplier to manage batch entry (after supplier order). $this->hidden = false; // A condition to hide module
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->depends = array("modProduct","modStock","modExpedition","modFournisseur"); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(5,0); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("productbatch"); $this->langfiles = array("productbatch");

View File

@ -64,10 +64,12 @@ class modProjet extends DolibarrModules
// Data directories to create when module is enabled // Data directories to create when module is enabled
$this->dirs = array("/projet/temp"); $this->dirs = array("/projet/temp");
// Dependancies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->conflictwith = array(); $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array('projects'); $this->langfiles = array('projects');
// Constants // Constants

View File

@ -63,9 +63,12 @@ class modPropale extends DolibarrModules
// Data directories to create when module is enabled // Data directories to create when module is enabled
$this->dirs = array("/propale/temp"); $this->dirs = array("/propale/temp");
// Dependancies // Dependencies
$this->depends = array("modSociete"); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array("modSociete"); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->config_page_url = array("propal.php"); $this->config_page_url = array("propal.php");
$this->langfiles = array("propal","bills","companies","deliveries","products"); $this->langfiles = array("propal","bills","companies","deliveries","products");

View File

@ -67,9 +67,11 @@ class modReceiptPrinter extends DolibarrModules
$this->config_page_url = array("receiptprinter.php"); $this->config_page_url = array("receiptprinter.php");
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->phpmin = array(5,1); // Minimum version of PHP required by module $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,9,-2); // Minimum version of Dolibarr required by module $this->need_dolibarr_version = array(3,9,-2); // Minimum version of Dolibarr required by module
$this->conflictwith = array(); $this->conflictwith = array();
$this->langfiles = array("receiptprinter"); $this->langfiles = array("receiptprinter");

View File

@ -95,7 +95,7 @@ class modResource extends DolibarrModules
// List of modules id to disable if this one is disabled // List of modules id to disable if this one is disabled
$this->requiredby = array('modPlace'); $this->requiredby = array('modPlace');
// Minimum version of PHP required by module // Minimum version of PHP required by module
$this->phpmin = array(5, 3); $this->phpmin = array(5, 4);
$this->langfiles = array("resource"); // langfiles@resource $this->langfiles = array("resource"); // langfiles@resource
// Constants // Constants

View File

@ -70,9 +70,11 @@ class modSalaries extends DolibarrModules
$this->config_page_url = array(); $this->config_page_url = array();
// Dependencies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->conflictwith = array(); $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("salaries","bills"); $this->langfiles = array("salaries","bills");
// Constants // Constants

View File

@ -62,9 +62,12 @@ class modService extends DolibarrModules
// Data directories to create when module is enabled // Data directories to create when module is enabled
$this->dirs = array("/product/temp"); $this->dirs = array("/product/temp");
// Dependancies // Dependencies
$this->depends = array(); $this->hidden = false; // A condition to hide module
$this->requiredby = array(); $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages // Config pages
$this->config_page_url = array("product.php@product"); $this->config_page_url = array("product.php@product");

View File

@ -25,7 +25,7 @@
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
/** /**
* Class to describe a Cron module * Class to describe a Skype module
*/ */
class modSkype extends DolibarrModules class modSkype extends DolibarrModules
{ {
@ -59,31 +59,26 @@ class modSkype extends DolibarrModules
$this->dirs = array(); $this->dirs = array();
// Config pages // Config pages
//-------------
$this->config_page_url = array(); $this->config_page_url = array();
// Dependancies // Dependencies
//------------- $this->hidden = ! empty($conf->global->MODULE_SKYPE_DISABLED); // A condition to hide module
$this->hidden = ! empty($conf->global->MODULE_SKYPE_DISABLED); // A condition to disable module $this->depends = array('modSociete'); // List of module class names as string that must be enabled if this module is enabled
$this->depends = array('modSociete'); // List of modules id that must be enabled if this module is enabled $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled $this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->conflictwith = array(); // List of modules id this module is in conflict with $this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array(); $this->langfiles = array();
// Constants // Constants
//-----------
// New pages on tabs // New pages on tabs
// -----------------
$this->tabs = array(); $this->tabs = array();
// Boxes // Boxes
//------
$this->boxes = array(); $this->boxes = array();
// Main menu entries // Main menu entries
//------------------
$this->menu = array(); $this->menu = array();
} }
} }

View File

@ -107,8 +107,8 @@ class modTicket extends DolibarrModules
// (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive) // (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
// Example: // Example:
$this->const = array(); $this->const = array();
$this->const[1] = array('TICKETS_ENABLE_PUBLIC_INTERFACE', 'chaine', '1', 'Enable ticket public interface'); $this->const[1] = array('TICKET_ENABLE_PUBLIC_INTERFACE', 'chaine', '1', 'Enable ticket public interface');
$this->const[2] = array('TICKETSUP_ADDON', 'chaine', 'mod_ticket_simple', 'Ticket ref module'); $this->const[2] = array('TICKET_ADDON', 'chaine', 'mod_ticket_simple', 'Ticket ref module');
$this->tabs = array( $this->tabs = array(
'thirdparty:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?socid=__ID__', 'thirdparty:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?socid=__ID__',

View File

@ -38,7 +38,78 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
class pdf_baleine extends ModelePDFProjects class pdf_baleine extends ModelePDFProjects
{ {
var $emetteur; // Objet societe qui emet /**
* @var DoliDb Database handler
*/
public $db;
/**
* @var string model name
*/
public $name;
/**
* @var string model description (short text)
*/
public $description;
/**
* @var string document type
*/
public $type;
/**
* @var array() Minimum version of PHP required by module.
* e.g.: PHP 5.4 = array(5, 4)
*/
public $phpmin = array(5, 4);
/**
* Dolibarr version of the loaded document
* @public string
*/
public $version = 'dolibarr';
/**
* @var int page_largeur
*/
public $page_largeur;
/**
* @var int page_hauteur
*/
public $page_hauteur;
/**
* @var array format
*/
public $format;
/**
* @var int marge_gauche
*/
public $marge_gauche;
/**
* @var int marge_droite
*/
public $marge_droite;
/**
* @var int marge_haute
*/
public $marge_haute;
/**
* @var int marge_basse
*/
public $marge_basse;
/**
* Issuer
* @var Societe
*/
public $emetteur; // Objet societe qui emet
/** /**
* Constructor * Constructor

View File

@ -38,23 +38,78 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functionsnumtoword.lib.php';
*/ */
class pdf_standard extends ModelePDFSuppliersPayments class pdf_standard extends ModelePDFSuppliersPayments
{ {
var $db; /**
var $name; * @var DoliDb Database handler
var $description; */
var $type; public $db;
var $phpmin = array(4,3,0); // Minimum version of PHP required by module /**
var $version = 'dolibarr'; * @var string model name
*/
public $name;
var $page_largeur; /**
var $page_hauteur; * @var string model description (short text)
var $format; */
var $marge_gauche; public $description;
var $marge_droite;
var $marge_haute;
var $marge_basse;
var $emetteur; // Objet societe qui emet /**
* @var string document type
*/
public $type;
/**
* @var array() Minimum version of PHP required by module.
* e.g.: PHP 5.4 = array(5, 4)
*/
public $phpmin = array(5, 4);
/**
* Dolibarr version of the loaded document
* @public string
*/
public $version = 'dolibarr';
/**
* @var int page_largeur
*/
public $page_largeur;
/**
* @var int page_hauteur
*/
public $page_hauteur;
/**
* @var array format
*/
public $format;
/**
* @var int marge_gauche
*/
public $marge_gauche;
/**
* @var int marge_droite
*/
public $marge_droite;
/**
* @var int marge_haute
*/
public $marge_haute;
/**
* @var int marge_basse
*/
public $marge_basse;
/**
* Issuer
* @var Societe
*/
public $emetteur;
/** /**

View File

@ -60,9 +60,9 @@ class pdf_aurore extends ModelePDFSupplierProposal
/** /**
* @var array() Minimum version of PHP required by module. * @var array() Minimum version of PHP required by module.
* e.g.: PHP 5.3 = array(5, 3) * e.g.: PHP 5.4 = array(5, 4)
*/ */
public $phpmin = array(5, 2); public $phpmin = array(5, 4);
/** /**
* Dolibarr version of the loaded document * Dolibarr version of the loaded document

View File

@ -23,7 +23,7 @@
* \brief File with class to manage the numbering module Simple for ticket references * \brief File with class to manage the numbering module Simple for ticket references
*/ */
require_once DOL_DOCUMENT_ROOT.'/core/modules/modules_ticket.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/ticket/modules_ticket.php';
/** /**
* Class to manage the numbering module Simple for ticket references * Class to manage the numbering module Simple for ticket references

View File

@ -22,7 +22,7 @@
* \brief Fichier contenant la classe du modele de numerotation de reference de projet Universal * \brief Fichier contenant la classe du modele de numerotation de reference de projet Universal
*/ */
require_once DOL_DOCUMENT_ROOT.'/core/modules/modules_ticket.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/ticket/modules_ticket.php';
/** /**
* Classe du modele de numerotation de reference de projet Universal * Classe du modele de numerotation de reference de projet Universal
@ -52,7 +52,7 @@ class mod_ticket_universal extends ModeleNumRefTicket
$texte .= '<form action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; $texte .= '<form action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
$texte .= '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; $texte .= '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
$texte .= '<input type="hidden" name="action" value="updateMask">'; $texte .= '<input type="hidden" name="action" value="updateMask">';
$texte .= '<input type="hidden" name="maskconstticket" value="TICKETSUP_UNIVERSAL_MASK">'; $texte .= '<input type="hidden" name="maskconstticket" value="TICKET_UNIVERSAL_MASK">';
$texte .= '<table class="nobordernopadding" width="100%">'; $texte .= '<table class="nobordernopadding" width="100%">';
$tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("Ticket"), $langs->transnoentities("Ticket")); $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("Ticket"), $langs->transnoentities("Ticket"));
@ -63,7 +63,7 @@ class mod_ticket_universal extends ModeleNumRefTicket
// Parametrage du prefix // Parametrage du prefix
$texte .= '<tr><td>' . $langs->trans("Mask") . ':</td>'; $texte .= '<tr><td>' . $langs->trans("Mask") . ':</td>';
$texte .= '<td align="right">' . $form->textwithpicto('<input type="text" class="flat" size="24" name="maskticket" value="' . $conf->global->TICKETSUP_UNIVERSAL_MASK . '">', $tooltip, 1, 1) . '</td>'; $texte .= '<td align="right">' . $form->textwithpicto('<input type="text" class="flat" size="24" name="maskticket" value="' . $conf->global->TICKET_UNIVERSAL_MASK . '">', $tooltip, 1, 1) . '</td>';
$texte .= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="' . $langs->trans("Modify") . '" name="Button"></td>'; $texte .= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="' . $langs->trans("Modify") . '" name="Button"></td>';
@ -109,7 +109,7 @@ class mod_ticket_universal extends ModeleNumRefTicket
include_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
// On defini critere recherche compteur // On defini critere recherche compteur
$mask = $conf->global->TICKETSUP_UNIVERSAL_MASK; $mask = $conf->global->TICKET_UNIVERSAL_MASK;
if (!$mask) { if (!$mask) {
$this->error = 'NotConfigured'; $this->error = 'NotConfigured';

View File

@ -0,0 +1,120 @@
<?php
/* Copyright (C) 2010-2014 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* 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 <http://www.gnu.org/licenses/>.
* or see http://www.gnu.org/
*/
/**
* \file htdocs/core/modules/ticket/modules_ticket.php
* \ingroup project
* \brief File that contain parent class for projects models
* and parent class for projects numbering models
*/
/**
* Classe mere des modeles de numerotation des references de projets
*/
abstract class ModeleNumRefTicket
{
public $error = '';
/**
* 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 un exemple de numerotation
*
* @return string Example
*/
public function getExample()
{
global $langs;
$langs->load("ticket");
return $langs->trans("NoExample");
}
/**
* Test si les numeros deja en vigueur dans la base ne provoquent pas de
* de conflits qui empechera cette numerotation de fonctionner.
*
* @return boolean false si conflit, true si 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 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");
}
}

View File

@ -144,7 +144,7 @@ $langs->load("modulebuilder");
<table summary="listofattributes" class="border centpercent"> <table summary="listofattributes" class="border centpercent">
<!-- Label --> <!-- Label -->
<tr><td class="titlefield fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo GETPOST('label','alpha'); ?>"></td></tr> <tr><td class="titlefield fieldrequired"><?php echo $langs->trans("LabelOrTranslationKey"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo GETPOST('label','alpha'); ?>"></td></tr>
<!-- Code --> <!-- Code -->
<tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><input type="text" name="attrname" id="attrname" size="10" value="<?php echo GETPOST('attrname','alpha'); ?>"> (<?php echo $langs->trans("AlphaNumOnlyLowerCharsAndNoSpace"); ?>)</td></tr> <tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><input type="text" name="attrname" id="attrname" size="10" value="<?php echo GETPOST('attrname','alpha'); ?>"> (<?php echo $langs->trans("AlphaNumOnlyLowerCharsAndNoSpace"); ?>)</td></tr>
<!-- Type --> <!-- Type -->
@ -186,12 +186,15 @@ $langs->load("modulebuilder");
<tr class="extra_required"><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required"<?php echo (GETPOST('required','alpha')?' checked':''); ?>></td></tr> <tr class="extra_required"><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required"<?php echo (GETPOST('required','alpha')?' checked':''); ?>></td></tr>
<!-- Always editable --> <!-- Always editable -->
<tr class="extra_alwayseditable"><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable"<?php echo ((GETPOST('alwayseditable','alpha') || ! GETPOST('button','alpha'))?' checked':''); ?>></td></tr> <tr class="extra_alwayseditable"><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable"<?php echo ((GETPOST('alwayseditable','alpha') || ! GETPOST('button','alpha'))?' checked':''); ?>></td></tr>
<?php if ($conf->multicompany->enabled) { ?>
<tr><td><?php echo $langs->trans("AllEntities"); ?></td><td class="valeur"><input id="entitycurrentorall" type="checkbox" name="entitycurrentorall"<?php echo (GETPOST('entitycurrentorall','alpha') ? '':' checked'); ?>></td></tr>
<?php } ?>
<!-- Visibility --> <!-- Visibility -->
<tr><td class="extra_list"><?php echo $form->textwithpicto($langs->trans("Visibility"), $langs->trans("VisibleDesc")); ?> <tr><td class="extra_list"><?php echo $form->textwithpicto($langs->trans("Visibility"), $langs->trans("VisibleDesc")); ?>
</td><td class="valeur"><input id="list" class="minwidth100" type="text" name="list" value="<?php echo GETPOST('list','int')!='' ? GETPOST('list','int') : '1'; ?>"></td></tr> </td><td class="valeur"><input id="list" class="minwidth100" type="text" name="list" value="<?php echo GETPOST('list','int')!='' ? GETPOST('list','int') : '1'; ?>"></td></tr>
<!-- Help tooltip -->
<tr class="help"><td><?php echo $form->textwithpicto($langs->trans("HelpOnTooltip"), $langs->trans("HelpOnTooltipDesc")); ?></td><td class="valeur"><input id="help" class="quatrevingtpercent" type="text" name="help" value="<?php echo dol_escape_htmltag($help); ?>"></td></tr>
<?php if ($conf->multicompany->enabled) { ?>
<!-- Multicompany entity -->
<tr><td><?php echo $langs->trans("AllEntities"); ?></td><td class="valeur"><input id="entitycurrentorall" type="checkbox" name="entitycurrentorall"<?php echo (GETPOST('entitycurrentorall','alpha') ? '':' checked'); ?>></td></tr>
<?php } ?>
</table> </table>
<?php dol_fiche_end(); ?> <?php dol_fiche_end(); ?>

View File

@ -156,6 +156,7 @@ $param=$extrafields->attributes[$elementtype]['param'][$attrname];
$perms=$extrafields->attributes[$elementtype]['perms'][$attrname]; $perms=$extrafields->attributes[$elementtype]['perms'][$attrname];
$langfile=$extrafields->attributes[$elementtype]['langfile'][$attrname]; $langfile=$extrafields->attributes[$elementtype]['langfile'][$attrname];
$list=$extrafields->attributes[$elementtype]['list'][$attrname]; $list=$extrafields->attributes[$elementtype]['list'][$attrname];
$help=$extrafields->attributes[$elementtype]['help'][$attrname];
$entitycurrentorall=$extrafields->attributes[$elementtype]['entityid'][$attrname]; $entitycurrentorall=$extrafields->attributes[$elementtype]['entityid'][$attrname];
if((($type == 'select') || ($type == 'checkbox') || ($type == 'radio')) && is_array($param)) if((($type == 'select') || ($type == 'checkbox') || ($type == 'radio')) && is_array($param))
@ -176,7 +177,7 @@ elseif (($type== 'sellist') || ($type == 'chkbxlst') || ($type == 'link') || ($t
} }
?> ?>
<!-- Label --> <!-- Label -->
<tr><td class="titlefield fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo $label; ?>"></td></tr> <tr><td class="titlefield fieldrequired"><?php echo $langs->trans("LabelOrTranslationKey"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo $label; ?>"></td></tr>
<!-- Code --> <!-- Code -->
<tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><?php echo $attrname; ?></td></tr> <tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><?php echo $attrname; ?></td></tr>
<!-- Type --> <!-- Type -->
@ -248,12 +249,15 @@ else
<tr class="extra_required"><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required"<?php echo ($required?' checked':''); ?>></td></tr> <tr class="extra_required"><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required"<?php echo ($required?' checked':''); ?>></td></tr>
<!-- Always editable --> <!-- Always editable -->
<tr class="extra_alwayseditable"><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable"<?php echo ($alwayseditable?' checked':''); ?>></td></tr> <tr class="extra_alwayseditable"><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable"<?php echo ($alwayseditable?' checked':''); ?>></td></tr>
<tr><td class="extra_list"><?php echo $form->textwithpicto($langs->trans("Visibility"), $langs->trans("VisibleDesc")); ?>
</td><td class="valeur"><input id="list" class="minwidth100" type="text" name="list" value="<?php echo ($list!=''?$list:'1'); ?>"></td></tr>
<!-- Help tooltip -->
<tr class="help"><td><?php echo $form->textwithpicto($langs->trans("HelpOnTooltip"), $langs->trans("HelpOnTooltipDesc")); ?></td><td class="valeur"><input id="help" class="quatrevingtpercent" type="text" name="help" value="<?php echo dol_escape_htmltag($help); ?>"></td></tr>
<?php if ($conf->multicompany->enabled) { ?> <?php if ($conf->multicompany->enabled) { ?>
<!-- Multicompany entity -->
<tr><td><?php echo $langs->trans("AllEntities"); ?></td><td class="valeur"><input id="entitycurrentorall" type="checkbox" name="entitycurrentorall"<?php echo (empty($entitycurrentorall) ?' checked':''); ?>></td></tr> <tr><td><?php echo $langs->trans("AllEntities"); ?></td><td class="valeur"><input id="entitycurrentorall" type="checkbox" name="entitycurrentorall"<?php echo (empty($entitycurrentorall) ?' checked':''); ?>></td></tr>
<?php } ?> <?php } ?>
<!-- Visibility --> <!-- Visibility -->
<tr><td class="extra_list"><?php echo $form->textwithpicto($langs->trans("Visibility"), $langs->trans("VisibleDesc")); ?>
</td><td class="valeur"><input id="list" class="minwidth100" type="text" name="list" value="<?php echo ($list!=''?$list:'1'); ?>"></td></tr>
</table> </table>
<?php dol_fiche_end(); ?> <?php dol_fiche_end(); ?>

View File

@ -51,13 +51,13 @@ print '<tr class="liste_titre">';
print '<td align="left">'.$langs->trans("Position"); print '<td align="left">'.$langs->trans("Position");
print '<span class="nowrap"><img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1downarrow.png" alt="" title="A-Z" class="imgdown"></span>'; print '<span class="nowrap"><img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1downarrow.png" alt="" title="A-Z" class="imgdown"></span>';
print '</td>'; print '</td>';
print '<td>'.$langs->trans("Label").'</td>'; print '<td>'.$langs->trans("LabelOrTranslationKey").'</td>';
print '<td>'.$langs->trans("TranslationString").'</td>'; print '<td>'.$langs->trans("TranslationString").'</td>';
print '<td>'.$langs->trans("AttributeCode").'</td>'; print '<td>'.$langs->trans("AttributeCode").'</td>';
print '<td>'.$langs->trans("Type").'</td>'; print '<td>'.$langs->trans("Type").'</td>';
print '<td align="right">'.$langs->trans("Size").'</td>'; print '<td align="right">'.$langs->trans("Size").'</td>';
print '<td align="center">'.$langs->trans("Unique").'</td>';
print '<td>'.$langs->trans("ComputedFormula").'</td>'; print '<td>'.$langs->trans("ComputedFormula").'</td>';
print '<td align="center">'.$langs->trans("Unique").'</td>';
print '<td align="center">'.$langs->trans("Required").'</td>'; print '<td align="center">'.$langs->trans("Required").'</td>';
print '<td align="center">'.$langs->trans("AlwaysEditable").'</td>'; print '<td align="center">'.$langs->trans("AlwaysEditable").'</td>';
print '<td align="center">'.$form->textwithpicto($langs->trans("Visible"), $langs->trans("VisibleDesc")).'</td>'; print '<td align="center">'.$form->textwithpicto($langs->trans("Visible"), $langs->trans("VisibleDesc")).'</td>';
@ -83,8 +83,8 @@ if (is_array($extrafields->attributes[$elementtype]['type']) && count($extrafiel
print "<td>".$key."</td>\n"; print "<td>".$key."</td>\n";
print "<td>".$type2label[$extrafields->attributes[$elementtype]['type'][$key]]."</td>\n"; print "<td>".$type2label[$extrafields->attributes[$elementtype]['type'][$key]]."</td>\n";
print '<td align="right">'.$extrafields->attributes[$elementtype]['size'][$key]."</td>\n"; print '<td align="right">'.$extrafields->attributes[$elementtype]['size'][$key]."</td>\n";
print '<td align="center">'.yn($extrafields->attributes[$elementtype]['unique'][$key])."</td>\n";
print '<td>'.dol_trunc($extrafields->attributes[$elementtype]['computed'][$key], 20)."</td>\n"; print '<td>'.dol_trunc($extrafields->attributes[$elementtype]['computed'][$key], 20)."</td>\n";
print '<td align="center">'.yn($extrafields->attributes[$elementtype]['unique'][$key])."</td>\n";
print '<td align="center">'.yn($extrafields->attributes[$elementtype]['required'][$key])."</td>\n"; print '<td align="center">'.yn($extrafields->attributes[$elementtype]['required'][$key])."</td>\n";
print '<td align="center">'.yn($extrafields->attributes[$elementtype]['alwayseditable'][$key])."</td>\n"; print '<td align="center">'.yn($extrafields->attributes[$elementtype]['alwayseditable'][$key])."</td>\n";
print '<td align="center">'.$extrafields->attributes[$elementtype]['list'][$key]."</td>\n"; print '<td align="center">'.$extrafields->attributes[$elementtype]['list'][$key]."</td>\n";

View File

@ -116,7 +116,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
$res = $userstat->fetch($object->fk_user_assign); $res = $userstat->fetch($object->fk_user_assign);
if ($res > 0) if ($res > 0)
{ {
if (empty($conf->global->TICKETS_DISABLE_ALL_MAILS)) if (empty($conf->global->TICKET_DISABLE_ALL_MAILS))
{ {
// Init to avoid errors // Init to avoid errors
$filepath = array(); $filepath = array();
@ -146,7 +146,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
$message = dol_nl2br($message); $message = dol_nl2br($message);
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) { if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO; $old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = ''; $conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
} }
@ -157,7 +157,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
} else { } else {
$result = $mailfile->sendfile(); $result = $mailfile->sendfile();
} }
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) { if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO; $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
} }
} }
@ -182,9 +182,9 @@ class InterfaceTicketEmail extends DolibarrTriggers
// Send email to notification email // Send email to notification email
if (empty($conf->global->TICKETS_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail'])) if (empty($conf->global->TICKET_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']))
{ {
$sendto = $conf->global->TICKETS_NOTIFICATION_EMAIL_TO; $sendto = $conf->global->TICKET_NOTIFICATION_EMAIL_TO;
if ($sendto) if ($sendto)
{ {
@ -217,12 +217,12 @@ class InterfaceTicketEmail extends DolibarrTriggers
$message_admin.='<p>'.$langs->trans('Message').' : <br>'.$object->message.'</p>'; $message_admin.='<p>'.$langs->trans('Message').' : <br>'.$object->message.'</p>';
$message_admin.='<p><a href="'.dol_buildpath('/ticket/card.php', 2).'?track_id='.$object->track_id.'">'.$langs->trans('SeeThisTicketIntomanagementInterface').'</a></p>'; $message_admin.='<p><a href="'.dol_buildpath('/ticket/card.php', 2).'?track_id='.$object->track_id.'">'.$langs->trans('SeeThisTicketIntomanagementInterface').'</a></p>';
$from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKETS_NOTIFICATION_EMAIL_FROM.'>'; $from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKET_NOTIFICATION_EMAIL_FROM.'>';
$replyto = $from; $replyto = $from;
$message_admin = dol_nl2br($message_admin); $message_admin = dol_nl2br($message_admin);
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) { if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO; $old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = ''; $conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
} }
@ -233,7 +233,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
} else { } else {
$result=$mailfile->sendfile(); $result=$mailfile->sendfile();
} }
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) { if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO; $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
} }
} }
@ -241,7 +241,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
// Send email to customer // Send email to customer
if (empty($conf->global->TICKETS_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create) if (empty($conf->global->TICKET_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create)
{ {
$sendto = ''; $sendto = '';
if (empty($user->socid) && empty($user->email)) { if (empty($user->socid) && empty($user->email)) {
@ -287,16 +287,16 @@ class InterfaceTicketEmail extends DolibarrTriggers
$message_customer.='</ul>'; $message_customer.='</ul>';
$message_customer.='<p>'.$langs->trans('Message').' : <br>'.$object->message.'</p>'; $message_customer.='<p>'.$langs->trans('Message').' : <br>'.$object->message.'</p>';
$url_public_ticket = ($conf->global->TICKETS_URL_PUBLIC_INTERFACE?$conf->global->TICKETS_URL_PUBLIC_INTERFACE.'/':dol_buildpath('/public/ticket/view.php', 2)).'?track_id='.$object->track_id; $url_public_ticket = ($conf->global->TICKET_URL_PUBLIC_INTERFACE?$conf->global->TICKET_URL_PUBLIC_INTERFACE.'/':dol_buildpath('/public/ticket/view.php', 2)).'?track_id='.$object->track_id;
$message_customer.='<p>' . $langs->trans('TicketNewEmailBodyInfosTrackUrlCustomer') . ' : <a href="'.$url_public_ticket.'">'.$url_public_ticket.'</a></p>'; $message_customer.='<p>' . $langs->trans('TicketNewEmailBodyInfosTrackUrlCustomer') . ' : <a href="'.$url_public_ticket.'">'.$url_public_ticket.'</a></p>';
$message_customer.='<p>'.$langs->trans('TicketEmailPleaseDoNotReplyToThisEmail').'</p>'; $message_customer.='<p>'.$langs->trans('TicketEmailPleaseDoNotReplyToThisEmail').'</p>';
$from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKETS_NOTIFICATION_EMAIL_FROM.'>'; $from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKET_NOTIFICATION_EMAIL_FROM.'>';
$replyto = $from; $replyto = $from;
$message_customer = dol_nl2br($message_customer); $message_customer = dol_nl2br($message_customer);
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) { if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO; $old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = ''; $conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
} }
@ -307,7 +307,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
} else { } else {
$result=$mailfile->sendfile(); $result=$mailfile->sendfile();
} }
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) { if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO; $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
} }
} }

View File

@ -285,6 +285,8 @@ class EcmFiles extends CommonObject
*/ */
public function fetch($id, $ref = '', $relativepath = '', $hashoffile='', $hashforshare='', $src_object_type='', $src_object_id=0) public function fetch($id, $ref = '', $relativepath = '', $hashoffile='', $hashforshare='', $src_object_type='', $src_object_id=0)
{ {
global $conf;
dol_syslog(__METHOD__, LOG_DEBUG); dol_syslog(__METHOD__, LOG_DEBUG);
$sql = 'SELECT'; $sql = 'SELECT';
@ -317,25 +319,31 @@ class EcmFiles extends CommonObject
}*/ }*/
if ($relativepath) { if ($relativepath) {
$sql .= " AND t.filepath = '" . $this->db->escape(dirname($relativepath)) . "' AND t.filename = '".$this->db->escape(basename($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
} }
elseif (! empty($ref)) { elseif (! empty($ref)) { // hash of file path
$sql .= " AND t.ref = '".$this->db->escape($ref)."'"; $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
} }
elseif (! empty($hashoffile)) { elseif (! empty($hashoffile)) { // hash of content
$sql .= " AND t.label = '".$this->db->escape($hashoffile)."'"; $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
} }
elseif (! empty($hashforshare)) { elseif (! empty($hashforshare)) {
$sql .= " AND t.share = '".$this->db->escape($hashforshare)."'"; $sql .= " AND t.share = '".$this->db->escape($hashforshare)."'";
//$sql .= " AND t.entity = ".$conf->entity; // hashforshare already unique
} }
elseif ($src_object_type && $src_object_id) elseif ($src_object_type && $src_object_id)
{ {
$sql.= " AND t.src_object_type ='".$this->db->escape($src_object_type)."' AND t.src_object_id = ".$this->db->escape($src_object_id); // Warning: May return several record, and only first one is returned !
$sql .= " AND t.src_object_type ='".$this->db->escape($src_object_type)."' AND t.src_object_id = ".$this->db->escape($src_object_id);
$sql .= " AND t.entity = ".$conf->entity;
} }
else { else {
$sql .= ' AND t.rowid = '.$this->db->escape($id); $sql .= ' AND t.rowid = '.$this->db->escape($id); // rowid already unique
} }
// When we search on hash of content, we take the first one. Solve also hash conflict.
$this->db->plimit(1); $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'); $this->db->order('t.rowid', 'ASC');
$resql = $this->db->query($sql); $resql = $this->db->query($sql);

View File

@ -309,8 +309,7 @@ if ($search_status != '' && $search_status >= 0) $sql.=" AND d.fk_statut IN (".$
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous) if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)
&& (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || empty($user->rights->expensereport->writeall_advance))) && (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || empty($user->rights->expensereport->writeall_advance)))
{ {
$childids = $user->getAllChildIds(); $childids = $user->getAllChildIds(1);
$childids[]=$user->id;
$sql.= " AND d.fk_user_author IN (".join(',',$childids).")\n"; $sql.= " AND d.fk_user_author IN (".join(',',$childids).")\n";
} }
// Add where from extra fields // Add where from extra fields
@ -447,12 +446,15 @@ if ($resql)
print '<a href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$user_id.'" class="butAction">'.$langs->trans("Modify").'</a>'; print '<a href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$user_id.'" class="butAction">'.$langs->trans("Modify").'</a>';
} }
$canedit=(($user->id == $user_id && $user->rights->expensereport->creer) || ($user->id != $user_id)); $childids = $user->getAllChildIds(1);
$canedit=((in_array($user_id, $childids) && $user->rights->expensereport->creer)
|| ($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->expensereport->writeall_advance));
// Boutons d'actions // Boutons d'actions
if ($canedit) if ($canedit)
{ {
print '<a href="'.DOL_URL_ROOT.'/expensereport/card.php?action=request&id='.$user_id.'" class="butAction">'.$langs->trans("AddTrip").'</a>'; print '<a href="'.DOL_URL_ROOT.'/expensereport/card.php?action=create&fk_user_author='.$fuser->id.'" class="butAction">'.$langs->trans("AddTrip").'</a>';
} }
print '</div>'; print '</div>';

View File

@ -530,7 +530,7 @@ class ProductFournisseur extends Product
$sql.= " ,pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code"; $sql.= " ,pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE pfp.entity IN (".getEntity('productprice').")"; $sql.= " WHERE pfp.entity IN (".getEntity('productsupplierprice').")";
$sql.= " AND pfp.fk_soc = s.rowid"; $sql.= " AND pfp.fk_soc = s.rowid";
$sql.= " AND s.status=1"; // only enabled company selected $sql.= " AND s.status=1"; // only enabled company selected
$sql.= " AND pfp.fk_product = ".$prodid; $sql.= " AND pfp.fk_product = ".$prodid;

View File

@ -346,12 +346,12 @@ class Holiday extends CommonObject
$sql.= " AND cp.fk_user = uu.rowid AND cp.fk_validator = ua.rowid"; // Hack pour la recherche sur le tableau $sql.= " AND cp.fk_user = uu.rowid AND cp.fk_validator = ua.rowid"; // Hack pour la recherche sur le tableau
$sql.= " AND cp.fk_user IN (".$user_id.")"; $sql.= " AND cp.fk_user IN (".$user_id.")";
// Filtre de séléction // Selection filter
if(!empty($filter)) { if(!empty($filter)) {
$sql.= $filter; $sql.= $filter;
} }
// Ordre d'affichage du résultat // Order of display of the result
if(!empty($order)) { if(!empty($order)) {
$sql.= $order; $sql.= $order;
} }
@ -359,19 +359,19 @@ class Holiday extends CommonObject
dol_syslog(get_class($this)."::fetchByUser", LOG_DEBUG); dol_syslog(get_class($this)."::fetchByUser", LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
// Si pas d'erreur SQL // If no SQL error
if ($resql) { if ($resql) {
$i = 0; $i = 0;
$tab_result = $this->holiday; $tab_result = $this->holiday;
$num = $this->db->num_rows($resql); $num = $this->db->num_rows($resql);
// Si pas d'enregistrement // If no registration
if(!$num) { if(!$num) {
return 2; return 2;
} }
// Liste les enregistrements et les ajoutent au tableau // List the records and add them to the table
while($i < $num) { while($i < $num) {
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
@ -412,13 +412,13 @@ class Holiday extends CommonObject
$i++; $i++;
} }
// Retourne 1 avec le tableau rempli // Returns 1 with the filled array
$this->holiday = $tab_result; $this->holiday = $tab_result;
return 1; return 1;
} }
else else
{ {
// Erreur SQL // SQL Error
$this->error="Error ".$this->db->lasterror(); $this->error="Error ".$this->db->lasterror();
return -1; return -1;
} }
@ -471,12 +471,12 @@ class Holiday extends CommonObject
$sql.= " WHERE cp.entity IN (".getEntity('holiday').")"; $sql.= " WHERE cp.entity IN (".getEntity('holiday').")";
$sql.= " AND cp.fk_user = uu.rowid AND cp.fk_validator = ua.rowid "; // Hack pour la recherche sur le tableau $sql.= " AND cp.fk_user = uu.rowid AND cp.fk_validator = ua.rowid "; // Hack pour la recherche sur le tableau
// Filtrage de séléction // Selection filtering
if(!empty($filter)) { if(!empty($filter)) {
$sql.= $filter; $sql.= $filter;
} }
// Ordre d'affichage // order of display
if(!empty($order)) { if(!empty($order)) {
$sql.= $order; $sql.= $order;
} }
@ -484,19 +484,19 @@ class Holiday extends CommonObject
dol_syslog(get_class($this)."::fetchAll", LOG_DEBUG); dol_syslog(get_class($this)."::fetchAll", LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
// Si pas d'erreur SQL // If no SQL error
if ($resql) { if ($resql) {
$i = 0; $i = 0;
$tab_result = $this->holiday; $tab_result = $this->holiday;
$num = $this->db->num_rows($resql); $num = $this->db->num_rows($resql);
// Si pas d'enregistrement // If no registration
if(!$num) { if(!$num) {
return 2; return 2;
} }
// On liste les résultats et on les ajoutent dans le tableau // List the records and add them to the table
while($i < $num) { while($i < $num) {
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
@ -536,13 +536,13 @@ class Holiday extends CommonObject
$i++; $i++;
} }
// Retourne 1 et ajoute le tableau à la variable // Returns 1 and adds the array to the variable
$this->holiday = $tab_result; $this->holiday = $tab_result;
return 1; return 1;
} }
else else
{ {
// Erreur SQL // SQL Error
$this->error="Error ".$this->db->lasterror(); $this->error="Error ".$this->db->lasterror();
return -1; return -1;
} }

View File

@ -40,7 +40,7 @@ $langs->setDefaultLang($setuplang);
$langs->load("install"); $langs->load("install");
// Now we load forced value from install.forced.php file. // Now we load forced/pre-set values from install.forced.php file.
$useforcedwizard=false; $useforcedwizard=false;
$forcedfile="./install.forced.php"; $forcedfile="./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php";
@ -49,14 +49,14 @@ if (@file_exists($forcedfile)) {
include_once $forcedfile; include_once $forcedfile;
} }
dolibarr_install_syslog("--- check: Dolibarr install/upgrade process started"); dolibarr_install_syslog("- check: Dolibarr install/upgrade process started");
/* /*
* View * View
*/ */
pHeader('',''); // No next step for navigation buttons. Next step is defined by clik on links. pHeader('',''); // No next step for navigation buttons. Next step is defined by click on links.
//print "<br>\n"; //print "<br>\n";
@ -233,13 +233,13 @@ else
else dolibarr_install_syslog("check: failed to create a new file " . $conffile . " into current dir " . getcwd() . ". Please check permissions.", LOG_ERR); else dolibarr_install_syslog("check: failed to create a new file " . $conffile . " into current dir " . getcwd() . ". Please check permissions.", LOG_ERR);
} }
// First install, we can't upgrade // First install: no upgrade necessary/required
$allowupgrade=false; $allowupgrade=false;
} }
// File is missng and can't be created // File is missing and cannot be created
if (! file_exists($conffile)) if (! file_exists($conffile))
{ {
print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ConfFileDoesNotExistsAndCouldNotBeCreated",$conffiletoshow); print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ConfFileDoesNotExistsAndCouldNotBeCreated",$conffiletoshow);
@ -258,7 +258,7 @@ else
$allowinstall=0; $allowinstall=0;
} }
// File exists but can't be modified // File exists but cannot be modified
elseif (!is_writable($conffile)) elseif (!is_writable($conffile))
{ {
if ($confexists) if ($confexists)
@ -294,7 +294,7 @@ else
} }
print "<br>\n"; print "<br>\n";
// Requirements ok, we display the next step button // Requirements met/all ok: display the next step button
if ($checksok) if ($checksok)
{ {
$ok=0; $ok=0;
@ -307,7 +307,7 @@ else
{ {
if (! file_exists($dolibarr_main_document_root."/core/lib/admin.lib.php")) if (! file_exists($dolibarr_main_document_root."/core/lib/admin.lib.php"))
{ {
print '<font class="error">A '.$conffiletoshow.' file exists with a dolibarr_main_document_root to '.$dolibarr_main_document_root.' that seems wrong. Try to fix or remove the '.$conffiletoshow.' file.</font><br>'."\n"; print '<span class="error">A '.$conffiletoshow.' file exists with a dolibarr_main_document_root to '.$dolibarr_main_document_root.' that seems wrong. Try to fix or remove the '.$conffiletoshow.' file.</span><br>'."\n";
dol_syslog("A '" . $conffiletoshow . "' file exists with a dolibarr_main_document_root to " . $dolibarr_main_document_root . " that seems wrong. Try to fix or remove the '" . $conffiletoshow . "' file.", LOG_WARNING); dol_syslog("A '" . $conffiletoshow . "' file exists with a dolibarr_main_document_root to " . $dolibarr_main_document_root . " that seems wrong. Try to fix or remove the '" . $conffiletoshow . "' file.", LOG_WARNING);
} }
else else
@ -326,7 +326,7 @@ else
else $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass); else $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass);
} }
// $conf is already instancied inside inc.php // $conf already created in inc.php
$conf->db->type = $dolibarr_main_db_type; $conf->db->type = $dolibarr_main_db_type;
$conf->db->host = $dolibarr_main_db_host; $conf->db->host = $dolibarr_main_db_host;
$conf->db->port = $dolibarr_main_db_port; $conf->db->port = $dolibarr_main_db_port;
@ -342,7 +342,7 @@ else
} }
} }
// If a database access is available, we set more variable // If database access is available, we set more variables
if ($ok) if ($ok)
{ {
if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0;
@ -364,8 +364,8 @@ else
// Show title // Show title
if (! empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ! empty($conf->global->MAIN_VERSION_LAST_INSTALL)) if (! empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ! empty($conf->global->MAIN_VERSION_LAST_INSTALL))
{ {
print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.(empty($conf->global->MAIN_VERSION_LAST_UPGRADE)?$conf->global->MAIN_VERSION_LAST_INSTALL:$conf->global->MAIN_VERSION_LAST_UPGRADE).'</font></b><br>'; print $langs->trans("VersionLastUpgrade").': <b><span class="ok">'.(empty($conf->global->MAIN_VERSION_LAST_UPGRADE)?$conf->global->MAIN_VERSION_LAST_INSTALL:$conf->global->MAIN_VERSION_LAST_UPGRADE).'</span></b><br>';
print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b>'; print $langs->trans("VersionProgram").': <b><span class="ok">'.DOL_VERSION.'</span></b>';
//print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired")); //print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired"));
print '<br>'; print '<br>';
print '<br>'; print '<br>';
@ -375,7 +375,7 @@ else
print $langs->trans("InstallEasy")." "; print $langs->trans("InstallEasy")." ";
print $langs->trans("ChooseYourSetupMode"); print $langs->trans("ChooseYourSetupMode");
print '<br><br>'; print '<br>';
$foundrecommandedchoice=0; $foundrecommandedchoice=0;
@ -383,9 +383,9 @@ else
$notavailable_choices = array(); $notavailable_choices = array();
// Show first install line // Show first install line
$choice = '<tr class="listofchoices"><td class="listofchoices nowrap" align="center"><b>'.$langs->trans("FreshInstall").'</b>'; $choice = "\n".'<tr><td class="nowrap center"><b>'.$langs->trans("FreshInstall").'</b>';
$choice .= '</td>'; $choice .= '</td>';
$choice .= '<td class="listofchoices listofchoicesdesc">'; $choice .= '<td class="listofchoicesdesc">';
$choice .= $langs->trans("FreshInstallDesc"); $choice .= $langs->trans("FreshInstallDesc");
if (empty($dolibarr_main_db_host)) // This means install process was not run if (empty($dolibarr_main_db_host)) // This means install process was not run
{ {
@ -397,7 +397,7 @@ else
} }
$choice .= '</td>'; $choice .= '</td>';
$choice .= '<td class="listofchoices" align="center">'; $choice .= '<td class="center">';
if ($allowinstall) if ($allowinstall)
{ {
$choice .= '<a class="button" href="fileconf.php?selectlang='.$setuplang.'">'.$langs->trans("Start").'</a>'; $choice .= '<a class="button" href="fileconf.php?selectlang='.$setuplang.'">'.$langs->trans("Start").'</a>';
@ -465,7 +465,7 @@ else
if ($ok) if ($ok)
{ {
if (count($dolibarrlastupgradeversionarray) >= 2) // If a database access is available and last upgrade version is known if (count($dolibarrlastupgradeversionarray) >= 2) // If database access is available and last upgrade version is known
{ {
// Now we check if this is the first qualified choice // Now we check if this is the first qualified choice
if ($allowupgrade && empty($foundrecommandedchoice) && if ($allowupgrade && empty($foundrecommandedchoice) &&
@ -477,22 +477,23 @@ else
} }
} }
else { else {
// We can not recommand a choice. // We cannot recommend a choice.
// A version of install may be known, but we need last upgrade. // A version of install may be known, but we need last upgrade.
} }
} }
$choice .= '<tr class="listofchoices '.($recommended_choice ? 'choiceselected' : '').'">'; $choice .= "\n".'<tr'.($recommended_choice ? ' class="choiceselected"' : '').'>';
$choice .= '<td class="listofchoices nowrap" align="center"><b>'.$langs->trans("Upgrade").'<br>'.$newversionfrom.$newversionfrombis.' -> '.$newversionto.'</b></td>'; $choice .= '<td class="nowrap center"><b>'.$langs->trans("Upgrade").'<br>'.$newversionfrom.$newversionfrombis.' -> '.$newversionto.'</b></td>';
$choice .= '<td class="listofchoices listofchoicesdesc">'; $choice .= '<td class="listofchoicesdesc">';
$choice .= $langs->trans("UpgradeDesc"); $choice .= $langs->trans("UpgradeDesc");
if ($recommended_choice) if ($recommended_choice)
{ {
$choice .= '<br>'; $choice .= '<br>';
//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE); //print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
$choice .= '<div class="center"><div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div>'; $choice .= '<div class="center">';
if ($count < count($migarray)) // There is other choices after $choice .= '<div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div>';
if ($count < count($migarray)) // There are other choices after
{ {
print $langs->trans("MigrateIsDoneStepByStep",DOL_VERSION); print $langs->trans("MigrateIsDoneStepByStep",DOL_VERSION);
} }
@ -500,7 +501,7 @@ else
} }
$choice .= '</td>'; $choice .= '</td>';
$choice .= '<td class="listofchoices" align="center">'; $choice .= '<td class="center">';
if ($allowupgrade) if ($allowupgrade)
{ {
$disabled=false; $disabled=false;
@ -512,8 +513,14 @@ else
{ {
$foundrecommandedchoice = 2; $foundrecommandedchoice = 2;
} }
if ($disabled) $choice .= '<span class="buttonDisable runupgrade"'.($disabled?' disabled="disabled"':'').' href="#">'.$langs->trans("NotAvailable").'</span>'; if ($disabled)
else $choice .= '<a class="button runupgrade"'.($disabled?' disabled="disabled"':'').' href="upgrade.php?action=upgrade'.($count<count($migrationscript)?'_'.$versionto:'').'&amp;selectlang='.$setuplang.'&amp;versionfrom='.$versionfrom.'&amp;versionto='.$versionto.'">'.$langs->trans("Start").'</a>'; {
$choice .= '<span class="button">'.$langs->trans("NotAvailable").'</span>';
}
else
{
$choice .= '<a class="button runupgrade" href="upgrade.php?action=upgrade'.($count<count($migrationscript)?'_'.$versionto:'').'&amp;selectlang='.$setuplang.'&amp;versionfrom='.$versionfrom.'&amp;versionto='.$versionto.'">'.$langs->trans("Start").'</a>';
}
} }
else else
{ {
@ -537,28 +544,28 @@ else
} }
// Array of install choices // Array of install choices
print"\n";
print '<table width="100%" class="listofchoices">'; print '<table width="100%" class="listofchoices">';
foreach ($available_choices as $choice) { foreach ($available_choices as $choice) {
print $choice; print $choice;
} }
print '</table>'; print '</table>'."\n";
if (count($notavailable_choices)) { if (count($notavailable_choices)) {
print '<br>';
print '<div id="AShowChoices">'; print '<div id="AShowChoices">';
print '<img src="../theme/eldy/img/1downarrow.png"> <a href="#">'.$langs->trans('ShowNotAvailableOptions').'</a>'; print '<img src="../theme/eldy/img/1downarrow.png"> <a href="#">'.$langs->trans('ShowNotAvailableOptions').'</a>';
print '</div>'; print '</div>';
print '<div id="navail_choices" style="display:none">'; print '<div id="navail_choices" style="display:none">';
print '<br>'; print "<br>\n";
print '<table width="100%" class="listofchoices">'; print '<table width="100%" class="listofchoices">';
foreach ($notavailable_choices as $choice) { foreach ($notavailable_choices as $choice) {
print $choice; print $choice;
} }
print '</table>'; print '</table>'."\n";
print '</div>'; print '</div>';
} }
@ -590,6 +597,5 @@ $(".runupgrade").click(function() {
</script>'; </script>';
dolibarr_install_syslog("--- check: end"); dolibarr_install_syslog("- check: end");
pFooter(1); // Never display next button pFooter(1); // Never display next button

View File

@ -199,7 +199,7 @@ input:-webkit-autofill {
-webkit-box-shadow: 0 0 0 50px #FBFFEA inset; -webkit-box-shadow: 0 0 0 50px #FBFFEA inset;
} }
table.listofchoices, tr.listofchoices, td.listofchoices { table.listofchoices, table.listofchoices tr, table.listofchoices td {
border-collapse: collapse; border-collapse: collapse;
padding: 4px; padding: 4px;
color: #000000; color: #000000;
@ -207,9 +207,6 @@ table.listofchoices, tr.listofchoices, td.listofchoices {
line-height: 18px; line-height: 18px;
} }
tr.listofchoices {
height: 42px;
}
.listofchoicesdesc { .listofchoicesdesc {
color: #999 !important; color: #999 !important;
} }
@ -230,7 +227,7 @@ tr.listofchoices {
div.ok { div.ok {
color: #114466; color: #114466;
} }
font.ok { span.ok {
color: #114466; color: #114466;
} }
@ -238,7 +235,7 @@ font.ok {
div.warning { div.warning {
color: #777711; color: #777711;
} }
font.warning { span.warning {
color: #777711; color: #777711;
} }
@ -249,7 +246,7 @@ div.error {
padding: 0.2em 0.2em 0.2em 0; padding: 0.2em 0.2em 0.2em 0;
margin: 0.5em 0 0.5em 0; margin: 0.5em 0 0.5em 0;
} }
font.error { span.error {
color: #550000; color: #550000;
font-weight: bold; font-weight: bold;
} }

View File

@ -24,7 +24,7 @@
/** /**
* \file htdocs/install/fileconf.php * \file htdocs/install/fileconf.php
* \ingroup install * \ingroup install
* \brief Ask all informations required to build Dolibarr htdocs/conf/conf.php file (will be wrote on disk on next page step1) * \brief Ask all information required to build Dolibarr htdocs/conf/conf.php file (will be written to disk on next page step1)
*/ */
include_once 'inc.php'; include_once 'inc.php';
@ -39,7 +39,7 @@ $langs->setDefaultLang($setuplang);
$langs->load("install"); $langs->load("install");
$langs->load("errors"); $langs->load("errors");
dolibarr_install_syslog("--- fileconf: entering fileconf.php page"); dolibarr_install_syslog("- fileconf: entering fileconf.php page");
// You can force preselected values of the config step of Dolibarr by adding a file // You can force preselected values of the config step of Dolibarr by adding a file
// install.forced.php into directory htdocs/install (This is the case with some wizard // install.forced.php into directory htdocs/install (This is the case with some wizard
@ -56,7 +56,7 @@ if (! isset($force_install_databaselogin)) $force_install_databaselogin='';
if (! isset($force_install_databasepass)) $force_install_databasepass=''; if (! isset($force_install_databasepass)) $force_install_databasepass='';
if (! isset($force_install_databaserootlogin)) $force_install_databaserootlogin=''; if (! isset($force_install_databaserootlogin)) $force_install_databaserootlogin='';
if (! isset($force_install_databaserootpass)) $force_install_databaserootpass=''; if (! isset($force_install_databaserootpass)) $force_install_databaserootpass='';
// Now we load forced value from install.forced.php file. // Now we load forced values from install.forced.php file.
$useforcedwizard=false; $useforcedwizard=false;
$forcedfile="./install.forced.php"; $forcedfile="./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; // Must be after inc.php if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; // Must be after inc.php
@ -71,7 +71,7 @@ if (@file_exists($forcedfile)) {
* View * View
*/ */
session_start(); // To be able to keep info into session (used for not loosing pass during navigation. pass must not transit throug parmaeters) session_start(); // To be able to keep info into session (used for not losing pass during navigation. pass must not transit through parmaeters)
pHeader($langs->trans("ConfigurationFile"), "step1", "set", "", (empty($force_dolibarr_js_JQUERY)?'':$force_dolibarr_js_JQUERY.'/'), 'main-inside-bis'); pHeader($langs->trans("ConfigurationFile"), "step1", "set", "", (empty($force_dolibarr_js_JQUERY)?'':$force_dolibarr_js_JQUERY.'/'), 'main-inside-bis');
@ -80,7 +80,7 @@ if (! is_writable($conffile))
{ {
print $langs->trans("ConfFileIsNotWritable", $conffiletoshow); print $langs->trans("ConfFileIsNotWritable", $conffiletoshow);
dolibarr_install_syslog("fileconf: config file is not writable", LOG_WARNING); dolibarr_install_syslog("fileconf: config file is not writable", LOG_WARNING);
dolibarr_install_syslog("--- fileconf: end"); dolibarr_install_syslog("- fileconf: end");
pFooter(1,$setuplang,'jscheckparam'); pFooter(1,$setuplang,'jscheckparam');
exit; exit;
} }
@ -117,20 +117,18 @@ if (! empty($force_install_message))
<!-- Documents root $dolibarr_main_document_root --> <!-- Documents root $dolibarr_main_document_root -->
<tr> <tr>
<?php <td class="label"><label for="main_dir"><b><?php print $langs->trans("WebPagesDirectory"); ?></b></label></td>
print '<td class="tdtop label"><b>'; <?php
print $langs->trans("WebPagesDirectory");
print "</b></td>";
if (empty($dolibarr_main_url_root)) { if (empty($dolibarr_main_url_root)) {
$dolibarr_main_document_root = detect_dolibarr_main_document_root(); $dolibarr_main_document_root = detect_dolibarr_main_document_root();
} }
?> ?>
<td class="label tdtop"> <td class="label">
<input type="text" <input type="text"
class="minwidth300" class="minwidth300"
value="<?php print $dolibarr_main_document_root ?>" id="main_dir"
name="main_dir" name="main_dir"
value="<?php print $dolibarr_main_document_root ?>"
<?php if (!empty($force_install_noedit)) { <?php if (!empty($force_install_noedit)) {
print ' disabled'; print ' disabled';
} ?> } ?>
@ -149,19 +147,19 @@ if (! empty($force_install_message))
<!-- Documents URL $dolibarr_main_data_root --> <!-- Documents URL $dolibarr_main_data_root -->
<tr> <tr>
<td class="tdtop label"><b> <?php print $langs->trans("DocumentsDirectory"); ?></b> <td class="label"><label for="main_data_dir"><b><?php print $langs->trans("DocumentsDirectory"); ?></b></label></td>
</td>
<?php <?php
$dolibarr_main_data_root = @$force_install_main_data_root; $dolibarr_main_data_root = @$force_install_main_data_root;
if (empty($dolibarr_main_data_root)) { if (empty($dolibarr_main_data_root)) {
$dolibarr_main_data_root = detect_dolibarr_main_data_root($dolibarr_main_document_root); $dolibarr_main_data_root = detect_dolibarr_main_data_root($dolibarr_main_document_root);
} }
?> ?>
<td class="label tdtop"> <td class="label">
<input type="text" <input type="text"
class="minwidth300" class="minwidth300"
value="<?php print $dolibarr_main_data_root ?>" id="main_data_dir"
name="main_data_dir" name="main_data_dir"
value="<?php print $dolibarr_main_data_root ?>"
<?php if (!empty($force_install_noedit)) { <?php if (!empty($force_install_noedit)) {
print ' disabled'; print ' disabled';
} ?> } ?>
@ -186,12 +184,13 @@ if (! empty($force_install_message))
} }
?> ?>
<tr> <tr>
<td class="tdtop label"><b> <?php echo $langs->trans("URLRoot"); ?></b> <td class="label"><label for="main_url"><b><?php echo $langs->trans("URLRoot"); ?></b></label>
</td> </td>
<td class="tdtop label"> <td class="label">
<input type="text" <input type="text"
class="minwidth300" class="minwidth300"
name="main_url" id="main_url"
name="main_url"
value="<?php print $dolibarr_main_url_root; ?> " value="<?php print $dolibarr_main_url_root; ?> "
<?php if (!empty($force_install_noedit)) { <?php if (!empty($force_install_noedit)) {
print ' disabled'; print ' disabled';
@ -210,10 +209,11 @@ if (! empty($force_install_message))
if (! empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') { // Enabled if the installation process is "https://" if (! empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') { // Enabled if the installation process is "https://"
?> ?>
<tr> <tr>
<td class="tdtop label"><?php echo $langs->trans("ForceHttps"); ?></td> <td class="label"><label for="main_force_https"><?php echo $langs->trans("ForceHttps"); ?></label></td>
<td class="label tdtop"> <td class="label">
<input type="checkbox" <input type="checkbox"
name="main_force_https" id="main_force_https"
name="main_force_https"
<?php if (!empty($force_install_mainforcehttps)) { <?php if (!empty($force_install_mainforcehttps)) {
print ' checked'; print ' checked';
} ?> } ?>
@ -239,11 +239,11 @@ if (! empty($force_install_message))
</tr> </tr>
<tr> <tr>
<td class="label tdtop"><b> <?php echo $langs->trans("DatabaseName"); ?> <td class="label"><label for="db_name"><b><?php echo $langs->trans("DatabaseName"); ?></b></label></td>
</b></td> <td class="label">
<td class="label tdtop"> <input type="text"
<input type="text" id="db_name" id="db_name"
name="db_name" name="db_name"
value="<?php echo (!empty($dolibarr_main_db_name)) ? $dolibarr_main_db_name : ($force_install_database ? $force_install_database : 'dolibarr'); ?>" value="<?php echo (!empty($dolibarr_main_db_name)) ? $dolibarr_main_db_name : ($force_install_database ? $force_install_database : 'dolibarr'); ?>"
<?php if ($force_install_noedit == 2 && $force_install_database !== null) { <?php if ($force_install_noedit == 2 && $force_install_database !== null) {
print ' disabled'; print ' disabled';
@ -262,8 +262,7 @@ if (! empty($force_install_message))
?> ?>
<tr> <tr>
<!-- Driver type --> <!-- Driver type -->
<td class="tdtop label"><b> <?php echo $langs->trans("DriverType"); ?> <td class="label"><label for="db_type"><b><?php echo $langs->trans("DriverType"); ?></b></label></td>
</b></td>
<td class="label"> <td class="label">
<?php <?php
@ -338,10 +337,10 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite"> <tr class="hidesqlite">
<td class="tdtop label"><b> <?php echo $langs->trans("DatabaseServer"); ?> <td class="label"><label for="db_host"><b><?php echo $langs->trans("DatabaseServer"); ?></b></label></td>
</b></td> <td class="label">
<td class="tdtop label">
<input type="text" <input type="text"
id="db_host"
name="db_host" name="db_host"
value="<?php print (!empty($force_install_dbserver) ? $force_install_dbserver : (!empty($dolibarr_main_db_host) ? $dolibarr_main_db_host : 'localhost')); ?>" value="<?php print (!empty($force_install_dbserver) ? $force_install_dbserver : (!empty($dolibarr_main_db_host) ? $dolibarr_main_db_host : 'localhost')); ?>"
<?php if ($force_install_noedit == 2 && $force_install_dbserver !== null) { <?php if ($force_install_noedit == 2 && $force_install_dbserver !== null) {
@ -355,8 +354,8 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite"> <tr class="hidesqlite">
<td class="tdtop label"><?php echo $langs->trans("Port"); ?></td> <td class="label"><label for="db_port"><?php echo $langs->trans("Port"); ?></label></td>
<td class="tdtop label"> <td class="label">
<input type="text" <input type="text"
name="db_port" name="db_port"
id="db_port" id="db_port"
@ -372,10 +371,10 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite"> <tr class="hidesqlite">
<td class="label tdtop"><?php echo $langs->trans("DatabasePrefix"); ?> <td class="label"><label for="db_prefix"><?php echo $langs->trans("DatabasePrefix"); ?></label></td>
</td> <td class="label">
<td class="label tdtop"> <input type="text"
<input type="text" id="db_prefix" id="db_prefix"
name="db_prefix" name="db_prefix"
value="<?php echo(!empty($force_install_prefix) ? $force_install_prefix : (!empty($dolibarr_main_db_prefix) ? $dolibarr_main_db_prefix : 'llx_')); ?>" value="<?php echo(!empty($force_install_prefix) ? $force_install_prefix : (!empty($dolibarr_main_db_prefix) ? $dolibarr_main_db_prefix : 'llx_')); ?>"
<?php if ($force_install_noedit == 2 && $force_install_prefix !== null) { <?php if ($force_install_noedit == 2 && $force_install_prefix !== null) {
@ -387,9 +386,8 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite"> <tr class="hidesqlite">
<td class="label tdtop"><?php echo $langs->trans("CreateDatabase"); ?> <td class="label"><label for="db_create_database"><?php echo $langs->trans("CreateDatabase"); ?></label></td>
</td> <td class="label">
<td class="label tdtop">
<input type="checkbox" <input type="checkbox"
id="db_create_database" id="db_create_database"
name="db_create_database" name="db_create_database"
@ -406,10 +404,10 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite"> <tr class="hidesqlite">
<td class="label tdtop"><b><?php echo $langs->trans("Login"); ?></b> <td class="label"><label for="db_user"><b><?php echo $langs->trans("Login"); ?></b></label></td>
</td> <td class="label">
<td class="label tdtop"> <input type="text"
<input type="text" id="db_user" id="db_user"
name="db_user" name="db_user"
value="<?php print (!empty($force_install_databaselogin)) ? $force_install_databaselogin : $dolibarr_main_db_user; ?>" value="<?php print (!empty($force_install_databaselogin)) ? $force_install_databaselogin : $dolibarr_main_db_user; ?>"
<?php if ($force_install_noedit == 2 && $force_install_databaselogin !== null) { <?php if ($force_install_noedit == 2 && $force_install_databaselogin !== null) {
@ -421,10 +419,10 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite"> <tr class="hidesqlite">
<td class="label tdtop"><b><?php echo $langs->trans("Password"); ?></b> <td class="label"><label for="db_pass"><b><?php echo $langs->trans("Password"); ?></b></label></td>
</td> <td class="label">
<td class="label tdtop"> <input type="password"
<input type="password" id="db_pass" autocomplete="off" id="db_pass" autocomplete="off"
name="db_pass" name="db_pass"
value="<?php value="<?php
// If $force_install_databasepass is on, we don't want to set password, we just show '***'. Real value will be extracted from the forced install file at step1. // If $force_install_databasepass is on, we don't want to set password, we just show '***'. Real value will be extracted from the forced install file at step1.
@ -443,11 +441,11 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite"> <tr class="hidesqlite">
<td class="label tdtop"><?php echo $langs->trans("CreateUser"); ?> <td class="label"><label for="db_create_user"><?php echo $langs->trans("CreateUser"); ?></label></td>
</td> <td class="label">
<td class="label tdtop">
<input type="checkbox" <input type="checkbox"
id="db_create_user" name="db_create_user" id="db_create_user"
name="db_create_user"
<?php if (!empty($force_install_createuser)) { <?php if (!empty($force_install_createuser)) {
print ' checked'; print ' checked';
} ?> } ?>
@ -473,8 +471,8 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite hideroot"> <tr class="hidesqlite hideroot">
<td class="label tdtop"><b><?php echo $langs->trans("Login"); ?></b></td> <td class="label"><label for="db_user_root"><b><?php echo $langs->trans("Login"); ?></b></label></td>
<td class="label tdtop"> <td class="label">
<input type="text" <input type="text"
id="db_user_root" id="db_user_root"
name="db_user_root" name="db_user_root"
@ -497,9 +495,8 @@ if (! empty($force_install_message))
</tr> </tr>
<tr class="hidesqlite hideroot"> <tr class="hidesqlite hideroot">
<td class="label tdtop"><b><?php echo $langs->trans("Password"); ?></b> <td class="label"><label for="db_pass_root"><b><?php echo $langs->trans("Password"); ?></b></label></td>
</td> <td class="label">
<td class="label tdtop">
<input type="password" <input type="password"
autocomplete="off" autocomplete="off"
id="db_pass_root" id="db_pass_root"
@ -648,5 +645,5 @@ function jscheckparam()
// $db->close(); Not database connexion yet // $db->close(); Not database connexion yet
dolibarr_install_syslog("--- fileconf: end"); dolibarr_install_syslog("- fileconf: end");
pFooter($err,$setuplang,'jscheckparam'); pFooter($err,$setuplang,'jscheckparam');

View File

@ -149,7 +149,7 @@ if ($suburi == '/') $suburi = ''; // If $suburi is /, it is now ''
define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...) define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...)
if (empty($conf->file->character_set_client)) $conf->file->character_set_client="UTF-8"; if (empty($conf->file->character_set_client)) $conf->file->character_set_client="utf-8";
if (empty($conf->db->character_set)) $conf->db->character_set='utf8'; if (empty($conf->db->character_set)) $conf->db->character_set='utf8';
if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_unicode_ci'; if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_unicode_ci';
if (empty($conf->db->dolibarr_main_db_encryption)) $conf->db->dolibarr_main_db_encryption=0; if (empty($conf->db->dolibarr_main_db_encryption)) $conf->db->dolibarr_main_db_encryption=0;

View File

@ -55,7 +55,7 @@ print '<br><br><div class="center">';
print '<table>'; print '<table>';
print '<tr>'; print '<tr>';
print '<td>'.$langs->trans("DefaultLanguage").' : </td><td align="left">'; print '<td>'.$langs->trans("DefaultLanguage").' : </td><td>';
print $formadmin->select_language('auto','selectlang',1,0,0,1); print $formadmin->select_language('auto','selectlang',1,0,0,1);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';

View File

@ -43,6 +43,8 @@ ALTER TABLE llx_website_page ADD COLUMN fk_user_create integer;
ALTER TABLE llx_website_page ADD COLUMN fk_user_modif integer; ALTER TABLE llx_website_page ADD COLUMN fk_user_modif integer;
ALTER TABLE llx_website_page ADD COLUMN type_container varchar(16) NOT NULL DEFAULT 'page'; ALTER TABLE llx_website_page ADD COLUMN type_container varchar(16) NOT NULL DEFAULT 'page';
ALTER TABLE llx_ecm_files DROP INDEX uk_ecm_files;
ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (filepath, filename, entity);
-- drop very old table (bad name) -- drop very old table (bad name)
@ -84,6 +86,9 @@ INSERT INTO llx_accounting_system (fk_country, pcg_version, label, active) VALUE
-- For 8.0 -- For 8.0
DROP TABLE llx_website_account;
DROP TABLE llx_website_account_extrafields;
ALTER TABLE llx_paiementfourn ADD COLUMN fk_user_modif integer AFTER fk_user_author; ALTER TABLE llx_paiementfourn ADD COLUMN fk_user_modif integer AFTER fk_user_author;
-- delete old permission no more used -- delete old permission no more used

View File

@ -17,7 +17,7 @@
-- ============================================================================ -- ============================================================================
ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (filepath, filename); ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (filepath, filename, entity);
ALTER TABLE llx_ecm_files ADD INDEX idx_ecm_files_label (label); ALTER TABLE llx_ecm_files ADD INDEX idx_ecm_files_label (label);
--ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files_fullpath(fullpath); Disabled, mysql limits size of index --ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files_fullpath(fullpath); Disabled, mysql limits size of index

View File

@ -13,7 +13,8 @@
-- You should have received a copy of the GNU General Public License -- You should have received a copy of the GNU General Public License
-- along with this program. If not, see http://www.gnu.org/licenses/. -- along with this program. If not, see http://www.gnu.org/licenses/.
-- --
-- Table to store accounts of thirdparties on websites -- Table to store accounts of thirdparties on external websites (like on stripe field site = 'stripe')
-- or on local website (fk_website).
CREATE TABLE llx_societe_account( CREATE TABLE llx_societe_account(
-- BEGIN MODULEBUILDER FIELDS -- BEGIN MODULEBUILDER FIELDS

View File

@ -1,29 +0,0 @@
-- Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- 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 http://www.gnu.org/licenses/.
-- BEGIN MODULEBUILDER INDEXES
ALTER TABLE llx_website_account ADD INDEX idx_website_account_rowid (rowid);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_login (login);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_import_key (import_key);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_status (status);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_fk_soc (fk_soc);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_fk_website (fk_website);
-- END MODULEBUILDER INDEXES
ALTER TABLE llx_website_account ADD UNIQUE INDEX uk_website_account_login_website_soc(login, fk_website, fk_soc);
ALTER TABLE llx_website_account ADD CONSTRAINT llx_website_account_fk_website FOREIGN KEY (fk_website) REFERENCES llx_website(rowid);

View File

@ -1,36 +0,0 @@
-- Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- 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 http://www.gnu.org/licenses/.
CREATE TABLE llx_website_account(
-- BEGIN MODULEBUILDER FIELDS
rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL,
login varchar(64) NOT NULL,
pass_encoding varchar(24) NOT NULL,
pass_crypted varchar(128),
pass_temp varchar(128), -- temporary password when asked for forget password
fk_soc integer,
fk_website integer NOT NULL,
note_private text,
date_last_login datetime,
date_previous_login datetime,
date_creation datetime NOT NULL,
tms timestamp NOT NULL,
fk_user_creat integer NOT NULL,
fk_user_modif integer,
import_key varchar(14),
status integer
-- END MODULEBUILDER FIELDS
) ENGINE=innodb;

View File

@ -549,11 +549,11 @@ if ($ok && GETPOST('clean_menus','alpha'))
dol_print_error($db); dol_print_error($db);
} }
else else
print ' - <font class="warning">Cleaned</font>'; print ' - <span class="warning">Cleaned</span>';
} }
else else
{ {
print ' - <font class="warning">Canceled (test mode)</font>'; print ' - <span class="warning">Canceled (test mode)</span>';
} }
} }
else else
@ -982,11 +982,11 @@ if ($ok && GETPOST('force_disable_of_modules_not_found','alpha'))
dol_print_error($db); dol_print_error($db);
} }
else else
print ' - <font class="warning">Cleaned</font>'; print ' - <span class="warning">Cleaned</span>';
} }
else else
{ {
print ' - <font class="warning">Canceled (test mode)</font>'; print ' - <span class="warning">Canceled (test mode)</span>';
} }
} }
else else

View File

@ -46,7 +46,7 @@ $main_dir = GETPOST('main_dir')?GETPOST('main_dir'):(empty($argv[3])?'':$argv[3]
$main_data_dir = GETPOST('main_data_dir') ? GETPOST('main_data_dir') : (empty($argv[4])? ($main_dir . '/documents') :$argv[4]); $main_data_dir = GETPOST('main_data_dir') ? GETPOST('main_data_dir') : (empty($argv[4])? ($main_dir . '/documents') :$argv[4]);
// Dolibarr root URL // Dolibarr root URL
$main_url = GETPOST('main_url')?GETPOST('main_url'):(empty($argv[5])?'':$argv[5]); $main_url = GETPOST('main_url')?GETPOST('main_url'):(empty($argv[5])?'':$argv[5]);
// Database login informations // Database login information
$userroot=GETPOST('db_user_root','alpha')?GETPOST('db_user_root','alpha'):(empty($argv[6])?'':$argv[6]); $userroot=GETPOST('db_user_root','alpha')?GETPOST('db_user_root','alpha'):(empty($argv[6])?'':$argv[6]);
$passroot=GETPOST('db_pass_root','none')?GETPOST('db_pass_root','none'):(empty($argv[7])?'':$argv[7]); $passroot=GETPOST('db_pass_root','none')?GETPOST('db_pass_root','none'):(empty($argv[7])?'':$argv[7]);
// Database server // Database server
@ -68,18 +68,18 @@ $main_alt_dir_name = ((GETPOST("main_alt_dir_name",'alpha') && GETPOST("main_alt
session_start(); // To be able to keep info into session (used for not losing password during navigation. The password must not transit through parameters) session_start(); // To be able to keep info into session (used for not losing password during navigation. The password must not transit through parameters)
// Save a flag to tell to restore input value if we do back // Save a flag to tell to restore input value if we go back
$_SESSION['dol_save_pass']=$db_pass; $_SESSION['dol_save_pass']=$db_pass;
//$_SESSION['dol_save_passroot']=$passroot; //$_SESSION['dol_save_passroot']=$passroot;
// Now we load forced value from install.forced.php file. // Now we load forced values from install.forced.php file.
$useforcedwizard=false; $useforcedwizard=false;
$forcedfile="./install.forced.php"; $forcedfile="./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php";
if (@file_exists($forcedfile)) { if (@file_exists($forcedfile)) {
$useforcedwizard = true; $useforcedwizard = true;
include_once $forcedfile; include_once $forcedfile;
// If forced install is enabled, let's replace post values. These are empty because form fields are disabled. // If forced install is enabled, replace the post values. These are empty because form fields are disabled.
if ($force_install_noedit) { if ($force_install_noedit) {
$main_dir = detect_dolibarr_main_document_root(); $main_dir = detect_dolibarr_main_document_root();
if (!empty($force_install_main_data_root)) { if (!empty($force_install_main_data_root)) {
@ -204,7 +204,7 @@ if (! $error) {
$result=@include_once $main_dir."/core/db/".$db_type.'.class.php'; $result=@include_once $main_dir."/core/db/".$db_type.'.class.php';
if ($result) if ($result)
{ {
// If we ask database or user creation we need to connect as root, so we need root login // If we require database or user creation we need to connect as root, so we need root login credentials
if (!empty($db_create_database) && !$userroot) { if (!empty($db_create_database) && !$userroot) {
print '<div class="error">'.$langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$db_name).'</div>'; print '<div class="error">'.$langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$db_name).'</div>';
print '<br>'; print '<br>';
@ -397,7 +397,7 @@ if (! $error && $db->connected && $action == "set")
print "<tr><td>".$langs->trans("ErrorDirDoesNotExists",$main_data_dir); print "<tr><td>".$langs->trans("ErrorDirDoesNotExists",$main_data_dir);
print ' '.$langs->trans("YouMustCreateItAndAllowServerToWrite"); print ' '.$langs->trans("YouMustCreateItAndAllowServerToWrite");
print '</td><td>'; print '</td><td>';
print '<font class="error">'.$langs->trans("Error").'</font>'; print '<span class="error">'.$langs->trans("Error").'</span>';
print "</td></tr>"; print "</td></tr>";
print '<tr><td colspan="2"><br>'.$langs->trans("CorrectProblemAndReloadPage",$_SERVER['PHP_SELF'].'?testget=ok').'</td></tr>'; print '<tr><td colspan="2"><br>'.$langs->trans("CorrectProblemAndReloadPage",$_SERVER['PHP_SELF'].'?testget=ok').'</td></tr>';
$error++; $error++;
@ -420,7 +420,7 @@ if (! $error && $db->connected && $action == "set")
} }
} }
// Les documents sont en dehors de htdocs car ne doivent pas pouvoir etre telecharges en passant outre l'authentification // Documents are stored above the web pages root to prevent being downloaded without authentification
$dir=array(); $dir=array();
$dir[] = $main_data_dir."/mycompany"; $dir[] = $main_data_dir."/mycompany";
$dir[] = $main_data_dir."/medias"; $dir[] = $main_data_dir."/medias";
@ -431,7 +431,7 @@ if (! $error && $db->connected && $action == "set")
$dir[] = $main_data_dir."/produit"; $dir[] = $main_data_dir."/produit";
$dir[] = $main_data_dir."/doctemplates"; $dir[] = $main_data_dir."/doctemplates";
// Boucle sur chaque repertoire de dir[] pour les creer s'ils nexistent pas // Loop on each directory of dir [] to create them if they do not exist
$num=count($dir); $num=count($dir);
for ($i = 0; $i < $num; $i++) for ($i = 0; $i < $num; $i++)
{ {
@ -469,7 +469,7 @@ if (! $error && $db->connected && $action == "set")
print "<tr><td>".$langs->trans("ErrorDirDoesNotExists",$main_data_dir); print "<tr><td>".$langs->trans("ErrorDirDoesNotExists",$main_data_dir);
print ' '.$langs->trans("YouMustCreateItAndAllowServerToWrite"); print ' '.$langs->trans("YouMustCreateItAndAllowServerToWrite");
print '</td><td>'; print '</td><td>';
print '<font class="error">'.$langs->trans("Error").'</font>'; print '<span class="error">'.$langs->trans("Error").'</span>';
print "</td></tr>"; print "</td></tr>";
print '<tr><td colspan="2"><br>'.$langs->trans("CorrectProblemAndReloadPage",$_SERVER['PHP_SELF'].'?testget=ok').'</td></tr>'; print '<tr><td colspan="2"><br>'.$langs->trans("CorrectProblemAndReloadPage",$_SERVER['PHP_SELF'].'?testget=ok').'</td></tr>';
} }
@ -519,7 +519,7 @@ if (! $error && $db->connected && $action == "set")
// Save old conf file on disk // Save old conf file on disk
if (file_exists("$conffile")) if (file_exists("$conffile"))
{ {
// We must ignore errors as an existing old file may already exists and not be replacable or // We must ignore errors as an existing old file may already exist and not be replaceable or
// the installer (like for ubuntu) may not have permission to create another file than conf.php. // the installer (like for ubuntu) may not have permission to create another file than conf.php.
// Also no other process must be able to read file or we expose the new file, so content with password. // Also no other process must be able to read file or we expose the new file, so content with password.
@dol_copy($conffile, $conffile.'.old', '0400'); @dol_copy($conffile, $conffile.'.old', '0400');
@ -539,7 +539,7 @@ if (! $error && $db->connected && $action == "set")
print '</td>'; print '</td>';
print '<td><img src="../theme/eldy/img/tick.png" alt="Ok"></td></tr>'; print '<td><img src="../theme/eldy/img/tick.png" alt="Ok"></td></tr>';
// Si creation utilisateur admin demandee, on le cree // Create database user if requested
if (isset($db_create_user) && ($db_create_user == "1" || $db_create_user == "on")) { if (isset($db_create_user) && ($db_create_user == "1" || $db_create_user == "on")) {
dolibarr_install_syslog("step1: create database user: " . $dolibarr_main_db_user); dolibarr_install_syslog("step1: create database user: " . $dolibarr_main_db_user);
@ -558,7 +558,7 @@ if (! $error && $db->connected && $action == "set")
$databasefortest='master'; $databasefortest='master';
} }
// Creation handler de base, verification du support et connexion // Check database connection
$db=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,$databasefortest,$conf->db->port); $db=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,$databasefortest,$conf->db->port);
@ -629,7 +629,7 @@ if (! $error && $db->connected && $action == "set")
print '<td><img src="../theme/eldy/img/error.png" alt="Error"></td>'; print '<td><img src="../theme/eldy/img/error.png" alt="Error"></td>';
print '</tr>'; print '</tr>';
// Affiche aide diagnostique // warning message due to connection failure
print '<tr><td colspan="2"><br>'; print '<tr><td colspan="2"><br>';
print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot); print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot);
print '<br>'; print '<br>';
@ -640,10 +640,10 @@ if (! $error && $db->connected && $action == "set")
$error++; $error++;
} }
} }
} // Fin si "creation utilisateur" } // end of user account creation
// If database creation is asked, we create it // If database creation was asked, we create it
if (!$error && (isset($db_create_database) && ($db_create_database == "1" || $db_create_database == "on"))) { if (!$error && (isset($db_create_database) && ($db_create_database == "1" || $db_create_database == "on"))) {
dolibarr_install_syslog("step1: create database: " . $dolibarr_main_db_name . " " . $dolibarr_main_db_character_set . " " . $dolibarr_main_db_collation . " " . $dolibarr_main_db_user); dolibarr_install_syslog("step1: create database: " . $dolibarr_main_db_name . " " . $dolibarr_main_db_character_set . " " . $dolibarr_main_db_collation . " " . $dolibarr_main_db_user);
$newdb=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,'',$conf->db->port); $newdb=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,'',$conf->db->port);
@ -672,7 +672,7 @@ if (! $error && $db->connected && $action == "set")
} }
else else
{ {
// Affiche aide diagnostique // warning message
print '<tr><td colspan="2"><br>'; print '<tr><td colspan="2"><br>';
print $langs->trans("ErrorFailedToCreateDatabase",$dolibarr_main_db_name).'<br>'; print $langs->trans("ErrorFailedToCreateDatabase",$dolibarr_main_db_name).'<br>';
print $newdb->lasterror().'<br>'; print $newdb->lasterror().'<br>';
@ -693,7 +693,7 @@ if (! $error && $db->connected && $action == "set")
print '<td><img src="../theme/eldy/img/error.png" alt="Error"></td>'; print '<td><img src="../theme/eldy/img/error.png" alt="Error"></td>';
print '</tr>'; print '</tr>';
// Affiche aide diagnostique // warning message
print '<tr><td colspan="2"><br>'; print '<tr><td colspan="2"><br>';
print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot); print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot);
print '<br>'; print '<br>';
@ -703,7 +703,7 @@ if (! $error && $db->connected && $action == "set")
$error++; $error++;
} }
} // Fin si "creation database" } // end of create database
// We test access with dolibarr database user (not admin) // We test access with dolibarr database user (not admin)
@ -724,7 +724,7 @@ if (! $error && $db->connected && $action == "set")
print '<img src="../theme/eldy/img/tick.png" alt="Ok">'; print '<img src="../theme/eldy/img/tick.png" alt="Ok">';
print "</td></tr>"; print "</td></tr>";
// si acces serveur ok et acces base ok, tout est ok, on ne va pas plus loin, on a meme pas utilise le compte root. // server access ok, basic access ok
if ($db->database_selected) if ($db->database_selected)
{ {
dolibarr_install_syslog("step1: connection to database " . $conf->db->name . " by user " . $conf->db->user . " ok"); dolibarr_install_syslog("step1: connection to database " . $conf->db->name . " by user " . $conf->db->user . " ok");
@ -747,7 +747,7 @@ if (! $error && $db->connected && $action == "set")
print '<img src="../theme/eldy/img/error.png" alt="Error">'; print '<img src="../theme/eldy/img/error.png" alt="Error">';
print "</td></tr>"; print "</td></tr>";
// Affiche aide diagnostique // warning message
print '<tr><td colspan="2"><br>'; print '<tr><td colspan="2"><br>';
print $langs->trans('CheckThatDatabasenameIsCorrect',$dolibarr_main_db_name).'<br>'; print $langs->trans('CheckThatDatabasenameIsCorrect',$dolibarr_main_db_name).'<br>';
print $langs->trans('IfAlreadyExistsCheckOption').'<br>'; print $langs->trans('IfAlreadyExistsCheckOption').'<br>';
@ -767,7 +767,7 @@ if (! $error && $db->connected && $action == "set")
print '<img src="../theme/eldy/img/error.png" alt="Error">'; print '<img src="../theme/eldy/img/error.png" alt="Error">';
print "</td></tr>"; print "</td></tr>";
// Affiche aide diagnostique // warning message
print '<tr><td colspan="2"><br>'; print '<tr><td colspan="2"><br>';
print $langs->trans("ErrorConnection",$conf->db->host,$conf->db->name,$conf->db->user); print $langs->trans("ErrorConnection",$conf->db->host,$conf->db->name,$conf->db->user);
print $langs->trans('IfLoginDoesNotExistsCheckCreateUser').'<br>'; print $langs->trans('IfLoginDoesNotExistsCheckCreateUser').'<br>';
@ -893,45 +893,45 @@ function write_conf_file($conffile)
fputs($fp,'// and explanations for all possibles parameters.'."\n"); fputs($fp,'// and explanations for all possibles parameters.'."\n");
fputs($fp,'//'."\n"); fputs($fp,'//'."\n");
fputs($fp, '$dolibarr_main_url_root=\''.str_replace("'","\'",($main_url)).'\';'); fputs($fp, '$dolibarr_main_url_root=\''.str_replace("'","\'",trim($main_url)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_document_root=\''.str_replace("'","\'",($main_dir)).'\';'); fputs($fp, '$dolibarr_main_document_root=\''.str_replace("'","\'",trim($main_dir)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, $main_use_alt_dir.'$dolibarr_main_url_root_alt=\''.str_replace("'","\'",("/".$main_alt_dir_name)).'\';'); fputs($fp, $main_use_alt_dir.'$dolibarr_main_url_root_alt=\''.str_replace("'","\'",trim("/".$main_alt_dir_name)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, $main_use_alt_dir.'$dolibarr_main_document_root_alt=\''.str_replace("'","\'",($main_dir."/".$main_alt_dir_name)).'\';'); fputs($fp, $main_use_alt_dir.'$dolibarr_main_document_root_alt=\''.str_replace("'","\'",trim($main_dir."/".$main_alt_dir_name)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_data_root=\''.str_replace("'","\'",($main_data_dir)).'\';'); fputs($fp, '$dolibarr_main_data_root=\''.str_replace("'","\'",trim($main_data_dir)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_host=\''.str_replace("'","\'",($db_host)).'\';'); fputs($fp, '$dolibarr_main_db_host=\''.str_replace("'","\'",trim($db_host)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_port=\''.str_replace("'","\'",($db_port)).'\';'); fputs($fp, '$dolibarr_main_db_port=\''.str_replace("'","\'",trim($db_port)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_name=\''.str_replace("'","\'",($db_name)).'\';'); fputs($fp, '$dolibarr_main_db_name=\''.str_replace("'","\'",trim($db_name)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_prefix=\''.str_replace("'","\'",($main_db_prefix)).'\';'); fputs($fp, '$dolibarr_main_db_prefix=\''.str_replace("'","\'",trim($main_db_prefix)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_user=\''.str_replace("'","\'",($db_user)).'\';'); fputs($fp, '$dolibarr_main_db_user=\''.str_replace("'","\'",trim($db_user)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_pass=\''.str_replace("'","\'",($db_pass)).'\';'); fputs($fp, '$dolibarr_main_db_pass=\''.str_replace("'","\'",trim($db_pass)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_type=\''.str_replace("'","\'",($db_type)).'\';'); fputs($fp, '$dolibarr_main_db_type=\''.str_replace("'","\'",trim($db_type)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_character_set=\''.str_replace("'","\'",($db_character_set)).'\';'); fputs($fp, '$dolibarr_main_db_character_set=\''.str_replace("'","\'",trim($db_character_set)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_collation=\''.str_replace("'","\'",($db_collation)).'\';'); fputs($fp, '$dolibarr_main_db_collation=\''.str_replace("'","\'",trim($db_collation)).'\';');
fputs($fp,"\n"); fputs($fp,"\n");
/* Authentication */ /* Authentication */
@ -1023,7 +1023,7 @@ function write_conf_file($conffile)
if (file_exists("$conffile")) if (file_exists("$conffile"))
{ {
include $conffile; // On force rechargement. Ne pas mettre include_once ! include $conffile; // force config reload, do not put include_once
conf($dolibarr_main_document_root); conf($dolibarr_main_document_root);
print "<tr><td>"; print "<tr><td>";

View File

@ -58,7 +58,7 @@ if ($dolibarr_main_db_type == "sqlite3") $choix=5;
//if (empty($choix)) dol_print_error('','Database type '.$dolibarr_main_db_type.' not supported into step2.php page'); //if (empty($choix)) dol_print_error('','Database type '.$dolibarr_main_db_type.' not supported into step2.php page');
// Now we load forced value from install.forced.php file. // Now we load forced values from install.forced.php file.
$useforcedwizard=false; $useforcedwizard=false;
$forcedfile="./install.forced.php"; $forcedfile="./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php";
@ -67,7 +67,7 @@ if (@file_exists($forcedfile)) {
include_once $forcedfile; include_once $forcedfile;
} }
dolibarr_install_syslog("--- step2: entering step2.php page"); dolibarr_install_syslog("- step2: entering step2.php page");
/* /*
@ -88,7 +88,7 @@ if ($action == "set")
{ {
print '<h3><img class="valigntextbottom" src="../theme/common/octicons/build/svg/database.svg" width="20" alt="Database"> '.$langs->trans("Database").'</h3>'; print '<h3><img class="valigntextbottom" src="../theme/common/octicons/build/svg/database.svg" width="20" alt="Database"> '.$langs->trans("Database").'</h3>';
print '<table cellspacing="0" style="padding: 4px 4px 4px 0px" border="0" width="100%">'; print '<table cellspacing="0" style="padding: 4px 4px 4px 0" border="0" width="100%">';
$error=0; $error=0;
$db=getDoliDBInstance($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port); $db=getDoliDBInstance($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port);
@ -237,7 +237,7 @@ if ($action == "set")
print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name); print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name);
print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer.' <br>Executed query : '.$db->lastquery; print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer.' <br>Executed query : '.$db->lastquery;
print "\n</td>"; print "\n</td>";
print '<td><font class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</font></td></tr>'; print '<td><span class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</span></td></tr>';
$error++; $error++;
} }
} }
@ -246,7 +246,7 @@ if ($action == "set")
{ {
print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name); print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name);
print "</td>"; print "</td>";
print '<td><font class="error">'.$langs->trans("Error").' Failed to open file '.$dir.$file.'</td></tr>'; print '<td><span class="error">'.$langs->trans("Error").' Failed to open file '.$dir.$file.'</span></td></tr>';
$error++; $error++;
dolibarr_install_syslog("step2: failed to open file " . $dir . $file, LOG_ERR); dolibarr_install_syslog("step2: failed to open file " . $dir . $file, LOG_ERR);
} }
@ -384,7 +384,7 @@ if ($action == "set")
print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name); print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name);
print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror(); print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror();
print "\n</td>"; print "\n</td>";
print '<td><font class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</font></td></tr>'; print '<td><span class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</span></td></tr>';
$error++; $error++;
} }
} }
@ -395,7 +395,7 @@ if ($action == "set")
{ {
print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name); print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name);
print "</td>"; print "</td>";
print '<td><font class="error">'.$langs->trans("Error")." Failed to open file ".$dir.$file."</font></td></tr>"; print '<td><span class="error">'.$langs->trans("Error")." Failed to open file ".$dir.$file."</span></td></tr>";
$error++; $error++;
dolibarr_install_syslog("step2: failed to open file " . $dir . $file, LOG_ERR); dolibarr_install_syslog("step2: failed to open file " . $dir . $file, LOG_ERR);
} }
@ -417,7 +417,7 @@ if ($action == "set")
***************************************************************************************/ ***************************************************************************************/
if ($ok && $createfunctions) if ($ok && $createfunctions)
{ {
// For this file, we use directory according to database type // For this file, we use a directory according to database type
if ($choix==1) $dir = "mysql/functions/"; if ($choix==1) $dir = "mysql/functions/";
elseif ($choix==2) $dir = "pgsql/functions/"; elseif ($choix==2) $dir = "pgsql/functions/";
elseif ($choix==3) $dir = "mssql/functions/"; elseif ($choix==3) $dir = "mssql/functions/";
@ -473,7 +473,7 @@ if ($action == "set")
print "<tr><td>".$langs->trans("FunctionsCreation"); print "<tr><td>".$langs->trans("FunctionsCreation");
print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer; print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer;
print "\n</td>"; print "\n</td>";
print '<td><font class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</font></td></tr>'; print '<td><span class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</span></td></tr>';
$error++; $error++;
} }
} }
@ -594,7 +594,7 @@ if ($action == "set")
{ {
$ok = 0; $ok = 0;
$okallfile = 0; $okallfile = 0;
print '<font class="error">'.$langs->trans("ErrorSQL")." : ".$db->lasterrno()." - ".$db->lastqueryerror()." - ".$db->lasterror()."</font><br>"; print '<span class="error">'.$langs->trans("ErrorSQL")." : ".$db->lasterrno()." - ".$db->lastqueryerror()." - ".$db->lasterror()."</span><br>";
} }
} }
} }
@ -627,7 +627,7 @@ $ret=0;
if (!$ok && isset($argv[1])) $ret=1; if (!$ok && isset($argv[1])) $ret=1;
dolibarr_install_syslog("Exit ".$ret); dolibarr_install_syslog("Exit ".$ret);
dolibarr_install_syslog("--- step2: end"); dolibarr_install_syslog("- step2: end");
pFooter($ok?0:1,$setuplang); pFooter($ok?0:1,$setuplang);
@ -635,4 +635,3 @@ if (isset($db) && is_object($db)) $db->close();
// Return code if ran from command line // Return code if ran from command line
if ($ret) exit($ret); if ($ret) exit($ret);

View File

@ -47,7 +47,7 @@ if (@file_exists($forcedfile)) {
include_once $forcedfile; include_once $forcedfile;
} }
dolibarr_install_syslog("--- step4: entering step4.php page"); dolibarr_install_syslog("- step4: entering step4.php page");
$error=0; $error=0;
$ok = 0; $ok = 0;
@ -74,18 +74,18 @@ print '<h3><img class="valigntextbottom" src="../theme/common/octicons/build/svg
print $langs->trans("LastStepDesc").'<br><br>'; print $langs->trans("LastStepDesc").'<br><br>';
print '<table cellspacing="0" cellpadding="2" width="100%">'; print '<table cellspacing="0" cellpadding="2">';
$db=getDoliDBInstance($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port); $db=getDoliDBInstance($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port);
if ($db->ok) if ($db->ok)
{ {
print '<tr><td>'.$langs->trans("Login").' :</td><td>'; print '<tr><td><label for="login">'.$langs->trans("Login").' :</label></td><td>';
print '<input name="login" type="text" value="' . (!empty($_GET["login"]) ? GETPOST("login") : (isset($force_install_dolibarrlogin) ? $force_install_dolibarrlogin : '')) . '"' . (@$force_install_noedit == 2 && $force_install_dolibarrlogin !== null ? ' disabled' : '') . '></td></tr>'; print '<input id="login" name="login" type="text" value="' . (!empty($_GET["login"]) ? GETPOST("login") : (isset($force_install_dolibarrlogin) ? $force_install_dolibarrlogin : '')) . '"' . (@$force_install_noedit == 2 && $force_install_dolibarrlogin !== null ? ' disabled' : '') . '></td></tr>';
print '<tr><td>'.$langs->trans("Password").' :</td><td>'; print '<tr><td><label for="pass">'.$langs->trans("Password").' :</label></td><td>';
print '<input type="password" name="pass"></td></tr>'; print '<input type="password" id="pass" name="pass"></td></tr>';
print '<tr><td>'.$langs->trans("PasswordAgain").' :</td><td>'; print '<tr><td><label for="pass_verif">'.$langs->trans("PasswordAgain").' :</label></td><td>';
print '<input type="password" name="pass_verif"></td></tr>'; print '<input type="password" id="pass_verif" name="pass_verif"></td></tr>';
print '</table>'; print '</table>';
if (isset($_GET["error"]) && $_GET["error"] == 1) if (isset($_GET["error"]) && $_GET["error"] == 1)
@ -113,12 +113,11 @@ if ($db->ok)
} }
$ret=0; $ret=0;
if ($error && isset($argv[1])) $ret=1; if ($error && isset($argv[1])) $ret=1;
dolibarr_install_syslog("Exit ".$ret); dolibarr_install_syslog("Exit ".$ret);
dolibarr_install_syslog("--- step4: end"); dolibarr_install_syslog("- step4: end");
pFooter($error,$setuplang); pFooter($error,$setuplang);

View File

@ -23,7 +23,7 @@
/** /**
* \file htdocs/install/step5.php * \file htdocs/install/step5.php
* \ingroup install * \ingroup install
* \brief Last page of upgrade or install process * \brief Last page of upgrade / install process
*/ */
include_once 'inc.php'; include_once 'inc.php';
@ -67,7 +67,7 @@ if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.fo
if (@file_exists($forcedfile)) { if (@file_exists($forcedfile)) {
$useforcedwizard = true; $useforcedwizard = true;
include_once $forcedfile; include_once $forcedfile;
// If forced install is enabled, let's replace post values. These are empty because form fields are disabled. // If forced install is enabled, replace post values. These are empty because form fields are disabled.
if ($force_install_noedit == 2) { if ($force_install_noedit == 2) {
if (!empty($force_install_dolibarrlogin)) { if (!empty($force_install_dolibarrlogin)) {
$login = $force_install_dolibarrlogin; $login = $force_install_dolibarrlogin;
@ -75,16 +75,15 @@ if (@file_exists($forcedfile)) {
} }
} }
dolibarr_install_syslog("--- step5: entering step5.php page"); dolibarr_install_syslog("- step5: entering step5.php page");
$error=0; $error=0;
/* /*
* Actions * Actions
*/ */
// If install, check pass and pass_verif used to create admin account // If install, check password and password_verification used to create admin account
if ($action == "set") { if ($action == "set") {
if ($pass <> $pass_verif) { if ($pass <> $pass_verif) {
header("Location: step4.php?error=1&selectlang=$setuplang" . (isset($login) ? '&login=' . $login : '')); header("Location: step4.php?error=1&selectlang=$setuplang" . (isset($login) ? '&login=' . $login : ''));
@ -394,8 +393,8 @@ if ($action == "set" && $success)
else else
{ {
// If here MAIN_VERSION_LAST_UPGRADE is not empty // If here MAIN_VERSION_LAST_UPGRADE is not empty
print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</font></b><br>'; print $langs->trans("VersionLastUpgrade").': <b><span class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</span></b><br>';
print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b><br>'; print $langs->trans("VersionProgram").': <b><span class="ok">'.DOL_VERSION.'</span></b><br>';
print $langs->trans("MigrationNotFinished").'<br>'; print $langs->trans("MigrationNotFinished").'<br>';
print "<br>"; print "<br>";
@ -442,8 +441,8 @@ elseif (empty($action) || preg_match('/upgrade/i',$action))
else else
{ {
// If here MAIN_VERSION_LAST_UPGRADE is not empty // If here MAIN_VERSION_LAST_UPGRADE is not empty
print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</font></b><br>'; print $langs->trans("VersionLastUpgrade").': <b><span class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</span></b><br>';
print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b>'; print $langs->trans("VersionProgram").': <b><span class="ok">'.DOL_VERSION.'</span></b>';
print "<br>"; print "<br>";
@ -457,17 +456,14 @@ else
dol_print_error('','step5.php: unknown choice of action'); dol_print_error('','step5.php: unknown choice of action');
} }
// Clear cache files // Clear cache files
clearstatcache(); clearstatcache();
$ret=0; $ret=0;
if ($error && isset($argv[1])) $ret=1; if ($error && isset($argv[1])) $ret=1;
dolibarr_install_syslog("Exit ".$ret); dolibarr_install_syslog("Exit ".$ret);
dolibarr_install_syslog("--- step5: Dolibarr setup finished"); dolibarr_install_syslog("- step5: Dolibarr setup finished");
pFooter(1,$setuplang); pFooter(1,$setuplang);

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015-2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2015-2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* *
@ -21,10 +21,13 @@
* *
* cd htdocs/install * cd htdocs/install
* php upgrade.php 3.4.0 3.5.0 [dirmodule|ignoredbversion] * php upgrade.php 3.4.0 3.5.0 [dirmodule|ignoredbversion]
* php upgrade2.php 3.4.0 3.5.0 * php upgrade2.php 3.4.0 3.5.0 [MODULE_NAME1_TO_ENABLE,MODULE_NAME2_TO_ENABLE]
* *
* Option 'dirmodule' allows to provide a path for an external module, so we migrate from command line a script from a module. * And for final step:
* Option 'ignoredbversion' allows to run migration even if database is a bugged database version. * php step5.php 3.4.0 3.5.0
*
* Option 'dirmodule' allows to provide a path for an external module, so we migrate from command line using a script from a module.
* Option 'ignoredbversion' allows to run migration even if database version does not match start version of migration
* Return code is 0 if OK, >0 if error * Return code is 0 if OK, >0 if error
*/ */
@ -84,7 +87,7 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial
if (! $versionfrom && ! $versionto) if (! $versionfrom && ! $versionto)
{ {
print 'Error: Parameter versionfrom or versionto missing.'."\n"; print 'Error: Parameter versionfrom or versionto missing.'."\n";
print 'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n"; print 'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install)'."\n";
// Test if batch mode // Test if batch mode
$sapi_type = php_sapi_name(); $sapi_type = php_sapi_name();
$script_file = basename(__FILE__); $script_file = basename(__FILE__);
@ -297,7 +300,7 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09
{ {
if ($db->lasterrno() != 'DB_ERROR_NOSUCHTABLE') if ($db->lasterrno() != 'DB_ERROR_NOSUCHTABLE')
{ {
print '<tr><td colspan="2"><font class="error">'.$sql.' : '.$db->lasterror()."</font></td></tr>\n"; print '<tr><td colspan="2"><span class="error">'.$sql.' : '.$db->lasterror()."</font></td></tr>\n";
} }
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> /* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2018 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015-2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2015-2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
@ -18,13 +18,19 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
* Upgrade scripts can be ran from command line with syntax: * Upgrade2 scripts can be ran from command line with syntax:
* *
* cd htdocs/install * cd htdocs/install
* php upgrade.php 3.4.0 3.5.0 * php upgrade.php 3.4.0 3.5.0 [dirmodule|ignoredbversion]
* php upgrade2.php 3.4.0 3.5.0 [MODULE_NAME1_TO_ENABLE,MODULE_NAME2_TO_ENABLE] * php upgrade2.php 3.4.0 3.5.0 [MAIN_MODULE_NAME1_TO_ENABLE,MAIN_MODULE_NAME2_TO_ENABLE]
*
* And for final step:
* php step5.php 3.4.0 3.5.0
* *
* Return code is 0 if OK, >0 if error * Return code is 0 if OK, >0 if error
*
* Note: To just enable a module from command line, use this syntax:
* php upgrade2.php 0.0.0 0.0.0 [MAIN_MODULE_NAME1_TO_ENABLE,MAIN_MODULE_NAME2_TO_ENABLE]
*/ */
/** /**
@ -77,7 +83,7 @@ if ($dolibarr_main_db_type == 'pgsql') $choix=2;
if ($dolibarr_main_db_type == 'mssql') $choix=3; if ($dolibarr_main_db_type == 'mssql') $choix=3;
dolibarr_install_syslog("--- upgrade2: entering upgrade2.php page ".$versionfrom." ".$versionto); dolibarr_install_syslog("--- upgrade2: entering upgrade2.php page ".$versionfrom." ".$versionto." ".$enablemodules);
if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initialized", LOG_ERR); if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initialized", LOG_ERR);
@ -89,14 +95,14 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial
if ((! $versionfrom || preg_match('/version/', $versionfrom)) && (! $versionto || preg_match('/version/', $versionto))) if ((! $versionfrom || preg_match('/version/', $versionfrom)) && (! $versionto || preg_match('/version/', $versionto)))
{ {
print 'Error: Parameter versionfrom or versionto missing or having a bad format.'."\n"; print 'Error: Parameter versionfrom or versionto missing or having a bad format.'."\n";
print 'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n"; print 'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install)'."\n";
// Test if batch mode // Test if batch mode
$sapi_type = php_sapi_name(); $sapi_type = php_sapi_name();
$script_file = basename(__FILE__); $script_file = basename(__FILE__);
$path=dirname(__FILE__).'/'; $path=dirname(__FILE__).'/';
if (substr($sapi_type, 0, 3) == 'cli') if (substr($sapi_type, 0, 3) == 'cli')
{ {
print 'Syntax from command line: '.$script_file." x.y.z a.b.c\n"; print 'Syntax from command line: '.$script_file." x.y.z a.b.c [MAIN_MODULE_NAME1_TO_ENABLE,MAIN_MODULE_NAME2_TO_ENABLE...]\n";
} }
exit; exit;
} }
@ -438,6 +444,13 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09
migrate_rename_directories($db,$langs,$conf,'/contracts','/contract'); migrate_rename_directories($db,$langs,$conf,'/contracts','/contract');
} }
// Scripts for 9.0
$afterversionarray=explode('.','8.0.9');
$beforeversionarray=explode('.','9.0.9');
if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0)
{
//migrate_rename_directories($db,$langs,$conf,'/contracts','/contract');
}
} }
// Code executed only if migration is LAST ONE. Must always be done. // Code executed only if migration is LAST ONE. Must always be done.
@ -541,12 +554,12 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09
dolCopyDir($srcroot, $destroot, 0, 0); dolCopyDir($srcroot, $destroot, 0, 0);
// Actions for all versions (no database change, delete files and directories) // Actions for all versions (no database change but delete some files and directories)
migrate_delete_old_files($db, $langs, $conf); migrate_delete_old_files($db, $langs, $conf);
migrate_delete_old_dir($db, $langs, $conf); migrate_delete_old_dir($db, $langs, $conf);
// Actions for all versions (no database change, create directories) // Actions for all versions (no database change but create some directories)
dol_mkdir(DOL_DATA_ROOT.'/bank'); dol_mkdir(DOL_DATA_ROOT.'/bank');
// Actions for all versions (no database change, rename directories) // Actions for all versions (no database change but rename some directories)
migrate_rename_directories($db, $langs, $conf, '/banque/bordereau', '/bank/checkdeposits'); migrate_rename_directories($db, $langs, $conf, '/banque/bordereau', '/bank/checkdeposits');
print '<div><br>'.$langs->trans("MigrationFinished").'</div>'; print '<div><br>'.$langs->trans("MigrationFinished").'</div>';
@ -4536,11 +4549,11 @@ function migrate_delete_old_dir($db,$langs,$conf)
* @param int $force 1=Reload module even if not already loaded * @param int $force 1=Reload module even if not already loaded
* @return void * @return void
*/ */
function migrate_reload_modules($db,$langs,$conf,$listofmodule=array(),$force=0) function migrate_reload_modules($db, $langs, $conf, $listofmodule=array(), $force=0)
{ {
if (count($listofmodule) == 0) return; if (count($listofmodule) == 0) return;
dolibarr_install_syslog("upgrade2::migrate_reload_modules force=".$force); dolibarr_install_syslog("upgrade2::migrate_reload_modules force=".$force.", listofmodule=".join(',', array_keys($listofmodule)));
foreach($listofmodule as $moduletoreload => $reloadmode) // reloadmodule can be 'noboxes', 'newboxdefonly', 'forceactivate' foreach($listofmodule as $moduletoreload => $reloadmode) // reloadmodule can be 'noboxes', 'newboxdefonly', 'forceactivate'
{ {
@ -4723,8 +4736,15 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array(),$force=0)
$tmp = preg_match('/MAIN_MODULE_([a-zA-Z0-9]+)/', $moduletoreload, $reg); $tmp = preg_match('/MAIN_MODULE_([a-zA-Z0-9]+)/', $moduletoreload, $reg);
if (! empty($reg[1])) if (! empty($reg[1]))
{ {
$moduletoreloadshort = ucfirst(strtolower($reg[1])); if (strtoupper($moduletoreload) == $moduletoreload) // If key is un uppercase
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module ".$moduletoreloadshort); {
$moduletoreloadshort = ucfirst(strtolower($reg[1]));
}
else // If key is a mix of up and low case
{
$moduletoreloadshort = $reg[1];
}
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module ".$moduletoreloadshort." with mode ".$reloadmode);
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/mod'.$moduletoreloadshort.'.class.php'; $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/mod'.$moduletoreloadshort.'.class.php';
if ($res) { if ($res) {
$classname = 'mod'.$moduletoreloadshort; $classname = 'mod'.$moduletoreloadshort;
@ -4732,10 +4752,27 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array(),$force=0)
//$mod->remove('noboxes'); //$mod->remove('noboxes');
$mod->init($reloadmode); $mod->init($reloadmode);
} }
else
{
dolibarr_install_syslog('Failed to include '.DOL_DOCUMENT_ROOT.'/core/modules/mod'.$moduletoreloadshort.'.class.php');
$res=@dol_include_once(strtolower($moduletoreloadshort).'/core/modules/mod'.$moduletoreloadshort.'.class.php');
if ($res) {
$classname = 'mod'.$moduletoreloadshort;
$mod=new $classname($db);
//$mod->remove('noboxes');
$mod->init($reloadmode);
}
else
{
dolibarr_install_syslog('Failed to include '.strtolower($moduletoreloadshort).'/core/modules/mod'.$moduletoreloadshort.'.class.php');
}
}
} }
else else
{ {
print "Error, can't find module name"; dolibarr_install_syslog("Error, can't find module with name ".$moduletoreload, LOG_WARNING);
print "Error, can't find module with name ".$moduletoreload;
} }
} }

View File

@ -55,6 +55,7 @@ AccountancyAreaDescChartModel=STEP %s: Create a model of chart of account from m
AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s
AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s. AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s.
AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s.
AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of expense report. For this, use the menu entry %s. AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of expense report. For this, use the menu entry %s.
AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s. AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s.
AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for special expences (miscellaneous taxes). For this, use the menu entry %s. AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for special expences (miscellaneous taxes). For this, use the menu entry %s.
@ -131,6 +132,7 @@ ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounting accounts (If you set
ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounting accounts (If you set value to 6 here, the account '401' will appear like '401000' on screen) ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounting accounts (If you set value to 6 here, the account '401' will appear like '401000' on screen)
ACCOUNTING_MANAGE_ZERO=Allow to manage different number of zero at the end of an accounting account. Needed by some countries (like switzerland). If keep to off (default), you can set the 2 following parameters to ask application to add virtual zero. ACCOUNTING_MANAGE_ZERO=Allow to manage different number of zero at the end of an accounting account. Needed by some countries (like switzerland). If keep to off (default), you can set the 2 following parameters to ask application to add virtual zero.
BANK_DISABLE_DIRECT_INPUT=Disable direct recording of transaction in bank account BANK_DISABLE_DIRECT_INPUT=Disable direct recording of transaction in bank account
ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Enable draft export on journal
ACCOUNTING_SELL_JOURNAL=دفتر البيع اليومي ACCOUNTING_SELL_JOURNAL=دفتر البيع اليومي
ACCOUNTING_PURCHASE_JOURNAL=دفتر الشراء اليومي ACCOUNTING_PURCHASE_JOURNAL=دفتر الشراء اليومي

View File

@ -454,7 +454,7 @@ ModuleCompanyCodeDigitaria=Accounting code depends on third party code. The code
Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required. Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required.
UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than... UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than...
WarningPHPMail=WARNING: It is often better to setup outgoing emails to use the email server of your provider instead of the default setup. Some email providers (like Yahoo) does not allow you to send an email from another server than their own server. Your current setup use the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not a server of them, so few of your sent Emails may not be accepted (be carefull also to your email provider sending quota).<br>If your Email provider (like Yahoo) has this restriction, you must change Email setup to choose the other method "SMTP server" and enter the SMTP server and credentials provided by your Email provider (ask your EMail provider to get SMTP credentials for your account). WarningPHPMail=WARNING: It is often better to setup outgoing emails to use the email server of your provider instead of the default setup. Some email providers (like Yahoo) does not allow you to send an email from another server than their own server. Your current setup use the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not a server of them, so few of your sent Emails may not be accepted (be carefull also to your email provider sending quota).<br>If your Email provider (like Yahoo) has this restriction, you must change Email setup to choose the other method "SMTP server" and enter the SMTP server and credentials provided by your Email provider (ask your EMail provider to get SMTP credentials for your account).
WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of your ERP CRM application: <strong>%s</strong>. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: <strong>%s</strong>.
ClickToShowDescription=Click to show description ClickToShowDescription=Click to show description
DependsOn=This module need the module(s) DependsOn=This module need the module(s)
RequiredBy=This module is required by module(s) RequiredBy=This module is required by module(s)
@ -497,7 +497,7 @@ Module25Desc=طلبات الزبائن إدارة
Module30Name=فواتير Module30Name=فواتير
Module30Desc=ويلاحظ اعتماد الفواتير وإدارة العملاء. فواتير إدارة الموردين Module30Desc=ويلاحظ اعتماد الفواتير وإدارة العملاء. فواتير إدارة الموردين
Module40Name=الموردين Module40Name=الموردين
Module40Desc=الموردين وإدارة وشراء (الأوامر والفواتير) Module40Desc=Suppliers and purchase management (purchase orders and billing)
Module42Name=Debug Logs Module42Name=Debug Logs
Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes. Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes.
Module49Name=المحررين Module49Name=المحررين
@ -605,7 +605,7 @@ Module4000Desc=Human resources management (management of department, employee co
Module5000Name=شركة متعددة Module5000Name=شركة متعددة
Module5000Desc=يسمح لك لإدارة الشركات المتعددة Module5000Desc=يسمح لك لإدارة الشركات المتعددة
Module6000Name=سير العمل Module6000Name=سير العمل
Module6000Desc=إدارة سير العمل Module6000Desc=Workflow management (automatic creation of object and/or automatic status change)
Module10000Name=Websites Module10000Name=Websites
Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the Internet with your own domain name. Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the Internet with your own domain name.
Module20000Name=ترك إدارة الطلبات Module20000Name=ترك إدارة الطلبات
@ -891,7 +891,7 @@ DictionaryCivility=Personal and professional titles
DictionaryActions=Types of agenda events DictionaryActions=Types of agenda events
DictionarySocialContributions=الضرائب الاجتماعية أو المالية أنواع DictionarySocialContributions=الضرائب الاجتماعية أو المالية أنواع
DictionaryVAT=أسعار الضريبة على القيمة المضافة أو ضريبة المبيعات الاسعار DictionaryVAT=أسعار الضريبة على القيمة المضافة أو ضريبة المبيعات الاسعار
DictionaryRevenueStamp=كمية من طوابع الواردات DictionaryRevenueStamp=Amount of tax stamps
DictionaryPaymentConditions=شروط الدفع DictionaryPaymentConditions=شروط الدفع
DictionaryPaymentModes=وسائل الدفع DictionaryPaymentModes=وسائل الدفع
DictionaryTypeContact=الاتصال / أنواع العناوين DictionaryTypeContact=الاتصال / أنواع العناوين
@ -919,7 +919,7 @@ SetupSaved=الإعداد المحفوظة
SetupNotSaved=Setup not saved SetupNotSaved=Setup not saved
BackToModuleList=العودة إلى قائمة الوحدات BackToModuleList=العودة إلى قائمة الوحدات
BackToDictionaryList=العودة إلى قائمة القواميس BackToDictionaryList=العودة إلى قائمة القواميس
TypeOfRevenueStamp=Type of revenue stamp TypeOfRevenueStamp=Type of tax stamp
VATManagement=إدارة الضريبة على القيمة المضافة VATManagement=إدارة الضريبة على القيمة المضافة
VATIsUsedDesc=By default when creating prospects, invoices, orders etc the VAT rate follows the active standard rule:<br>If the seller is not subjected to VAT, then VAT defaults to 0. End of rule.<br>If the (selling country= buying country), then the VAT by default equals the VAT of the product in the selling country. End of rule. <br>If seller and buyer are both in the European Community and goods are transport products (car, ship, plane), the default VAT is 0 ( The VAT should be paid by the buyer to the customoffice of his country and not to the seller). End of rule.<br>If seller and buyer are both in the European Community and the buyer is not a company, then the VAT by defaults to the VAT of the product sold. End of rule.<br>If seller and buyer are both in the European Community and the buyer is a company, then the VAT is 0 by default . End of rule.<br>In any othe case the proposed default is VAT=0. End of rule. VATIsUsedDesc=By default when creating prospects, invoices, orders etc the VAT rate follows the active standard rule:<br>If the seller is not subjected to VAT, then VAT defaults to 0. End of rule.<br>If the (selling country= buying country), then the VAT by default equals the VAT of the product in the selling country. End of rule. <br>If seller and buyer are both in the European Community and goods are transport products (car, ship, plane), the default VAT is 0 ( The VAT should be paid by the buyer to the customoffice of his country and not to the seller). End of rule.<br>If seller and buyer are both in the European Community and the buyer is not a company, then the VAT by defaults to the VAT of the product sold. End of rule.<br>If seller and buyer are both in the European Community and the buyer is a company, then the VAT is 0 by default . End of rule.<br>In any othe case the proposed default is VAT=0. End of rule.
VATIsNotUsedDesc=افتراضي المقترحة 0 ضريبة القيمة المضافة هو الذي يمكن أن يستخدم في حالات مثل الجمعيات والأفراد والشركات الصغيرة où. VATIsNotUsedDesc=افتراضي المقترحة 0 ضريبة القيمة المضافة هو الذي يمكن أن يستخدم في حالات مثل الجمعيات والأفراد والشركات الصغيرة où.
@ -1027,7 +1027,7 @@ Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned
Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Delay tolerance (in days) before alert on project not closed in time Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Delay tolerance (in days) before alert on project not closed in time
Delays_MAIN_DELAY_TASKS_TODO=Delay tolerance (in days) before alert on planned tasks (project tasks) not completed yet Delays_MAIN_DELAY_TASKS_TODO=Delay tolerance (in days) before alert on planned tasks (project tasks) not completed yet
Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not processed yet Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not processed yet
Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not processed yet Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on purchase orders not processed yet
Delays_MAIN_DELAY_PROPALS_TO_CLOSE=التسامح التأخير (في يوم) في حالة تأهب على المقترحات المعروضة ليقفل Delays_MAIN_DELAY_PROPALS_TO_CLOSE=التسامح التأخير (في يوم) في حالة تأهب على المقترحات المعروضة ليقفل
Delays_MAIN_DELAY_PROPALS_TO_BILL=تأخير التسامح (أيام) قبل تنبيه بشأن المقترحات لا توصف Delays_MAIN_DELAY_PROPALS_TO_BILL=تأخير التسامح (أيام) قبل تنبيه بشأن المقترحات لا توصف
Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=تأخير التسامح (في يوم) في حالة تأهب قبل يوم والخدمات لتفعيل Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=تأخير التسامح (في يوم) في حالة تأهب قبل يوم والخدمات لتفعيل
@ -1458,7 +1458,7 @@ SyslogFilename=اسم الملف ومسار
YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr "وثائق" دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف. YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr "وثائق" دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف.
ErrorUnknownSyslogConstant=ثابت %s ليس ثابت سيسلوغ معروفة ErrorUnknownSyslogConstant=ثابت %s ليس ثابت سيسلوغ معروفة
OnlyWindowsLOG_USER=نوافذ يعتمد فقط LOG_USER OnlyWindowsLOG_USER=نوافذ يعتمد فقط LOG_USER
CompressSyslogs=Syslog files compression and backup CompressSyslogs=Compression and backup of debug log files (generated by module Log for debug)
SyslogFileNumberOfSaves=Log backups SyslogFileNumberOfSaves=Log backups
ConfigureCleaningCronjobToSetFrequencyOfSaves=Configure cleaning scheduled job to set log backup frequency ConfigureCleaningCronjobToSetFrequencyOfSaves=Configure cleaning scheduled job to set log backup frequency
##### Donations ##### ##### Donations #####

View File

@ -1,163 +1,165 @@
# Dolibarr language file - Source file is en_US - banks # Dolibarr language file - Source file is en_US - banks
Bank=البنك Bank=البنك
MenuBankCash=البنك / النقدية MenuBankCash=Bank | Cash
MenuVariousPayment=Miscellaneous payments MenuVariousPayment=مدفوعات متنوعة
MenuNewVariousPayment=New Miscellaneous payment MenuNewVariousPayment=مدفوعات متنوعة جديدة
BankName=اسم المصرف BankName=اسم المصرف
FinancialAccount=حساب FinancialAccount=الحساب
BankAccount=الحساب المصرفي BankAccount=الحساب المصرفي
BankAccounts=الحسابات المصرفية BankAccounts=الحسابات المصرفية
ShowAccount=مشاهدة الحساب BankAccountsAndGateways=Bank accounts | Gateways
AccountRef=الحساب المالي المرجع ShowAccount=عرض الحساب
AccountLabel=الحساب المالي العلامة AccountRef=مرجع الحساب المالي
AccountLabel=بطاقة الحساب المالي
CashAccount=الحساب النقدي CashAccount=الحساب النقدي
CashAccounts=حسابات نقدية CashAccounts=حسابات نقدية
CurrentAccounts=الحسابات الجارية CurrentAccounts=الحسابات الجارية
SavingAccounts=حسابات التوفير SavingAccounts=حسابات التوفير
ErrorBankLabelAlreadyExists=الحساب المالي الملصق موجود بالفعل ErrorBankLabelAlreadyExists=بطاقة الحساب المالي موجوده بالفعل
BankBalance=التوازن BankBalance=التوازن
BankBalanceBefore=التوازن قبل BankBalanceBefore=الرصيد قبل
BankBalanceAfter=التوازن بعد BankBalanceAfter=الرصيد بعد
BalanceMinimalAllowed=الحد الأدنى المسموح التوازن BalanceMinimalAllowed=الحد الأدنى المسموح من الرصيد
BalanceMinimalDesired=الحد الأدنى من التوازن المطلوب BalanceMinimalDesired=الحد الأدنى المطلوب من الرصيد
InitialBankBalance=الرصيد الأولي InitialBankBalance=الرصيد الأولي
EndBankBalance=رصيد نهاية EndBankBalance=الرصيد النهائي
CurrentBalance=الرصيد الحالي CurrentBalance=الرصيد الحالي
FutureBalance=التوازن في المستقبل FutureBalance=التوازن في المستقبل
ShowAllTimeBalance=يظهر من البداية على التوازن ShowAllTimeBalance=عرض الرصيد من البداية
AllTime=من البداية AllTime=من البداية
Reconciliation=المصالحة Reconciliation=التسوية
RIB=رقم الحساب المصرفي RIB=رقم الحساب المصرفي
IBAN=عدد إيبان IBAN=عدد إيبان
BIC=بيك / سويفت عدد BIC=بيك / سويفت عدد
SwiftValid=BIC/SWIFT valid SwiftValid=بيك / سويفت صالحة
SwiftVNotalid=BIC/SWIFT not valid SwiftVNotalid=بيك / سويفت غير صالح
IbanValid=BAN valid IbanValid=بان صالحة
IbanNotValid=BAN not valid IbanNotValid=بان غير صالح
StandingOrders=Direct Debit orders StandingOrders=أوامر الخصم المباشر
StandingOrder=Direct debit order StandingOrder=أمر الخصم المباشر
AccountStatement=كشف حساب AccountStatement=كشف الحساب
AccountStatementShort=بيان AccountStatementShort=بيان
AccountStatements=بيانات الحساب AccountStatements=كشوفات الحساب
LastAccountStatements=كشوفات الحساب الأخير LastAccountStatements=كشوفات الحساب الأخيرة
IOMonthlyReporting=تقارير شهرية IOMonthlyReporting=تقارير شهرية
BankAccountDomiciliation=معالجة حساب BankAccountDomiciliation=عنوان الحساب
BankAccountCountry=حساب البلاد BankAccountCountry=بلد حساب
BankAccountOwner=اسم صاحب الحساب BankAccountOwner=اسم صاحب الحساب
BankAccountOwnerAddress=معالجة حساب المالك BankAccountOwnerAddress=عنوان مالك الحساب
RIBControlError=التحقق من تكامل القيم يفشل. وهذا يعني حصول على معلومات عن هذا رقم الحساب ليست كاملة أو خاطئة (ارجع البلد والأرقام وIBAN). RIBControlError=فشل التحقق من سلامة القيم. وهذا يعني أن المعلومات الخاصة برقم الحساب هذا غير كاملة أو خاطئة (راجع البلد والأرقام و إيبان).
CreateAccount=إنشاء حساب CreateAccount=إنشاء حساب
NewBankAccount=حساب جديد NewBankAccount=حساب جديد
NewFinancialAccount=الحساب المالي الجديد NewFinancialAccount=حساب مالي جديد
MenuNewFinancialAccount=الحساب المالي الجديد MenuNewFinancialAccount=حساب مالي جديد
EditFinancialAccount=تحرير الحساب EditFinancialAccount=تعديل الحساب
LabelBankCashAccount=بطاقة مصرفية أو نقدا LabelBankCashAccount=بطاقة مصرفية أو نقدية
AccountType=نوع الحساب AccountType=نوع الحساب
BankType0=حساب توفير BankType0=حساب توفير
BankType1=الحساب الجاري BankType1=الحساب الجاري او حساب بطاقة الائتمان
BankType2=الحساب النقدي BankType2=الحساب النقدي
AccountsArea=حسابات المنطقة AccountsArea=منطقة الحسابات
AccountCard=حساب بطاقة AccountCard=بطاقة الحساب
DeleteAccount=حذف حساب DeleteAccount=حذف الحساب
ConfirmDeleteAccount=Are you sure you want to delete this account? ConfirmDeleteAccount=هل أنت متأكد أنك تريد حذف هذا الحساب؟
Account=حساب Account=حساب
BankTransactionByCategories=Bank entries by categories BankTransactionByCategories=القيود البنكية حسب الفئات
BankTransactionForCategory=Bank entries for category <b>%s</b> BankTransactionForCategory=القيود البنكية للفئة <b>%s</b>
RemoveFromRubrique=إزالة الارتباط مع هذه الفئة RemoveFromRubrique=إزالة الارتباط مع هذه الفئة
RemoveFromRubriqueConfirm=Are you sure you want to remove link between the entry and the category? RemoveFromRubriqueConfirm=هل انت متأكد أنك تريد إزالة الربط بين القيد والفئة؟
ListBankTransactions=List of bank entries ListBankTransactions=قائمة القيود البنكية
IdTransaction=رقم المعاملات IdTransaction=معرف المعاملة
BankTransactions=Bank entries BankTransactions=القيود البنكية
BankTransaction=Bank entry BankTransaction=قيد بنكي
ListTransactions=List entries ListTransactions=قائمة القيود
ListTransactionsByCategory=List entries/category ListTransactionsByCategory=قائمةالقيود/الفئات
TransactionsToConciliate=Entries to reconcile TransactionsToConciliate=قيود للتسويات
Conciliable=Conciliable Conciliable=يمكن أن يتم تسويتة
Conciliate=التوفيق Conciliate=التسوية
Conciliation=توفيق Conciliation=تسوية
ReconciliationLate=Reconciliation late ReconciliationLate=التسوية في وقت متأخر
IncludeClosedAccount=وتشمل حسابات مغلقة IncludeClosedAccount=وتشمل حسابات مغلقة
OnlyOpenedAccount=إلا فتح حسابات OnlyOpenedAccount=الحسابات المفتوحة فقط
AccountToCredit=الحساب على الائتمان AccountToCredit=تقييد مبلغ دائن بالحساب
AccountToDebit=لحساب الخصم AccountToDebit=تقييد مبلغ مدين بالحساب
DisableConciliation=تعطيل ميزة التوفيق لهذا الحساب DisableConciliation=تعطيل خاصية التسوية لهذا الحساب
ConciliationDisabled=توفيق سمة المعوقين ConciliationDisabled=خاصية التسوية معطلة
LinkedToAConciliatedTransaction=Linked to a conciliated entry LinkedToAConciliatedTransaction=مرتبط بقيد تمت تسويتة
StatusAccountOpened=Opened StatusAccountOpened=مفتوح
StatusAccountClosed=مغلقة StatusAccountClosed=مغلق
AccountIdShort=عدد AccountIdShort=رقم
LineRecord=المعاملات LineRecord=المعاملة
AddBankRecord=Add entry AddBankRecord=إضافة قيد
AddBankRecordLong=Add entry manually AddBankRecordLong=إضافة قيد يدوي
Conciliated=Reconciled Conciliated=تمت تسويتة
ConciliatedBy=طريق التصالح ConciliatedBy=تمت التسوية بواسطة
DateConciliating=التوفيق التاريخ DateConciliating=تاريخ التسوية
BankLineConciliated=Entry reconciled BankLineConciliated=تم تسوية القيد
Reconciled=Reconciled Reconciled=تمت تسويتة
NotReconciled=Not reconciled NotReconciled=لم يتم تسويتة
CustomerInvoicePayment=عملاء الدفع CustomerInvoicePayment=مدفوعات العميل
SupplierInvoicePayment=المورد الدفع SupplierInvoicePayment=دفع المورد
SubscriptionPayment=دفع الاشتراك SubscriptionPayment=دفع الاشتراك
WithdrawalPayment=انسحاب الدفع WithdrawalPayment=سحب المدفوعات
SocialContributionPayment=اجتماعي / دفع الضرائب المالية SocialContributionPayment=مدفوعات الضرائب الاجتماعية / المالية
BankTransfer=حوالة مصرفية BankTransfer=حوالة مصرفية
BankTransfers=التحويلات المصرفية BankTransfers=حوالات المصرفية
MenuBankInternalTransfer=Internal transfer MenuBankInternalTransfer=حوالة داخلية
TransferDesc=Transfer from one account to another one, Dolibarr will write two record (a debit in source account and a credit in target account. The same amount (except sign), label and date will be used for this transaction) TransferDesc=التحويل من حساب إلى آخر، سوف يقوم دوليبار بكتابة سجلين (مدين في حساب المصدر و دائن في حساب الهدف، نفس المبلغ (باستثناء العلامة)، سيتم استخدام البطاقة و التاريخ لهذه المعاملة)
TransferFrom=من TransferFrom=من
TransferTo=إلى TransferTo=إلى
TransferFromToDone=ونقل من هناك إلى ٪ <b>%s ق %s</b> ٪ وقد سجلت ق. TransferFromToDone=التحويل من <b>%s</b>إلى <b>%s</b>من <b>%s</b>%s قد تم تسجيلة.
CheckTransmitter=الإرسال CheckTransmitter=المرسل
ValidateCheckReceipt=Validate this check receipt? ValidateCheckReceipt=تأكيد صحة الشيك المستلم؟
ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt, no change will be possible once this is done? ConfirmValidateCheckReceipt=هل تريد تأكيد هذا الشيك ، لن يكون من الممكن إجراء أي تغيير بعد الانتهاء من ذلك؟
DeleteCheckReceipt=Delete this check receipt? DeleteCheckReceipt=حذف هذا الشيك ؟
ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt? ConfirmDeleteCheckReceipt=هل انت متأكد أنك تريد حذف هذا الشيك؟
BankChecks=الشيكات المصرفية BankChecks=الشيكات المصرفية
BankChecksToReceipt=Checks awaiting deposit BankChecksToReceipt=شيكات في انتظار الإيداع
ShowCheckReceipt=الاختيار إظهار تلقي الودائع ShowCheckReceipt=عرض إيصال إيداع شيكات
NumberOfCheques=ملاحظة : للشيكات NumberOfCheques=عدد الشيكات
DeleteTransaction=Delete entry DeleteTransaction=حذف المعاملة
ConfirmDeleteTransaction=Are you sure you want to delete this entry? ConfirmDeleteTransaction=هل تريد بالتأكيد حذف هذه المعاملة؟
ThisWillAlsoDeleteBankRecord=This will also delete generated bank entry ThisWillAlsoDeleteBankRecord=سيؤدي هذا أيضا إلى حذف القيد البنكي الذي تم إنشاؤه
BankMovements=حركات BankMovements=حركات
PlannedTransactions=Planned entries PlannedTransactions=المعاملات المخططة
Graph=الرسومات Graph=الرسومات
ExportDataset_banque_1=Bank entries and account statement ExportDataset_banque_1=القيود البنكية وكشف الحساب
ExportDataset_banque_2=إيداع زلة ExportDataset_banque_2=قسيمة الإيداع
TransactionOnTheOtherAccount=صفقة على حساب الآخرين TransactionOnTheOtherAccount=معاملة على الحساب الآخر
PaymentNumberUpdateSucceeded=Payment number updated successfully PaymentNumberUpdateSucceeded=تم تحديث رقم الدفع بنجاح
PaymentNumberUpdateFailed=دفع عددا لا يمكن تحديث PaymentNumberUpdateFailed=تعذر تحديث رقم الدفعة
PaymentDateUpdateSucceeded=Payment date updated successfully PaymentDateUpdateSucceeded=تم تحديث تاريخ الدفع بنجاح
PaymentDateUpdateFailed=دفع حتى الآن لا يمكن تحديث PaymentDateUpdateFailed=تعذر تحديث تاريخ الدفع
Transactions=المعاملات Transactions=المعاملات
BankTransactionLine=Bank entry BankTransactionLine=قيد البنك
AllAccounts=جميع المصرفية / حسابات نقدية AllAccounts=All bank and cash accounts
BackToAccount=إلى حساب BackToAccount=عودة إلى الحساب
ShowAllAccounts=وتبين للجميع الحسابات ShowAllAccounts=عرض لجميع الحسابات
FutureTransaction=الصفقة في أجل المستقبل. أي وسيلة للتوفيق. FutureTransaction=المعاملة أجلة. لا يوجد فرصة للتسوية.
SelectChequeTransactionAndGenerate=حدد / تصفية الشيكات لتشمل في الاختيار استلام الودائع وانقر على &quot;إنشاء&quot;. SelectChequeTransactionAndGenerate=تحديد / تصفية الشيكات ليتم تضمينها في ايصال ايداع الشيكات وانقر على "إنشاء".
InputReceiptNumber=اختيار كشف حساب مصرفي ذات الصلة مع التوفيق. استخدام قيمة رقمية للفرز: YYYYMM أو YYYYMMDD InputReceiptNumber=اختيار كشف الحساب البنكي ذات الصلة مع التسوية. استخدام قيمة رقمية للفرز: شهر سنة أو يوم شهر سنة
EventualyAddCategory=في نهاية المطاف، حدد الفئة التي لتصنيف السجلات EventualyAddCategory=في نهاية المطاف، حدد الفئة التي لتصنيف السجلات
ToConciliate=To reconcile? ToConciliate=للتسوية؟
ThenCheckLinesAndConciliate=ثم، والتحقق من خطوط الحالية في بيان البنك وانقر ThenCheckLinesAndConciliate=ثم، تحقق من السطور الحالية في كشف الحساب البنكي وانقر
DefaultRIB=BAN الافتراضي DefaultRIB=BAN الافتراضي
AllRIB=جميع BAN AllRIB=جميع BAN
LabelRIB=BAN تسمية LabelRIB=بطاقة BAN
NoBANRecord=لا يوجد سجل BAN NoBANRecord=لا يوجد سجل BAN
DeleteARib=حذف سجل BAN DeleteARib=حذف سجل BAN
ConfirmDeleteRib=Are you sure you want to delete this BAN record? ConfirmDeleteRib=هل أنت متأكد أنك تريد حذف سجل BAN هذا ؟
RejectCheck=تحقق عاد RejectCheck=تم إرجاع الشيك
ConfirmRejectCheck=Are you sure you want to mark this check as rejected? ConfirmRejectCheck=هل انت متأكد انك تريد وضع علامة على هذا الشيك على أنه مرفوض؟
RejectCheckDate=تاريخ أعيد الاختيار RejectCheckDate=تاريخ إرجاع الشيك
CheckRejected=تحقق عاد CheckRejected=تم إرجاع الشيك
CheckRejectedAndInvoicesReopened=تحقق عاد والفواتير فتح CheckRejectedAndInvoicesReopened=تم ارجاع الشيك وإعادة فتح الفواتير
BankAccountModelModule=Document templates for bank accounts BankAccountModelModule=نماذج مستندات للحسابات البنكية
DocumentModelSepaMandate=Template of SEPA mandate. Usefull for european countries in EEC only. DocumentModelSepaMandate=نموذج تفويض سيبا. مفيدة للبلدان الأوروبية في السوق الأوروبية المشتركة فقط.
DocumentModelBan=Template to print a page with BAN information. DocumentModelBan=نموذج لطباعة صفحة تحتوي على معلومات BAN .
NewVariousPayment=New miscellaneous payments NewVariousPayment=مدفوعات متنوعة جديدة
VariousPayment=Miscellaneous payments VariousPayment=مدفوعات متنوعة
VariousPayments=Miscellaneous payments VariousPayments=مدفوعات متنوعة
ShowVariousPayment=Show miscellaneous payments ShowVariousPayment=عرض الدفعات المتنوعة
AddVariousPayment=Add miscellaneous payments AddVariousPayment=إضافة دفعات متنوعة
YourSEPAMandate=Your SEPA mandate SEPAMandate=SEPA mandate
FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Thanks to return it signed (scan of the signed document) or sent it by mail to YourSEPAMandate=تفويض سيبا الخاص بك
FindYourSEPAMandate=هذا هو تفويض سيبا الخاصة بك لتخويل شركتنا لتقديم أمر الخصم المباشر إلى البنك الذي تتعامل معه. شكرا للعودة وقعت (فحص الوثيقة الموقعة) أو إرسالها عن طريق البريد إلى

View File

@ -110,8 +110,8 @@ SendRemindByMail=إرسال تذكرة عن طريق البريد الإلكتر
DoPayment=Enter payment DoPayment=Enter payment
DoPaymentBack=Enter refund DoPaymentBack=Enter refund
ConvertToReduc=Mark as credit available ConvertToReduc=Mark as credit available
ConvertExcessReceivedToReduc=Convert excess received into future discount ConvertExcessReceivedToReduc=Convert excess received into available credit
ConvertExcessPaidToReduc=Convert excess paid into future discount ConvertExcessPaidToReduc=Convert excess paid into available discount
EnterPaymentReceivedFromCustomer=دخول الدفع الواردة من العملاء EnterPaymentReceivedFromCustomer=دخول الدفع الواردة من العملاء
EnterPaymentDueToCustomer=من المقرر أن يسدد العميل EnterPaymentDueToCustomer=من المقرر أن يسدد العميل
DisabledBecauseRemainderToPayIsZero=تعطيل بسبب المتبقية غير المدفوعة صفر DisabledBecauseRemainderToPayIsZero=تعطيل بسبب المتبقية غير المدفوعة صفر
@ -282,6 +282,7 @@ RelativeDiscount=الخصم النسبي
GlobalDiscount=خصم العالمية GlobalDiscount=خصم العالمية
CreditNote=علما الائتمان CreditNote=علما الائتمان
CreditNotes=ويلاحظ الائتمان CreditNotes=ويلاحظ الائتمان
CreditNotesOrExcessReceived=Credit notes or excess received
Deposit=Down payment Deposit=Down payment
Deposits=Down payments Deposits=Down payments
DiscountFromCreditNote=خصم من دائن %s DiscountFromCreditNote=خصم من دائن %s
@ -393,6 +394,7 @@ PaymentConditionShort14DENDMONTH=14 days of month-end
PaymentCondition14DENDMONTH=Within 14 days following the end of the month PaymentCondition14DENDMONTH=Within 14 days following the end of the month
FixAmount=كمية الإصلاح FixAmount=كمية الإصلاح
VarAmount=مقدار متغير (٪٪ TOT). VarAmount=مقدار متغير (٪٪ TOT).
VarAmountOneLine=Variable amount (%% tot.) - 1 line with label '%s'
# PaymentType # PaymentType
PaymentTypeVIR=حوالة مصرفية PaymentTypeVIR=حوالة مصرفية
PaymentTypeShortVIR=حوالة مصرفية PaymentTypeShortVIR=حوالة مصرفية

View File

@ -19,7 +19,8 @@ Income=الدخل
Outcome=نتائج Outcome=نتائج
MenuReportInOut=دخل / نتائج MenuReportInOut=دخل / نتائج
ReportInOut=Balance of income and expenses ReportInOut=Balance of income and expenses
ReportTurnover=دوران ReportTurnover=Turnover invoiced
ReportTurnoverCollected=Turnover collected
PaymentsNotLinkedToInvoice=المدفوعات ليست مرتبطة بأي الفاتورة ، وذلك ليس مرتبطا بأي طرف ثالث PaymentsNotLinkedToInvoice=المدفوعات ليست مرتبطة بأي الفاتورة ، وذلك ليس مرتبطا بأي طرف ثالث
PaymentsNotLinkedToUser=المدفوعات ليست مرتبطة بأي مستخدم PaymentsNotLinkedToUser=المدفوعات ليست مرتبطة بأي مستخدم
Profit=الأرباح Profit=الأرباح
@ -77,7 +78,7 @@ MenuNewSocialContribution=الضريبة الاجتماعية / مالية جد
NewSocialContribution=الضريبة الاجتماعية / مالية جديدة NewSocialContribution=الضريبة الاجتماعية / مالية جديدة
AddSocialContribution=Add social/fiscal tax AddSocialContribution=Add social/fiscal tax
ContributionsToPay=الضرائب الاجتماعية / المالية لدفع ContributionsToPay=الضرائب الاجتماعية / المالية لدفع
AccountancyTreasuryArea=المحاسبة / الخزانة المنطقة AccountancyTreasuryArea=Billing and payment area
NewPayment=دفع جديدة NewPayment=دفع جديدة
Payments=المدفوعات Payments=المدفوعات
PaymentCustomerInvoice=الزبون تسديد الفاتورة PaymentCustomerInvoice=الزبون تسديد الفاتورة
@ -105,6 +106,7 @@ VATPayment=Sales tax payment
VATPayments=Sales tax payments VATPayments=Sales tax payments
VATRefund=Sales tax refund VATRefund=Sales tax refund
NewVATPayment=New sales tax payment NewVATPayment=New sales tax payment
NewLocalTaxPayment=New tax %s payment
Refund=رد Refund=رد
SocialContributionsPayments=الاجتماعية المدفوعات / الضرائب المالية SocialContributionsPayments=الاجتماعية المدفوعات / الضرائب المالية
ShowVatPayment=وتظهر دفع ضريبة القيمة المضافة ShowVatPayment=وتظهر دفع ضريبة القيمة المضافة
@ -116,8 +118,9 @@ CustomerAccountancyCodeShort=الزبون. حساب. رمز
SupplierAccountancyCodeShort=سوب. حساب. رمز SupplierAccountancyCodeShort=سوب. حساب. رمز
AccountNumber=رقم الحساب AccountNumber=رقم الحساب
NewAccountingAccount=حساب جديد NewAccountingAccount=حساب جديد
SalesTurnover=مبيعات Turnover=Turnover invoiced
SalesTurnoverMinimum=الحد الأدنى حجم مبيعات TurnoverCollected=Turnover collected
SalesTurnoverMinimum=Minimum turnover
ByExpenseIncome=By expenses & incomes ByExpenseIncome=By expenses & incomes
ByThirdParties=بو أطراف ثالثة ByThirdParties=بو أطراف ثالثة
ByUserAuthorOfInvoice=فاتورة من قبل المؤلف ByUserAuthorOfInvoice=فاتورة من قبل المؤلف
@ -137,8 +140,8 @@ ConfirmDeleteSocialContribution=هل أنت متأكد أنك تريد حذف /
ExportDataset_tax_1=الضرائب والمدفوعات الاجتماعية والمالية ExportDataset_tax_1=الضرائب والمدفوعات الاجتماعية والمالية
CalcModeVATDebt=<b>الوضع٪ SVAT بشأن المحاسبة الالتزام٪ الصورة.</b> CalcModeVATDebt=<b>الوضع٪ SVAT بشأن المحاسبة الالتزام٪ الصورة.</b>
CalcModeVATEngagement=وضع <b>SVAT٪ على مداخيل مصاريف٪ الصورة.</b> CalcModeVATEngagement=وضع <b>SVAT٪ على مداخيل مصاريف٪ الصورة.</b>
CalcModeDebt=<b>وقال٪</b> وضع <b>sClaims-الديون٪ الصورة</b> <b>المحاسبة الالتزام.</b> CalcModeDebt=Analysis of known recorded invoices even if they are not yet accounted in ledger.
CalcModeEngagement=وقال <b>واسطة٪ sIncomes-المصروفات٪ الصورة</b> <b>المحاسبة النقدية</b> CalcModeEngagement=Analysis of known recorded payments, even if they are not yet accounted in Ledger.
CalcModeBookkeeping=Analysis of <b>data journalized in Bookkeeping Ledger table</b> CalcModeBookkeeping=Analysis of <b>data journalized in Bookkeeping Ledger table</b>
CalcModeLT1= <b>الوضع٪ زارة العلاقات الخارجية على فواتير العملاء - فواتير الموردين٪ الصورة</b> CalcModeLT1= <b>الوضع٪ زارة العلاقات الخارجية على فواتير العملاء - فواتير الموردين٪ الصورة</b>
CalcModeLT1Debt=<b>الوضع٪ زارة العلاقات الخارجية على فواتير العملاء٪ الصورة</b> CalcModeLT1Debt=<b>الوضع٪ زارة العلاقات الخارجية على فواتير العملاء٪ الصورة</b>
@ -151,9 +154,9 @@ AnnualSummaryInputOutputMode=ميزان الإيرادات والمصروفات
AnnualByCompanies=Balance of income and expenses, by predefined groups of account AnnualByCompanies=Balance of income and expenses, by predefined groups of account
AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>. AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>.
AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode <b>%sIncomes-Expenses%s</b> said <b>cash accounting</b>. AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode <b>%sIncomes-Expenses%s</b> said <b>cash accounting</b>.
SeeReportInInputOutputMode=انظر التقرير <b>sIncomes ٪</b> بين <b>المصروفات ٪ ق</b> قال <b>المحاسبة النقدية</b> لحساب المدفوعات الفعلية SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on actual payments made even if they are not yet accounted in Ledger.
SeeReportInDueDebtMode=انظر التقرير <b>sClaims ٪</b> بين <b>ديونها ٪ ق الالتزام والمحاسبة</b> وقال لحساب فواتير SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger.
SeeReportInBookkeepingMode=See report <b>%sBookeeping%s</b> for a calculation on <b>bookkeeping table analysis</b> SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b>
RulesAmountWithTaxIncluded=- المبالغ المبينة لمع جميع الضرائب المدرجة RulesAmountWithTaxIncluded=- المبالغ المبينة لمع جميع الضرائب المدرجة
RulesResultDue=- وتتضمن الفواتير غير المسددة، والنفقات، ضريبة القيمة المضافة، والتبرعات سواء كانت بأجر أو لا. هو أيضا يتضمن الرواتب المدفوعة. <br> - وهو يستند إلى تاريخ المصادقة على الفواتير وضريبة القيمة المضافة وعلى الموعد المحدد للنفقات. لرواتب محددة مع وحدة الراتب، يتم استخدام قيمة تاريخ الدفع. RulesResultDue=- وتتضمن الفواتير غير المسددة، والنفقات، ضريبة القيمة المضافة، والتبرعات سواء كانت بأجر أو لا. هو أيضا يتضمن الرواتب المدفوعة. <br> - وهو يستند إلى تاريخ المصادقة على الفواتير وضريبة القيمة المضافة وعلى الموعد المحدد للنفقات. لرواتب محددة مع وحدة الراتب، يتم استخدام قيمة تاريخ الدفع.
RulesResultInOut=- ويشمل المدفوعات الحقيقية المحرز في الفواتير والمصاريف والضريبة على القيمة المضافة والرواتب. <br> - لأنه يقوم على مواعيد دفع الفواتير والمصاريف والضريبة على القيمة المضافة والرواتب. تاريخ التبرع للتبرع. RulesResultInOut=- ويشمل المدفوعات الحقيقية المحرز في الفواتير والمصاريف والضريبة على القيمة المضافة والرواتب. <br> - لأنه يقوم على مواعيد دفع الفواتير والمصاريف والضريبة على القيمة المضافة والرواتب. تاريخ التبرع للتبرع.
@ -218,8 +221,8 @@ Mode1=طريقة 1
Mode2=طريقة 2 Mode2=طريقة 2
CalculationRuleDesc=لحساب مجموع الضريبة على القيمة المضافة، هناك طريقتين: <br> طريقة 1 والتقريب ضريبة القيمة المضافة في كل سطر، ثم ملخصا لها. <br> طريقة 2 يتم تلخيص كل ضريبة القيمة المضافة في كل سطر، ثم التقريب النتيجة. <br> النتيجة النهائية قد تختلف من بضعة سنتات. الوضع الافتراضي هو وضع <b>الصورة٪.</b> CalculationRuleDesc=لحساب مجموع الضريبة على القيمة المضافة، هناك طريقتين: <br> طريقة 1 والتقريب ضريبة القيمة المضافة في كل سطر، ثم ملخصا لها. <br> طريقة 2 يتم تلخيص كل ضريبة القيمة المضافة في كل سطر، ثم التقريب النتيجة. <br> النتيجة النهائية قد تختلف من بضعة سنتات. الوضع الافتراضي هو وضع <b>الصورة٪.</b>
CalculationRuleDescSupplier=وفقا لالمورد، واختيار الطريقة المناسبة لتطبيق الحكم حساب نفسها والحصول على نفس النتيجة المتوقعة من المورد الخاص بك. CalculationRuleDescSupplier=وفقا لالمورد، واختيار الطريقة المناسبة لتطبيق الحكم حساب نفسها والحصول على نفس النتيجة المتوقعة من المورد الخاص بك.
TurnoverPerProductInCommitmentAccountingNotRelevant=The Turnover report per product, when using a <b>cash accounting</b> mode is not relevant. This report is only available when using <b>commitment accounting</b> mode (see setup of accountancy module). TurnoverPerProductInCommitmentAccountingNotRelevant=The report of Turnover collected per product is not available. This report is only available for turnover invoiced.
TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=The Turnover report per sale tax rate, when using a <b>cash accounting</b> mode is not relevant. This report is only available when using <b>commitment accounting</b> mode (see setup of accountancy module). TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=The report of Turnover collected per sale tax rate is not available. This report is only available for turnover invoiced.
CalculationMode=وضع الحساب CalculationMode=وضع الحساب
AccountancyJournal=Accounting code journal AccountancyJournal=Accounting code journal
ACCOUNTING_VAT_SOLD_ACCOUNT=Accounting account by default for VAT on sales (used if not defined on VAT dictionary setup) ACCOUNTING_VAT_SOLD_ACCOUNT=Accounting account by default for VAT on sales (used if not defined on VAT dictionary setup)
@ -251,5 +254,6 @@ VATDue=Sale tax claimed
ClaimedForThisPeriod=Claimed for the period ClaimedForThisPeriod=Claimed for the period
PaidDuringThisPeriod=Paid during this period PaidDuringThisPeriod=Paid during this period
ByVatRate=By sale tax rate ByVatRate=By sale tax rate
TurnoverbyVatrate=Turnover by sale tax rate TurnoverbyVatrate=Turnover invoiced by sale tax rate
TurnoverCollectedbyVatrate=Turnover collected by sale tax rate
PurchasebyVatrate=Purchase by sale tax rate PurchasebyVatrate=Purchase by sale tax rate

View File

@ -204,3 +204,7 @@ MigrationResetBlockedLog=Reset module BlockedLog for v7 algorithm
ShowNotAvailableOptions=عرض خيارات غير متوفرة ShowNotAvailableOptions=عرض خيارات غير متوفرة
HideNotAvailableOptions=إخفاء خيارات غير متوفرة HideNotAvailableOptions=إخفاء خيارات غير متوفرة
ErrorFoundDuringMigration=Error were reported during migration process so next step is not available. To ignore errors, you can <a href="%s">click here</a>, but application or some features may not work correctly until fixed. ErrorFoundDuringMigration=Error were reported during migration process so next step is not available. To ignore errors, you can <a href="%s">click here</a>, but application or some features may not work correctly until fixed.
YouTryInstallDisabledByDirLock=The application try to sefl upgrade, but install/upgrade pages have been disabled for security reason (directory renamed with .lock suffix).<br>
YouTryInstallDisabledByFileLock=The application try to sefl upgrade, but install/upgrade pages pages have been disabled for security reason (by lock file <strong>install.lock</strong> into dolibarr documents directory).<br>
ClickHereToGoToApp=Click here to go to your application
ClickOnLinkOrRemoveManualy=Click on following link and if you always reach this page, you must remove the file install.lock into documents directory manually

View File

@ -507,6 +507,7 @@ NoneF=لا شيء
NoneOrSeveral=None or several NoneOrSeveral=None or several
Late=متأخر Late=متأخر
LateDesc=Delay to define if a record is late or not depends on your setup. Ask your admin to change delay from menu Home - Setup - Alerts. LateDesc=Delay to define if a record is late or not depends on your setup. Ask your admin to change delay from menu Home - Setup - Alerts.
NoItemLate=No late item
Photo=صورة Photo=صورة
Photos=الصور Photos=الصور
AddPhoto=إضافة الصورة AddPhoto=إضافة الصورة
@ -945,3 +946,5 @@ KeyboardShortcut=Keyboard shortcut
AssignedTo=مخصص ل AssignedTo=مخصص ل
Deletedraft=Delete draft Deletedraft=Delete draft
ConfirmMassDraftDeletion=Draft Bulk delete confirmation ConfirmMassDraftDeletion=Draft Bulk delete confirmation
FileSharedViaALink=File shared via a link

View File

@ -74,6 +74,7 @@ NoWidget=No widget
GoToApiExplorer=Go to API explorer GoToApiExplorer=Go to API explorer
ListOfMenusEntries=List of menu entries ListOfMenusEntries=List of menu entries
ListOfPermissionsDefined=List of defined permissions ListOfPermissionsDefined=List of defined permissions
SeeExamples=See examples here
EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION)
VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only. Using a negative value means field is not shown by default on list but can be selected for viewing) VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only. Using a negative value means field is not shown by default on list but can be selected for viewing)
IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0) IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0)
@ -95,3 +96,6 @@ DropTableIfEmpty=(Delete table if empty)
TableDoesNotExists=The table %s does not exists TableDoesNotExists=The table %s does not exists
TableDropped=Table %s deleted TableDropped=Table %s deleted
InitStructureFromExistingTable=Build the structure array string of an existing table InitStructureFromExistingTable=Build the structure array string of an existing table
UseAboutPage=Disallow the about page
UseDocFolder=Disallow the documentation folder
UseSpecificReadme=Use a specific ReadMe

Some files were not shown because too many files have changed in this diff Show More