2013-03-07 4 views
2

나는 Joomla 3을 사용하고 있으며 SQL 또는 CSV를 통해 약 500 명의 사용자를 대량으로 가져올 수 있기를 원합니다. 이 작업을 수행 할 확장 프로그램을 찾고 있었지만 버전 3에 설치되지 않는 버전 2.5 용 솔루션을 찾을 수만있었습니다.Joomla 3 대량 사용자 가져 오기

기본적으로 찾고있는 것은 설명 또는 아키텍처에 대한 일종의 것입니다. 사용자가 joomla 3 데이터베이스에 추가되는 방법에 대한 뷰.

감사합니다,

마이클

답변

-1

줌라는 훌륭한 프로그램입니다. 더 많은 모듈을 보유하고 있으며 더 나은 지원을 받고 있기 때문에 2.5를 권장합니다. 3에는 여전히 버그가 있습니다. 그러나 행운을 빈다. 나는 당신이 당신의 대답, 승자를 찾길 바래!

당신은 최고입니다!

+0

줌라는 위대한 프로그램입니다. 더 많은 모듈을 보유하고 있으며 더 나은 지원을 받고 있기 때문에 2.5를 권장합니다. 3에는 여전히 버그가 있습니다. 그러나 행운을 빈다. 나는 당신이 당신의 대답, 승자를 찾길 바래! 정말 대단해! – machiavelli

0

나는 그것을 찾을 수 없으므로, Joomla 1.5 용으로 작성된 PHP 스크립트를 새 데이터베이스 스키마로 업데이트했습니다.

<?php 

