Файловый менеджер - Редактировать - /home/kckglobal/cloud.kckglobal.net/application/libraries/import/Import_customers.php
Назад
<?php defined('BASEPATH') or exit('No direct script access allowed'); require_once(APPPATH . 'libraries/import/App_import.php'); class Import_customers extends App_import { protected $notImportableFields = []; private $countryFields = ['country', 'billing_country', 'shipping_country']; protected $requiredFields = ['firstname', 'lastname', 'email']; public function __construct() { $this->notImportableFields = hooks()->apply_filters('not_importable_clients_fields', ['userid', 'id', 'is_primary', 'password', 'datecreated', 'last_ip', 'last_login', 'last_password_change', 'active', 'new_pass_key', 'new_pass_key_requested', 'leadid', 'default_currency', 'profile_image', 'default_language', 'direction', 'show_primary_contact', 'invoice_emails', 'estimate_emails', 'project_emails', 'task_emails', 'contract_emails', 'credit_note_emails', 'ticket_emails', 'addedfrom', 'registration_confirmed', 'last_active_time', 'email_verified_at', 'email_verification_key', 'email_verification_sent_at']); if (get_option('company_is_required') == 1) { $this->requiredFields[] = 'company'; } $this->addImportGuidelinesInfo('Duplicate email rows won\'t be imported.', true); $this->addImportGuidelinesInfo('Make sure you configure the default contact permission in <a href="' . admin_url('settings?group=clients') . '" target="_blank">Setup->Settings->Customers</a> to get the best results like auto assigning contact permissions and email notification settings based on the permission.'); parent::__construct(); } public function perform() { $this->initialize(); $databaseFields = $this->getImportableDatabaseFields(); $totalDatabaseFields = count($databaseFields); foreach ($this->getRows() as $rowNumber => $row) { $insert = []; $duplicate = false; for ($i = 0; $i < $totalDatabaseFields; $i++) { if (!isset($row[$i])) { continue; } $row[$i] = $this->checkNullValueAddedByUser($row[$i]); if (in_array($databaseFields[$i], $this->requiredFields) && $row[$i] == '' && $databaseFields[$i] != 'company' && $databaseFields[$i] != 'email') { $row[$i] = '/'; } elseif (in_array($databaseFields[$i], $this->countryFields)) { $row[$i] = $this->countryValue($row[$i]); } elseif ($databaseFields[$i] == 'email') { $duplicate = $this->isDuplicateContact($row[$i]); } elseif ($databaseFields[$i] == 'stripe_id') { if (empty($row[$i]) || (!empty($row[$i]) && !startsWith($row[$i], 'cus_'))) { $row[$i] = null; } } elseif ($databaseFields[$i] == 'contact_phonenumber') { if (is_automatic_calling_codes_enabled() && !empty($row[$i])) { $customerCountryIndex = array_search('country', $databaseFields); if (isset($row[$customerCountryIndex]) && !empty($row[$customerCountryIndex])) { $customerCountry = $this->getCountry(null, $this->countryValue($row[$customerCountryIndex])); if ($customerCountry) { $callingCode = '+' . ltrim($customerCountry->calling_code, '+'); if (startsWith($row[$i], $customerCountry->calling_code)) { // with calling code but without the + prefix $row[$i] = '+' . $row[$i]; } elseif (!startsWith($row[$i], $callingCode)) { $row[$i] = $callingCode . $row[$i]; } } } } } $insert[$databaseFields[$i]] = $row[$i]; } if ($duplicate) { continue; } $insert = $this->trimInsertValues($insert); if (count($insert) > 0) { $this->incrementImported(); $id = null; if (!$this->isSimulation()) { $insert['datecreated'] = date('Y-m-d H:i:s'); $insert['donotsendwelcomeemail'] = true; if ($this->ci->input->post('default_pass_all')) { $insert['password'] = $this->ci->input->post('default_pass_all', false); } if ($this->shouldAddContactUnderCustomer($insert)) { $this->addContactUnderCustomer($insert); continue; } $insert['is_primary'] = 1; $id = $this->ci->clients_model->add($insert, true); if ($id) { if ($this->ci->input->post('groups_in[]')) { $this->insertCustomerGroups($this->ci->input->post('groups_in[]'), $id); } if (staff_cant('view', 'customers')) { $assign['customer_admins'] = []; $assign['customer_admins'][] = get_staff_user_id(); $this->ci->clients_model->assign_admins($assign, $id); } } } else { $this->simulationData[$rowNumber] = $this->formatValuesForSimulation($insert); } $this->handleCustomFieldsInsert($id, $row, $i, $rowNumber, 'customers'); } if ($this->isSimulation() && $rowNumber >= $this->maxSimulationRows) { break; } } } public function formatFieldNameForHeading($field) { if (strtolower($field) == 'title') { return 'Position'; } return parent::formatFieldNameForHeading($field); } protected function email_formatSampleData() { return uniqid() . '@example.com'; } protected function failureRedirectURL() { return admin_url('clients/import'); } protected function afterSampleTableHeadingText($field) { $contactFields = [ 'firstname', 'lastname', 'email', 'contact_phonenumber', 'title', ]; if (in_array($field, $contactFields)) { return '<br /><span class="text-info">' . _l('import_contact_field') . '</span>'; } } private function insertCustomerGroups($groups, $customer_id) { foreach ($groups as $group) { $this->ci->db->insert(db_prefix() . 'customer_groups', [ 'customer_id' => $customer_id, 'groupid' => $group, ]); } } private function shouldAddContactUnderCustomer($data) { return (isset($data['company']) && $data['company'] != '' && $data['company'] != '/') && (total_rows(db_prefix() . 'clients', ['company' => $data['company']]) === 1); } private function addContactUnderCustomer($data) { $contactFields = $this->getContactFields(); $this->ci->db->where('company', $data['company']); $existingCompany = $this->ci->db->get(db_prefix() . 'clients')->row(); $tmpInsert = []; foreach ($data as $key => $val) { foreach ($contactFields as $tmpContactField) { if (isset($data[$tmpContactField])) { $tmpInsert[$tmpContactField] = $data[$tmpContactField]; } } } $tmpInsert['donotsendwelcomeemail'] = true; if (isset($data['contact_phonenumber'])) { $tmpInsert['phonenumber'] = $data['contact_phonenumber']; } $this->ci->clients_model->add_contact($tmpInsert, $existingCompany->userid, true); } private function getContactFields() { return $this->ci->db->list_fields(db_prefix() . 'contacts'); } private function isDuplicateContact($email) { return total_rows(db_prefix() . 'contacts', ['email' => $email]); } private function formatValuesForSimulation($values) { // ATM only country fields foreach ($this->countryFields as $country_field) { if (array_key_exists($country_field, $values)) { if (!empty($values[$country_field]) && is_numeric($values[$country_field])) { $country = $this->getCountry(null, $values[$country_field]); if ($country) { $values[$country_field] = $country->short_name; } } } } return $values; } private function getCountry($search = null, $id = null) { if ($search) { $searchSlug = slug_it($search); if (empty($search)) { return null; } if ($country = $this->ci->app_object_cache->get('import-country-search-' . $searchSlug)) { return $country; } $this->ci->db->where('iso2', $search); $this->ci->db->or_where('short_name', $search); $this->ci->db->or_where('long_name', $search); } else { if (empty($id)) { return null; } if ($country = $this->ci->app_object_cache->get('import-country-id-' . $id)) { return $country; } $this->ci->db->where('country_id', $id); } $country = $this->ci->db->get(db_prefix() . 'countries')->row(); if ($search) { $this->ci->app_object_cache->add('import-country-search-' . $searchSlug, $country); } else { $this->ci->app_object_cache->add('import-country-id-' . $id, $country); } return $country; } private function countryValue($value) { if ($value != '') { if (!is_numeric($value)) { $country = $this->getCountry($value); $value = $country ? $country->country_id : 0; } } else { $value = 0; } return $value; } }
| ver. 1.4 |
Github
|
.
| PHP 8.2.28 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка