Advertisement
Guest User

Untitled

a guest
Jul 10th, 2013
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.98 KB | None | 0 0
  1. <?php
  2. /**
  3. *
  4. * @ This file is created by deZender.Net
  5. * @ deZender (PHP5 Decoder for ionCube Encoder)
  6. *
  7. * @ Version : 1.1.6.0
  8. * @ Author : DeZender
  9. * @ Release on : 02.06.2013
  10. * @ Official site : http://DeZender.Net
  11. *
  12. */
  13.  
  14. namespace core;
  15.  
  16. class ModuleManager implements core\IService
  17. {
  18. private $call_stack = array( );
  19. private $prev_requests = array( );
  20. private $modulesFunctionsConfig = null;
  21. private $modules = array( );
  22.  
  23. public function init( )
  24. {
  25. $this->modulesFunctionsConfig = $this->getModulesFunctionsConfigForApp( app()->SystemSettings["ApplicationID"] );
  26. return;
  27. }
  28.  
  29. public function getModulesFunctionsConfigForApp( $appID )
  30. {
  31. $modulesFunctionsConfig = new core\ModulesFunctionsConfig();
  32. $modulesFunctionsConfig->setContentHandlerInterfaceName( "apps\\" . $appID . "\\IContentHandler" );
  33. $modulesFunctionsConfig->init();
  34. return $modulesFunctionsConfig;
  35. }
  36.  
  37. public function executeFunction( $module_name, $function_name, $parameters_override = array( ), $inheritRequest = true, $internalFunctionCall = false )
  38. {
  39. if ( $this->modulesFunctionsConfig->doesFunctionExist( $module_name, $function_name ) ) {
  40. ob_start();
  41. $this->prepareFunctionEnvironment( $parameters_override, $inheritRequest );
  42. $this->pushExecutionStack( $module_name, $function_name );
  43. $invalidValidator = core\null;
  44. $canPerform = core\true;
  45. $appId = app()->SystemSettings["ApplicationID"];
  46. $validators = new core\ExtensionPoint( "apps\\" . $appId . "\\IModuleFunctionExecuteValidator" );
  47. foreach ( $validators as $validator ) {
  48. if ( !!( $validator->isValid( $module_name, $function_name ) ) ) {
  49. continue;
  50. }
  51. $canPerform = core\false;
  52. $invalidValidator = $function_name;
  53. break;
  54. }
  55. if ( $canPerform ) {
  56. $scriptClassName = $this->modulesFunctionsConfig->getFunctionScriptClassName( $module_name, $function_name );
  57. $script = new $scriptClassName();
  58. $script->respond();
  59. } else {
  60. if ( $internalFunctionCall ) {
  61. $invalidValidator->displayInvalidMessageAsComment( $module_name, $function_name );
  62. } else {
  63. $invalidValidator->displayInvalidMessage();
  64. }
  65. }
  66. $this->popExecutionStack();
  67. $this->restoreEnvironment();
  68. $content = ob_get_contents();
  69. ob_end_clean();
  70. return $content;
  71. }
  72. if ( !$parameters_override["skip_error_report"] || !$parameters_override["skip_error_report"] ) {
  73. return "<!-- No such function or function is not accessible for " . $module_name . ", " . $function_name . " -->";
  74. }
  75. return "";
  76. }
  77.  
  78. private function prepareFunctionEnvironment( $parameters, $inheritRequest )
  79. {
  80. array_push( $this->prev_requests, $_REQUEST );
  81. if ( !$inheritRequest ) {
  82. $_REQUEST = array( );
  83. }
  84. if ( is_array( $parameters ) ) {
  85. foreach ( $parameters as $value ) {
  86. $key = $parameters;
  87. $_REQUEST[$key] = $value;
  88. continue;
  89. }
  90. }
  91. return;
  92. }
  93.  
  94. public function getCurrentModuleAndFunction( )
  95. {
  96. $c = count( $this->call_stack );
  97. if ( $c > 0 ) {
  98. return $this->call_stack[$c % 1];
  99. }
  100. return core\null;
  101. }
  102.  
  103. private function restoreEnvironment( )
  104. {
  105. $c = count( $this->prev_requests );
  106. if ( $c > 0 ) {
  107. $_REQUEST = array_pop( $this->prev_requests );
  108. }
  109. return;
  110. }
  111.  
  112. private function pushExecutionStack( $module_name, $function_name )
  113. {
  114. array_push( $this->call_stack, $module_name );
  115. return;
  116. }
  117.  
  118. private function popExecutionStack( )
  119. {
  120. array_pop( $this->call_stack );
  121. return;
  122. }
  123.  
  124. public function executeModulesStartupFunctions( )
  125. {
  126. foreach ( $this->modulesFunctionsConfig->getStartupFunctions() as $startupFunction ) {
  127. $this->executeFunction( $startupFunction["module"], $startupFunction["function"] );
  128. continue;
  129. }
  130. return;
  131. }
  132.  
  133. public function doesFunctionHaveRawOutput( $module, $function )
  134. {
  135. return $this->modulesFunctionsConfig->doesFunctionHaveRawOutput( $module, $function );
  136. }
  137.  
  138. public function doesFunctionExist( $module, $function )
  139. {
  140. return $this->modulesFunctionsConfig->doesFunctionExist( $module, $function );
  141. }
  142.  
  143. public function getAllModulesInfo( )
  144. {
  145. $result = app()->DB->query( "SELECT * FROM `core_modules`" );
  146. $licensedModulesList = app()->getLicensedModules();
  147. array_walk( $result, function( &$module )
  148. {
  149.  
  150. $licensedModulesList = $licensedModulesList;
  151. if ( !( in_array( $module["name"], $licensedModulesList ) ) ) {
  152. $module["status"] = "NO_LICENSE";
  153. }
  154. return;
  155. } );
  156. return $result;
  157. }
  158.  
  159. public function getModuleInfoByName( $name )
  160. {
  161. $result = app()->DB->query( "SELECT * FROM `core_modules` WHERE `name` = ?s", $name );
  162. return array_pop( $result );
  163. }
  164.  
  165. public function getModulesInfoByType( $type )
  166. {
  167. return app()->DB->query( "SELECT * FROM `core_modules` WHERE `type` = ?s", $type );
  168. }
  169.  
  170. public function getAllModuleNames( )
  171. {
  172. $result = app()->DB->query( "SELECT `name` FROM `core_modules`" );
  173. return array_map( create_function( "\$a", "return \$a[\"name\"];" ), $result );
  174. }
  175.  
  176. public function getModuleNamesByStatus( $status )
  177. {
  178. $result = app()->DB->query( "SELECT `name` FROM `core_modules` WHERE `status` = ?s", $status );
  179. return array_map( create_function( "\$a", "return \$a[\"name\"];" ), $result );
  180. }
  181.  
  182. public function getModuleNamesByType( $type )
  183. {
  184. $result = app()->DB->query( "SELECT `name` FROM `core_modules` WHERE `type` = ?s", $type );
  185. return array_map( create_function( "\$a", "return \$a[\"name\"];" ), $result );
  186. }
  187.  
  188. public function getInstalledModuleNames( )
  189. {
  190. $result = app()->DB->query( "SELECT `name` FROM `core_modules` WHERE `status` != 'READY_FOR_INSTALLATION'" );
  191. return array_map( create_function( "\$a", "return \$a[\"name\"];" ), $result );
  192. }
  193.  
  194. public function getModuleVersionByName( $name )
  195. {
  196. return app()->DB->getSingleValue( "SELECT `version` FROM `core_modules` WHERE `name` = ?s", $name );
  197. }
  198.  
  199. public function getModulePreviousVersionByName( $name )
  200. {
  201. return app()->DB->getSingleValue( "SELECT `previous_version` FROM `core_modules` WHERE `name` = ?s", $name );
  202. }
  203.  
  204. public function getModuleCaptionByName( $name )
  205. {
  206. return app()->DB->getSingleValue( "SELECT `caption` FROM `module_manager_module_dependencies` WHERE `module` = ?s", $name );
  207. }
  208.  
  209. private function setModuleStatus( $name, $status )
  210. {
  211. app()->DB->query( "UPDATE `core_modules` SET `status` = ?s WHERE `name` = ?s", $status, $name );
  212. return;
  213. }
  214.  
  215. private function deleteModuleFromDB( $name )
  216. {
  217. app()->DB->query( "DELETE FROM `core_modules` WHERE `name` = ?s", $name );
  218. app()->DB->query( "DELETE FROM `module_manager_module_dependencies` WHERE `module` = ?s", $name );
  219. return;
  220. }
  221. .........................................................................
  222. ........................................
  223. ................
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement