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

/classes/cuztom.class.php

https://bitbucket.org/yoan_marchal/wordpress-cuztom-helper
PHP | 274 lines | 149 code | 31 blank | 94 comment | 18 complexity | 523773120b509775dac0002702575bbb MD5 | raw file
  1. <?php
  2. /**
  3. * General class with main methods and helper methods
  4. *
  5. * @author Gijs Jorissen
  6. * @since 0.2
  7. *
  8. */
  9. class Cuztom
  10. {
  11. var $url = array();
  12. /**
  13. * Contructs the Cuztom class
  14. * Adds actions
  15. *
  16. * @author Gijs Jorissen
  17. * @since 0.3
  18. *
  19. */
  20. function __construct()
  21. {
  22. // Add actions
  23. add_action( 'admin_init', array( $this, 'register_styles' ) );
  24. add_action( 'admin_print_styles', array( $this, 'enqueue_styles' ) );
  25. add_action( 'admin_init', array( $this, 'register_scripts' ) );
  26. add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
  27. // Determine the full path to the this folder
  28. $this->_determine_cuztom_url( dirname( __FILE__ ) );
  29. }
  30. /**
  31. * Registers styles
  32. *
  33. * @author Gijs Jorissen
  34. * @since 0.3
  35. *
  36. */
  37. function register_styles()
  38. {
  39. if( CUZTOM_JQUERY_UI_STYLE != 'none' )
  40. {
  41. if( CUZTOM_JQUERY_UI_STYLE == 'cuztom' )
  42. {
  43. wp_register_style( 'cuztom_jquery_ui_css',
  44. $this->url . '/assets/css/jquery_ui.css',
  45. false,
  46. CUZTOM_VERSION,
  47. 'screen'
  48. );
  49. }
  50. else
  51. {
  52. wp_register_style( 'cuztom_jquery_ui_css',
  53. 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/' . CUZTOM_JQUERY_UI_STYLE . '/jquery-ui.css',
  54. false,
  55. CUZTOM_VERSION,
  56. 'screen'
  57. );
  58. }
  59. }
  60. wp_register_style( 'cuztom_colorpicker_css',
  61. $this->url . '/assets/css/colorpicker.css',
  62. false,
  63. CUZTOM_VERSION,
  64. 'screen'
  65. );
  66. wp_register_style( 'cuztom_css',
  67. $this->url . '/assets/css/style.css',
  68. array( 'thickbox' ),
  69. CUZTOM_VERSION,
  70. 'screen'
  71. );
  72. }
  73. /**
  74. * Enqueues styles
  75. *
  76. * @author Gijs Jorissen
  77. * @since 0.3
  78. *
  79. */
  80. function enqueue_styles()
  81. {
  82. wp_enqueue_style( 'cuztom_jquery_ui_css' );
  83. wp_enqueue_style( 'cuztom_colorpicker_css' );
  84. wp_enqueue_style( 'cuztom_css' );
  85. }
  86. /**
  87. * Registers scripts
  88. *
  89. * @author Gijs Jorissen
  90. * @since 0.3
  91. *
  92. */
  93. function register_scripts()
  94. {
  95. wp_register_script( 'cuztom_colorpicker_js',
  96. $this->url . '/assets/js/jquery.colorpicker.js',
  97. array( 'jquery' ),
  98. CUZTOM_VERSION,
  99. true
  100. );
  101. wp_register_script( 'cuztom_js',
  102. $this->url . '/assets/js/functions.js',
  103. array( 'jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'jquery-ui-tabs', 'jquery-ui-accordion', 'cuztom_colorpicker_js', 'jquery-ui-sortable', 'thickbox' ),
  104. CUZTOM_VERSION,
  105. true
  106. );
  107. }
  108. /**
  109. * Enqueues scripts
  110. *
  111. * @author Gijs Jorissen
  112. * @since 0.3
  113. *
  114. */
  115. function enqueue_scripts()
  116. {
  117. wp_enqueue_script( 'cuztom_colorpicker_js' );
  118. wp_enqueue_script( 'cuztom_js' );
  119. self::localize_scripts();
  120. }
  121. /**
  122. * Localizes scripts
  123. *
  124. * @author Gijs Jorissen
  125. * @since 1.1.1
  126. *
  127. */
  128. function localize_scripts()
  129. {
  130. wp_localize_script( 'cuztom_js', 'Cuztom', array(
  131. 'home_url' => get_home_url(),
  132. 'ajax_url' => admin_url( 'admin-ajax.php' ),
  133. 'date_format' => get_option( 'date_format' ),
  134. 'remove_image' => __( 'Remove current image', CUZTOM_TEXTDOMAIN ),
  135. 'remove_file' => __( 'Remove current file', CUZTOM_TEXTDOMAIN )
  136. ) );
  137. }
  138. /**
  139. * Beautifies a string. Capitalize words and remove underscores
  140. *
  141. * @param string $string
  142. * @return string
  143. *
  144. * @author Gijs Jorissen
  145. * @since 0.1
  146. *
  147. */
  148. static function beautify( $string )
  149. {
  150. return apply_filters( 'cuztom_beautify', ucwords( str_replace( '_', ' ', $string ) ) );
  151. }
  152. /**
  153. * Uglifies a string. Remove underscores and lower strings
  154. *
  155. * @param string $string
  156. * @return string
  157. *
  158. * @author Gijs Jorissen
  159. * @since 0.1
  160. *
  161. */
  162. static function uglify( $string )
  163. {
  164. return apply_filters( 'cuztom_uglify', str_replace( '-', '_', sanitize_title( $string ) ) );
  165. }
  166. /**
  167. * Makes a word plural
  168. *
  169. * @param string $string
  170. * @return string
  171. *
  172. * @author Gijs Jorissen
  173. * @since 0.1
  174. *
  175. */
  176. static function pluralize( $string )
  177. {
  178. $last = $string[strlen( $string ) - 1];
  179. if( $last != 's' )
  180. {
  181. if( $last == 'y' )
  182. {
  183. $cut = substr( $string, 0, -1 );
  184. //convert y to ies
  185. $string = $cut . 'ies';
  186. }
  187. else
  188. {
  189. // just attach a s
  190. $string = $string . 's';
  191. }
  192. }
  193. return apply_filters( 'cuztom_pluralize', $string );
  194. }
  195. function _is_wp_callback( $callback )
  196. {
  197. return ( ! is_array( $callback ) ) || ( is_array( $callback ) && ( ( isset( $callback[1] ) && ! is_array( $callback[1] ) && method_exists( $callback[0], $callback[1] ) ) || ( isset( $callback[0] ) && ! is_array( $callback[0] ) && class_exists( $callback[0] ) ) ) );
  198. }
  199. /**
  200. * Recursive method to determine the path to the Cuztom folder
  201. *
  202. * @param string $path
  203. * @return string
  204. *
  205. * @author Gijs Jorissen
  206. * @since 0.4.1
  207. *
  208. */
  209. function _determine_cuztom_url( $path = __FILE__ )
  210. {
  211. if( defined( 'CUZTOM_URL' ) && CUZTOM_URL != '' )
  212. {
  213. $this->url = CUZTOM_URL;
  214. }
  215. else
  216. {
  217. $path = dirname( $path );
  218. $path = str_replace( '\\', '/', $path );
  219. $explode_path = explode( '/', $path );
  220. $current_dir = $explode_path[count( $explode_path ) - 1];
  221. array_push( $this->url, $current_dir );
  222. if( $current_dir == 'wp-content' )
  223. {
  224. // Build new paths
  225. $path = '';
  226. $directories = array_reverse( $this->url );
  227. foreach( $directories as $dir )
  228. {
  229. $path = $path . '/' . $dir;
  230. }
  231. $this->url = $path;
  232. }
  233. else
  234. {
  235. return $this->_determine_cuztom_url( $path );
  236. }
  237. }
  238. }
  239. }