PageRenderTime 22ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/lists/install/index.php

https://gitlab.com/alexprowars/bitrix
PHP | 360 lines | 314 code | 41 blank | 5 comment | 38 complexity | bac87397544239758299494e5415aa38 MD5 | raw file
  1. <?
  2. IncludeModuleLangFile(__FILE__);
  3. if(class_exists("lists")) return;
  4. Class lists extends CModule
  5. {
  6. var $MODULE_ID = "lists";
  7. var $MODULE_VERSION;
  8. var $MODULE_VERSION_DATE;
  9. var $MODULE_NAME;
  10. var $MODULE_DESCRIPTION;
  11. var $MODULE_CSS;
  12. var $MODULE_GROUP_RIGHTS = "N";
  13. var $errors = false;
  14. public function __construct()
  15. {
  16. $arModuleVersion = array();
  17. include(__DIR__.'/version.php');
  18. $this->MODULE_VERSION = $arModuleVersion["VERSION"];
  19. $this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
  20. $this->MODULE_NAME = GetMessage("LISTS_MODULE_NAME");
  21. $this->MODULE_DESCRIPTION = GetMessage("LISTS_MODULE_DESCRIPTION");
  22. }
  23. function InstallDB($arParams = array())
  24. {
  25. /** @global CMain $APPLICATION */
  26. global $APPLICATION;
  27. /** @global CDatabase $DB */
  28. global $DB;
  29. $this->errors = false;
  30. // Database tables creation
  31. if(!$DB->Query("SELECT 'x' FROM b_lists_permission WHERE 1=0", true))
  32. {
  33. $this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/db/mysql/install.sql");
  34. }
  35. if($this->errors !== false)
  36. {
  37. $APPLICATION->ThrowException(implode("<br>", $this->errors));
  38. return false;
  39. }
  40. else
  41. {
  42. RegisterModule("lists");
  43. CModule::IncludeModule("lists");
  44. RegisterModuleDependences("iblock", "OnAfterIBlockUpdate", "lists", "CLists", "OnAfterIBlockUpdate");
  45. RegisterModuleDependences("iblock", "OnIBlockDelete", "lists", "CLists", "OnIBlockDelete");
  46. RegisterModuleDependences("iblock", "OnAfterIBlockDelete", "lists", "CLists", "OnAfterIBlockDelete");
  47. RegisterModuleDependences("iblock", "CIBlockDocument_OnGetDocumentAdminPage", "lists", "CList", "OnGetDocumentAdminPage");
  48. RegisterModuleDependences("intranet", "OnSharepointCreateProperty", "lists", "CLists", "OnSharepointCreateProperty");
  49. RegisterModuleDependences("intranet", "OnSharepointCheckAccess", "lists", "CLists", "OnSharepointCheckAccess");
  50. RegisterModuleDependences("perfmon", "OnGetTableSchema", "lists", "lists", "OnGetTableSchema");
  51. RegisterModuleDependences("search", "OnSearchGetURL", "lists", "CList", "OnSearchGetURL", 50);
  52. RegisterModuleDependences('socialnetwork', 'OnFillSocNetLogEvents', 'lists', 'CListsLiveFeed', 'onFillSocNetLogEvents');
  53. RegisterModuleDependences("socialnetwork", "OnFillSocNetAllowedSubscribeEntityTypes", "lists", "CListsLiveFeed", "onFillSocNetAllowedSubscribeEntityTypes");
  54. RegisterModuleDependences('socialnetwork', 'BeforeIndexSocNet', 'lists', 'CListsLiveFeed', 'BeforeIndexSocNet');
  55. RegisterModuleDependences('socialnetwork', 'OnAfterSonetLogEntryAddComment', 'lists', 'CListsLiveFeed', 'OnAfterSonetLogEntryAddComment');
  56. RegisterModuleDependences('socialnetwork', 'OnForumCommentIMNotify', 'lists', 'CListsLiveFeed', 'OnForumCommentIMNotify');
  57. RegisterModuleDependences("socialnetwork", "OnSendMentionGetEntityFields", "lists", "CListsLiveFeed", "OnSendMentionGetEntityFields");
  58. RegisterModuleDependences("socialnetwork", "OnSocNetGroupDelete", "lists", "CListsLiveFeed", "OnSocNetGroupDelete");
  59. RegisterModuleDependences('rest', 'onRestServiceBuildDescription', 'lists', '\Bitrix\Lists\Rest\RestService', 'onRestServiceBuildDescription');
  60. RegisterModuleDependences("iblock", "OnAfterIBlockElementDelete", "lists", "CLists", "OnAfterIBlockElementDelete");
  61. RegisterModuleDependences("iblock", "OnAfterIBlockPropertyAdd", "lists", "CLists", "OnAfterIBlockPropertyAdd");
  62. RegisterModuleDependences("iblock", "OnAfterIBlockPropertyUpdate", "lists", "CLists", "OnAfterIBlockPropertyUpdate");
  63. RegisterModuleDependences("iblock", "OnAfterIBlockPropertyDelete", "lists", "CLists", "OnAfterIBlockPropertyDelete");
  64. RegisterModuleDependences("iblock", "OnBeforeIBlockElementAdd", "lists", "CLists", "OnBeforeIBlockElementAdd");
  65. RegisterModuleDependences("iblock", "OnBeforeIBlockElementUpdate", "lists", "CLists", "OnBeforeIBlockElementUpdate");
  66. RegisterModuleDependences("main", "OnGetRatingContentOwner", "lists", "\\Bitrix\\Lists\\Integration\\Main\\RatingVote", "onGetRatingContentOwner");
  67. $eventManager = \Bitrix\Main\EventManager::getInstance();
  68. $eventManager->registerEventHandler('socialnetwork', 'onLogIndexGetContent', 'lists', '\Bitrix\Lists\Integration\Socialnetwork\Log', 'onIndexGetContent');
  69. if (isset($arParams["INSTALL_DEMO_DATA"]) && $arParams["INSTALL_DEMO_DATA"] == "Y")
  70. {
  71. $this->installDemoData();
  72. }
  73. return true;
  74. }
  75. }
  76. function installDemoData()
  77. {
  78. if(!CModule::IncludeModule("iblock"))
  79. return;
  80. $currentPermissions = CLists::GetPermission();
  81. unset($currentPermissions["bitrix_processes"]);
  82. unset($currentPermissions["lists"]);
  83. $socnet_iblock_type_id = COption::GetOptionString("lists", "socnet_iblock_type_id");
  84. $isSocnetInstalled = IsModuleInstalled('socialnetwork');
  85. $arTypes = array();
  86. if (empty($currentPermissions))
  87. {
  88. $arTypes[] = array(
  89. "ID" => "lists",
  90. "SECTIONS" => "Y",
  91. "IN_RSS" => "N",
  92. "SORT" => 80,
  93. "LANG" => array(),
  94. );
  95. $arTypes[] = array(
  96. "ID" => "bitrix_processes",
  97. "SECTIONS" => "Y",
  98. "IN_RSS" => "N",
  99. "SORT" => 90,
  100. "LANG" => array(),
  101. );
  102. }
  103. if ($isSocnetInstalled && $socnet_iblock_type_id == '')
  104. {
  105. $arTypes[] = array(
  106. "ID" => "lists_socnet",
  107. "SECTIONS" => "Y",
  108. "IN_RSS" => "N",
  109. "SORT" => 83,
  110. "LANG" => array(),
  111. );
  112. }
  113. $arLanguages = array();
  114. if (!empty($arTypes))
  115. {
  116. $rsLanguage = CLanguage::GetList();
  117. while ($arLanguage = $rsLanguage->Fetch())
  118. {
  119. $arLanguages[] = $arLanguage["LID"];
  120. }
  121. }
  122. foreach ($arTypes as $arType)
  123. {
  124. $dbType = CIBlockType::GetList(array(), array("=ID" => $arType["ID"]));
  125. if (!$dbType->Fetch())
  126. {
  127. foreach($arLanguages as $languageID)
  128. {
  129. IncludeModuleLangFile(__FILE__, $languageID);
  130. $code = mb_strtoupper($arType["ID"]);
  131. $arType["LANG"][$languageID]["NAME"] = GetMessage($code."_TYPE_NAME");
  132. $arType["LANG"][$languageID]["ELEMENT_NAME"] = GetMessage($code."_ELEMENT_NAME");
  133. if ($arType["SECTIONS"] == "Y")
  134. $arType["LANG"][$languageID]["SECTION_NAME"] = GetMessage($code."_SECTION_NAME");
  135. }
  136. $iblockType = new CIBlockType;
  137. $iblockType->Add($arType);
  138. }
  139. }
  140. if (empty($currentPermissions))
  141. {
  142. CLists::SetPermission('lists', array(1));
  143. CLists::SetPermission('bitrix_processes', array(1));
  144. }
  145. $defaultLang = "en";
  146. if(IsModuleInstalled("bitrix24"))
  147. {
  148. $gr = COption::GetOptionString("main", "~controller_group_name", "");
  149. if($gr != "")
  150. $defaultLang = mb_substr($gr, 0, 2);
  151. if($defaultLang == "ua")
  152. $defaultLang = "ru";
  153. }
  154. else
  155. {
  156. $defaultSiteId = CSite::GetDefSite();
  157. $siteObject = CSite::GetByID($defaultSiteId);
  158. $site = $siteObject->fetch();
  159. $defaultLang = $site ? $site['LANGUAGE_ID'] : "en";
  160. if($defaultLang == "ua")
  161. $defaultLang = "ru";
  162. }
  163. \Bitrix\Lists\Importer::installProcesses($defaultLang);
  164. \Bitrix\Main\Config\Option::set("lists", "livefeed_url", "/bizproc/processes/");
  165. if ($isSocnetInstalled && $socnet_iblock_type_id == '')
  166. {
  167. COption::SetOptionString("lists", "socnet_iblock_type_id", "lists_socnet");
  168. CLists::EnableSocnet(true);
  169. }
  170. }
  171. function UnInstallDB($arParams = array())
  172. {
  173. /** @global CMain $APPLICATION */
  174. global $APPLICATION;
  175. /** @global CDatabase $DB */
  176. global $DB;
  177. $this->errors = false;
  178. if(!array_key_exists("savedata", $arParams) || $arParams["savedata"] != "Y")
  179. {
  180. $this->errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/db/mysql/uninstall.sql");
  181. }
  182. UnRegisterModuleDependences("iblock", "OnAfterIBlockUpdate", "lists", "CLists", "OnAfterIBlockUpdate");
  183. UnRegisterModuleDependences("iblock", "OnIBlockDelete", "lists", "CLists", "OnIBlockDelete");
  184. UnRegisterModuleDependences("iblock", "OnAfterIBlockDelete", "lists", "CLists", "OnAfterIBlockDelete");
  185. UnRegisterModuleDependences("iblock", "CIBlockDocument_OnGetDocumentAdminPage", "lists", "CList", "OnGetDocumentAdminPage");
  186. UnRegisterModuleDependences("intranet", "OnSharepointCreateProperty", "lists", "CLists", "OnSharepointCreateProperty");
  187. UnRegisterModuleDependences("intranet", "OnSharepointCheckAccess", "lists", "CLists", "OnSharepointCheckAccess");
  188. UnRegisterModuleDependences("search", "OnSearchGetURL", "lists", "CList", "OnSearchGetURL");
  189. UnRegisterModuleDependences("perfmon", "OnGetTableSchema", "lists", "lists", "OnGetTableSchema");
  190. UnRegisterModuleDependences('socialnetwork', 'OnFillSocNetLogEvents', 'lists', 'CListsLiveFeed', 'onFillSocNetLogEvents');
  191. UnRegisterModuleDependences("socialnetwork", "OnFillSocNetAllowedSubscribeEntityTypes", "lists", "CListsLiveFeed", "onFillSocNetAllowedSubscribeEntityTypes");
  192. UnRegisterModuleDependences('socialnetwork', 'BeforeIndexSocNet', 'lists', 'CListsLiveFeed', 'BeforeIndexSocNet');
  193. UnRegisterModuleDependences('socialnetwork', 'OnAfterSonetLogEntryAddComment', 'lists', 'CListsLiveFeed', 'OnAfterSonetLogEntryAddComment');
  194. UnRegisterModuleDependences('socialnetwork', 'OnForumCommentIMNotify', 'lists', 'CListsLiveFeed', 'OnForumCommentIMNotify');
  195. UnRegisterModuleDependences("socialnetwork", "OnSendMentionGetEntityFields", "lists", "CListsLiveFeed", "OnSendMentionGetEntityFields");
  196. UnRegisterModuleDependences("socialnetwork", "OnSocNetGroupDelete", "lists", "CListsLiveFeed", "OnSocNetGroupDelete");
  197. UnRegisterModuleDependences("iblock", "OnAfterIBlockElementDelete", "lists", "CLists", "OnAfterIBlockElementDelete");
  198. UnRegisterModuleDependences('rest', 'onRestServiceBuildDescription', 'lists', '\Bitrix\Lists\Rest\RestService', 'onRestServiceBuildDescription');
  199. UnRegisterModuleDependences("iblock", "OnAfterIBlockPropertyAdd", "lists", "CLists", "OnAfterIBlockPropertyAdd");
  200. UnRegisterModuleDependences("iblock", "OnAfterIBlockPropertyUpdate", "lists", "CLists", "OnAfterIBlockPropertyUpdate");
  201. UnRegisterModuleDependences("iblock", "OnAfterIBlockPropertyDelete", "lists", "CLists", "OnAfterIBlockPropertyDelete");
  202. UnRegisterModuleDependences("iblock", "OnBeforeIBlockElementAdd", "lists", "CLists", "OnBeforeIBlockElementAdd");
  203. UnRegisterModuleDependences("iblock", "OnBeforeIBlockElementUpdate", "lists", "CLists", "OnBeforeIBlockElementUpdate");
  204. UnRegisterModuleDependences("main", "OnGetRatingContentOwner", "lists", "\\Bitrix\\Lists\\Integration\\Main\\RatingVote", "onGetRatingContentOwner");
  205. $eventManager = \Bitrix\Main\EventManager::getInstance();
  206. $eventManager->unregisterEventHandler('socialnetwork', 'onLogIndexGetContent', 'lists', '\Bitrix\Lists\Integration\Socialnetwork\Log', 'onIndexGetContent');
  207. UnRegisterModule("lists");
  208. if($this->errors !== false)
  209. {
  210. $APPLICATION->ThrowException(implode("<br>", $this->errors));
  211. return false;
  212. }
  213. return true;
  214. }
  215. function InstallEvents()
  216. {
  217. return true;
  218. }
  219. function UnInstallEvents()
  220. {
  221. return true;
  222. }
  223. function InstallFiles($arParams = array())
  224. {
  225. if($_ENV["COMPUTERNAME"]!='BX')
  226. {
  227. CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/admin", $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin", true);
  228. CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/components", $_SERVER["DOCUMENT_ROOT"]."/bitrix/components", True, True);
  229. CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/images", $_SERVER["DOCUMENT_ROOT"]."/bitrix/images/lists", True, True);
  230. CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/js", $_SERVER["DOCUMENT_ROOT"]."/bitrix/js", true, true);
  231. CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/activities", $_SERVER["DOCUMENT_ROOT"]."/bitrix/activities", true, true);
  232. }
  233. return true;
  234. }
  235. function UnInstallFiles()
  236. {
  237. if($_ENV["COMPUTERNAME"]!='BX')
  238. {
  239. DeleteDirFilesEx("/bitrix/images/lists/");
  240. DeleteDirFilesEx("/bitrix/js/lists/");
  241. }
  242. return true;
  243. }
  244. function DoInstall()
  245. {
  246. global $DB, $APPLICATION, $USER, $step;
  247. $step = intval($step);
  248. if(!$USER->IsAdmin())
  249. return;
  250. if(!CBXFeatures::IsFeatureEditable("Lists"))
  251. {
  252. $this->errors = array(GetMessage("MAIN_FEATURE_ERROR_EDITABLE"));
  253. $APPLICATION->ThrowException(implode("<br>", $this->errors));
  254. $GLOBALS["errors"] = $this->errors;
  255. $APPLICATION->IncludeAdminFile(GetMessage("LISTS_INSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/step2.php");
  256. }
  257. elseif($step < 2)
  258. {
  259. $APPLICATION->IncludeAdminFile(GetMessage("LISTS_INSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/step1.php");
  260. }
  261. elseif($step==2)
  262. {
  263. $this->InstallDB(array());
  264. $this->InstallFiles(array());
  265. CBXFeatures::SetFeatureEnabled("Lists", true);
  266. $GLOBALS["errors"] = $this->errors;
  267. $APPLICATION->IncludeAdminFile(GetMessage("LISTS_INSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/step2.php");
  268. }
  269. }
  270. function DoUninstall()
  271. {
  272. global $DB, $APPLICATION, $USER, $step;
  273. if($USER->IsAdmin())
  274. {
  275. $step = intval($step);
  276. if($step < 2)
  277. {
  278. $APPLICATION->IncludeAdminFile(GetMessage("LISTS_UNINSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/unstep1.php");
  279. }
  280. elseif($step == 2)
  281. {
  282. $this->UnInstallDB(array(
  283. "savedata" => $_REQUEST["savedata"],
  284. ));
  285. $this->UnInstallFiles();
  286. CBXFeatures::SetFeatureEnabled("Lists", false);
  287. $GLOBALS["errors"] = $this->errors;
  288. $APPLICATION->IncludeAdminFile(GetMessage("LISTS_UNINSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/lists/install/unstep2.php");
  289. }
  290. }
  291. }
  292. public static function OnGetTableSchema()
  293. {
  294. return array(
  295. "iblock" => array(
  296. "b_iblock_type" => array(
  297. "ID" => array(
  298. "b_lists_permission" => "IBLOCK_TYPE_ID",
  299. )
  300. ),
  301. "b_iblock" => array(
  302. "ID" => array(
  303. "b_lists_field" => "IBLOCK_ID",
  304. "b_lists_socnet_group" => "IBLOCK_ID",
  305. "b_lists_url" => "IBLOCK_ID",
  306. )
  307. ),
  308. ),
  309. "main" => array(
  310. "b_group" => array(
  311. "ID" => array(
  312. "b_lists_permission" => "GROUP_ID",
  313. )
  314. ),
  315. ),
  316. );
  317. }
  318. }
  319. ?>