/** * Returns existing users full info * * @return array */ protected function getUsersList() { $result = array(); $allRealNames = zb_UserGetAllRealnames(); $allContracts = zb_UserGetAllContracts(); $allUserTags = $this->getAllUsersTags(); $allUserNotes = zb_UserGetAllNotes(); $allPaymentIds = $this->getAllUserPaymentIds(); $allAddresBindings = $this->getAllAddressList(); $allAptData = $this->getAllAptList(); $allPhones = zb_UserGetAllPhoneData(); $allEmails = zb_UserGetAllEmails(); $allNethosts = $this->getNethostsData(); $allNetworks = $this->getNetworksData(); $allRegData = $this->getUserRegData(); if (!empty($allContracts)) { $allContracts = array_flip($allContracts); } $allContractDates = zb_UserContractDatesGetAll(); if (!empty($this->allUserData)) { foreach ($this->allUserData as $userLogin => $userData) { $result[$userLogin]['id'] = $userLogin; $result[$userLogin]['login'] = $userLogin; $result[$userLogin]['full_name'] = @$allRealNames[$userLogin]; $result[$userLogin]['flag_corporate'] = 0; if ($userData['TariffChange']) { $curMonth = date('n'); $curYear = date('Y'); $firstDayNextMonth = $curMonth == 12 ? mktime(0, 0, 0, 0, 0, $curYear + 1) : mktime(0, 0, 0, $curMonth + 1, 1); $firstDayNextMonth = date("Y-m-d", $firstDayNextMonth); } else { $firstDayNextMonth = ''; } $result[$userLogin]['tariff']['current'][0]['id'] = $userData['Tariff']; if ($firstDayNextMonth) { $result[$userLogin]['tariff']['current'][0]['date_finish'] = $firstDayNextMonth; } if ($userData['TariffChange']) { $result[$userLogin]['tariff']['new'][0]['id'] = $userData['TariffChange']; $result[$userLogin]['tariff']['new'][0]['date_start'] = $firstDayNextMonth; } $userContract = @$allContracts[$userLogin]; if ($userContract) { $result[$userLogin]['agreement'][0]['number'] = $userContract; $contractDate = @$allContractDates[$userContract]; if ($contractDate) { $result[$userLogin]['agreement'][0]['date'] = $contractDate; } } $result[$userLogin]['account_number'] = @$allPaymentIds[$userLogin]; // yep, this is something like Payment ID if (isset($allUserTags[$userLogin])) { foreach ($allUserTags[$userLogin] as $tagIo => $eachTagid) { $result[$userLogin]['group'][$tagIo] = $eachTagid; } } $userNotes = @$allUserNotes[$userLogin]; if ($userNotes) { $result[$userLogin]['comment'] = $userNotes; } $result[$userLogin]['balance'] = $userData['Cash']; $result[$userLogin]['credit'] = $userData['Credit']; $userState = 5; // work if ($userData['Cash'] < '-' . $userData['Credit']) { $userState = 1; //nomoney } if ($userData['Passive'] == 1) { $userState = 2; // pause } if ($userData['Down'] == 1) { $userState = 3; // disable } if ($userData['Tariff'] == '*_NO_TARIFF_*') { $userState = 4; // new } $result[$userLogin]['state_id'] = $userState; if (isset($allRegData[$userLogin])) { $result[$userLogin]['date_create'] = $allRegData[$userLogin]; $result[$userLogin]['date_connect'] = $allRegData[$userLogin]; } else { $result[$userLogin]['date_create'] = ''; $result[$userLogin]['date_connect'] = ''; } $result[$userLogin]['date_activity'] = date("Y-m-d H:i:s", $userData['LastActivityTime']); $result[$userLogin]['traffic']['month']['up'] = $userData['U0']; $result[$userLogin]['traffic']['month']['down'] = $userData['D0']; $result[$userLogin]['discount'] = 0; // TODO: to many discount models at this time $userApartmentId = @$allAddresBindings[$userLogin]; if ($userApartmentId) { $aptData = $allAptData[$userApartmentId]; $result[$userLogin]['address'][0]['type'] = 'connect'; $result[$userLogin]['address'][0]['house_id'] = $aptData['buildid']; $result[$userLogin]['address'][0]['apartment']['id'] = $userApartmentId; $result[$userLogin]['address'][0]['apartment']['full_name'] = $aptData['apt']; $result[$userLogin]['address'][0]['apartment']['number'] = vf($aptData['apt'], 3); if ($aptData['entrance']) { $result[$userLogin]['address'][0]['entrance'] = $aptData['entrance']; } if ($aptData['floor']) { $result[$userLogin]['address'][0]['floor'] = $aptData['floor']; } } $userPhoneData = @$allPhones[$userLogin]; if (!empty($userPhoneData)) { if (isset($userPhoneData['phone'])) { $result[$userLogin]['phone'][0]['number'] = $userPhoneData['phone']; $result[$userLogin]['phone'][0]['flag_main'] = 0; } if (isset($userPhoneData['mobile'])) { $result[$userLogin]['phone'][1]['number'] = $userPhoneData['mobile']; $result[$userLogin]['phone'][1]['flag_main'] = 1; } } $userEmail = @$allEmails[$userLogin]; if ($userEmail) { $result[$userLogin]['email'][0]['address'] = $userEmail; $result[$userLogin]['email'][0]['flag_main'] = 1; } $userIp = $userData['IP']; $userIp = ip2int($userIp); $result[$userLogin]['ip_mac'][0]['ip'] = $userIp; $nethostsData = @$allNethosts[$userData['IP']]; if (!empty($nethostsData)) { $subnetId = $nethostsData['netid']; $userMac = $nethostsData['mac']; $userMac = str_replace(':', '', $userMac); $userMac = strtolower($userMac); // mac lowercased withot delimiters $result[$userLogin]['ip_mac'][0]['mac'] = $userMac; $result[$userLogin]['ip_mac'][0]['ip_net'] = @$allNetworks[$subnetId]['desc']; } if (isset($this->allCfData[$userLogin])) { $result[$userLogin]['additional_data'] = $this->allCfData[$userLogin]; } // die(print_r($result, true)); } } return $result; }
nq($conn2, $ps_constr); } else { // ухты, нету такого тарифа еще, давайте добавим $ps_constr = "insert into tbl_group (CODE,GROUPNAME,PRICE,TRAFEX,TRAFBUH,ABON,ABONDAY,SPEEDRX,SPEEDTX,ISUPD) values ('" . $pmas_group[$pi1][1] . "','" . $pmas_group[$pi1][2] . "'," . $pmas_group[$pi1][3] . "," . $pmas_group[$pi1][4] . "," . $pmas_group[$pi1][5] . "," . $pmas_group[$pi1][6] . "," . $pmas_group[$pi1][7] . "," . $pmas_group[$pi1][8] . "," . $pmas_group[$pi1][9] . ",1);"; printlog_sql($ps_constr); nq($conn2, $ps_constr); } } //Удаляем необновленные (значит такой тариф уже удален в биллинге и нужно удалить его в UserSide) nq($conn2, "delete from tbl_group where ISUPD=0"); printlog("вносим данные о группах в БД UserSide. ОКОНЧАНИЕ"); // Достаем из Ubilling всякие штуки которые нам понадобятся потом $allcontracts = zb_UserGetAllContracts($conn1); $allregs = zb_UserGetAllUserregDates($conn1); $allrealnames = zb_UserGetAllRealnames($conn1); $allnotes = zb_UserGetAllNotes($conn1); $alladdress = us_AddressGetFulladdresslist($conn1); $allphones = zb_UserGetAllPhones($conn1); $allnethosts = us_NethostsGetAll($conn1); $allstreets = us_AddressGetStreetsAll($conn1); $allbuilds = us_AddressGetBuildAll($conn1); /* #================================================================================================================ # Обработка домов (при условии, что биллинг хранит информацию об адресах абонентов # Логика работы с адресами может значительно отличаться в разных биллингах. Следует просто понять принципы учета адресов в UserSide и # подстроить скрипт под свои фактические потребности. # В UserSide: # tbl_street - это таблица с улицами # tbl_house - это таблица с домами, где tbl_house.STREETCODE=tbl_street.CODE # tbl_base - это таблица с абонентами, где tbl_base.HOUSECODE=tbl_house.CODE, tbl_base.APART - номер квартиры, tbl_base.FLOOR - этаж, tbl_base.PODEZD - номер подъезда #================================================================================================================