// Handle form upload 
if(isset($_POST['import'])) 
    { 

    $mysql_host    = trim($_POST['mysql_host']); 
    $mysql_user    = trim($_POST['mysql_username']); 
    $mysql_password   = trim($_POST['mysql_password']); 
    $mysql_schema   = trim($_POST['mysql_schema']); 
    $table_prefix   = trim($_POST['table_prefix']); 

    // Validate MySQL details  
    if(!mysql_connect($mysql_host, $mysql_user, $mysql_password) || !mysql_select_db($mysql_schema)) { 
     echo 'Supplied MySQL details were incorrect - aborting'; 
     return; 
     } 

     // set tablenames 
     $tb_users = $table_prefix . 'users'; 
     $tb_usergroups = $table_prefix . 'usergroups'; 
     $tb_user_usergroup_map = $table_prefix . 'user_usergroup_map'; 

     // Validate File Name 
     if($_FILES["csv"]["error"] != 0) { 
      printf('Invalid file name: "%s" - Error code "%s" <br />', $_FILES['csv']['tmp_name'], $_FILES["csv"]["error"]); 
      die('<strong>Upload aborted...</strong><br />'); 
     } else { 
      printf('Importing the following csv file<br /> 
        File: "%s"<br /> 
        Size: "%s" bytes<br />', $_FILES['csv']['name'], $_FILES['csv']['size']); 
     } 

     // open cvs file 
     $fp = fopen($_FILES['csv']['tmp_name'], 'r'); 

     // validate data 
     $valid_data = true; 
     while($user = fgetcsv($fp)) { 

      // Verify name 
      if(!isset($user[0])) { 
       display_user('<br /><strong>ERROR!!! Invalid Name </strong><br />', $user); 
       $valid_data = false; 
      } elseif($user[0] == '') { 
       display_user('<br /><strong>ERROR!!! Invalid Name </strong><br />', $user); 
       $valid_data = false; 
       } 

      // Verify username 
      if(!isset($user[1])) { 
       display_user('<br /><strong>ERROR!!! Invalid username </strong><br />', $user); 
       $valid_data = false; 
      } elseif($user[1] == '') { 
       display_user('<br /><strong>ERROR!!! Invalid username </strong><br />', $user); 
       $valid_data = false; 
      } 

      // Verify email 
      if(!isset($user[2])) { 
       display_user('<br /><strong>ERROR!!! Invalid email </strong><br />', $user); 
       $valid_data = false; 
      } elseif($user[2] == '') { 
       display_user('<br /><strong>ERROR!!! Invalid email </strong><br />', $user); 
       $valid_data = false; 
      } 

      // Verify Password 
      if(!isset($user[3])) { 
       display_user('<br /><strong>ERROR!!! Invalid password </strong><br />', $user); 
       $valid_data = false; 
      } elseif($user[3] == '') { 
       display_user('<br /><strong>ERROR!!! Invalid password </strong><br />', $user); 
       $valid_data = false; 
      } 

      // Verify usergroup 
      if(!isset($user[4])) { 
       display_user('<br /><strong>ERROR!!! Invalid usergroup </strong><br />', $user); 
       $valid_data = false; 
      } elseif($user[4] == '') { 
       display_user('<br /><strong>ERROR!!! Invalid usergroup </strong><br />', $user); 
       $valid_data = false; 
      } 

      // Check duplicate username 
      $sql = ' 
        SELECT COUNT(*) AS duplicate_username 
        FROM '.$tb_users.' 
        WHERE username = "'.$user[1].'"'; 

      $result = mysql_query($sql); 
      if (!$result) { 
       die('Invalid query: ' . mysql_error()); 
      } 

      while ($row = mysql_fetch_assoc($result)) { 
       $duplicate_users = $row['duplicate_username']; 
      } 

      if ($duplicate_users > 0) { 
       display_user('<br /><strong>ERROR!!! Duplicate username </strong><br />', $user); 
        $valid_data = false; 
      } 

      // Check duplicate email 
      $sql = ' 
        SELECT COUNT(*) AS duplicate_email 
        FROM '.$tb_users.' 
        WHERE email = "'.$user[2].'"'; 

      $result = mysql_query($sql); 
      if (!$result) { 
       die('Invalid query: ' . mysql_error()); 
      } 

      while ($row = mysql_fetch_assoc($result)) { 
       $duplicate_users = $row['duplicate_email']; 
      } 

      if ($duplicate_users > 0) { 
       display_user('<br /><strong>ERROR!!! Duplicate email </strong><br />', $user); 
        $valid_data = false; 
      } 

    } 


    if(!$valid_data) { 
     die('<strong>CSV file contains errors. Upload Aborted!</strong>'); 
    } else { 
     printf('<strong>Data is valid. Uploading users...</strong><br />'); 
    } 


    // Count initial users 
    $sql = ' 
      SELECT COUNT(*) AS initial_users 
      FROM '.$tb_users.' 
      ' 
     ; 

    $result = mysql_query($sql); 
    if (!$result) { 
     die('Invalid query: ' . mysql_error()); 
    } 

    while ($row = mysql_fetch_assoc($result)) { 
     $initial_users = $row['initial_users']; 
    } 



    // Load users 
    // open cvs file 
    $fp = fopen($_FILES['csv']['tmp_name'], 'r'); 

    $counter = 0; 
    while($user = fgetcsv($fp)) { 


     // Check duplicate username 
     $valid_username = true; 
     $sql = ' 
       SELECT COUNT(*) AS duplicate_username 
       FROM '.$tb_users.' 
       WHERE username = "'.$user[1].'"'; 

     $result = mysql_query($sql); 
     if (!$result) { 
      die('Invalid query: ' . mysql_error()); 
     } 

      while ($row = mysql_fetch_assoc($result)) { 
      $duplicate_username = $row['duplicate_username']; 
     } 

     if ($duplicate_users > 0) { 
      display_user('<br /><strong>ERROR!!! Duplicate username found in database</strong><br />', $user); 
       $valid_username = false; 
     } 

     // Check duplicate email 
     $valid_mail = true; 
     $sql = ' 
       SELECT COUNT(*) AS duplicate_email 
       FROM '.$tb_users.' 
       WHERE email = "'.$user[2].'"'; 

     $result = mysql_query($sql); 
     if (!$result) { 
      die('Invalid query: ' . mysql_error()); 
     } 

     while ($row = mysql_fetch_assoc($result)) { 
      $duplicate_users = $row['duplicate_email']; 
     } 

     if ($duplicate_users > 0) { 
      display_user('<br /><strong>ERROR!!! Duplicate email found in database</strong><br />', $user); 
       $valid_mail = false; 
     } 

     if(!$valid_username or !$valid_mail) { 
      printf('<strong>WARNING!!! User not uploaded</strong><br /><br />'); 
     } else { 

      // Upload user 
      display_user('<br />', $user); 


      // Encypt password if required  
      $user_password = isset($_POST['md5_passwords']) ? md5($user[3]) : sql_prep($user[3]); 

      // Insert record into users 
      $sql = " 
       INSERT INTO ".$tb_users." 
       SET 
        name   = '".sql_prep($user[0])."', 
        username  = '".sql_prep($user[1])."', 
        email   = '".sql_prep($user[2])."', 
        password  = '".$user_password."', 
        registerDate = NOW(), 
        activation  = '', 
        params   = '{\"admin_style\":\"\",\"admin_language\":\"\",\"language\":\"\",\"editor\":\"\",\"helpsite\":\"\",\"timezone\":\"\"}', 
        otpKey   = '', 
        otep   = ''     
      "; 

      $result = mysql_query($sql); 
      if (!$result) { 
       die('Invalid query: ' . mysql_error()); 
       } 

      // Retrieve last uploaded user's ID 
      list($user_id) = mysql_fetch_row(mysql_query('SELECT LAST_INSERT_ID()')); 

      printf('Assigned user ID: '.$user_id.'<br />'); 


      // Insert record user_group_map 
      $sql = ' 
        INSERT INTO '.$tb_user_usergroup_map.' 
       SET 
        user_id = '.$user_id.', 
        group_id = '.$user[4].' 
       '; 

      $result = mysql_query($sql); 
      if (!$result) { 
       die('Invalid query: ' . mysql_error()); 
       } 

     echo 'done.<br />'; 
     flush(); 

     } 

     // Update counter 
     $counter++; 

    } 

    // Count final users 
    $sql = ' 
      SELECT COUNT(*) AS final_users 
      FROM '.$tb_users.' 
      ' 
     ; 

    $result = mysql_query($sql); 
    if (!$result) { 
     die('Invalid query: ' . mysql_error()); 
    } 

    while ($row = mysql_fetch_assoc($result)) { 
     $final_users = $row['final_users']; 
    } 


    if(($final_users - $initial_users) == $counter) { 
     echo '<br /><br /><strong>Done. <br /> 
       Uploaded '.$counter.' users </strong>'; 
    } else { 
     echo '<br /><br /><strong>ERROR!!! <br /> 
       Uploaded only some users</strong><br /> 
       Users submitted: '.$counter.'<br /> 
       Users uploaded : '.($final_users - $initial_users); 
    } 


} else { 


    // show upload form 
    ?> 
    <html><head><title>Bulk import users into Joomla 3</title></head><body> 
    <h1>Import Users to Joomla</h1> 
    <p> 
     Use this script to do a bulk import of users into Joomla 1.5.<br /> 
    Upload a CSV file with the following format:<br /> 
    <code> 
     name, username, email, password, group_number 
    </code><br /> 
    Wrap details with commas in them in quotes. 
    </p> 
    <hr /> 
    <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data"> 
     <input type="hidden" name="import" value="1" /> 
     <table cellpadding="4px"> 
      <tr> 
       <td>CSV File: </td> 
       <td><input type="file" name="csv" /></td> 
      </tr> 
      <tr> 
       <td>MD5 Hash Passwords: </td> 
       <td><input type="checkbox" name="md5_passwords" /><br /><small>*Check this option if the passwords in your CSV are in plain text</small></td> 
      </tr> 
      <tr> 
       <td>Joomla Table Prefix: </td> 
       <td><input type="text" name="table_prefix" value="jos_" /></td> 
      </tr> 
      <tr> 
       <td>Joomla Database Name: </td> 
       <td><input type="text" name="mysql_schema" value="joomla" /></td> 
      </tr> 
      <tr> 
       <td>MySQL Host: </td> 
       <td><input type="text" name="mysql_host" value="localhost" /></td> 
      </tr> 
      <tr> 
       <td>MySQL Username: </td> 
       <td><input type="text" name="mysql_username" value="" /></td> 
      </tr> 
      <tr> 
       <td>MySQL Password: </td> 
       <td><input type="password" name="mysql_password" value="" /></td> 
      </tr> 
      <tr> 
       <td></td> 
       <td><input type="submit" name="submit" value=" Import Users! " /></td> 
      </tr> 
     </table> 
    </form> 
    </body></html> 

    <?php 

} 

function sql_prep($var) { 
    return mysql_real_escape_string($var); 
} 

function display_user($message, $user) { 

    printf($message); 
    printf('Name: "%s" ... ', sql_prep($user[0])); 
    printf(' Username: "%s" ... ', sql_prep($user[1])); 
    printf(' Password: "%s" ... ', sql_prep($user[3])); 
    printf(' Mail: "%s" ... ', sql_prep($user[2])); 
    printf(' Group: "%s" ', sql_prep($user[4])); 
    printf('<br />'); 

    return; 

} 

?> 
관련 문제