PageRenderTime 56ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/source/innomatic/core/classes/shared/maintenance/InnomaticLogsMaintenance.php

https://bitbucket.org/innoteam/innomatic
PHP | 457 lines | 375 code | 58 blank | 24 comment | 39 complexity | 9543dc27f8acb887e8eb12e31d8f2276 MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0, LGPL-2.0, LGPL-2.1
  1. <?php
  2. /**
  3. * Innomatic
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.
  9. *
  10. * @copyright 1999-2012 Innoteam S.r.l.
  11. * @license http://www.innomatic.org/license/ BSD License
  12. * @link http://www.innomatic.org
  13. * @since Class available since Release 5.0
  14. */
  15. require_once('innomatic/maintenance/MaintenanceTask.php');
  16. class InnomaticLogsMaintenance extends MaintenanceTask
  17. {
  18. public $mApplicationSettings;
  19. public $mCleanRootLog;
  20. public $mCleanRootDbLog;
  21. public $mCleanAccessLog;
  22. public $mCleanWebServicesLog;
  23. public $mCleanPhpLog;
  24. public $mCleanDomainsLogs;
  25. public $mRotateRootLog;
  26. public $mRotateRootDbLog;
  27. public $mRotateAccessLog;
  28. public $mRotateWebServicesLog;
  29. public $mRotatePhpLog;
  30. public $mRotateDomainsLogs;
  31. public function __construct()
  32. {
  33. require_once('innomatic/application/ApplicationSettings.php');
  34. $this->mApplicationSettings = new ApplicationSettings(
  35. InnomaticContainer::instance('innomaticcontainer')->getDataAccess(),
  36. 'innomatic'
  37. );
  38. $this->mCleanRootLog = $this->mApplicationSettings->getKey('maintenance_cleanrootlog') == '1' ? true : false;
  39. $this->mCleanRootDbLog = $this->mApplicationSettings->getKey('maintenance_cleanrootdalog') == '1' ? true : false;
  40. $this->mCleanAccessLog = $this->mApplicationSettings->getKey('maintenance_cleanaccesslog') == '1' ? true : false;
  41. $this->mCleanWebServicesLog = $this->mApplicationSettings->getKey('maintenance_cleanwebserviceslog') == '1' ? true : false;
  42. $this->mCleanPhpLog = $this->mApplicationSettings->getKey('maintenance_cleanphplog') == '1' ? true : false;
  43. $this->mCleanDomainsLogs = $this->mApplicationSettings->getKey('maintenance_cleandomainslogs') == '1' ? true : false;
  44. $this->mRotateRootLog = $this->mApplicationSettings->getKey('maintenance_rotaterootlog') == '1' ? true : false;
  45. $this->mRotateRootDbLog = $this->mApplicationSettings->getKey('maintenance_rotaterootdalog') == '1' ? true : false;
  46. $this->mRotateAccessLog = $this->mApplicationSettings->getKey('maintenance_rotateaccesslog') == '1' ? true : false;
  47. $this->mRotateWebServicesLog = $this->mApplicationSettings->getKey('maintenance_rotatewebserviceslog') == '1' ? true : false;
  48. $this->mRotatePhpLog = $this->mApplicationSettings->getKey('maintenance_rotatephplog') == '1' ? true : false;
  49. $this->mRotateDomainsLogs = $this->mApplicationSettings->getKey('maintenance_rotatedomainslogs') == '1' ? true : false;
  50. }
  51. public function setCleanRootLog(
  52. $clean
  53. )
  54. {
  55. $this->mApplicationSettings->setKey(
  56. 'maintenance_cleanrootlog',
  57. $clean ? '1' : '0'
  58. );
  59. $this->mCleanRootLog = $clean ? true : false;
  60. }
  61. public function getCleanRootLog()
  62. {
  63. return $this->mCleanRootLog;
  64. }
  65. public function setRotateRootLog(
  66. $clean
  67. )
  68. {
  69. $this->mApplicationSettings->setKey(
  70. 'maintenance_rotaterootlog',
  71. $clean ? '1' : '0'
  72. );
  73. $this->mRotateRootLog = $clean ? true : false;
  74. }
  75. public function getRotateRootLog()
  76. {
  77. return $this->mRotateRootLog;
  78. }
  79. public function setCleanRootDbLog(
  80. $clean
  81. )
  82. {
  83. $this->mApplicationSettings->setKey(
  84. 'maintenance_cleanrootdalog',
  85. $clean ? '1' : '0'
  86. );
  87. $this->mCleanRootDbLog = $clean ? true : false;
  88. }
  89. public function getCleanRootDbLog()
  90. {
  91. return $this->mCleanRootDbLog;
  92. }
  93. public function setRotateRootDbLog(
  94. $clean
  95. )
  96. {
  97. $this->mApplicationSettings->setKey(
  98. 'maintenance_rotaterootdalog',
  99. $clean ? '1' : '0'
  100. );
  101. $this->mRotateRootDbLog = $clean ? true : false;
  102. }
  103. public function getRotateRootDbLog()
  104. {
  105. return $this->mRotateRootDbLog;
  106. }
  107. public function setCleanAccessLog(
  108. $clean
  109. )
  110. {
  111. $this->mApplicationSettings->setKey(
  112. 'maintenance_cleanaccesslog',
  113. $clean ? '1' : '0'
  114. );
  115. $this->mCleanAccessLog = $clean ? true : false;
  116. }
  117. public function getCleanAccessLog()
  118. {
  119. return $this->mCleanAccessLog;
  120. }
  121. public function setRotateAccessLog(
  122. $clean
  123. )
  124. {
  125. $this->mApplicationSettings->setKey(
  126. 'maintenance_rotateaccesslog',
  127. $clean ? '1' : '0'
  128. );
  129. $this->mRotateAccessLog = $clean ? true : false;
  130. }
  131. public function getRotateAccessLog()
  132. {
  133. return $this->mRotateAccessLog;
  134. }
  135. public function setCleanWebServicesLog(
  136. $clean
  137. )
  138. {
  139. $this->mApplicationSettings->setKey(
  140. 'maintenance_cleanwebserviceslog',
  141. $clean ? '1' : '0'
  142. );
  143. $this->mCleanWebServicesLog = $clean ? true : false;
  144. }
  145. public function getCleanWebServicesLog()
  146. {
  147. return $this->mCleanWebServicesLog;
  148. }
  149. public function setRotateWebServicesLog(
  150. $clean
  151. )
  152. {
  153. $this->mApplicationSettings->setKey(
  154. 'maintenance_rotatewebserviceslog',
  155. $clean ? '1' : '0'
  156. );
  157. $this->mRotateWebServicesLog = $clean ? true : false;
  158. }
  159. public function getRotateWebServicesLog()
  160. {
  161. return $this->mRotateWebServicesLog;
  162. }
  163. public function setCleanPhpLog(
  164. $clean
  165. )
  166. {
  167. $this->mApplicationSettings->setKey(
  168. 'maintenance_cleanphplog',
  169. $clean ? '1' : '0'
  170. );
  171. $this->mCleanPhpLog = $clean ? true : false;
  172. }
  173. public function getCleanPhpLog()
  174. {
  175. return $this->mCleanPhpLog;
  176. }
  177. public function setRotatePhpLog(
  178. $clean
  179. )
  180. {
  181. $this->mApplicationSettings->setKey(
  182. 'maintenance_rotatephplog',
  183. $clean ? '1' : '0'
  184. );
  185. $this->mRotatePhpLog = $clean ? true : false;
  186. }
  187. public function getRotatePhpLog()
  188. {
  189. return $this->mRotatePhpLog;
  190. }
  191. public function setCleanDomainsLogs(
  192. $clean
  193. )
  194. {
  195. $this->mApplicationSettings->setKey(
  196. 'maintenance_cleandomainslogs',
  197. $clean ? '1' : '0'
  198. );
  199. $this->mCleanDomainsLogs = $clean ? true : false;
  200. }
  201. public function getCleanDomainsLogs()
  202. {
  203. return $this->mCleanDomainsLogs;
  204. }
  205. public function setRotateDomainsLogs(
  206. $clean
  207. )
  208. {
  209. $this->mApplicationSettings->setKey(
  210. 'maintenance_rotatedomainslogs',
  211. $clean ? '1' : '0'
  212. );
  213. $this->mRotateDomainsLogs = $clean ? true : false;
  214. }
  215. public function getRotateDomainsLogs()
  216. {
  217. return $this->mRotateDomainsLogs;
  218. }
  219. // ----- Logs -----
  220. public function getSystemLogsSize()
  221. {
  222. $total = 0;
  223. require_once('innomatic/util/Registry.php');
  224. $reg = Registry::instance();
  225. if (file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic.log')) $total += filesize(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic.log');
  226. if (file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic_root_db.log')) $total += filesize(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic_root_db.log');
  227. if (file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/access.log')) $total += filesize(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/access.log');
  228. if (file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/webservices.log')) $total += filesize(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/webservices.log');
  229. if (file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/php.log')) $total += filesize(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/php.log');
  230. return $total;
  231. }
  232. public function getDomainsLogsSize()
  233. {
  234. $total = 0;
  235. $domains_query = InnomaticContainer::instance('innomaticcontainer')->getDataAccess()->execute(
  236. 'SELECT domainid '.
  237. 'FROM domains'
  238. );
  239. while (!$domains_query->eof)
  240. {
  241. $log_file = InnomaticContainer::instance('innomaticcontainer')->getHome().'core/domains/'.$domains_query->getFields('domainid').'/log/dataaccess.log';
  242. if (file_exists($log_file)) $total += filesize($log_file);
  243. if (file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/domains/'.$domains_query->getFields('domainid').'/log/domain.log'))
  244. $total += filesize(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/domains/'.$domains_query->getFields('domainid').'/log/domain.log');
  245. $domains_query->moveNext();
  246. }
  247. return $total;
  248. }
  249. public function cleanSystemLogs()
  250. {
  251. require_once('innomatic/util/Registry.php');
  252. $reg = Registry::instance();
  253. if (
  254. $this->mCleanRootLog
  255. and file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic.log')
  256. )
  257. {
  258. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic.log');
  259. $log->Rotate(0);
  260. unlink(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic.log');
  261. }
  262. if (
  263. $this->mCleanRootDbLog
  264. and file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic_root_db.log')
  265. )
  266. {
  267. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic_root_db.log');
  268. $log->Rotate(0);
  269. unlink(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic_root_db.log');
  270. }
  271. if (
  272. $this->mCleanPhpLog
  273. and file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/php.log')
  274. )
  275. {
  276. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/php.log');
  277. $log->Rotate(0);
  278. unlink(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/php.log');
  279. }
  280. if (
  281. $this->mCleanWebServicesLog
  282. and file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/webservices.log')
  283. )
  284. {
  285. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/webservices.log');
  286. $log->Rotate(0);
  287. unlink(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/webservices.log');
  288. }
  289. if (
  290. $this->mCleanAccessLog
  291. and file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/access.log')
  292. )
  293. {
  294. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/access.log');
  295. $log->Rotate(0);
  296. unlink(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/access.log');
  297. }
  298. if (
  299. $this->mRotateRootLog
  300. )
  301. {
  302. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic.log');
  303. $log->Rotate(7);
  304. }
  305. if (
  306. $this->mRotateRootDbLog
  307. )
  308. {
  309. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/innomatic_root_db.log');
  310. $log->Rotate(7);
  311. }
  312. if (
  313. $this->mRotatePhpLog
  314. )
  315. {
  316. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/php.log');
  317. $log->Rotate(7);
  318. }
  319. if (
  320. $this->mRotateWebServicesLog
  321. )
  322. {
  323. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/webservices.log');
  324. $log->Rotate(7);
  325. }
  326. if (
  327. $this->mRotateAccessLog
  328. )
  329. {
  330. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/log/access.log');
  331. $log->Rotate(7);
  332. }
  333. return true;
  334. }
  335. public function CleanDomainsLogs()
  336. {
  337. $domains_query = InnomaticContainer::instance('innomaticcontainer')->getDataAccess()->execute(
  338. 'SELECT domainid '.
  339. 'FROM domains'
  340. );
  341. while (!$domains_query->eof)
  342. {
  343. $da_log_file = InnomaticContainer::instance('innomaticcontainer')->getHome().'core/domains/'.$domains_query->getFields('domainid').'/log/dataaccess.log';
  344. if (file_exists($da_log_file))
  345. {
  346. if ($this->mCleanDomainsLogs)
  347. {
  348. $log = new Logger($da_log_file);
  349. $log->Rotate(0);
  350. unlink($da_log_file);
  351. }
  352. else if ($this->mRotateDomainsLogs)
  353. {
  354. $log = new Logger($da_log_file);
  355. $log->Rotate(7);
  356. }
  357. }
  358. if (file_exists(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/domains/'.$domains_query->getFields('domainid').'/log/domain.log'))
  359. {
  360. if ($this->mCleanDomainsLogs)
  361. {
  362. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/domains/'.$domains_query->getFields('domainid').'/log/domain.log');
  363. $log->Rotate(0);
  364. unlink(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/domains/'.$domains_query->getFields('domainid').'/log/domain.log');
  365. }
  366. else if ($this->mRotateDomainsLogs)
  367. {
  368. $log = new Logger(InnomaticContainer::instance('innomaticcontainer')->getHome().'core/domains/'.$domains_query->getFields('domainid').'/log/domain.log');
  369. $log->Rotate(7);
  370. }
  371. }
  372. $domains_query->moveNext();
  373. }
  374. return true;
  375. }
  376. /*
  377. function RotateSystemLogs()
  378. {
  379. }
  380. function RotateDomainsLogs()
  381. {
  382. }
  383. */
  384. // ----- Facilities -----
  385. public function execute()
  386. {
  387. $this->CleanSystemLogs();
  388. $this->CleanDomainsLogs();
  389. return true;
  390. }
  391. public function getCleanableDiskSize()
  392. {
  393. $total = 0;
  394. $total += $this->getSystemLogsSize();
  395. $total += $this->getDomainsLogsSize();
  396. return $total;
  397. }
  398. }