Example #1
0
 public function bulkaddAction()
 {
     $this->_helper->viewRenderer->setNoRender(true);
     if ($this->getRequest()->isPost()) {
         $upload = new Zend_File_Transfer_Adapter_Http();
         $upload->setDestination($this->getUploadPath());
         $upload->addValidator('Extension', false, 'csv');
         if ($upload->isValid()) {
             if ($upload->receive()) {
                 $userlist = array();
                 // collect some stats
                 $userstats = array('lines' => 0, 'count' => 0, 'blank' => 0, 'username_dupe' => 0, 'email_invalid' => 0);
                 $handle = fopen($upload->getFileName(), 'r');
                 while (($data = fgetcsv($handle, 1000, ',')) !== false) {
                     // count total lines
                     $userstats['lines']++;
                     if ($data[0] == 'emails') {
                         // skip first line if contains 'emails' as per instructions
                         continue;
                     } elseif ($data[0] == '') {
                         // count blank lines
                         $userstats['blank']++;
                     } else {
                         $validator = new Zend_Validate_EmailAddress();
                         // validate email address
                         if ($validator->isValid($data[0])) {
                             $splitEmail = explode('@', $data[0]);
                             // check if the username is duplicated in file
                             if (!Sendlove_Utilities::searchMultiArray($userlist, 'username', $data[0])) {
                                 // Check if the Nickname is duplicated
                                 $nick = $splitEmail[0];
                                 if (Sendlove_Utilities::searchMultiArray($userlist, 'nickname', $nick)) {
                                     $i = 1;
                                     // append number until we get a free nickname
                                     $temp_nick = $nick . (string) $i;
                                     while (Sendlove_Utilities::searchMultiArray($userlist, 'nickname', $temp_nick)) {
                                         $i++;
                                     }
                                     $nick .= (string) $i;
                                 }
                                 $userlist[] = array('username' => $data[0], 'password' => Sendlove_Utilities::createPassword(), 'nickname' => $nick, 'Active' => 1, 'Confirmed' => 1, 'status' => 'new');
                             } else {
                                 // count duplicate emails
                                 $userstats['username_dupe']++;
                             }
                         } else {
                             // count invalid emails
                             $userstats['email_invalid']++;
                         }
                     }
                 }
                 // total users to process
                 $userstats['count'] = count($userlist);
                 echo Zend_Json::encode(array('success' => true, 'message' => 'Processing ' . $userstats['count'] . ' users', 'stats' => $userstats, 'file' => basename($upload->getFileName())));
                 // write the user into the session for further processing. is this a problem?
                 $_SESSION['bulkusers'] = $userlist;
                 session_write_close();
             }
         } else {
             session_write_close();
             // upload failed
             echo Zend_Json::encode(array('success' => false, 'message' => 'Could not add the users. Make sure you uploaded a CSV file in the format specified'));
         }
     }
 }