PageRenderTime 55ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/support/install/index.php

https://gitlab.com/alexprowars/bitrix
PHP | 270 lines | 226 code | 42 blank | 2 comment | 33 complexity | 575d6a3b9227be280b1f7d35bdaf015f MD5 | raw file
  1. <?php
  2. IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
  3. IncludeModuleLangFile(__FILE__);
  4. if(class_exists("support")) return;
  5. class support extends CModule
  6. {
  7. var $MODULE_ID = "support";
  8. var $MODULE_VERSION;
  9. var $MODULE_VERSION_DATE;
  10. var $MODULE_NAME;
  11. var $MODULE_DESCRIPTION;
  12. var $MODULE_CSS;
  13. var $MODULE_GROUP_RIGHTS = "Y";
  14. var $SHOW_SUPER_ADMIN_GROUP_RIGHTS = "Y";
  15. public function __construct()
  16. {
  17. $arModuleVersion = array();
  18. include(__DIR__.'/version.php');
  19. if (is_array($arModuleVersion) && array_key_exists("VERSION", $arModuleVersion))
  20. {
  21. $this->MODULE_VERSION = $arModuleVersion["VERSION"];
  22. $this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
  23. }
  24. else
  25. {
  26. $this->MODULE_VERSION = SUPPORT_VERSION;
  27. $this->MODULE_VERSION_DATE = SUPPORT_VERSION_DATE;
  28. }
  29. $this->MODULE_NAME = GetMessage("SUP_MODULE_NAME");
  30. $this->MODULE_DESCRIPTION = GetMessage("SUP_MODULE_DESCRIPTION");
  31. $this->MODULE_CSS = "/bitrix/modules/support/support_admin.css";
  32. }
  33. function InstallDB($arParams = array())
  34. {
  35. global $DB, $APPLICATION;
  36. $EMPTY = false;
  37. $errors = false;
  38. if (!$DB->Query("SELECT 'x' FROM b_ticket", true))
  39. {
  40. $EMPTY = true;
  41. }
  42. if ($EMPTY)
  43. {
  44. $errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/db/'.mb_strtolower($DB->type).'/install.sql');
  45. }
  46. if (is_array($errors))
  47. {
  48. $APPLICATION->ThrowException(implode(' ', $errors));
  49. return false;
  50. }
  51. RegisterModule('support');
  52. RegisterModuleDependences('mail', 'OnGetFilterList', 'support', 'CSupportEMail', 'OnGetFilterList');
  53. CAgent::RemoveModuleAgents( "support" );
  54. CAgent::AddAgent( "CTicketReminder::AgentFunction();", "support", "N", 60 );
  55. CAgent::AddAgent('CTicket::CleanUpOnline();', 'support', 'N');
  56. CAgent::AddAgent('CTicket::AutoClose();', 'support', 'N');
  57. if ($EMPTY)
  58. {
  59. if ($arParams['admin'] == 'Y')
  60. {
  61. $this->InstallEvents();
  62. }
  63. if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/support/install/demodata.php'))
  64. {
  65. $DD_ERROR = false;
  66. include($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/support/install/demodata.php');
  67. if ($DD_ERROR)
  68. {
  69. return false;
  70. }
  71. }
  72. }
  73. // new search
  74. if (CModule::IncludeModule("search"))
  75. {
  76. COption::SetOptionString('support', 'SEARCH_VERSION', '12.0.3');
  77. }
  78. return true;
  79. }
  80. function UnInstallDB($arParams = array())
  81. {
  82. global $DB, $APPLICATION;
  83. $errors = false;
  84. if(array_key_exists("savedata", $arParams) && $arParams["savedata"] != "Y")
  85. {
  86. $errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/db/'.mb_strtolower($DB->type).'/uninstall.sql');
  87. if (!is_array($errors))
  88. {
  89. @set_time_limit(600);
  90. COption::RemoveOption('support');
  91. $db_res = $DB->Query("SELECT ID FROM b_file WHERE MODULE_ID = 'support'");
  92. while($arRes = $db_res->Fetch())
  93. {
  94. CFile::Delete($arRes['ID']);
  95. }
  96. if ($arParams['admin'] == 'Y')
  97. {
  98. $this->UnInstallEvents();
  99. }
  100. }
  101. }
  102. if (is_array($errors))
  103. {
  104. $APPLICATION->ThrowException(implode(' ', $errors));
  105. return false;
  106. }
  107. CAgent::RemoveModuleAgents('support');
  108. UnRegisterModuleDependences('mail', 'OnGetFilterList', 'support', 'CSupportEMail', 'OnGetFilterList');
  109. UnRegisterModule('support');
  110. return true;
  111. }
  112. function InstallEvents()
  113. {
  114. if (file_exists($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/events/set_events.php'))
  115. {
  116. $SE_ERROR = false;
  117. include($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/events/set_events.php');
  118. if ($SE_ERROR)
  119. {
  120. return false;
  121. }
  122. }
  123. return true;
  124. }
  125. function UnInstallEvents()
  126. {
  127. if (file_exists($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/events/del_events.php'))
  128. {
  129. include($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/events/del_events.php');
  130. }
  131. return true;
  132. }
  133. function InstallFiles($arParams = array())
  134. {
  135. if($_ENV["COMPUTERNAME"]!='BX')
  136. {
  137. CopyDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/admin', $_SERVER['DOCUMENT_ROOT'].'/bitrix/admin');
  138. CopyDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/images', $_SERVER['DOCUMENT_ROOT'].'/bitrix/images/support', true, true);
  139. CopyDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/upload/support/not_image', $_SERVER['DOCUMENT_ROOT'].'/'.COption::GetOptionString('main', 'upload_dir', 'upload').'/support/not_image');
  140. CopyDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/tools', $_SERVER['DOCUMENT_ROOT'].'/bitrix/tools');
  141. CopyDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/components', $_SERVER['DOCUMENT_ROOT'].'/bitrix/components', true, true);
  142. //Theme
  143. CopyDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/themes', $_SERVER['DOCUMENT_ROOT'].'/bitrix/themes', true, true);
  144. }
  145. if ($arParams['install_public'] == 'Y' && !empty($arParams['public_dir']))
  146. {
  147. $bReWriteAdditionalFiles = $arParams['public_rewrite'] == 'Y';
  148. $rsSite = CSite::GetList();
  149. while ($arSite = $rsSite->Fetch())
  150. {
  151. CopyDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/public/all/', $arSite['ABS_DOC_ROOT'].$arSite['DIR'].$arParams['public_dir'], $bReWriteAdditionalFiles, true);
  152. }
  153. }
  154. return true;
  155. }
  156. function UnInstallFiles($arParams = array())
  157. {
  158. DeleteDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/admin/', $_SERVER['DOCUMENT_ROOT'].'/bitrix/admin');
  159. DeleteDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/themes/.default/', $_SERVER['DOCUMENT_ROOT'].'/bitrix/themes/.default');//css
  160. DeleteDirFilesEx('/bitrix/themes/.default/icons/support/');//icons
  161. DeleteDirFilesEx('/bitrix/images/support/');//images
  162. DeleteDirFiles($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/support/install/tools/', $_SERVER['DOCUMENT_ROOT'].'/bitrix/tools/');
  163. return true;
  164. }
  165. function DoInstall()
  166. {
  167. global $DB, $APPLICATION, $step;
  168. if(!CBXFeatures::IsFeatureEditable("Support"))
  169. {
  170. $APPLICATION->ThrowException(GetMessage("SUPPORT_ERROR_EDITABLE"));
  171. $APPLICATION->IncludeAdminFile(GetMessage("SUP_INSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/install/step2.php");
  172. }
  173. else
  174. {
  175. $step = intval($step);
  176. if($step<2)
  177. {
  178. $APPLICATION->IncludeAdminFile(GetMessage("SUP_INSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/install/step1.php");
  179. }
  180. elseif($step==2)
  181. {
  182. $APPLICATION->ResetException();
  183. if ($this->InstallDB(array('admin' => 'Y')))
  184. {
  185. $this->InstallFiles(
  186. array(
  187. 'install_public' => $_REQUEST['install_public'],
  188. 'public_dir' => $_REQUEST['public_dir'],
  189. 'public_rewrite' => $_REQUEST['public_rewrite'],
  190. )
  191. );
  192. }
  193. CBXFeatures::SetFeatureEnabled("Support", true);
  194. $APPLICATION->IncludeAdminFile(GetMessage("SUP_INSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/install/step2.php");
  195. }
  196. }
  197. }
  198. function DoUninstall()
  199. {
  200. global $DB, $APPLICATION, $step;
  201. $step = intval($step);
  202. if($step<2)
  203. $APPLICATION->IncludeAdminFile(GetMessage("SUP_UNINSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/install/unstep1.php");
  204. elseif($step==2)
  205. {
  206. $APPLICATION->ResetException();
  207. if ($this->UnInstallDB(array('admin' => 'Y', 'savedata' => $_REQUEST['savedata'])))
  208. {
  209. $this->UnInstallFiles();
  210. }
  211. CBXFeatures::SetFeatureEnabled("Support", false);
  212. $APPLICATION->IncludeAdminFile(GetMessage("SUP_UNINSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/install/unstep2.php");
  213. }
  214. }
  215. function GetModuleRightList()
  216. {
  217. $arr = array(
  218. "reference_id" => array("D","R","T","V","W"),
  219. "reference" => array(
  220. "[D] ".GetMessage("SUP_DENIED"),
  221. "[R] ".GetMessage("SUP_CREATE_TICKET"),
  222. "[T] ".GetMessage("SUP_SUPPORT_STAFF_MEMBER"),
  223. "[V] ".GetMessage("SUP_DEMO_ACCESS"),
  224. "[W] ".GetMessage("SUP_SUPPORT_ADMIN"))
  225. );
  226. return $arr;
  227. }
  228. }