diff --git a/application/classes/Model/Client.php b/application/classes/Model/Client.php index 09ecc17..a6ff0c1 100644 --- a/application/classes/Model/Client.php +++ b/application/classes/Model/Client.php @@ -34,7 +34,6 @@ class Model_Client extends ORM { ), 'name' => array( array('not_empty'), - array('min_length', array(':value', 5)), ), 'sex' => array( array('max_length', array(':value', 1)), diff --git a/application/classes/Task/Migrate/Smartresponder.php b/application/classes/Task/Migrate/Smartresponder.php index 492a3c5..2f71d10 100644 --- a/application/classes/Task/Migrate/Smartresponder.php +++ b/application/classes/Task/Migrate/Smartresponder.php @@ -14,14 +14,14 @@ class Task_Migrate_Smartresponder extends Minion_Task { protected $_options = array( 'csv' => NULL, - 'group' => NULL, + 'group_id' => NULL, ); public function build_validation(Validation $validation) { return parent::build_validation($validation) ->rule('csv', 'not_empty') // Require this param - ->rule('group', 'not_empty'); // Require this param + ->rule('group_id', 'not_empty'); // Require this param } /** @@ -44,9 +44,9 @@ class Task_Migrate_Smartresponder extends Minion_Task $db->begin(); $transcoder = Transcoder::create(); - $group = ORM::factory('Group')->where('name', '=', $params['group'])->find(); + $group = ORM::factory('Group')->where('id', '=', $params['group_id'])->find(); if ( ! $group->loaded()) { - echo "No group with name " . $params['group'] . " found.\n"; + echo "No group with id " . $params['group_id'] . " found.\n"; return; } @@ -54,24 +54,37 @@ class Task_Migrate_Smartresponder extends Minion_Task { if (($handle = fopen($path, "r")) !== FALSE) { echo "File opened.\n"; - $query = DB::query( - Database::INSERT, - 'INSERT INTO clients (email, name, group_id) - VALUES (:email, :name, :group_id)' - ) - ->bind(':email', $email) - ->bind(':name', $name) - ->bind(':group_id', $group->id); - while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { - $email = $data[0]; - $name = $transcoder->transcode($data[1] . ' ' . $data[2], 'cp1251'); - $sex = $data[5]; - $referrer = $data[13]; - $city = $transcoder->transcode($data[7], 'cp1251'); - $country = $data[6]; + $client = ORM::factory('Client')->where('email', '=', $data[0]); + if (!$client->loaded()) { + $client = ORM::factory('Client'); + $client->email = $data[0]; + } + $name = trim($transcoder->transcode($data[1] . ' ' . $data[2], 'cp1251')); + $client->name = $name; + $client->sex = $data[5]; + if (!empty($data[13])) + { + $client->referrer = $data[13]; + } + if (!empty($data[7])) + { + $client->city = $transcoder->transcode($data[7], 'cp1251'); + } + if (!empty($data[6])) + { + $client->country = $data[6]; + } echo "Importing client " . $name . ".\n"; - $query->execute(); + try + { + $client->customize(); + $client->save(); + } catch (ORM_Validation_Exception $e) { + continue; + var_dump($client->object()); + } + $client->add('group', $group->id); } $db->commit(); } else {