plug_adminusers.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. if (!class_exists("plug_adminusers")) {
  3. class plug_adminusers {
  4. function __construct($ns) {
  5. $this->title = __("adminusers", "dagsopt");
  6. $this->pluginname = $ns->pluginname;
  7. $this->file = $ns->file;
  8. $this->ns = $ns;
  9. }
  10. function start() {
  11. add_action('manage_users_custom_column', array(&$this, 'imel_custom_column_userfield'), 15, 3);
  12. add_filter('manage_users_columns', array(&$this, 'imel_column_userfield'), 15, 1);
  13. add_filter('manage_users_sortable_columns', array(&$this, 'user_sortable_columns'), 15, 1);
  14. if (is_admin()) {
  15. //prolly not necessary, but I do want to be sure this only runs within the admin
  16. add_action('pre_user_query', array(&$this, 'my_user_query'));
  17. }
  18. }
  19. function help() {
  20. ?>
  21. <?php echo (__("Adds adminusers functions", "dagsopt")) ?>
  22. <?php
  23. }
  24. function Option($pre) {
  25. // update_option($pre . '_support_splash', $_POST[$pre . '_support_splash']);
  26. }
  27. function admin_line($pre) {
  28. ?>
  29. <hr>
  30. <?php
  31. }
  32. function imel_column_userfield($defaults) {
  33. $defaults['lastlogin'] = __('Seneste Login', 'lastlogin-column');
  34. $defaults['lastview'] = __('Seneste Side', 'lastlogin-column');
  35. $defaults['imel-login-userfield'] = __('Ældste Session', 'login-column');
  36. $defaults['imel-login2-userfield'] = __('Nyeste Session', 'login2-column');
  37. $defaults['abostatus'] = __('Abo Status', 'id-column');
  38. $defaults['proselect'] = __('Pro/Select', 'user-column');
  39. $defaults['gruppe'] = __('Gruppe', 'id-column');
  40. $defaults['imel-navn-userfield'] = __('Navn', 'navn-column');
  41. $defaults['session'] = __('sessions', 'session-column');
  42. $defaults['id'] = __('id', 'id-column');
  43. return $defaults;
  44. }
  45. function user_sortable_columns($columns) {
  46. $columns['session'] = 'session';
  47. $columns['id'] = 'id';
  48. $columns['gruppe'] = 'gruppe';
  49. $columns['proselect'] = 'proselect';
  50. $columns['lastlogin'] = 'lastlogin';
  51. $columns['lastview'] = 'lastview';
  52. return $columns;
  53. }
  54. function my_user_query($userquery) {
  55. if ('session' == $userquery->query_vars['orderby']) {
  56. global $wpdb;
  57. $userquery->query_from .= " LEFT OUTER JOIN $wpdb->usermeta AS alias ON ($wpdb->users.ID = alias.user_id) "; //note use of alias
  58. $userquery->query_where .= " AND alias.meta_key = 'session_tokens' "; //which meta are we sorting with?
  59. $userquery->query_orderby = " ORDER BY length(alias.meta_value) " . ($userquery->query_vars["order"] == "ASC" ? "asc " : "desc "); //set sort order
  60. }
  61. if ('proselect' == $userquery->query_vars['orderby']) {
  62. global $wpdb;
  63. $userquery->query_from .= " LEFT OUTER JOIN $wpdb->usermeta AS alias ON ($wpdb->users.ID = alias.user_id) "; //note use of alias
  64. $userquery->query_where .= " AND alias.meta_key = 'Proselect' "; //which meta are we sorting with?
  65. $userquery->query_orderby = " ORDER BY alias.meta_value " . ($userquery->query_vars["order"] == "ASC" ? "asc " : "desc "); //set sort order
  66. }
  67. if ('gruppe' == $userquery->query_vars['orderby']) {
  68. global $wpdb;
  69. $userquery->query_from .= " LEFT OUTER JOIN $wpdb->usermeta AS alias ON ($wpdb->users.ID = alias.user_id) "; //note use of alias
  70. $userquery->query_where .= " AND alias.meta_key = 'Gruppe' "; //which meta are we sorting with?
  71. $userquery->query_orderby = " ORDER BY alias.meta_value " . ($userquery->query_vars["order"] == "ASC" ? "asc " : "desc "); //set sort order
  72. }
  73. if ('lastlogin' == $userquery->query_vars['orderby']) {
  74. global $wpdb;
  75. $userquery->query_from .= " LEFT OUTER JOIN $wpdb->usermeta AS alias ON ($wpdb->users.ID = alias.user_id) "; //note use of alias
  76. $userquery->query_where .= " AND alias.meta_key = 'last_login' "; //which meta are we sorting with?
  77. $userquery->query_orderby = " ORDER BY alias.meta_value " . ($userquery->query_vars["order"] == "ASC" ? "asc " : "desc "); //set sort order
  78. }
  79. if ('lastview' == $userquery->query_vars['orderby']) {
  80. global $wpdb;
  81. $userquery->query_from .= " LEFT OUTER JOIN $wpdb->usermeta AS alias ON ($wpdb->users.ID = alias.user_id) "; //note use of alias
  82. $userquery->query_where .= " AND alias.meta_key = 'last_view' "; //which meta are we sorting with?
  83. $userquery->query_orderby = " ORDER BY alias.meta_value " . ($userquery->query_vars["order"] == "ASC" ? "asc " : "desc "); //set sort order
  84. }
  85. if ('id' == $userquery->query_vars['orderby']) {
  86. global $wpdb;
  87. //$userquery->query_from .= " LEFT OUTER JOIN $wpdb->usermeta AS alias ON ($wpdb->users.ID = alias.user_id) "; //note use of alias
  88. //$userquery->query_where .= " AND alias.meta_key = 'session_tokens' "; //which meta are we sorting with?
  89. $userquery->query_orderby = " ORDER BY ID " . ($userquery->query_vars["order"] == "ASC" ? "asc " : "desc "); //set sort order
  90. }
  91. }
  92. function imel_custom_column_userfield($value, $column_name, $id) {
  93. if ($column_name == 'abostatus') {
  94. $s = get_user_meta($id, 'abo_status', true);
  95. $s .= " " . get_user_meta($id, 'abo_statuscode', true);
  96. return $s;
  97. }
  98. if ($column_name == 'lastlogin') {
  99. $ss = get_user_meta($id, 'last_login', true);
  100. if ($ss) {
  101. $the_login_date = human_time_diff($ss);
  102. return $the_login_date;
  103. } else {
  104. return " ";
  105. }
  106. }
  107. if ($column_name == 'lastview') {
  108. $ss = get_user_meta($id, 'last_view', true);
  109. if ($ss) {
  110. $the_login_date = human_time_diff($ss);
  111. return $the_login_date;
  112. } else {
  113. return " ";
  114. }
  115. }
  116. if ($column_name == 'proselect') {
  117. $s = get_user_meta($id, 'Proselect', true);
  118. return $s;
  119. }
  120. if ($column_name == 'gruppe') {
  121. $s = get_user_meta($id, 'Gruppe', true);
  122. return $s;
  123. }
  124. if ($column_name == 'id') {
  125. return $id;
  126. }
  127. if ($column_name == 'imel-navn-userfield') {
  128. return get_user_meta($id, 'Navn', true);
  129. }
  130. if ($column_name == 'session2') {
  131. $ss = get_user_meta($id, 'session_tokens', true);
  132. if ($ss) {
  133. $s = "";
  134. foreach ($ss as $name => $obj) {
  135. // $s .= human_time_diff($obj['login']) . " " . $obj['ua'] . "\n";
  136. $s .= human_time_diff($obj['login']) . " <br> ";
  137. }
  138. return $s;
  139. } else {
  140. return "N";
  141. }
  142. }
  143. if ($column_name == 'session') {
  144. $ss = get_user_meta($id, 'session_tokens', true);
  145. if ($ss) {
  146. $s = "";
  147. $i = 0;
  148. foreach ($ss as $name => $obj) {
  149. if ($i < 2) {
  150. $s .= human_time_diff($obj['login']) . " ";
  151. }
  152. $i++;
  153. }
  154. return count($ss) . ' | ' . $s . '';
  155. } else {
  156. return "N";
  157. }
  158. }
  159. if ($column_name == 'imel-login2-userfield') {
  160. $ss = get_user_meta($id, 'session_tokens', true);
  161. if ($ss) {
  162. //$f = array_pop(array_keys($ss));
  163. //return human_time_diff($ss[$f]['login']);
  164. return "L";
  165. } else {
  166. return "N";
  167. }
  168. }
  169. }
  170. }
  171. global $plug_adminusers;
  172. $plug_adminusers = new plug_adminusers($this);
  173. $this->dagsopt['plug_adminusers'] = $plug_adminusers;
  174. }