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')); } } }