modWorkflow.class.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. /* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@inodbox.com>
  3. * Copyright (C) 2010 Laurent Destailleur <eldy@users.sourceforge.net>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program. If not, see <https://www.gnu.org/licenses/>.
  17. */
  18. /**
  19. * \defgroup workflow Module workflow
  20. * \brief Workflow management
  21. * \file htdocs/core/modules/modWorkflow.class.php
  22. * \ingroup workflow
  23. * \brief Description and activation file for the module Workflow
  24. */
  25. include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
  26. /**
  27. * Class to describe and enable module Workflow
  28. */
  29. class modWorkflow extends DolibarrModules
  30. {
  31. /**
  32. * Constructor. Define names, constants, directories, boxes, permissions
  33. *
  34. * @param DoliDB $db Database handler
  35. */
  36. public function __construct($db)
  37. {
  38. $this->db = $db;
  39. // Id for module (must be unique).
  40. // Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id).
  41. $this->numero = 6000;
  42. // Key text used to identify module (for permissions, menus, etc...)
  43. $this->rights_class = 'workflow';
  44. $this->family = "technic";
  45. // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
  46. $this->name = preg_replace('/^mod/i', '', get_class($this));
  47. // Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
  48. $this->description = "Inter-modules workflow management";
  49. // Possible values for version are: 'development', 'experimental', 'dolibarr' or version
  50. $this->version = 'dolibarr';
  51. // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase)
  52. $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
  53. // Name of png file (without png) used for this module.
  54. // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue'
  55. // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module'
  56. $this->picto = 'technic';
  57. // Data directories to create when module is enabled
  58. $this->dirs = array("/workflow/temp");
  59. // Config pages. Put here list of php page names stored in admmin directory used to setup module.
  60. $this->config_page_url = array('workflow.php');
  61. // Dependencies
  62. $this->hidden = false; // A condition to hide module
  63. $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
  64. $this->requiredby = array(); // List of module ids to disable if this one is disabled
  65. $this->conflictwith = array(); // List of module class names as string this module is in conflict with
  66. $this->phpmin = array(7, 0); // Minimum version of PHP required by module
  67. $this->need_dolibarr_version = array(2, 8); // Minimum version of Dolibarr required by module
  68. $this->langfiles = array("@workflow");
  69. // Constants
  70. // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
  71. // Example: $this->const=array(1 => array('MYMODULE_MYNEWCONST1', 'chaine', 'myvalue', 'This is a constant to add', 1),
  72. // 2 => array('MYMODULE_MYNEWCONST2', 'chaine', 'myvalue', 'This is another constant to add', 0, 'current', 1)
  73. // );
  74. $this->const = array(
  75. //0=>array('WORKFLOW_PROPAL_AUTOCREATE_ORDER', 'chaine', '1', 'WORKFLOW_PROPAL_AUTOCREATE_ORDER', 0, 'current', 0),
  76. //0=>array('WORKFLOW_ORDER_AUTOCREATE_INVOICE', 'chaine', '1', 'WORKFLOW_ORDER_AUTOCREATE_INVOICE', 0, 'current', 0),
  77. 0=>array('WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL', 'chaine', '1', 'WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL', 0, 'current', 0),
  78. 1=>array('WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL', 'chaine', '1', 'WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL', 0, 'current', 0),
  79. 2=>array('WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING', 'chaine', '1', 'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING', 0, 'current', 0),
  80. 3=>array('WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED', 'chaine', '1', 'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED', 0, 'current', 0),
  81. 4=>array('WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER', 'chaine', '1', 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER', 0, 'current', 0),
  82. 5=>array('WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL', 'chaine', '1', 'WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL', 0, 'current', 0),
  83. 6=>array('WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION', 'chaine', '1', 'WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION', 0, 'current', 0),
  84. 7=>array('WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED', 'chaine', '1', 'WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED', 0, 'current', 0),
  85. 8=>array('WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER', 'chaine', '1', 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER', 0, 'current', 0),
  86. 10=>array('WORKFLOW_TICKET_LINK_CONTRACT', 'chaine', '0', 'Automatically link a ticket to available contracts', 0, 'current', 0),
  87. 11=>array('WORKFLOW_TICKET_USE_PARENT_COMPANY_CONTRACTS', 'chaine', '0', 'Search among parent companies contracts when automatically linking a ticket to available contracts', 0, 'current', 0),
  88. 12=>array('WORKFLOW_TICKET_CREATE_INTERVENTION', 'chaine', '0', 'WORKFLOW_TICKET_CREATE_INTERVENTION', 0, 'current', 0)
  89. );
  90. // Boxes
  91. $this->boxes = array();
  92. // Permissions
  93. $this->rights = array();
  94. $r = 0;
  95. /*
  96. $r++;
  97. $this->rights[$r][0] = 6001; // id de la permission
  98. $this->rights[$r][1] = "Lire les workflow"; // libelle de la permission
  99. $this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
  100. $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
  101. $this->rights[$r][4] = 'read';
  102. */
  103. // Main menu entries
  104. $this->menus = array(); // List of menus to add
  105. $r = 0;
  106. /*
  107. $this->menu[$r]=array('fk_menu'=>0,
  108. 'type'=>'top',
  109. 'titre'=>'Workflow',
  110. 'mainmenu'=>'workflow',
  111. 'url'=>'/workflow/index.php',
  112. 'langs'=>'@workflow',
  113. 'position'=>100,
  114. 'perms'=>'$user->rights->workflow->read',
  115. 'enabled'=>'$conf->workflow->enabled',
  116. 'target'=>'',
  117. 'user'=>0);
  118. $r++;
  119. $this->menu[$r]=array( 'fk_menu'=>'r=0',
  120. 'type'=>'left',
  121. 'titre'=>'Workflow',
  122. 'mainmenu'=>'workflow',
  123. 'url'=>'/workflow/index.php',
  124. 'langs'=>'@workflow',
  125. 'position'=>101,
  126. 'enabled'=>1,
  127. 'perms'=>'$user->rights->workflow->read',
  128. 'target'=>'',
  129. 'user'=>0);
  130. $r++;
  131. */
  132. }
  133. /**
  134. * Function called when module is enabled.
  135. * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
  136. * It also creates data directories
  137. *
  138. * @param string $options Options when enabling module ('', 'noboxes')
  139. * @return int 1 if OK, 0 if KO
  140. */
  141. public function init($options = '')
  142. {
  143. // Permissions
  144. $this->remove($options);
  145. $sql = array();
  146. return $this->_init($sql, $options);
  147. }
  148. }