8d60f155ae79c3d87902bba03c8ee57f.transport.resolver.resolver 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Ace Source Editor for MODx Revolution
  4. *
  5. * @author Danil Kostin <danya@postfactum@gmail.com>
  6. *
  7. * @package ace
  8. */
  9. /**
  10. * Resolver to set which_editor to Ace
  11. *
  12. * @package ace
  13. * @subpackage build
  14. */
  15. $success= true;
  16. if ($pluginid= $object->get('id')) {
  17. switch ($options[xPDOTransport::PACKAGE_ACTION]) {
  18. case xPDOTransport::ACTION_INSTALL:
  19. case xPDOTransport::ACTION_UPGRADE:
  20. $object->xpdo->log(xPDO::LOG_LEVEL_INFO,'Attempting to set which_element_editor setting to Ace.');
  21. // set Ace as default element editor
  22. $setting = $object->xpdo->getObject('modSystemSetting',array('key' => 'which_element_editor'));
  23. if ($setting) {
  24. $setting->set('value','Ace');
  25. $setting->save();
  26. }
  27. unset($setting);
  28. // add missing event in MODx < 2.2.3
  29. $event = $object->xpdo->getObject('modEvent', array('name' => 'OnFileEditFormPrerender'));
  30. if (!$event) {
  31. $object->xpdo->log(xPDO::LOG_LEVEL_INFO,'Attempting to add missing OnFileEditFormPrerender event to MODx.');
  32. $event = $object->xpdo->newObject('modEvent');
  33. $event->fromArray(array (
  34. 'name' => 'OnFileEditFormPrerender',
  35. 'service' => 1,
  36. 'groupname' => 'System',
  37. ), '', true, true);
  38. $event->save();
  39. }
  40. break;
  41. case xPDOTransport::ACTION_UNINSTALL:
  42. $success= true;
  43. break;
  44. }
  45. switch ($options[xPDOTransport::PACKAGE_ACTION]) {
  46. case xPDOTransport::ACTION_UPGRADE:
  47. // remove obsolete plugin properties and files
  48. $plugin = $object->xpdo->getObject('modPlugin', array('name' => 'Ace'));
  49. if ($plugin) {
  50. $object->xpdo->log(xPDO::LOG_LEVEL_INFO,'Attempting to clear obsolete plugin properties.');
  51. $plugin->setProperties(array());
  52. $plugin->save();
  53. // Code from http://www.php.net/manual/en/function.rmdir.php#98622
  54. function rrmdir($dir) {
  55. if (is_dir($dir)) {
  56. $objects = scandir($dir);
  57. foreach ($objects as $object) {
  58. if ($object != "." && $object != "..") {
  59. if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
  60. }
  61. }
  62. reset($objects);
  63. rmdir($dir);
  64. }
  65. }
  66. $oldAssets = array(MODX_MANAGER_PATH. 'assets/components/ace/', MODX_MANAGER_PATH. 'components/ace/');
  67. foreach ($oldAssets as $path) {
  68. if (is_dir($path)) {
  69. $object->xpdo->log(xPDO::LOG_LEVEL_INFO, "Attempting to remove old assets directory ($path).");
  70. @rrmdir($path);
  71. break;
  72. }
  73. }
  74. }
  75. }
  76. }
  77. return $success;