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

/core/sort.php

https://bitbucket.org/briantrinh/m4h
PHP | 250 lines | 185 code | 18 blank | 47 comment | 16 complexity | c76ecb1fbd591ad7d591f0656514efd4 MD5 | raw file
  1. <?php
  2. ////////////////////////////////////////////////////////////////////////////////////////////////////
  3. //
  4. // File:
  5. // sort.php
  6. // Description:
  7. // This file compiles and processes the plugin's configure sort page.
  8. // Actions:
  9. // 1) compile plugin sort form
  10. // 2) process and save plugin sort fields
  11. // Date:
  12. // Added on May 3rd 2011
  13. // Copyright:
  14. // Copyright (c) 2011 Matthew Praetzel.
  15. // License:
  16. // This software is licensed under the terms of the GNU Lesser General Public License v3
  17. // as published by the Free Software Foundation. You should have received a copy of of
  18. // the GNU Lesser General Public License along with this software. In the event that you
  19. // have not, please visit: http://www.gnu.org/licenses/gpl-3.0.txt
  20. //
  21. ////////////////////////////////////////////////////////////////////////////////////////////////////
  22. /****************************************Commence Script*******************************************/
  23. // ******************************* //
  24. //________________________________** INITIALIZE **_________________________________//
  25. //////////////////////////////////** **///////////////////////////////////
  26. // ** ** //
  27. // ******************************* //
  28. if($_REQUEST['page'] !== 'members-list-configure-sort') {
  29. return;
  30. }
  31. // ******************************* //
  32. //________________________________** ADD EVENTS **_________________________________//
  33. //////////////////////////////////** **///////////////////////////////////
  34. // ** ** //
  35. // ******************************* //
  36. add_action('init','WP_members_list_sort_fields_actions');
  37. add_action('wp_ajax_order','WP_members_list_sort_fields_actions');
  38. add_action('init','WP_members_list_sort_fields_styles');
  39. add_action('init','WP_members_list_sort_fields_scripts');
  40. // ******************************* //
  41. //________________________________** SCRIPTS **_________________________________//
  42. //////////////////////////////////** **///////////////////////////////////
  43. // ** ** //
  44. // ******************************* //
  45. function WP_members_list_sort_fields_styles() {
  46. wp_enqueue_style('thickbox');
  47. wp_enqueue_style('ml-admin',get_bloginfo('wpurl').'/wp-content/plugins/members-list/css/admin.css');
  48. }
  49. function WP_members_list_sort_fields_scripts() {
  50. wp_enqueue_script('TableDnD',get_bloginfo('wpurl').'/wp-content/plugins/members-list/js/jquery.tablednd_0_5.js.php',array('jquery'),'0.5');
  51. wp_enqueue_script('thickbox');
  52. wp_enqueue_script('members-list',get_bloginfo('wpurl').'/wp-content/plugins/members-list/js/admin.js');
  53. }
  54. // ******************************* //
  55. //________________________________** ACTIONS **_________________________________//
  56. //////////////////////////////////** **///////////////////////////////////
  57. // ** ** //
  58. // ******************************* //
  59. function WP_members_list_sort_fields_actions() {
  60. global $getWP,$tern_wp_members_defaults,$current_user,$wpdb;
  61. $o = $getWP->getOption('tern_wp_members',$tern_wp_members_defaults);
  62. if(!wp_verify_nonce($_REQUEST['_wpnonce'],'tern_wp_members_nonce')) {
  63. return false;
  64. }
  65. $_REQUEST['action'] = $_REQUEST['action2'] == 'delete' ? 'delete' : $_REQUEST['action'];
  66. switch($_REQUEST['action']) {
  67. case 'order' :
  68. $a = array();
  69. foreach($_POST['field_names'] as $k => $v) {
  70. $a[$v] = $_POST['field_values'][$k];
  71. }
  72. $o['sorts'] = $a;
  73. if($getWP->getOption('tern_wp_members',$o,true)) {
  74. die('<div id="message" class="updated fade"><p>Your order has been successfully saved.</p></div>');
  75. }
  76. break;
  77. case 'field' :
  78. $n = $_POST['name'];
  79. if(in_array($_POST['field'],$o['sorts'])) {
  80. $getWP->addError('This field has already been added.');
  81. return;
  82. }
  83. $o['sorts'][$n] = $_POST['field'];
  84. $o = $getWP->getOption('tern_wp_members',$o,true);
  85. break;
  86. case 'delete' :
  87. $b = array();
  88. foreach($o['sorts'] as $k => $v) {
  89. if(!in_array($v,$_REQUEST['sorts'])) {
  90. $b[$k] = $v;
  91. }
  92. }
  93. $o['sorts'] = $b;
  94. $o = $getWP->getOption('tern_wp_members',$o,true);
  95. break;
  96. default :
  97. break;
  98. }
  99. }
  100. // ******************************* //
  101. //________________________________** SETTINGS **_________________________________//
  102. //////////////////////////////////** **///////////////////////////////////
  103. // ** ** //
  104. // ******************************* //
  105. function WP_members_list_sort_fields() {
  106. global $wpdb,$getWP,$ternSel,$tern_wp_members_defaults,$tern_wp_msg,$tern_wp_members_fields,$tern_wp_meta_fields,$notice;
  107. $o = $getWP->getOption('tern_wp_members',$tern_wp_members_defaults);
  108. ?>
  109. <div class="wrap">
  110. <div id="icon-options-general" class="icon32"><br /></div>
  111. <h2>Members List - "Fields by which to Sort"<a href="#TB_inline?width=400&height=700&inlineId=members_list_add_item" id="add_item" class="thickbox button add-new-h2">Add New</a></h2>
  112. <?php if(!empty($notice)) { ?><div id="notice" class="error"><p><?php echo $notice ?></p></div><?php } ?>
  113. <div id="tern_wp_message">
  114. <?php
  115. if(!empty($tern_wp_msg)) {
  116. echo '<div id="message" class="updated fade"><p>'.$tern_wp_msg.'</p></div>';
  117. }
  118. ?>
  119. </div>
  120. <?php if(!empty($o['sorts'])) { ?>
  121. <form id="tern_wp_members_list_fm" method="post" action="<?php bloginfo('wpurl'); ?>/wp-admin/admin.php?page=members-list-configure-sort">
  122. <div class="tablenav">
  123. <div class="alignleft actions">
  124. <select name="action2">
  125. <option value="" selected="selected">Bulk Actions</option>
  126. <option value="delete">Delete</option>
  127. </select>
  128. <input type="submit" value="Apply" name="doaction" id="doaction" class="button-secondary action" />
  129. </div>
  130. <br class="clear" />
  131. </div>
  132. <table id="members_list_fields" class="widefat fixed" cellspacing="0">
  133. <thead>
  134. <tr class="thead">
  135. <th scope="col" class="manage-column column-cb check-column" style=""><input type="checkbox" /></th>
  136. <th scope="col" class="manage-column" style="width:15%;">Name</th>
  137. <th scope="col" class="manage-column" style="width:15%;">Field</th>
  138. </tr>
  139. </thead>
  140. <tfoot>
  141. <tr class="thead">
  142. <th scope="col" class="manage-column column-cb check-column"><input type="checkbox" /></th>
  143. <th scope="col" class="manage-column">Name</th>
  144. <th scope="col" class="manage-column">Field</th>
  145. </tr>
  146. </tfoot>
  147. <tbody id="fields" class="list:sort sort-list">
  148. <?php foreach($o['sorts'] as $k => $v) { $d = empty($d) ? ' class="alternate"' : ''; ?>
  149. <tr id="list-<?php echo $v; ?>"<?php echo $d; ?>>
  150. <th scope="row" class="check-column">
  151. <input type="checkbox" name="sorts[]" id="sorts_<?php echo $v; ?>" value="<?php echo $v; ?>" />
  152. <input type="hidden" name="field_names[]" value="<?php echo $k; ?>" />
  153. <input type="hidden" name="field_values[]" value="<?php echo $v; ?>" />
  154. </th>
  155. <td>
  156. <strong><?php echo $k; ?></strong><br />
  157. <div class="row-actions">
  158. <span class='edit'>
  159. <a href="admin.php?page=members-list-configure-sort&sorts%5B%5D=<?php echo $v; ?>&action=delete&_wpnonce=<?php echo wp_create_nonce('tern_wp_members_nonce'); ?>">Delete</a>
  160. </span>
  161. </div>
  162. </td>
  163. <td>
  164. <?php echo $v; ?>
  165. </td>
  166. </tr>
  167. <?php } ?>
  168. </tbody>
  169. </table>
  170. <input type="hidden" name="action" value="order" />
  171. <input type="hidden" name="page" value="members-list-configure-sort" />
  172. <input type="hidden" id="_wpnonce" name="_wpnonce" value="<?php echo wp_create_nonce('tern_wp_members_nonce'); ?>" />
  173. </form>
  174. <?php } ?>
  175. </div>
  176. <div id="members_list_add_item" class="add_item">
  177. <form id="members_list_add_item_form" method="post" action="<?php bloginfo('wpurl'); ?>/wp-admin/admin.php?page=members-list-configure-sort">
  178. <fieldset>
  179. <h2>Add a new field by which to sort:</h2>
  180. <label for="name">Name:</label>
  181. <input type="text" name="name" />
  182. <label for="field">Field:</label>
  183. <?php
  184. foreach($tern_wp_members_fields as $k => $v) {
  185. foreach($o['sorts'] as $w) {
  186. if($v == $w['name']) {
  187. continue 2;
  188. }
  189. }
  190. $a['Standard Fields'][] = array($k,$v);
  191. }
  192. foreach($tern_wp_meta_fields as $k => $v) {
  193. foreach($o['sorts'] as $w) {
  194. if($v == $w['name']) {
  195. continue 2;
  196. }
  197. }
  198. $a['Standard Meta Fields'][] = array($k,$v);
  199. }
  200. $r = $wpdb->get_col("select distinct meta_key from $wpdb->usermeta");
  201. foreach($r as $v) {
  202. if(in_array($v,$tern_wp_members_fields) or in_array($v,$tern_wp_meta_fields)) {
  203. continue;
  204. }
  205. foreach($o['sorts'] as $w) {
  206. if($v == $w['name']) {
  207. continue 2;
  208. }
  209. }
  210. $a['Available Meta Fields'][] = array($v,$v);
  211. }
  212. echo $ternSel->create(array(
  213. 'type' => 'tiered',
  214. 'data' => $a,
  215. 'key' => 0,
  216. 'value' => 1,
  217. 'id' => 'field',
  218. 'name' => 'field',
  219. 'select_value' => 'Add New Field'
  220. ));
  221. ?>
  222. </fieldset>
  223. <input type="submit" value="Add Field" class="btn button-secondary action" />
  224. <input type="hidden" name="item" />
  225. <input type="hidden" name="action" value="field" />
  226. <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('tern_wp_members_nonce'); ?>" />
  227. </form>
  228. </div>
  229. <?php
  230. }
  231. /****************************************Terminate Script******************************************/
  232. ?>