plug_usermanager.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <?php
  2. if (!class_exists("plug_usermanager")) {
  3. function arrayFromCSV($file, $hasFieldNames = false, $delimiter = ',', $enclosure='') {
  4. $result = Array();
  5. $size = filesize($file) +1;
  6. $file = fopen($file, 'r');
  7. #TO DO: There must be a better way of finding out the size of the longest row... until then
  8. if ($hasFieldNames) $keys = fgetcsv($file, $size, $delimiter, $enclosure);
  9. while ($row = fgetcsv($file, $size, $delimiter, $enclosure)) {
  10. $n = count($row); $res=array();
  11. for($i = 0; $i < $n; $i++) {
  12. $idx = ($hasFieldNames) ? $keys[$i] : $i;
  13. $res[$idx] = $row[$i];
  14. }
  15. $result[] = $res;
  16. }
  17. fclose($file);
  18. return $result;
  19. }
  20. function sanitize_username($username) {
  21. $parts = explode("@", $username);
  22. if (count($parts) == 2) {
  23. $username = $parts[0];
  24. }
  25. return $username;
  26. }
  27. class plug_usermanager {
  28. function __construct($ns) {
  29. $this->title = __("plug_usermanager","dagsopt");
  30. $this->pluginname = $ns->pluginname;
  31. $this->file = $ns->file;
  32. $this->ns = $ns;
  33. }
  34. function start() {
  35. // register_setting("section", "demo-file", array(&this,"handle_file_upload"));
  36. add_role( "betalende-abonnent", "Betalende abonnent", array( 'read' => true, 'level_0' => true ) );
  37. }
  38. function handle_file_upload($option)
  39. {
  40. if(!empty($_FILES["demo-file"]["tmp_name"]))
  41. {
  42. $urls = wp_handle_upload($_FILES["demo-file"], array('test_form' => FALSE));
  43. $temp = $urls["url"];
  44. return $temp;
  45. }
  46. return $option;
  47. }
  48. function help(){
  49. ?>
  50. plug_usermanager
  51. <?php
  52. }
  53. function Option($pre){
  54. update_option ( $pre.'_delimiter', $_POST [ $pre.'_delimiter' ] );
  55. update_option ( $pre.'_textenclose', $_POST [ $pre.'_textenclose' ] );
  56. $nonce = $_REQUEST['_wpnonce'];
  57. if ( ! wp_verify_nonce( $nonce, 'filen-nonce' ) ) {
  58. // This nonce is not valid.
  59. die( __( 'Security check', 'textdomain' ) );
  60. } else {
  61. // The nonce was valid.
  62. // Do stuff here.
  63. if(isset($_FILES) && !empty($_FILES)){
  64. if($_FILES['filen']){
  65. $upload = wp_upload_dir();
  66. $upload_dir = $upload['basedir'];
  67. $upload_dir = $upload_dir . '/assets';
  68. move_uploaded_file($_FILES['filen']['tmp_name'], $upload_dir."/users.csv");
  69. }
  70. }
  71. }
  72. }
  73. function Cruncher($pre){
  74. if(isset($_REQUEST['nodryrun'])){
  75. $testmode = false;
  76. echo("RUNNING LIVE<br>");
  77. }else{
  78. echo("RUNNING TEST<br>");
  79. $testmode = true;
  80. }
  81. $upload = wp_upload_dir();
  82. $upload_dir = $upload['basedir'];
  83. $upload_dir = $upload_dir . '/assets';
  84. $arr = arrayFromCSV($upload_dir."/users.csv",true,get_option( $pre.'_delimiter',';' ), get_option( $pre.'_textenclose','double' )=="double"?'"':"'");
  85. $ii= 0;
  86. $max = count($arr);
  87. $resu = array();
  88. foreach ($arr as $num => $user) {
  89. $ii ++;
  90. echo("$max : $ii -> ");
  91. flush();
  92. if($user['Spærret']=="" ){
  93. $user_email =$user['E-mail'];
  94. $user_name = sanitize_username("T".$user['Telefon']);
  95. $user_id = username_exists( $user_name );
  96. if ( ! $user_id && false == email_exists( $user_email ) ) {
  97. $random_password = wp_generate_password( $length = 12, $include_standard_special_chars = false );
  98. if($testmode){
  99. //$user_id = wp_create_user( $user_name, $random_password, $user_email );
  100. //wp_update_user( array( 'ID' => $user_id, 'role' => 'betalende-abonnent' ) );
  101. //wp_send_new_user_notifications($user_id,'both');
  102. $resu[] = "$user_id mock created : $user_name $user_email ";
  103. }else{
  104. $user_id = wp_create_user( $user_name, $random_password, $user_email );
  105. wp_update_user( array( 'ID' => $user_id, 'role' => 'betalende-abonnent' ) );
  106. wp_send_new_user_notifications($user_id,'both');
  107. $resu[] = "$user_id created : $user_name $user_email ";
  108. }
  109. } else {
  110. $resu[] = "$user_id or $user_email exists";
  111. $random_password = __( 'User already exists. Password inherited.', 'textdomain' );
  112. }
  113. echo ("$user_id, $user_name, $random_password, $user_email <br>");
  114. flush();
  115. }else{
  116. $resu[] = "$user_email spærret";
  117. }
  118. }
  119. if($testmode){
  120. print_r($resu);
  121. echo("DONE test");
  122. }else{
  123. $aemail = get_bloginfo('admin_email');
  124. $rr = wp_mail($aemail, 'CCR '. count($resu)." : ". getenv('HOSTNAME')." : ".$_SERVER['REMOTE_ADDR']." : " . $_SERVER['SERVER_ADDR'] . " : ". $_SERVER['SERVER_NAME']." ".date("U"), "::".print_r($resu,true));
  125. echo("DONE live");
  126. }
  127. if(!isset($_REQUEST['nodryrun'])){
  128. ?>
  129. <a href="/wp-admin/admin.php?page=dagsopt-options&crunchit=1&nodryrun=1" class="btn">Crunch live</a>
  130. <?php
  131. }
  132. }
  133. /*<input id="link_image" value="test">
  134. <img src="" id="background_image">
  135. <a id="upload_image_button" href="#"><?php _e('Set image', 'dagsopt'); ?></a>
  136. */
  137. function admin_line($pre){
  138. $upload = wp_upload_dir();
  139. $upload_dir = $upload['basedir'];
  140. $upload_dir = $upload_dir . '/assets';
  141. ?>
  142. <table>
  143. <?php
  144. if(file_exists($upload_dir."/users.csv")){
  145. $lastmodified = date ("F d Y H:i:s.", filemtime($upload_dir."/users.csv"));
  146. $data = file_get_contents($upload_dir."/users.csv");
  147. $lines = explode("\n",$data);
  148. ?>
  149. <tr><td>
  150. Sidste opdateret
  151. </td><td>
  152. <?php echo $lastmodified ?>
  153. </td></tr>
  154. <tr><td>
  155. Størrelse
  156. </td><td>
  157. <?php echo strlen($data) ?> bytes / linier: <?php echo(count($lines)-1); ?>
  158. </td></tr>
  159. <tr><td>Kør opdatering</td><td><a href="/wp-admin/admin.php?page=dagsopt-options&crunchit=1" class="btn">Crunch</a></td></tr>
  160. <?php } ?>
  161. <tr><td><?php echo(__("delimiter:","dagsopt")) ?></td><td><input type="text" name="<?php echo( $pre.'_delimiter' ) ?>" value="<?php echo( get_option( $pre.'_delimiter',';' ) ) ?>"></td></tr>
  162. <tr><td><?php echo(__("textenclose:","dagsopt")) ?></td><td><input type="text" name="<?php echo( $pre.'_textenclose' ) ?>" value="<?php echo( get_option( $pre.'_textenclose','"' ) ) ?>"></td></tr>
  163. </table>
  164. <?php
  165. $nonce = wp_create_nonce( 'filen-nonce' );
  166. ?>
  167. <input type="file" name="filen">
  168. <input type="hidden" name="_wpnonce" value="<?php echo $nonce ?>">
  169. <?php
  170. }
  171. }
  172. global $plug_usermanager;
  173. $plug_usermanager = new plug_usermanager($this);
  174. $this->dagsopt['plug_usermanager'] = $plug_usermanager;
  175. }