PageRenderTime 25ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/engine/functions/plugins.php

https://github.com/sarriaroman/Cronos-Aion
PHP | 389 lines | 273 code | 79 blank | 37 comment | 56 complexity | 447e3f0b77b8f971ea6acffd1e83c42b MD5 | raw file
  1. <?php
  2. /**
  3. * Provide functions to plugins installation
  4. * and functionality.
  5. *
  6. * @name Library Plugins
  7. *
  8. * @version 0.5.0
  9. * @author Román A. Sarria
  10. */
  11. /**
  12. * Add plugin
  13. *
  14. * Add a plugin when install file is executed.
  15. *
  16. * @param invoke name
  17. * @param install path
  18. * @param version
  19. */
  20. function add_plugin($invoke_name, $path, $version) {
  21. $plugin = new Plugin();
  22. $plugin->invoke_name = $invoke_name;
  23. $plugin->path = $path;
  24. $plugin->version = $version;
  25. return $plugin->save();
  26. }
  27. function remove_plugin($path) {
  28. $plugin = Plugin::getByPath($path);
  29. return $plugin->delete();
  30. }
  31. /**
  32. * Create a database schema for plugin
  33. *
  34. * @param <String> $sql
  35. */
  36. function create_database_schema($sql) {
  37. $con = new Connection();
  38. $con->make_request($sql);
  39. }
  40. /**
  41. * Create a database schema for plugin from file
  42. *
  43. * @param <String> $file You must provide the absolute path. Ex: dirname(__FILE__) . '/schema.sql'
  44. * @return boolean
  45. */
  46. function create_database_schema_from_file($file) {
  47. $fh = fopen($file, 'r');
  48. $sql = fread($fh, filesize($file));
  49. fclose($fh);
  50. $sqls = explode(';', $sql);
  51. $con = new Connection();
  52. for ($i = 0; $i < ( count($sqls) - 1 ); $i++) {
  53. $query = $sqls[$i] . ';';
  54. if ($con->make_request($query)) {
  55. $finish = true;
  56. } else {
  57. $finish = false;
  58. break;
  59. }
  60. }
  61. return $finish;
  62. }
  63. /**
  64. * Add a setting for plugin
  65. *
  66. * @global <type> $dbprefix
  67. * @param <String> $key identifier
  68. * @param <String> $default default value
  69. * @return <type>
  70. */
  71. function add_settings($key, $default = '') {
  72. $con = new Connection();
  73. $sql = "insert into config (config_key, config_value) VALUES ('{$key}', '{$default}');";
  74. if ($con->make_request($sql)) {
  75. return true;
  76. } else {
  77. echo json_encode( array( 'response' => false, 'error' => 'Setting key already exist' ) );
  78. return;
  79. }
  80. }
  81. function remove_settings($key) {
  82. $con = new Connection();
  83. $sql = "delete from config where config_key = '{$key}';";
  84. if ($con->make_request($sql)) {
  85. return true;
  86. } else {
  87. echo json_encode( array( 'response' => false, 'error' => 'Setting key already exist' ) );
  88. return;
  89. }
  90. }
  91. function get_plugin_base_url($plugin = false) {
  92. if ($plugin) {
  93. $plg = Plugin::getByName($plugin);
  94. return base_url . '/plugins/' . $plg->path . '/';
  95. } else {
  96. $permalink = getPermalink(0);
  97. $plg = Plugin::getByName($permalink);
  98. return base_url . '/plugins/' . $plg->path . '/';
  99. }
  100. }
  101. function get_plugin_invoke_url($plugin = false) {
  102. if ($plugin) {
  103. $plg = Plugin::getByName($plugin);
  104. return base_url . $plg->invoke_name . '/';
  105. } else {
  106. $permalink = getPermalink(0);
  107. $plg = Plugin::getByName($permalink);
  108. return base_url . $plg->invoke_name . '/';
  109. }
  110. }
  111. function get_plugin_invoke_url_by_path($plugin = false) {
  112. if ($plugin) {
  113. $plg = Plugin::getByName($plugin);
  114. return base_url . $plg->invoke_name . '/';
  115. } else {
  116. $permalink = getPermalink(0);
  117. $plg = Plugin::getByName($permalink);
  118. return base_url . $plg->invoke_name . '/';
  119. }
  120. }
  121. function get_plugin_section_url_by_name($section, $plugin = false) {
  122. if ($plugin) {
  123. $plg = Plugin::getByName($plugin);
  124. return base_url . $plg->invoke_name . '/' . $section;
  125. } else {
  126. $permalink = getPermalink(0);
  127. $plg = Plugin::getByName($permalink);
  128. return base_url . $plg->invoke_name . '/' . $section;
  129. }
  130. }
  131. function get_plugin_section_url_by_path($section, $plugin = false) {
  132. if ($plugin) {
  133. $plg = Plugin::getByPath($plugin);
  134. return base_url . $plg->invoke_name . '/' . $section;
  135. } else {
  136. $permalink = getPermalink(0);
  137. $plg = Plugin::getByName($permalink);
  138. return base_url . $plg->invoke_name . '/' . $section;
  139. }
  140. }
  141. function get_plugin_admin_section_url_by_path($section, $plugin = false) {
  142. if ($plugin) {
  143. $plg = Plugin::getByPath($plugin);
  144. return urlencode( base_url . 'admin.php?plugin=' . $plg->invoke_name . '&section=' . $section );
  145. } else {
  146. $permalink = getPermalink(0);
  147. $plg = Plugin::getByName($permalink);
  148. return urlencode( admin_base_url . '?plugin=' . $plg->invoke_name . '&section=' . $section );
  149. }
  150. }
  151. function get_plugin_module_url_by_path($section, $module, $plugin = false) {
  152. if ($plugin) {
  153. $plg = Plugin::getByPath($plugin);
  154. return base_url . $plg->invoke_name . '/' . $section . '/' . $module;
  155. } else {
  156. $permalink = getPermalink(0);
  157. $plg = Plugin::getByName($permalink);
  158. return base_url . $plg->invoke_name . '/' . $section . '/' . $module;
  159. }
  160. }
  161. function get_plugin_admin_module_url_by_path($section, $module, $plugin = false) {
  162. if ($plugin) {
  163. $plg = Plugin::getByPath($plugin);
  164. return urlencode( base_url . 'admin.php?plugin=' . $plg->invoke_name . '&section=' . $section . "&module=" . $module );
  165. } else {
  166. $permalink = getPermalink(0);
  167. $plg = Plugin::getByName($permalink);
  168. return urlencode( admin_base_url . '?plugin=' . $plg->invoke_name . '&section=' . $section . "&module=" . $module );
  169. }
  170. }
  171. function get_plugin_module_url_by_name($section, $module, $plugin = false) {
  172. if ($plugin) {
  173. $plg = Plugin::getByName($plugin);
  174. return base_url . $plg->invoke_name . '/' . $section . '/' . $module;
  175. } else {
  176. $permalink = getPermalink(0);
  177. $plg = Plugin::getByName($permalink);
  178. return base_url . $plg->invoke_name . '/' . $section . '/' . $module;
  179. }
  180. }
  181. function get_plugin_admin_module_url_by_name($section, $module, $plugin = false) {
  182. if ($plugin) {
  183. $plg = Plugin::getByName($plugin);
  184. return urlencode( base_url . 'admin.php?plugin=' . $plg->invoke_name . '&section=' . $section . "&module=" . $module );
  185. } else {
  186. $permalink = getPermalink(0);
  187. $plg = Plugin::getByName($permalink);
  188. return urlencode( admin_base_url . '?plugin=' . $plg->invoke_name . '&section=' . $section . "&module=" . $module );
  189. }
  190. }
  191. function get_plugin_javascript_url($plugin = false) {
  192. if ($plugin) {
  193. $plg = Plugin::getByName($plugin);
  194. return base_url . '/plugins/' . $plg->path . '/js/';
  195. } else {
  196. $permalink = getPermalink(0);
  197. $plg = Plugin::getByName($permalink);
  198. return base_url . '/plugins/' . $plg->path . '/js/';
  199. }
  200. }
  201. function get_plugin_css_url($plugin = false) {
  202. if ($plugin) {
  203. $plg = Plugin::getByName($plugin);
  204. return base_url . '/plugins/' . $plg->path . '/style/';
  205. } else {
  206. $permalink = getPermalink(0);
  207. $plg = Plugin::getByName($permalink);
  208. return base_url . '/plugins/' . $plg->path . '/style/';
  209. }
  210. }
  211. function get_plugin_images_url($plugin = false) {
  212. if ($plugin) {
  213. $plg = Plugin::getByName($plugin);
  214. return base_url . '/plugins/' . $plg->path . '/images/';
  215. } else {
  216. $permalink = getPermalink(0);
  217. $plg = Plugin::getByName($permalink);
  218. return base_url . '/plugins/' . $plg->path . '/images/';
  219. }
  220. }
  221. function load_plugin_functions($plugin = false) {
  222. if ($plugin) {
  223. $plg = Plugin::getByName($plugin);
  224. } else {
  225. $permalink = getPermalink(0);
  226. $plg = Plugin::getByName($permalink);
  227. }
  228. $dir = base_dir . '/plugins/' . $plg->path . '/functions/';
  229. $files = get_files_in_directory($dir);
  230. foreach ($files as $class_filename) {
  231. if (!include_once( $dir . $class_filename )) {
  232. echo "Error cargando la libreria: $class_filename<br />";
  233. }
  234. }
  235. }
  236. function get_plugin_sections( $plugin ) {
  237. if ($plugin) {
  238. $plg = Plugin::getByName($plugin);
  239. } else {
  240. $permalink = getPermalink(0);
  241. $plg = Plugin::getByName($permalink);
  242. }
  243. $dir = base_dir . '/plugins/' . $plg->path . '/sections/';
  244. $array = array();
  245. $dirs = get_directories_in_directory( $dir );
  246. foreach ($dirs as $directory) {
  247. $label = "";
  248. include( $dir . $directory . '/description.php' );
  249. array_push($array, array( "label" => ( $label == "" ) ? $directory : $label, "invoke" => $directory, "url" => get_plugin_section_url_by_path($directory, $plg->path) ) );
  250. }
  251. return $array;
  252. }
  253. function get_plugin_admin_sections( $plugin ) {
  254. if ($plugin) {
  255. $plg = Plugin::getByName($plugin);
  256. } else {
  257. $permalink = getPermalink(0);
  258. $plg = Plugin::getByName($permalink);
  259. }
  260. $dir = base_dir . '/plugins/' . $plg->path . '/admin/sections/';
  261. $array = array();
  262. $dirs = get_directories_in_directory( $dir );
  263. foreach ($dirs as $directory) {
  264. $label = "";
  265. include( $dir . $directory . '/description.php' );
  266. array_push($array, array( "label" => ( $label == "" ) ? $directory : $label, "invoke" => $directory, "url" => get_plugin_admin_section_url_by_path($directory, $plg->path) ) );
  267. }
  268. return $array;
  269. }
  270. function get_admin_module_dir( $module, $plugin ) {
  271. if( $plugin == 'main' ) {
  272. return admin_modules_dir . $module;
  273. } else {
  274. $plg = Plugin::getByName($plugin);
  275. return plugins_dir . $plg->path . '/admin/modules/' . $module;
  276. }
  277. }
  278. function get_admin_section_dir( $module, $plugin ) {
  279. if( $plugin == 'main' ) {
  280. return admin_section_dir . $module;
  281. } else {
  282. $plg = Plugin::getByName( $plugin );
  283. return plugins_dir . $plg->path . '/admin/sections/' . $module;
  284. }
  285. }
  286. function get_module_dir( $module, $plugin ) {
  287. if( $plugin == 'main' ) {
  288. return modules_dir . $module;
  289. } else {
  290. return plugins_dir . $plugin . '/modules/' . $module;
  291. }
  292. }
  293. function get_section_dir( $module, $plugin ) {
  294. if( $plugin == 'main' ) {
  295. return section_dir . $module;
  296. } else {
  297. return plugins_dir . $plugin . '/sections/' . $module;
  298. }
  299. }
  300. function get_actions_url( $name ) {
  301. $permalink = getPermalink(0);
  302. $plg = Plugin::getByName($permalink);
  303. $file = plugins_url . $plg->path . '/actions/' . $name . '.php';
  304. if( file_exists( $file ) ) {
  305. return $file;
  306. } else {
  307. return "";
  308. }
  309. }
  310. ?>