/** * 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; }
/** * Exports existing userbase as CSV format * * @return void */ function zb_RMExportUserbaseCsv() { $allusers = zb_UserGetAllStargazerData(); $allrealnames = zb_UserGetAllRealnames(); $alladdress = zb_AddressGetFulladdresslist(); $allcontracts = zb_UserGetAllContracts(); $allmac = array(); $mac_q = "SELECT * from `nethosts`"; $allnh = simple_queryall($mac_q); if (!empty($allnh)) { foreach ($allnh as $nh => $eachnh) { $allmac[$eachnh['ip']] = $eachnh['mac']; } } $result = ''; //options $delimiter = ";"; $in_charset = 'utf-8'; $out_charset = 'windows-1251'; ///////////////////// if (!empty($allusers)) { $result .= __('Login') . $delimiter . __('Password') . $delimiter . __('IP') . $delimiter . __('MAC') . $delimiter . __('Tariff') . $delimiter . __('Cash') . $delimiter . __('Credit') . $delimiter . __('Credit expire') . $delimiter . __('Address') . $delimiter . __('Real Name') . $delimiter . __('Contract') . $delimiter . __('AlwaysOnline') . $delimiter . __('Disabled') . $delimiter . __('User passive') . "\n"; foreach ($allusers as $io => $eachuser) { //credit expirity if ($eachuser['CreditExpire'] != 0) { $creditexpire = date("Y-m-d", $eachuser['CreditExpire']); } else { $creditexpire = ''; } //user mac if (isset($allmac[$eachuser['IP']])) { $usermac = $allmac[$eachuser['IP']]; } else { $usermac = ''; } $result .= $eachuser['login'] . $delimiter . $eachuser['Password'] . $delimiter . $eachuser['IP'] . $delimiter . $usermac . $delimiter . $eachuser['Tariff'] . $delimiter . $eachuser['Cash'] . $delimiter . $eachuser['Credit'] . $delimiter . $creditexpire . $delimiter . @$alladdress[$eachuser['login']] . $delimiter . @$allrealnames[$eachuser['login']] . $delimiter . @$allcontracts[$eachuser['login']] . $delimiter . $eachuser['AlwaysOnline'] . $delimiter . $eachuser['Down'] . $delimiter . $eachuser['Passive'] . "\n"; } if ($in_charset != $out_charset) { $result = iconv($in_charset, $out_charset, $result); } log_register('DOWNLOAD FILE `userbase.csv`'); // push data for csv handler header('Content-type: application/ms-excel'); header('Content-Disposition: attachment; filename=userbase.csv'); echo $result; die; } }
/** * Shows signups by another year-month * * @global object $altercfg * @param string $cmonth * * @return void */ function web_SignupsShowAnotherYearMonth($cmonth) { global $altercfg; $alltariffs = zb_TariffsGetAllUsers(); $cmonth = mysql_real_escape_string($cmonth); $where = "WHERE `date` LIKE '" . $cmonth . "%' ORDER by `date` DESC;"; $signups = zb_SignupsGet($where); $curdate = curdate(); //cemetery hide processing $ignoreUsers = array(); if ($altercfg['CEMETERY_ENABLED']) { $cemetery = new Cemetery(); $ignoreUsers = $cemetery->getAllTagged(); } $tablecells = wf_TableCell(__('ID')); $tablecells .= wf_TableCell(__('Date')); $tablecells .= wf_TableCell(__('Administrator')); if ($altercfg['SIGREP_CONTRACT']) { $tablecells .= wf_TableCell(__('Contract')); $allcontracts = array_flip(zb_UserGetAllContracts()); } $tablecells .= wf_TableCell(__('Login')); $tablecells .= wf_TableCell(__('Tariff')); $tablecells .= wf_TableCell(__('Full address')); $tablerows = wf_TableRow($tablecells, 'row1'); if (!empty($signups)) { foreach ($signups as $io => $eachsignup) { $tablecells = wf_TableCell($eachsignup['id']); $tablecells .= wf_TableCell($eachsignup['date']); $tablecells .= wf_TableCell($eachsignup['admin']); if ($altercfg['SIGREP_CONTRACT']) { $tablecells .= wf_TableCell(@$allcontracts[$eachsignup['login']]); } $tablecells .= wf_TableCell($eachsignup['login']); @($sigTariff = $alltariffs[$eachsignup['login']]); $tablecells .= wf_TableCell($sigTariff); $profilelink = wf_Link('?module=userprofile&username='******'login'], web_profile_icon() . ' ' . $eachsignup['address']); $tablecells .= wf_TableCell($profilelink); if (ispos($eachsignup['date'], $curdate)) { $rowClass = 'todaysig'; } else { $rowClass = 'row3'; } //cemetary user if (isset($ignoreUsers[$eachsignup['login']])) { $rowClass = 'sigcemeteryuser'; } //ugly check - is user removed? if (empty($sigTariff)) { $rowClass = 'sigdeleteduser'; } $tablerows .= wf_TableRow($tablecells, $rowClass); } } $result = wf_TableBody($tablerows, '100%', '0', 'sortable'); show_window(__('User signups by month') . ' ' . $cmonth, $result); }
function web_PaymentSearch($markers) { if (wf_CheckPost(array('searchtable'))) { if ($_POST['searchtable'] == 'payments') { $table = 'payments'; } if ($_POST['searchtable'] == 'corrections') { $table = 'paymentscorr'; } } else { $table = 'payments'; } $query = "SELECT * from `" . $table . "`"; $query .= $markers; $altercfg = rcms_parse_ini_file(CONFIG_PATH . "alter.ini"); $csvdata = ''; $allpayments = simple_queryall($query); if ($altercfg['FINREP_CONTRACT']) { $allcontracts = zb_UserGetAllContracts(); $allcontracts = array_flip($allcontracts); } if ($altercfg['FINREP_TARIFF']) { $alltariffs = zb_TariffsGetAllUsers(); } $allrealnames = zb_UserGetAllRealnames(); $alladdress = zb_AddressGetFulladdresslist(); $alltypes = zb_CashGetAllCashTypes(); $allservicenames = zb_VservicesGetAllNamesLabeled(); $allpaysyspercents = zb_PaySysPercentGetAll(); $totalsumm = 0; $paysyssumm = 0; $profitsumm = 0; $totalcount = 0; $cells = wf_TableCell(__('ID')); $cells .= wf_TableCell(__('Date')); $cells .= wf_TableCell(__('Cash')); $cells .= wf_TableCell(__('PS%')); $cells .= wf_TableCell(__('Profit')); $cells .= wf_TableCell(__('Login')); if ($altercfg['FINREP_CONTRACT']) { $cells .= wf_TableCell(__('Contract')); } $cells .= wf_TableCell(__('Full address')); $cells .= wf_TableCell(__('Real Name')); if ($altercfg['FINREP_TARIFF']) { $cells .= wf_TableCell(__('Tariff')); } $cells .= wf_TableCell(__('Payment type')); $cells .= wf_TableCell(__('Notes')); $cells .= wf_TableCell(__('Admin')); $rows = wf_TableRow($cells, 'row1'); if (!empty($allpayments)) { if ($altercfg['FINREP_TARIFF']) { $csvTariffColumn = ';' . __('Tariff'); } else { $csvTariffColumn = ''; } $csvdata .= __('ID') . ';' . __('Date') . ';' . __('Cash') . ';' . __('PS%') . ';' . __('Profit') . ';' . __('Login') . ';' . __('Full address') . ';' . __('Real Name') . $csvTariffColumn . ';' . __('Payment type') . ';' . __('Notes') . ';' . __('Admin') . "\n"; foreach ($allpayments as $io => $each) { $cells = wf_TableCell($each['id']); $cells .= wf_TableCell($each['date']); $cells .= wf_TableCell($each['summ']); //detecting paymentsystem and calc percent if (isset($allpaysyspercents[$each['note']])) { $currPc = $allpaysyspercents[$each['note']]['percent']; $rawSumm = $each['summ']; $paySysPc = $rawSumm / 100 * $currPc; $ourProfit = $rawSumm - $paySysPc; } else { $paySysPc = 0; $ourProfit = $each['summ']; } $cells .= wf_TableCell($paySysPc); $cells .= wf_TableCell($ourProfit); $cells .= wf_TableCell(wf_Link('?module=userprofile&username='******'login'], web_profile_icon() . ' ' . $each['login'], false, '')); if ($altercfg['FINREP_CONTRACT']) { $cells .= wf_TableCell(@$allcontracts[$each['login']]); } @($paymentRealname = $allrealnames[$each['login']]); @($paymentCashType = __($alltypes[$each['cashtypeid']])); @($paymentAddress = $alladdress[$each['login']]); $cells .= wf_TableCell($paymentAddress); $cells .= wf_TableCell($paymentRealname); if ($altercfg['FINREP_TARIFF']) { @($userTariff = $alltariffs[$each['login']]); $cells .= wf_TableCell($userTariff); $csvTariff = ';' . $userTariff; } else { $csvTariff = ''; } $cells .= wf_TableCell($paymentCashType); //payment notes translation if ($altercfg['TRANSLATE_PAYMENTS_NOTES']) { $paynote = zb_TranslatePaymentNote($each['note'], $allservicenames); } else { $paynote = $each['note']; } $cells .= wf_TableCell($paynote); $cells .= wf_TableCell($each['admin']); $rows .= wf_TableRow($cells, 'row3'); //calculating totals if ($each['summ'] > 0) { $totalsumm = $totalsumm + $each['summ']; $totalcount++; } if ($paySysPc > 0) { $paysyssumm = $paysyssumm + $paySysPc; } if ($ourProfit > 0) { $profitsumm = $profitsumm + $ourProfit; } $csvSumm = str_replace('.', ',', $each['summ']); $csvdata .= $each['id'] . ';' . $each['date'] . ';' . $csvSumm . ';' . $paySysPc . ';' . $ourProfit . ';' . $each['login'] . ';' . $paymentAddress . ';' . $paymentRealname . $csvTariff . ';' . $paymentCashType . ';' . $paynote . ';' . $each['admin'] . "\n"; } } //saving report for future download if (!empty($csvdata)) { $csvSaveName = 'exports/payfind_' . zb_rand_string(8) . '.csv'; $csvSaveNameEnc = base64_encode($csvSaveName); $csvdata = iconv('utf-8', 'windows-1251', $csvdata); file_put_contents($csvSaveName, $csvdata); $csvDownloadLink = wf_Link('?module=payfind&downloadcsv=' . $csvSaveNameEnc, wf_img('skins/excel.gif', __('Export')), false); } else { $csvDownloadLink = ''; } $result = wf_TableBody($rows, '100%', '0', 'sortable'); //additional total counters $result .= wf_tag('div', false, 'glamour') . __('Count') . ': ' . $totalcount . wf_tag('div', true); $result .= wf_tag('div', false, 'glamour') . __('Total payments') . ': ' . $totalsumm . wf_tag('div', true); $result .= wf_tag('div', false, 'glamour') . __('Payment systems %') . ': ' . $paysyssumm . wf_tag('div', true); $result .= wf_tag('div', false, 'glamour') . __('Our final profit') . ': ' . $profitsumm . wf_tag('div', true); $result .= wf_CleanDiv(); show_window(__('Payments found') . ' ' . $csvDownloadLink, $result); }
/** * loads user data for template processing * * @return void */ public function loadAllUserData() { $userdata = array(); $alluserdata = zb_UserGetAllStargazerData(); $tariffspeeds = zb_TariffGetAllSpeeds(); $tariffprices = zb_TariffGetPricesAll(); $multinetdata = zb_MultinetGetAllData(); $allcontracts = zb_UserGetAllContracts(); $allcontracts = array_flip($allcontracts); $contractDates = $this->getContractDatesAll(); $allphonedata = zb_UserGetAllPhoneData(); $allrealnames = zb_UserGetAllRealnames(); $alladdress = zb_AddressGetFulladdresslist(); $allemails = zb_UserGetAllEmails(); $allnasdata = zb_NasGetAllData(); $allcfdata = cf_FieldsGetAll(); $allpdata = zb_UserPassportDataGetAll(); $curdate = curdate(); $lastDocId = $this->getDocumentLastId(); $newDocId = $lastDocId + 1; if ($this->altcfg['OPENPAYZ_REALID']) { $allopcustomers = zb_TemplateGetAllOPCustomers(); } if (!empty($alluserdata)) { foreach ($alluserdata as $io => $eachuser) { $userdata[$eachuser['login']]['LOGIN'] = $eachuser['login']; $userdata[$eachuser['login']]['PASSWORD'] = $eachuser['Password']; $userdata[$eachuser['login']]['USERHASH'] = crc16($eachuser['login']); $userdata[$eachuser['login']]['TARIFF'] = $eachuser['Tariff']; @($userdata[$eachuser['login']]['TARIFFPRICE'] = $tariffprices[$eachuser['Tariff']]); $userdata[$eachuser['login']]['CASH'] = $eachuser['Cash']; $userdata[$eachuser['login']]['CREDIT'] = $eachuser['Credit']; $userdata[$eachuser['login']]['DOWN'] = $eachuser['Down']; $userdata[$eachuser['login']]['PASSIVE'] = $eachuser['Passive']; $userdata[$eachuser['login']]['AO'] = $eachuser['AlwaysOnline']; @($userdata[$eachuser['login']]['CONTRACT'] = $allcontracts[$eachuser['login']]); @($userdata[$eachuser['login']]['CONTRACTDATE'] = $contractDates[$eachuser['login']]['contractdate']); @($userdata[$eachuser['login']]['REALNAME'] = $allrealnames[$eachuser['login']]); @($userdata[$eachuser['login']]['ADDRESS'] = $alladdress[$eachuser['login']]); @($userdata[$eachuser['login']]['EMAIL'] = $allemails[$eachuser['login']]); @($userdata[$eachuser['login']]['PHONE'] = $allphonedata[$eachuser['login']]['phone']); @($userdata[$eachuser['login']]['MOBILE'] = $allphonedata[$eachuser['login']]['mobile']); //openpayz payment ID if ($this->altcfg['OPENPAYZ_REALID']) { @($userdata[$eachuser['login']]['PAYID'] = $allopcustomers[$eachuser['login']]); } else { @($userdata[$eachuser['login']]['PAYID'] = ip2int($eachuser['IP'])); } //traffic params $userdata[$eachuser['login']]['TRAFFIC'] = $eachuser['D0'] + $eachuser['U0']; $userdata[$eachuser['login']]['TRAFFICDOWN'] = $eachuser['D0']; $userdata[$eachuser['login']]['TRAFFICUP'] = $eachuser['U0']; //net params @($userdata[$eachuser['login']]['IP'] = $eachuser['IP']); @($userdata[$eachuser['login']]['MAC'] = $multinetdata[$eachuser['IP']]['mac']); @($userdata[$eachuser['login']]['NETID'] = $multinetdata[$eachuser['IP']]['netid']); @($userdata[$eachuser['login']]['HOSTID'] = $multinetdata[$eachuser['IP']]['id']); //nas data @($usernas = zb_NasGetParams($multinetdata[$eachuser['IP']]['netid'], $allnasdata)); @($userdata[$eachuser['login']]['NASID'] = $usernas['id']); @($userdata[$eachuser['login']]['NASIP'] = $usernas['nasip']); @($userdata[$eachuser['login']]['NASNAME'] = $usernas['nasname']); @($userdata[$eachuser['login']]['NASTYPE'] = $usernas['nastype']); if (isset($tariffspeeds[$eachuser['Tariff']])) { $userdata[$eachuser['login']]['SPEEDDOWN'] = $tariffspeeds[$eachuser['Tariff']]['speeddown']; $userdata[$eachuser['login']]['SPEEDUP'] = $tariffspeeds[$eachuser['Tariff']]['speedup']; } else { //if no tariff speed defined zero speed by default $userdata[$eachuser['login']]['SPEEDDOWN'] = 0; $userdata[$eachuser['login']]['SPEEDUP'] = 0; } //passport data @($userdata[$eachuser['login']]['PBIRTH'] = $allpdata[$eachuser['login']]['birthdate']); @($userdata[$eachuser['login']]['PNUM'] = $allpdata[$eachuser['login']]['passportnum']); @($userdata[$eachuser['login']]['PDATE'] = $allpdata[$eachuser['login']]['passportdate']); @($userdata[$eachuser['login']]['PWHO'] = $allpdata[$eachuser['login']]['passportwho']); @($userdata[$eachuser['login']]['PCITY'] = $allpdata[$eachuser['login']]['pcity']); @($userdata[$eachuser['login']]['PSTREET'] = $allpdata[$eachuser['login']]['pstreet']); @($userdata[$eachuser['login']]['PBUILD'] = $allpdata[$eachuser['login']]['pbuild']); @($userdata[$eachuser['login']]['PAPT'] = $allpdata[$eachuser['login']]['papt']); //other document data @($userdata[$eachuser['login']]['CURDATE'] = $curdate); @($userdata[$eachuser['login']]['DOCID'] = $newDocId); } } $this->userData = $userdata; }
/** * Preloads raw data for searchable user fields and controls caching * * @return void */ protected function loadRawdata($forceCache = false) { $cacheTime = $this->alterConf['GLOBALSEARCH_CACHE']; $cacheTime = time() - $cacheTime * 60; //in minutes //extracting user fields types to load if (!empty($this->alterConf['GLOBALSEARCH_FIELDS'])) { $this->fields = explode(',', $this->alterConf['GLOBALSEARCH_FIELDS']); $this->fields = array_flip($this->fields); } $updateCache = false; if (file_exists(self::CACHE_NAME)) { $updateCache = false; if (filemtime(self::CACHE_NAME) > $cacheTime) { $updateCache = false; } else { $updateCache = true; } } else { $updateCache = true; } //force cache parameter if ($forceCache) { $updateCache = true; } //updating rawdata cache if ($updateCache) { //loading needed fields if (isset($this->fields['realname'])) { $this->rawData = $this->rawData + $this->transformArray(zb_UserGetAllRealnames(), __('Real Name'), 'realname'); } if (isset($this->fields['address'])) { $this->rawData = $this->rawData + $this->transformArray(zb_AddressGetFulladdresslist(), __('Full address'), 'address'); } if (isset($this->fields['contract'])) { $allContracts = zb_UserGetAllContracts(); $allContracts = array_flip($allContracts); $this->rawData = $this->rawData + $this->transformArray($allContracts, __('Contract'), 'contract'); } if (isset($this->fields['phone']) or isset($this->fields['mobile'])) { $allPhonedata = zb_UserGetAllPhoneData(); if (isset($this->fields['phone'])) { if (!empty($allPhonedata)) { $allPhones = array(); foreach ($allPhonedata as $io => $each) { $allPhones[$io] = $each['phone']; } $this->rawData = $this->rawData + $this->transformArray($allPhones, __('Phone'), 'phone'); } } if (isset($this->fields['mobile'])) { if (!empty($allPhonedata)) { $allMobiles = array(); foreach ($allPhonedata as $io => $each) { $allMobiles[$io] = $each['mobile']; } $this->rawData = $this->rawData + $this->transformArray($allMobiles, __('Mobile'), 'mobile'); } } } if (isset($this->fields['ip'])) { $this->rawData = $this->rawData + $this->transformArray(zb_UserGetAllIPs(), __('IP'), 'ip'); } if (isset($this->fields['mac'])) { $this->rawData = $this->rawData + $this->transformArray(zb_UserGetAllIpMACs(), __('MAC address'), 'mac'); } if (isset($this->fields['login'])) { $allLogins = zb_UserGetAllStargazerLogins(); $this->rawData = $this->rawData + $this->transformArray($allLogins, __('Login'), 'login'); } if (isset($this->fields['seal'])) { $conDet = new ConnectionDetails(); $allSeals = $conDet->getAllSeals(); $this->rawData = $this->rawData + $this->transformArray($allSeals, __('Cable seal'), 'seal'); } if (isset($this->fields['paymentid'])) { if ($this->alterConf['OPENPAYZ_REALID']) { $allPayIds_q = "SELECT * from `op_customers`"; $allPayIds = simple_queryall($allPayIds_q); $tmpArrPayids = array(); if (!empty($allPayIds)) { foreach ($allPayIds as $io => $each) { $tmpArrPayids[$each['realid']] = $each['virtualid']; } } $this->rawData = $this->rawData + $this->transformArray($tmpArrPayids, __('Payment ID'), 'payid'); } else { $allPayIds_q = "SELECT `login`,`IP` from `users`"; $allPayIds = simple_queryall($allPayIds_q); $tmpArrPayids = array(); if (!empty($allPayIds)) { foreach ($allPayIds as $io => $each) { $tmpArrPayids[$each['login']] = ip2int($each['IP']); } } $this->rawData = $this->rawData + $this->transformArray($tmpArrPayids, __('Payment ID'), 'payid'); } } file_put_contents(self::CACHE_NAME, serialize($this->rawData)); } else { $this->rawData = file_get_contents(self::CACHE_NAME); $this->rawData = unserialize($this->rawData); } }
/** * Shows user register form of express card * * * @return string */ function web_ExpressCardRegForm() { $altconf = rcms_parse_ini_file(CONFIG_PATH . "alter.ini"); $allcontracts = zb_UserGetAllContracts(); //contract proposal $top_offset = 100000; //contract generation mode default if ($altconf['CONTRACT_GENERATION_DEFAULT']) { for ($i = 1; $i < $top_offset; $i++) { if (!isset($allcontracts[$i])) { $contract = $i; break; } } } else { //alternate generation method $max_contract = max(array_keys($allcontracts)); $contract = $max_contract + 1; } $mac = '14:' . '88' . ':' . rand(10, 99) . ':' . rand(10, 99) . ':' . rand(10, 99) . ':' . rand(10, 99); $phone = ''; $mobile = ''; $email = ''; $notes = ''; $stgdata = ''; $currenttariff = ''; $birthdate = ''; $passportnum = ''; $passportdate = ''; $passportwho = ''; $pcity = ''; $pstreet = ''; $pbuild = ''; $papt = ''; $inputs = zb_AjaxLoader() . wf_delimiter(); $inputs .= __('Contract'); $inputs .= wf_TextInput('newcontract', '', $contract, false, '10'); $inputs .= __('Contract date'); $inputs .= wf_DatePickerPreset('newcontractdate', @$allcontractdates[$contract]); $inputs .= wf_delimiter(); $inputs .= __('Surname'); $inputs .= wf_TextInput('newsurname', '', '', false, '20'); $inputs .= __('Name'); $inputs .= wf_TextInput('newname', '', '', false, '20'); $inputs .= __('Patronymic'); $inputs .= wf_TextInput('newpatronymic', '', '', false, '20'); $inputs .= __('Birth date'); $inputs .= wf_DatePickerPreset('newbirthdate', $birthdate); $inputs .= wf_delimiter(); $inputs .= __('Passport number'); $inputs .= wf_TextInput('newpassportnum', '', $passportnum, false, '30'); $inputs .= __('Date of issue'); $inputs .= wf_DatePickerPreset('newpassportdate', $passportdate); $inputs .= __('Issuing authority'); $inputs .= wf_TextInput('newpassportwho', '', $passportwho, false, '40'); $inputs .= wf_delimiter(); $inputs .= __('Phone'); $inputs .= wf_TextInput('newphone', '', $phone, false, '20'); $inputs .= __('Mobile'); $inputs .= wf_TextInput('newmobile', '', $mobile, false, '20'); $inputs .= __('email'); $inputs .= wf_TextInput('newemail', '', $email, false, '20'); $inputs .= wf_delimiter(); $inputs .= wf_tag('fieldset'); //address data form $inputs .= __('Address of service') . ' '; //new address creation form $inputs .= web_ExpressAddressOccupancyForm(); $inputs .= wf_delimiter(); //additional address fields $inputs .= __('Registration address') . ' '; $inputs .= zb_JSHider(); $inputs .= web_PaddressUnhideBox(); $inputs .= web_HidingDiv('paddress'); $inputs .= __('City'); $inputs .= wf_TextInput('newpcity', '', $pcity, false, '20'); $inputs .= __('Street'); $inputs .= wf_TextInput('newpstreet', '', $pstreet, false, '20'); $inputs .= __('Build'); $inputs .= wf_TextInput('newpbuild', '', $pbuild, false, '5'); $inputs .= __('Apartment'); $inputs .= wf_TextInput('newpapt', '', $papt, false, '5'); $inputs .= wf_tag('div', true); $inputs .= wf_tag('fieldset', true); $inputs .= wf_delimiter(); $inputs .= __('Tariff'); $inputs .= web_ExpressTariffSelector('newtariff', $currenttariff); $inputs .= __('Service'); $inputs .= web_ExpressServiceSelectorReg(); $inputs .= __('IP'); $inputs .= wf_tag('span', false, '', 'id="dipbox"'); $allservices = multinet_get_services(); if (!empty($allservices)) { $firstService = $allservices[0]; $firstNet = $firstService['netid']; @($ip_proposal = multinet_get_next_freeip('nethosts', 'ip', $firstNet)); if (empty($ip_proposal)) { show_window('', wf_modalOpened(__('Error'), __('No free IP available in selected pool'), '400', '250')); } } else { $ip_proposal = __('Error'); } $inputs .= wf_TextInput('editip', '', $ip_proposal, false, '20'); $inputs .= wf_tag('span', true); //dummy login proposal $login = zb_RegLoginProposal('', '', '', '', $ip_proposal); $inputs .= __('MAC'); $inputs .= wf_TextInput('newmac', '', $mac, false, '20'); $inputs .= __('Login'); $inputs .= wf_TextInput('newlogin', '', $login, false, '20'); $inputs .= wf_delimiter(); $inputs .= __('Notes'); $inputs .= wf_TextInput('newnotes', '', $notes, false, '120'); $inputs .= wf_HiddenInput('expresscardreg', 'true'); $inputs .= wf_delimiter(); $inputs .= wf_Submit('Let register that user'); $expresscardform = wf_Form("", "POST", $inputs, 'expresscard'); show_window(__('Express card user register'), $expresscardform); }
/** * Get all users contracts and load it into $this->allContracts * * @return void */ protected function LoadAllContracts() { $this->allContracts = array_flip(zb_UserGetAllContracts()); }
/** * Performs an user registration * * @global object $billing * @param array $user_data * @param bool $goprofile */ function zb_UserRegister($user_data, $goprofile = true) { global $billing; // Init all of needed user data $login = vf($user_data['login']); $login = zb_RegLoginFilter($login); $password = vf($user_data['password']); $ip = $user_data['IP']; $cityid = $user_data['city']; $streetid = $user_data['street']; $buildid = $user_data['build']; @($entrance = $user_data['entrance']); @($floor = $user_data['floor']); $apt = $user_data['apt']; $serviceid = $user_data['service']; $netid = multinet_get_service_networkid($serviceid); $busylogins = zb_AllBusyLogins(); //check login lenght $maxStLen = 42; $loginLen = strlen($login); if ($loginLen > $maxStLen) { log_register("HUGELOGIN REGISTER TRY (" . $login . ")"); $alert = __('Attention generated login longer than') . ' ' . $maxStLen . ' ' . __('bytes') . '. (' . $login . ' > ' . $loginLen . ') ' . __('And is not compatible with Stargazer') . '.'; die($alert); } // empty login validation if (empty($login)) { $alert = wf_tag('script', false, '', 'type="text/javascript"'); $alert .= 'alert("' . __('Error') . ': ' . __('Empty login') . '");'; $alert .= wf_tag('script', true); print $alert; rcms_redirect("?module=userreg"); die; } //duplicate login validation if (isset($busylogins[$login])) { $alert = wf_tag('script', false, '', 'type="text/javascript"'); $alert .= 'alert("' . __('Error') . ': ' . __('Duplicate login') . '");'; $alert .= wf_tag('script', true); print $alert; rcms_redirect("?module=userreg"); die; } //last check if (!zb_ip_unique($ip)) { $alert = wf_tag('script', false, '', 'type="text/javascript"'); $alert .= 'alert("' . __('Error') . ': ' . __('This IP is already used by another user') . '");'; $alert .= wf_tag('script', true); print $alert; rcms_redirect("?module=userreg"); die; } // registration subroutine $billing->createuser($login); log_register("StgUser REGISTER (" . $login . ")"); $billing->setpassword($login, $password); log_register("StgUser (" . $login . ") PASSWORD `" . $password . "`"); $billing->setip($login, $ip); log_register("StgUser (" . $login . ") IP `" . $ip . "`"); zb_AddressCreateApartment($buildid, $entrance, $floor, $apt); zb_AddressCreateAddress($login, zb_AddressGetLastid()); multinet_add_host($netid, $ip); zb_UserCreateRealName($login, ''); zb_UserCreatePhone($login, '', ''); zb_UserCreateContract($login, ''); zb_UserCreateEmail($login, ''); zb_UserCreateSpeedOverride($login, 0); zb_UserRegisterLog($login); // if random mac needed $billingconf = rcms_parse_ini_file(CONFIG_PATH . '/billing.ini'); $alterconf = rcms_parse_ini_file(CONFIG_PATH . "alter.ini"); if ($billingconf['REGRANDOM_MAC']) { // funny random mac, yeah? :) $mac = '14:' . '88' . ':' . rand(10, 99) . ':' . rand(10, 99) . ':' . rand(10, 99) . ':' . rand(10, 99); multinet_change_mac($ip, $mac); multinet_rebuild_all_handlers(); } // if AlwaysOnline to new user needed if ($billingconf['REGALWONLINE']) { $alwaysonline = 1; $billing->setao($login, $alwaysonline); log_register('CHANGE AlwaysOnline (' . $login . ') ON ' . $alwaysonline); } // if we want to disable detailed stats to new user by default if ($billingconf['REGDISABLEDSTAT']) { $dstat = 1; $billing->setdstat($login, $dstat); log_register('CHANGE dstat (' . $login . ') ON ' . $dstat); } //set contract same as login for this user if (isset($alterconf['CONTRACT_SAME_AS_LOGIN'])) { if ($alterconf['CONTRACT_SAME_AS_LOGIN']) { $newUserContract = $login; zb_UserChangeContract($login, $newUserContract); } } //cemetery processing if (isset($alterconf['CEMETERY_ENABLED'])) { if ($alterconf['CEMETERY_ENABLED']) { if ($alterconf['CEMETERY_ENABLED'] == 2) { $cemetery = new Cemetery(false); $cemetery->setDead($login); } } } //contract autogeneration if (isset($alterconf['CONTRACT_AUTOGEN'])) { if ($alterconf['CONTRACT_AUTOGEN']) { $contract_proposal = ''; $allcontracts = zb_UserGetAllContracts(); $top_offset = 100000; //contract generation mode default if ($alterconf['CONTRACT_GENERATION_DEFAULT']) { for ($i = 1; $i < $top_offset; $i++) { if (!isset($allcontracts[$i])) { $contract_proposal = $i; break; } } } else { //alternate generation method $max_contract = max(array_keys($allcontracts)); $contract_proposal = $max_contract + 1; } //setting generated contract to new user if (!isset($allcontracts[$contract_proposal])) { $contractDate = date("Y-m-d"); zb_UserChangeContract($login, $contract_proposal); zb_UserContractDateCreate($contract_proposal, $contractDate); } } } /////////////////////////////////// if ($goprofile) { rcms_redirect("?module=userprofile&username=" . $login); } }
/** * Renders payments extracted from database with some query * * @param string $query * @return string */ function web_PaymentsShow($query) { $alter_conf = rcms_parse_ini_file(CONFIG_PATH . 'alter.ini'); $alladrs = zb_AddressGetFulladdresslist(); $allrealnames = zb_UserGetAllRealnames(); $alltypes = zb_CashGetAllCashTypes(); $allapayments = simple_queryall($query); $allservicenames = zb_VservicesGetAllNamesLabeled(); //getting full contract list if ($alter_conf['FINREP_CONTRACT']) { $allcontracts = zb_UserGetAllContracts(); $allcontracts = array_flip($allcontracts); } //getting all users tariffs if ($alter_conf['FINREP_TARIFF']) { $alltariffs = zb_TariffsGetAllUsers(); } $total = 0; $totalPaycount = 0; $cells = wf_TableCell(__('ID')); $cells .= wf_TableCell(__('IDENC')); $cells .= wf_TableCell(__('Date')); $cells .= wf_TableCell(__('Cash')); //optional contract display if ($alter_conf['FINREP_CONTRACT']) { $cells .= wf_TableCell(__('Contract')); } $cells .= wf_TableCell(__('Login')); $cells .= wf_TableCell(__('Full address')); $cells .= wf_TableCell(__('Real Name')); //optional tariff display if ($alter_conf['FINREP_TARIFF']) { $cells .= wf_TableCell(__('Tariff')); } $cells .= wf_TableCell(__('Cash type')); $cells .= wf_TableCell(__('Notes')); $cells .= wf_TableCell(__('Admin')); $rows = wf_TableRow($cells, 'row1'); if (!empty($allapayments)) { foreach ($allapayments as $io => $eachpayment) { if ($alter_conf['TRANSLATE_PAYMENTS_NOTES']) { $eachpayment['note'] = zb_TranslatePaymentNote($eachpayment['note'], $allservicenames); } $cells = wf_TableCell($eachpayment['id']); $cells .= wf_TableCell(zb_NumEncode($eachpayment['id'])); $cells .= wf_TableCell($eachpayment['date']); $cells .= wf_TableCell($eachpayment['summ']); //optional contract display if ($alter_conf['FINREP_CONTRACT']) { $cells .= wf_TableCell(@$allcontracts[$eachpayment['login']]); } $cells .= wf_TableCell(wf_Link('?module=userprofile&username='******'login'], web_profile_icon() . ' ' . $eachpayment['login'], false, '')); $cells .= wf_TableCell(@$alladrs[$eachpayment['login']]); $cells .= wf_TableCell(@$allrealnames[$eachpayment['login']]); //optional tariff display if ($alter_conf['FINREP_TARIFF']) { $cells .= wf_TableCell(@$alltariffs[$eachpayment['login']]); } $cells .= wf_TableCell(@__($alltypes[$eachpayment['cashtypeid']])); $cells .= wf_TableCell($eachpayment['note']); $cells .= wf_TableCell($eachpayment['admin']); $rows .= wf_TableRow($cells, 'row3'); if ($eachpayment['summ'] > 0) { $total = $total + $eachpayment['summ']; $totalPaycount++; } } } $result = wf_TableBody($rows, '100%', '0', 'sortable'); $result .= wf_tag('strong') . __('Cash') . ': ' . $total . wf_tag('strong', true) . wf_tag('br'); $result .= wf_tag('strong') . __('Count') . ': ' . $totalPaycount . wf_tag('strong', true); return $result; }
<?php if (cfr('CORPS')) { $altcfg = $ubillingConfig->getAlter(); if ($altcfg['CORPS_ENABLED']) { $greed = new Avarice(); $beggar = $greed->runtime('CORPS'); if (!empty($beggar)) { $corps = new Corps(); $funds = new FundsFlow(); //all that we need $corpsData = $corps->getCorps(); $corpUsers = $corps->getUsers(); $allUserContracts = zb_UserGetAllContracts(); $allUsersCash = zb_UserGetAllBalance(); $allUserTariffs = zb_TariffsGetAllUsers(); $allTariffPrices = zb_TariffGetPricesAll(); $rows = ''; $count = 0; //showing date search form show_window(__('Corporate users') . ' - ' . __('Funds flow'), $funds->renderCorpsFlowsDateForm()); if (!wf_CheckPost(array('yearsel', 'monthsel'))) { $needYear = curyear(); $needMonth = date("m"); } else { $needYear = $_POST['yearsel']; $needMonth = $_POST['monthsel']; } //setting date filter $date = $needYear . '-' . $needMonth . '-'; if (!empty($corpUsers)) {
/** * loads all user contracts * * @return void */ protected function loadUserContracts() { $this->userContracts = zb_UserGetAllContracts(); $this->userContracts = array_flip($this->userContracts); }
/** * Returns all data about current userbase * which used for templatizing functions * * @return array */ function zb_TemplateGetAllUserData() { $altcfg = rcms_parse_ini_file(CONFIG_PATH . "alter.ini"); $userdata = array(); $alluserdata = zb_UserGetAllStargazerData(); $tariffspeeds = zb_TariffGetAllSpeeds(); $tariffprices = zb_TariffGetPricesAll(); $multinetdata = zb_MultinetGetAllData(); $allcontracts = zb_UserGetAllContracts(); $allcontracts = array_flip($allcontracts); $allrealnames = zb_UserGetAllRealnames(); $alladdress = zb_AddressGetFulladdresslist(); $allemails = zb_UserGetAllEmails(); $allnasdata = zb_NasGetAllData(); $allcfdata = cf_FieldsGetAll(); $allpdata = zb_UserPassportDataGetAll(); if ($altcfg['OPENPAYZ_REALID']) { $allopcustomers = zb_TemplateGetAllOPCustomers(); } if (!empty($alluserdata)) { foreach ($alluserdata as $io => $eachuser) { $userdata[$eachuser['login']]['login'] = $eachuser['login']; $userdata[$eachuser['login']]['password'] = $eachuser['Password']; $userdata[$eachuser['login']]['userhash'] = crc16($eachuser['login']); $userdata[$eachuser['login']]['tariff'] = $eachuser['Tariff']; @($userdata[$eachuser['login']]['tariffprice'] = $tariffprices[$eachuser['Tariff']]); $userdata[$eachuser['login']]['cash'] = $eachuser['Cash']; $userdata[$eachuser['login']]['credit'] = $eachuser['Credit']; $userdata[$eachuser['login']]['down'] = $eachuser['Down']; $userdata[$eachuser['login']]['passive'] = $eachuser['Passive']; $userdata[$eachuser['login']]['ao'] = $eachuser['AlwaysOnline']; @($userdata[$eachuser['login']]['contract'] = $allcontracts[$eachuser['login']]); @($userdata[$eachuser['login']]['realname'] = $allrealnames[$eachuser['login']]); @($userdata[$eachuser['login']]['address'] = $alladdress[$eachuser['login']]); @($userdata[$eachuser['login']]['email'] = $allemails[$eachuser['login']]); //openpayz payment ID if ($altcfg['OPENPAYZ_REALID']) { @($userdata[$eachuser['login']]['payid'] = $allopcustomers[$eachuser['login']]); } else { @($userdata[$eachuser['login']]['payid'] = ip2int($eachuser['IP'])); } //traffic params $userdata[$eachuser['login']]['traffic'] = $eachuser['D0'] + $eachuser['U0']; $userdata[$eachuser['login']]['trafficdown'] = $eachuser['D0']; $userdata[$eachuser['login']]['trafficup'] = $eachuser['U0']; //net params $userdata[$eachuser['login']]['ip'] = $eachuser['IP']; @($userdata[$eachuser['login']]['mac'] = $multinetdata[$eachuser['IP']]['mac']); @($userdata[$eachuser['login']]['netid'] = $multinetdata[$eachuser['IP']]['netid']); @($userdata[$eachuser['login']]['hostid'] = $multinetdata[$eachuser['IP']]['id']); //nas data @($usernas = zb_NasGetParams($multinetdata[$eachuser['IP']]['netid'], $allnasdata)); @($userdata[$eachuser['login']]['nasid'] = $usernas['id']); @($userdata[$eachuser['login']]['nasip'] = $usernas['nasip']); @($userdata[$eachuser['login']]['nasname'] = $usernas['nasname']); @($userdata[$eachuser['login']]['nastype'] = $usernas['nastype']); if (isset($tariffspeeds[$eachuser['Tariff']])) { $userdata[$eachuser['login']]['speeddown'] = $tariffspeeds[$eachuser['Tariff']]['speeddown']; $userdata[$eachuser['login']]['speedup'] = $tariffspeeds[$eachuser['Tariff']]['speedup']; } else { //if no tariff speed defined zero speed by default $userdata[$eachuser['login']]['speeddown'] = 0; $userdata[$eachuser['login']]['speedup'] = 0; } //CF data $usercfdata = zb_cfGetContent($eachuser['login'], $allcfdata); if (!empty($usercfdata)) { foreach ($usercfdata as $cd => $eachcf) { $userdata[$eachuser['login']]['cf'][$cd] = $eachcf; } } //passport data @($userdata[$eachuser['login']]['birthdate'] = $allpdata[$eachuser['login']]['birthdate']); @($userdata[$eachuser['login']]['passportnum'] = $allpdata[$eachuser['login']]['passportnum']); @($userdata[$eachuser['login']]['passportdate'] = $allpdata[$eachuser['login']]['passportdate']); @($userdata[$eachuser['login']]['passportwho'] = $allpdata[$eachuser['login']]['passportwho']); @($userdata[$eachuser['login']]['pcity'] = $allpdata[$eachuser['login']]['pcity']); @($userdata[$eachuser['login']]['pstreet'] = $allpdata[$eachuser['login']]['pstreet']); @($userdata[$eachuser['login']]['pbuild'] = $allpdata[$eachuser['login']]['pbuild']); @($userdata[$eachuser['login']]['papt'] = $allpdata[$eachuser['login']]['papt']); } } return $userdata; }
// есть такой тариф, круто же :) $ps_constr = "update tbl_group set GROUPNAME='" . $pmas_group[$pi1][2] . "',PRICE=" . $pmas_group[$pi1][3] . ",TRAFEX=" . $pmas_group[$pi1][4] . ",TRAFBUH=" . $pmas_group[$pi1][5] . ",ABON=" . $pmas_group[$pi1][6] . ",ABONDAY=" . $pmas_group[$pi1][7] . ",SPEEDRX=" . $pmas_group[$pi1][8] . ",SPEEDTX=" . $pmas_group[$pi1][9] . ",ISUPD=1 where CODE='" . $pi_code . "';"; printlog_sql($ps_constr); 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 - это таблица с улицами