diff --git a/library/NGNPro/Records/Customers.php b/library/NGNPro/Records/Customers.php new file mode 100644 index 0000000..df53edc --- /dev/null +++ b/library/NGNPro/Records/Customers.php @@ -0,0 +1,2432 @@ + 'Change date', + 'username' => 'Username', + 'firstName' => 'First name', + 'lastName' => 'Last name', + 'organization' => 'Organization', + 'customer' => 'Customer' + ); + + var $propertiesItems = array( + 'sip_credit' => array( + 'name' => 'Credit for SIP accounts', + 'category' => 'credit', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'sip_alias_credit' => array( + 'name' => 'Credit for SIP aliases', + 'category' => 'credit', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'enum_range_credit' => array( + 'name' => 'Credit for ENUM ranges', + 'category' => 'credit', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'enum_number_credit' => array( + 'name' => 'Credit for ENUM numbers', + 'category' => 'credit', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'dns_zone_credit' => array( + 'name' => 'Credit for DNS zones', + 'category' => 'credit', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'email_credit' => array( + 'name' => 'Credit for E-mail aliases', + 'category' => 'credit', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'pstn_access' => array( + 'name' => 'Access to PSTN', + 'category' => 'sip', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'prepaid_changes' => array( + 'name' => 'Prepaid Changes', + 'category' => 'sip', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'pstn_changes' => array( + 'name' => 'Pstn Changes', + 'category' => 'sip', + 'permission' => 'admin', + 'resellerMayManageForChildAccounts' => true + ), + 'payment_processor_class' => array( + 'name' => 'Payment Processor Class', + 'category' => 'sip', + 'permission' => 'admin' + ), + 'voicemail_server' => array( + 'name' => 'Voicemail Server Address', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'voicemail_access_number' => array( + 'name' => 'Voicemail Access Number', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'FUNC_access_number' => array( + 'name' => 'Forwarding Unconditional Access Number', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'FNOL_access_number' => array( + 'name' => 'Forwarding Not-Online Access Number', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'FNOA_access_number' => array( + 'name' => 'Forwarding Not-Available Access Number', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'FBUS_access_number' => array( + 'name' => 'Forwarding On Busy Access Number', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'change_privacy_access_number' => array( + 'name' => 'Change privacy Access Number', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'check_privacy_access_number' => array( + 'name' => 'Check privacy Access Number', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'reject_anonymous_access_number' => array( + 'name' => 'Reject anonymous Access Number', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'sip_proxy' => array( + 'name' => 'SIP Proxy Address', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'sip_outbound_proxy' => array( + 'name' => 'SIP Client Outbound proxy', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'store_clear_text_passwords' => array( + 'name' => 'Store clear text passwords', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'xcap_root' => array( + 'name' => 'XCAP Root URL', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'absolute_voicemail_uri'=> array( + 'name' => 'Use Absolute Voicemail Uri', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'dns_admin_email' => array('name' => 'DNS zones Administrator Email', + 'category' => 'dns', + 'permission' => 'customer'), + 'support_web' => array('name' => 'Support Web Site', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'support_email' => array('name' => 'Support Email Address', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'billing_email' => array('name' => 'Billing Email Address', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'support_company' => array('name' => 'Support Organization', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'cdrtool_address' => array('name' => 'CDRTool Address', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'sip_settings_page' => array('name' => 'SIP Settings Page', + 'category' => 'sip', + 'permission' => 'customer' + ), + 'digest_settings_page' => array('name' => 'Settings Page (Digest Auth)', + 'category' => 'sip', + 'permission' => 'reseller' + ), + 'records_per_page' => array('name' => 'Records per page', + 'category' => 'web', + 'permission' => 'customer' + ), + 'push_notifications_server' => array('name'=>'Push server public interface', + 'category' =>'sip', + 'permission' => 'customer' + ), + 'push_notifications_server_private' => array('name'=>'Push server private interface', + 'category' =>'sip', + 'permission' => 'customer' + ) + ); + + var $FieldsReadOnly=array( + 'id' => array('type'=>'integer'), + 'reseller' => array('type'=>'integer') + ); + var $Fields=array( + 'resellerActive' => array ('type' => 'boolean', + 'name' => 'Reseller active', + 'adminonly' => true + ), + 'impersonate' => array('type' =>'integer', + 'name' =>'Impersonate'), + 'companyCode' => array('type' =>'text', + 'name' =>'Company code', + 'adminonly' => true + ), + 'balance' => array('type' => 'float', + 'adminonly' => true + ), + 'credit' => array('type' => 'float', + 'adminonly' => true + ), + 'username' => array('type' =>'text', 'extra_html' => 'readonly autocomplete="off"' + ), + 'password' => array('type'=>'text', + 'name'=>'Password'), + 'firstName' => array('type'=>'text', + 'name'=>'First name'), + 'lastName' => array('type'=>'text', + 'name'=>'Last name'), + 'organization'=> array('type'=>'text'), + 'tel' => array('type'=>'text'), + 'fax' => array('type'=>'text'), + 'sip' => array('type'=>'text'), + 'enum' => array('type'=>'text'), + 'mobile' => array('type'=>'text'), + 'email' => array('type'=>'text'), + 'web' => array('type'=>'text'), + 'address' => array('type'=>'textarea'), + 'postcode' => array('type'=>'text'), + 'city' => array('type'=>'text'), + 'state' => array('type'=>'text'), + 'country' => array('type'=>'text'), + 'timezone' => array('type'=>'text'), + 'language' => array('type'=>'text'), + 'vatNumber' => array( + 'type'=>'text', + 'name'=>'VAT number' + ), + 'bankAccount' => array( + 'type'=>'text', + 'name'=>'Bank account' + ), + 'billingEmail' => array( + 'type'=>'text', + 'name'=>'Billing email' + ), + 'billingAddress' => array( + 'type'=>'textarea', + 'name'=>'Billing address' + ), + ); + + var $addFields=array( + 'username' => array( + 'type' =>'text' + ), + 'password' => array( + 'type'=>'text', + 'name'=>'Password' + ), + 'firstName' => array( + 'type'=>'text', + 'name'=>'First name' + ), + 'lastName' => array( + 'type'=>'text', + 'name'=>'Last name' + ), + 'organization'=> array('type'=>'text'), + 'tel' => array('type'=>'text'), + 'email' => array('type'=>'text'), + 'address' => array('type'=>'textarea'), + 'postcode' => array('type'=>'text'), + 'city' => array('type'=>'text'), + 'state' => array('type'=>'text'), + 'country' => array('type'=>'text'), + 'timezone' => array('type'=>'text') + ); + + var $states=array( + array("label"=>"", "value"=>"N/A"), + array("label"=>"-- CANADA --", "value"=>"-"), + array("label"=>"Alberta", "value"=>"AB"), + array("label"=>"British Columbia", "value"=>"BC"), + array("label"=>"Manitoba", "value"=>"MB"), + array("label"=>"New Brunswick", "value"=>"NB"), + array("label"=>"Newfoundland/Labrador", "value"=>"NL"), + array("label"=>"Northwest Territory", "value"=>"NT"), + array("label"=>"Nova Scotia", "value"=>"NS"), + array("label"=>"Nunavut", "value"=>"NU"), + array("label"=>"Ontario", "value"=>"ON"), + array("label"=>"Prince Edward Island", "value"=>"PE"), + array("label"=>"Quebec", "value"=>"QC"), + array("label"=>"Saskatchewan", "value"=>"SN"), + array("label"=>"Yukon", "value"=>"YT"), + array("label"=>"---- US -----", "value"=>"-"), + array("label"=>"Alabama", "value"=>"AL"), + array("label"=>"Alaska", "value"=>"AK"), + array("label"=>"American Samoa", "value"=>"AS"), + array("label"=>"Arizona", "value"=>"AZ"), + array("label"=>"Arkansas", "value"=>"AR"), + array("label"=>"California", "value"=>"CA"), + array("label"=>"Canal Zone", "value"=>"CZ"), + array("label"=>"Colorado", "value"=>"CO"), + array("label"=>"Connecticut", "value"=>"CT"), + array("label"=>"Delaware", "value"=>"DE"), + array("label"=>"District of Columbia", "value"=>"DC"), + array("label"=>"Florida", "value"=>"FL"), + array("label"=>"Georgia", "value"=>"GA"), + array("label"=>"Guam", "value"=>"GU"), + array("label"=>"Hawaii", "value"=>"HI"), + array("label"=>"Idaho", "value"=>"ID"), + array("label"=>"Illinois", "value"=>"IL"), + array("label"=>"Indiana", "value"=>"IN"), + array("label"=>"Iowa", "value"=>"IA"), + array("label"=>"Kansas", "value"=>"KS"), + array("label"=>"Kentucky", "value"=>"KY"), + array("label"=>"Louisiana", "value"=>"LA"), + array("label"=>"Maine", "value"=>"ME"), + array("label"=>"Mariana Islands", "value"=>"MP"), + array("label"=>"Maryland", "value"=>"MD"), + array("label"=>"Massachusetts", "value"=>"MA"), + array("label"=>"Michigan", "value"=>"MI"), + array("label"=>"Minnesota", "value"=>"MN"), + array("label"=>"Mississippi", "value"=>"MS"), + array("label"=>"Missouri", "value"=>"MO"), + array("label"=>"Montana", "value"=>"MT"), + array("label"=>"Nebraska", "value"=>"NE"), + array("label"=>"Nevada", "value"=>"NV"), + array("label"=>"New Hampshire", "value"=>"NH"), + array("label"=>"New Jersey", "value"=>"NJ"), + array("label"=>"New Mexico", "value"=>"NM"), + array("label"=>"New York", "value"=>"NY"), + array("label"=>"North Carolina", "value"=>"NC"), + array("label"=>"North Dakota", "value"=>"ND"), + array("label"=>"Ohio", "value"=>"OH"), + array("label"=>"Oklahoma", "value"=>"OK"), + array("label"=>"Oregon", "value"=>"OR"), + array("label"=>"Pennsylvania", "value"=>"PA"), + array("label"=>"Puerto Rico", "value"=>"PR"), + array("label"=>"Rhode Island", "value"=>"RI"), + array("label"=>"South Carolina", "value"=>"SC"), + array("label"=>"South Dakota", "value"=>"SD"), + array("label"=>"Tennessee", "value"=>"TN"), + array("label"=>"Texas", "value"=>"TX"), + array("label"=>"Utah", "value"=>"UT"), + array("label"=>"Vermont", "value"=>"VT"), + array("label"=>"Virgin Islands", "value"=>"VI"), + array("label"=>"Virginia", "value"=>"VA"), + array("label"=>"Washington", "value"=>"WA"), + array("label"=>"West Virginia", "value"=>"WV"), + array("label"=>"Wisconsin", "value"=>"WI"), + array("label"=>"Wyoming", "value"=>"WY"), + array("label"=>"APO", "value"=>"AP"), + array("label"=>"AEO", "value"=>"AE"), + array("label"=>"AAO", "value"=>"AA"), + array("label"=>"FPO", "value"=>"FP") + ); + + var $countries=array( + array("label"=>"Ascension Island", "value"=>"AC"), + array("label"=>"Afghanistan", "value"=>"AF"), + array("label"=>"Albania", "value"=>"AL"), + array("label"=>"Algeria", "value"=>"DZ"), + array("label"=>"American Samoa", "value"=>"AS"), + array("label"=>"Andorra", "value"=>"AD"), + array("label"=>"Angola", "value"=>"AO"), + array("label"=>"Anguilla", "value"=>"AI"), + array("label"=>"Antarctica", "value"=>"AQ"), + array("label"=>"Antigua And Barbuda", "value"=>"AG"), + array("label"=>"Argentina", "value"=>"AR"), + array("label"=>"Armenia", "value"=>"AM"), + array("label"=>"Aruba", "value"=>"AW"), + array("label"=>"Australia", "value"=>"AU"), + array("label"=>"Austria", "value"=>"AT"), + array("label"=>"Azerbaijan", "value"=>"AZ"), + array("label"=>"Bahamas", "value"=>"BS"), + array("label"=>"Bahrain", "value"=>"BH"), + array("label"=>"Bangladesh", "value"=>"BD"), + array("label"=>"Barbados", "value"=>"BB"), + array("label"=>"Belarus", "value"=>"BY"), + array("label"=>"Belgium", "value"=>"BE"), + array("label"=>"Belize", "value"=>"BZ"), + array("label"=>"Benin", "value"=>"BJ"), + array("label"=>"Bermuda", "value"=>"BM"), + array("label"=>"Bhutan", "value"=>"BT"), + array("label"=>"Bolivia", "value"=>"BO"), + array("label"=>"Bosnia And Herzegowina","value"=>"BA"), + array("label"=>"Botswana", "value"=>"BW"), + array("label"=>"Bouvet Island", "value"=>"BV"), + array("label"=>"Brazil", "value"=>"BR"), + array("label"=>"British Indian Ocean Territory", "value"=>"IO"), + array("label"=>"Brunei Darussalam", "value"=>"BN"), + array("label"=>"Bulgaria", "value"=>"BG"), + array("label"=>"Burkina Faso", "value"=>"BF"), + array("label"=>"Burundi", "value"=>"BI"), + array("label"=>"Cambodia", "value"=>"KH"), + array("label"=>"Cameroon", "value"=>"CM"), + array("label"=>"Canada", "value"=>"CA"), + array("label"=>"Cape Verde", "value"=>"CV"), + array("label"=>"Cayman Islands", "value"=>"KY"), + array("label"=>"Central African Republic", "value"=>"CF"), + array("label"=>"Chad", "value"=>"TD"), + array("label"=>"Chile", "value"=>"CL"), + array("label"=>"China", "value"=>"CN"), + array("label"=>"Christmas Island", "value"=>"CX"), + array("label"=>"Cocos (Keeling) Islands", "value"=>"CC"), + array("label"=>"Colombia", "value"=>"CO"), + array("label"=>"Comoros", "value"=>"KM"), + array("label"=>"Congo", "value"=>"CG"), + array("label"=>"Congo, Democratic People's Republic", "value"=>"CD"), + array("label"=>"Cook Islands", "value"=>"CK"), + array("label"=>"Costa Rica", "value"=>"CR"), + array("label"=>"Cote d'Ivoire", "value"=>"CI"), + array("label"=>"Croatia (local name: Hrvatska)", "value"=>"HR"), + array("label"=>"Cuba", "value"=>"CU"), + array("label"=>"Cyprus", "value"=>"CY"), + array("label"=>"Czech Republic","value"=>"CZ"), + array("label"=>"Denmark", "value"=>"DK"), + array("label"=>"Djibouti", "value"=>"DJ"), + array("label"=>"Dominica", "value"=>"DM"), + array("label"=>"Dominican Republic", "value"=>"DO"), + array("label"=>"East Timor", "value"=>"TP"), + array("label"=>"Ecuador", "value"=>"EC"), + array("label"=>"Egypt", "value"=>"EG"), + array("label"=>"El Salvador", "value"=>"SV"), + array("label"=>"Equatorial Guinea", "value"=>"GQ"), + array("label"=>"Eritrea", "value"=>"ER"), + array("label"=>"Estonia", "value"=>"EE"), + array("label"=>"Ethiopia", "value"=>"ET"), + array("label"=>"Falkland Islands (Malvinas)", "value"=>"FK"), + array("label"=>"Faroe Islands", "value"=>"FO"), + array("label"=>"Fiji", "value"=>"FJ"), + array("label"=>"Finland", "value"=>"FI"), + array("label"=>"France", "value"=>"FR"), + array("label"=>"French Guiana", "value"=>"GF"), + array("label"=>"French Polynesia", "value"=>"PF"), + array("label"=>"French Southern Territories", "value"=>"TF"), + array("label"=>"Gabon", "value"=>"GA"), + array("label"=>"Gambia", "value"=>"GM"), + array("label"=>"Georgia", "value"=>"GE"), + array("label"=>"Germany", "value"=>"DE"), + array("label"=>"Ghana", "value"=>"GH"), + array("label"=>"Gibraltar", "value"=>"GI"), + array("label"=>"Greece", "value"=>"GR"), + array("label"=>"Greenland", "value"=>"GL"), + array("label"=>"Grenada", "value"=>"GD"), + array("label"=>"Guadeloupe", "value"=>"GP"), + array("label"=>"Guam", "value"=>"GU"), + array("label"=>"Guatemala", "value"=>"GT"), + array("label"=>"Guernsey", "value"=>"GG"), + array("label"=>"Guinea", "value"=>"GN"), + array("label"=>"Guinea-Bissau", "value"=>"GW"), + array("label"=>"Guyana", "value"=>"GY"), + array("label"=>"Haiti", "value"=>"HT"), + array("label"=>"Heard And Mc Donald Islands", "value"=>"HM"), + array("label"=>"Honduras", "value"=>"HN"), + array("label"=>"Hong Kong", "value"=>"HK"), + array("label"=>"Hungary", "value"=>"HU"), + array("label"=>"Iceland", "value"=>"IS"), + array("label"=>"India", "value"=>"IN"), + array("label"=>"Indonesia", "value"=>"ID"), + array("label"=>"Iran (Islamic Republic Of)", "value"=>"IR"), + array("label"=>"Iraq", "value"=>"IQ"), + array("label"=>"Ireland", "value"=>"IE"), + array("label"=>"Isle of Man", "value"=>"IM"), + array("label"=>"Israel", "value"=>"IL"), + array("label"=>"Italy", "value"=>"IT"), + array("label"=>"Jamaica", "value"=>"JM"), + array("label"=>"Japan", "value"=>"JP"), + array("label"=>"Jersey", "value"=>"JE"), + array("label"=>"Jordan", "value"=>"JO"), + array("label"=>"Kazakhstan", "value"=>"KZ"), + array("label"=>"Kenya", "value"=>"KE"), + array("label"=>"Kiribati", "value"=>"KI"), + array("label"=>"Korea, Democratic People's Republic Of", "value"=>"KP"), + array("label"=>"Korea, Republic Of", "value"=>"KR"), + array("label"=>"Kuwait", "value"=>"KW"), + array("label"=>"Kyrgyzstan", "value"=>"KG"), + array("label"=>"Lao People's Democratic Republic", "value"=>"LA"), + array("label"=>"Latvia", "value"=>"LV"), + array("label"=>"Lebanon", "value"=>"LB"), + array("label"=>"Lesotho", "value"=>"LS"), + array("label"=>"Liberia", "value"=>"LR"), + array("label"=>"Libyan Arab Jamahiriya", "value"=>"LY"), + array("label"=>"Liechtenstein", "value"=>"LI"), + array("label"=>"Lithuania", "value"=>"LT"), + array("label"=>"Luxembourg", "value"=>"LU"), + array("label"=>"Macau", "value"=>"MO"), + array("label"=>"Macedonia, The Former Yugoslav", "value"=>"MK"), + array("label"=>"Of", "value"=>"Republic"), + array("label"=>"Madagascar", "value"=>"MG"), + array("label"=>"Malawi", "value"=>"MW"), + array("label"=>"Malaysia", "value"=>"MY"), + array("label"=>"Maldives", "value"=>"MV"), + array("label"=>"Mali", "value"=>"ML"), + array("label"=>"Malta", "value"=>"MT"), + array("label"=>"Marshall Islands", "value"=>"MH"), + array("label"=>"Martinique", "value"=>"MQ"), + array("label"=>"Mauritania", "value"=>"MR"), + array("label"=>"Mauritius", "value"=>"MU"), + array("label"=>"Mayotte", "value"=>"YT"), + array("label"=>"Mexico", "value"=>"MX"), + array("label"=>"Micronesia, Federated States Of", "value"=>"FM"), + array("label"=>"Moldova, Republic Of", "value"=>"MD"), + array("label"=>"Monaco", "value"=>"MC"), + array("label"=>"Mongolia", "value"=>"MN"), + array("label"=>"Montserrat", "value"=>"MS"), + array("label"=>"Morocco", "value"=>"MA"), + array("label"=>"Mozambique", "value"=>"MZ"), + array("label"=>"Myanmar", "value"=>"MM"), + array("label"=>"Namibia", "value"=>"NA"), + array("label"=>"Nauru", "value"=>"NR"), + array("label"=>"Nepal", "value"=>"NP"), + array("label"=>"Netherlands", "value"=>"NL"), + array("label"=>"Netherlands Antilles", "value"=>"AN"), + array("label"=>"New Caledonia", "value"=>"NC"), + array("label"=>"New Zealand", "value"=>"NZ"), + array("label"=>"Nicaragua", "value"=>"NI"), + array("label"=>"Niger", "value"=>"NE"), + array("label"=>"Nigeria", "value"=>"NG"), + array("label"=>"Niue", "value"=>"NU"), + array("label"=>"Norfolk Island", "value"=>"NF"), + array("label"=>"Northern Mariana Islands", "value"=>"MP"), + array("label"=>"Norway", "value"=>"NO"), + array("label"=>"Oman", "value"=>"OM"), + array("label"=>"Pakistan", "value"=>"PK"), + array("label"=>"Palau", "value"=>"PW"), + array("label"=>"Palestinian Territories", "value"=>"PS"), + array("label"=>"Panama", "value"=>"PA"), + array("label"=>"Papua New Guinea", "value"=>"PG"), + array("label"=>"Paraguay", "value"=>"PY"), + array("label"=>"Peru", "value"=>"PE"), + array("label"=>"Philippines", "value"=>"PH"), + array("label"=>"Pitcairn", "value"=>"PN"), + array("label"=>"Poland", "value"=>"PL"), + array("label"=>"Portugal", "value"=>"PT"), + array("label"=>"Puerto Rico", "value"=>"PR"), + array("label"=>"Qatar", "value"=>"QA"), + array("label"=>"Reunion", "value"=>"RE"), + array("label"=>"Romania", "value"=>"RO"), + array("label"=>"Russian Federation", "value"=>"RU"), + array("label"=>"Rwanda", "value"=>"RW"), + array("label"=>"Saint Kitts And Nevis", "value"=>"KN"), + array("label"=>"Saint Lucia", "value"=>"LC"), + array("label"=>"Saint Vincent And The Grenadines", "value"=>"VC"), + array("label"=>"Samoa", "value"=>"WS"), + array("label"=>"San Marino", "value"=>"SM"), + array("label"=>"Sao Tome And Principe", "value"=>"ST"), + array("label"=>"Saudi Arabia", "value"=>"SA"), + array("label"=>"Senegal", "value"=>"SN"), + array("label"=>"Seychelles", "value"=>"SC"), + array("label"=>"Sierra Leone", "value"=>"SL"), + array("label"=>"Singapore", "value"=>"SG"), + array("label"=>"Slovakia (Slovak Republic)", "value"=>"SK"), + array("label"=>"Slovenia", "value"=>"SI"), + array("label"=>"Solomon Islands", "value"=>"SB"), + array("label"=>"Somalia", "value"=>"SO"), + array("label"=>"South Africa", "value"=>"ZA"), + array("label"=>"South Georgia And South Sandwich", "value"=>"GS"), + array("label"=>"Spain", "value"=>"ES"), + array("label"=>"Sri Lanka", "value"=>"LK"), + array("label"=>"St. Helena", "value"=>"SH"), + array("label"=>"St. Pierre And Miquelon", "value"=>"PM"), + array("label"=>"Sudan", "value"=>"SD"), + array("label"=>"Suriname", "value"=>"SR"), + array("label"=>"Svalbard And Jan Mayen Islands", "value"=>"SJ"), + array("label"=>"Swaziland", "value"=>"SZ"), + array("label"=>"Sweden", "value"=>"SE"), + array("label"=>"Switzerland", "value"=>"CH"), + array("label"=>"Syrian Arab Republic", "value"=>"SY"), + array("label"=>"Taiwan, Province Of China", "value"=>"TW"), + array("label"=>"Tajikistan", "value"=>"TJ"), + array("label"=>"Tanzania, United Republic Of", "value"=>"TZ"), + array("label"=>"Thailand", "value"=>"TH"), + array("label"=>"Togo", "value"=>"TG"), + array("label"=>"Tokelau", "value"=>"TK"), + array("label"=>"Tonga", "value"=>"TO"), + array("label"=>"Trinidad And Tobago", "value"=>"TT"), + array("label"=>"Tunisia", "value"=>"TN"), + array("label"=>"Turkey", "value"=>"TR"), + array("label"=>"Turkmenistan", "value"=>"TM"), + array("label"=>"Turks And Caicos Islands", "value"=>"TC"), + array("label"=>"Tuvalu", "value"=>"TV"), + array("label"=>"Uganda", "value"=>"UG"), + array("label"=>"Ukraine", "value"=>"UA"), + array("label"=>"United Arab Emirates", "value"=>"AE"), + array("label"=>"United Kingdom", "value"=>"UK"), + array("label"=>"United States", "value"=>"US"), + array("label"=>"United States Minor Outlying Islands", "value"=>"UM"), + array("label"=>"Uruguay", "value"=>"UY"), + array("label"=>"Uzbekistan", "value"=>"UZ"), + array("label"=>"Vanuatu", "value"=>"VU"), + array("label"=>"Vatican City State (Holy See)", "value"=>"VA"), + array("label"=>"Venezuela", "value"=>"VE"), + array("label"=>"Viet Nam", "value"=>"VN"), + array("label"=>"Virgin Islands (British)", "value"=>"VG"), + array("label"=>"Virgin Islands (U.S.)", "value"=>"VI"), + array("label"=>"Wallis And Futuna Islands", "value"=>"WF"), + array("label"=>"Western Sahara", "value"=>"EH"), + array("label"=>"Yemen", "value"=>"YE"), + array("label"=>"Yugoslavia", "value"=>"YU"), + array("label"=>"Zaire", "value"=>"ZR"), + array("label"=>"Zambia", "value"=>"ZM"), + array("label"=>"Zimbabwe", "value"=>"ZW"), + array("label"=>"Undefined", "value"=>"N/A") + ); + + var $hide_html = false; + + public function __construct($SoapEngine) + { + dprint("init Customers"); + + $this->filters = array( + 'username' => trim($_REQUEST['username_filter']), + 'firstName' => trim($_REQUEST['firstName_filter']), + 'lastName' => trim($_REQUEST['lastName_filter']), + 'organization' => trim($_REQUEST['organization_filter']), + 'tel' => trim($_REQUEST['tel_filter']), + 'email' => htmlspecialchars(trim($_REQUEST['email_filter'])), + 'web' => trim($_REQUEST['web_filter']), + 'country' => trim($_REQUEST['country_filter']), + 'city' => trim($_REQUEST['city_filter']), + 'only_resellers' => trim($_REQUEST['only_resellers_filter']) + ); + + parent::__construct($SoapEngine); + + $this->showAddForm = $_REQUEST['showAddForm']; + + if (is_array($this->SoapEngine->customer_properties)) { + $this->customer_properties = $this->SoapEngine->customer_properties; + } else { + $this->customer_properties = array(); + } + + $this->allProperties=array_merge($this->propertiesItems,$this->customer_properties); + + } + + function showSeachForm() { + printf ("
%s", + $this->SoapEngine->ports[$this->SoapEngine->port]['description'], + '%' + ); + + printf ("
+ "; + } + + function listRecords() { + + // Filter + $filter=array('username' => $this->filters['username'], + 'firstName' => $this->filters['firstName'], + 'lastName' => $this->filters['lastName'], + 'organization' => $this->filters['organization'], + 'tel' => $this->filters['tel'], + 'email' => $this->filters['email'], + 'web' => $this->filters['web'], + 'city' => $this->filters['city'], + 'country' => $this->filters['country'], + 'only_resellers' => $this->filters['only_resellers'], + 'customer' => intval($this->filters['customer']), + 'reseller' => intval($this->filters['reseller']) + ); + + //print_r($filter); + + // Range + $range=array('start' => intval($this->next), + 'count' => intval($this->maxrowsperpage) + ); + + // Order + if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; + if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; + + $orderBy = array('attribute' => $this->sorting['sortBy'], + 'direction' => $this->sorting['sortOrder'] + ); + + // Compose query + $Query=array('filter' => $filter, + 'orderBy' => $orderBy, + 'range' => $range + ); + + $this->showSeachForm(); + + if ($this->showAddForm) { + $this->showAddForm(); + return true; + } + + // Insert credetials + $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); + + // Call function + if ($this->adminonly && $this->filters['only_resellers']) { + $this->log_action('getResellers'); + $result = $this->SoapEngine->soapclient->getResellers($Query); + } else { + $this->log_action('getCustomers'); + $result = $this->SoapEngine->soapclient->getCustomers($Query); + } + + if ((new PEAR)->isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + syslog(LOG_NOTICE, $log); + return false; + } else { + + $this->rows = $result->total; + + if ($this->rows && $_REQUEST['action'] != 'PerformActions' && $_REQUEST['action'] != 'Delete') { + $this->showActionsForm(); + } + + print " ++ | Id | +Impersonate | +Username | +Name | +Organization | +Country | +Phone number | +Change date | +Actions | +|
---|---|---|---|---|---|---|---|---|---|---|
%s | +%s.%s | +%s | +%s | +%s %s | +%s | +%s | +%s | +%s | +%s | +%s + ", + $index, + $_customer_url, + $customer->id, + $customer->reseller, + $customer->impersonate, + strip_tags($customer->username), + strip_tags($customer->firstName), + strip_tags($customer->lastName), + strip_tags($customer->organization), + strip_tags($customer->country), + strip_tags($customer->email), + strip_tags($customer->email), + $customer->tel, + $customer->changeDate, + $_url, + $actionText + ); + + $this->showExtraActions($customer); + print " | +
Please press on Confirm to confirm the delete. "; + return true; + } + + if ($dictionary['customer']) { + $customer=$dictionary['customer']; + } else { + $customer=$this->filters['customer']; + } + + if (!strlen($customer)) { + print "
Error: missing customer id. "; + return false; + } + + $function=array('commit' => array('name' => 'deleteAccount', + 'parameters' => array(intval($customer)), + 'logs' => array('success' => sprintf('Customer id %s has been deleted',$this->filters['customer']))) + ); + if ($this->SoapEngine->execute($function,$this->html)) { + unset($this->filters); + return true; + + } else { + return false; + } + + } + + function getRecord($id) { + + $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); + $this->log_action('getAccount'); + $result = $this->SoapEngine->soapclient->getAccount(intval($id)); + + if ((new PEAR)->isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + syslog(LOG_NOTICE, $log); + return false; + } else { + return $result; + } + } + + function showRecordHeader($customer) { + } + + function showRecordFooter($customer) { + } + + function showExtraActions($customer) { + } + + function showRecord($customer) { + //dprint_r($customer); + + $this->showRecordHeader($customer); + + print "
Updating customer ..."; + + if (!strlen($this->filters['customer'])) { + return false; + } + + if (!$customer=$this->getRecord($this->filters['customer'])) { + return false; + } + + if ($_REQUEST['notify']) { + + $customer_notify=array('firstName'=> $customer->firstName, + 'lastName' => $customer->lastName, + 'email' => $customer->email, + 'username' => $customer->username, + 'password' => $customer->password + ); + + if ($this->notify($customer_notify)) { + print "
"; + printf (_("The login account details have been sent to %s"), $customer->email); + return true; + } else { + print "
"; + printf (_("Error sending e-mail notification")); + return false; + } + } + + if (!$this->updateBefore($customer)) { + return false; + } + + $customer->credit = floatval($customer->credit); + $customer->balance = floatval($customer->balance); + + foreach ($customer->properties as $_property) { + $properties[]=$_property; + } + + if (is_array($properties)) { + $customer->properties=$properties; + } else { + $customer->properties=array(); + } + + $customer_old = $customer; + + // update properties + + foreach (array_keys($this->allProperties) as $item) { + $var_name = $item.'_form'; + + $updated_property=array(); + + foreach (array_keys($customer->properties) as $_key) { + $_property=$customer->properties[$_key]; + + if ($_property->name == $item) { + // update property + + if ($_property->permission == 'admin') { + if ($this->login_credentials['login_type'] == 'admin') { + $customer->properties[$_key]->value=trim($_REQUEST[$var_name]); + } else if ($this->login_credentials['login_type'] == 'reseller' && $this->allProperties[$item]['resellerMayManageForChildAccounts']) { + if ($customer->id != $customer->reseller) { + $customer->properties[$_key]->value=trim($_REQUEST[$var_name]); + } + } + } else if ($_property->permission == 'reseller') { + if ($this->login_credentials['login_type'] == 'admin' || $this->login_credentials['login_type'] == 'reseller') { + $customer->properties[$_key]->value=trim($_REQUEST[$var_name]); + } + } else { + $customer->properties[$_key]->value=trim($_REQUEST[$var_name]); + if ($_key == 'yubikey' && $_REQUEST[$var_name] != '') { + $customer->properties[$_key]->value = substr($customer->properties[$_key]->value,0,12); + } + } + + + $updated_property[$item]++; + + break; + } + } + + if (!$updated_property[$item] && strlen($_REQUEST[$var_name])) { + // add new property + + unset($var_value); + unset($_permission); + + if ($this->allProperties[$item]['permission'] == 'admin') { + $_permission = 'admin'; + + if ($this->login_credentials['login_type'] == 'admin') { + $var_value = trim($_REQUEST[$var_name]); + } else if ($this->login_credentials['login_type'] == 'reseller' && $this->allProperties[$item]['resellerMayManageForChildAccounts']) { + if ($customer->id != $customer->reseller) { + $var_value = trim($_REQUEST[$var_name]); + } + } + } else if ($this->allProperties[$item]['permission'] == 'reseller') { + $_permission = 'reseller'; + + if ($this->login_credentials['login_type'] == 'admin' || $this->login_credentials['login_type'] == 'reseller') { + $var_value = trim($_REQUEST[$var_name]); + } + } else { + $_permission = 'customer'; + $var_value = trim($_REQUEST[$var_name]); + } + + if (strlen($var_value)) { + if ($item == 'yubikey' ) { + $var_value = substr($var_value,0,12); + } + $customer->properties[] = array('name' => $item, + 'value' => $var_value, + 'category' => $this->allProperties[$item]['category'], + 'permission' => $this->allProperties[$item]['permission'] + ); + } + } + } + /* + print "
"; + print_r($customer->properties); + print ""; + */ + + foreach (array_keys($this->Fields) as $item) { + $var_name=$item.'_form'; + //printf ("
Copy customer ..."; + + if (!strlen($this->filters['customer'])) { + return false; + } + + if (!$_REQUEST['confirm']) { + print "
Please press on Copy again to confirm the copy"; + return true; + } + + if (!$customer=$this->getRecord($this->filters['customer'])) { + return false; + } + + $customer->credit = floatval($customer->credit); + $customer->balance = floatval($customer->balance); + + foreach ($customer->properties as $_property) { + $properties[]=$_property; + } + + if (is_array($properties)) { + $customer->properties=$properties; + } else { + $customer->properties=array(); + } + + // change username + $customer_new=$customer; + unset($customer_new->id); + + $j=1; + while ($j < 9) { + + $customer_new->username=$customer->username.$j; + + $function=array('commit' => array('name' => 'addAccount', + 'parameters' => array($customer_new), + 'logs' => array('success' => sprintf('Customer id %s has been copied',$customer->id))) + ); + + if ($this->SoapEngine->execute($function,$this->html)) { + // Reset filters to find the copy + $this->filters=array(); + $this->filters['username']=$customer_new->username; + + return true; + } else { + if ($this->SoapEngine->error_fault->detail->exception->errorcode != "5001") { + return false; + } + } + + $j++; + } + } + + function showAddForm($confirmPassword=false) { + + print "
"; + print _("Accounts are used for login and to assign ownership to data created in the platform. "); + printf ("
"; + print " +%s at %s as %s ", $this->soap_class, $this->SOAPurl, $this->SOAPurl, $this->soapUsername ); dprint($log); $this->SoapAuth = array('auth', $this->SOAPlogin , 'urn:AGProjects:NGNPro', 0, ''); $this->SoapAuthAdmin = array('auth', $this->SOAPloginAdmin , 'urn:AGProjects:NGNPro', 0, ''); // Instantiate the SOAP client if (!class_exists($this->soap_class)) return ; $this->soapclient = new $this->soap_class($this->SOAPurl); $this->soapclient->setOpt('curl', 'CURLOPT_SSL_VERIFYPEER', 0); $this->soapclient->setOpt('curl', 'CURLOPT_SSL_VERIFYHOST', 0); // set the timeout $this->soapclient->_options['timeout'] = $this->timeout; if ($this->customer_engine) { $this->SOAPloginCustomers = array( "username" => $this->soapEngines[$this->customer_engine]['username'], "password" => $this->soapEngines[$this->customer_engine]['password'], "admin" => true, "impersonate" => intval($this->reseller) ); $this->SoapAuthCustomers = array('auth', $this->SOAPloginCustomers , 'urn:AGProjects:NGNPro', 0, ''); $this->SOAPurlCustomers = $this->soapEngines[$this->customer_engine]['url']; $this->soapclientCustomers = new WebService_NGNPro_CustomerPort($this->SOAPurlCustomers); $this->soapclientCustomers->setOpt('curl', 'CURLOPT_SSL_VERIFYPEER', 0); $this->soapclientCustomers->setOpt('curl', 'CURLOPT_SSL_VERIFYHOST', 0); if (strlen($this->soapEngines[$this->customer_engine]['timeout'])) { $this->soapclientCustomers->_options['timeout'] = intval($this->soapEngines[$this->customer_engine]['timeout']); } else { $this->soapclientCustomers->_options['timeout'] = $this->timeout; } } if ($this->voicemail_engine) { $this->SOAPloginVoicemail = array( "username" => $this->soapEngines[$this->voicemail_engine]['username'], "password" => $this->soapEngines[$this->voicemail_engine]['password'], "admin" => true, "impersonate" => intval($this->reseller) ); $this->SoapAuthVoicemail = array('auth', $this->SOAPloginVoicemail , 'urn:AGProjects:NGNPro', 0, ''); $this->SOAPurlVoicemail = $this->soapEngines[$this->voicemail_engine]['url']; $this->soapclientVoicemail = new WebService_NGNPro_VoicemailPort($this->SOAPurlVoicemail); $this->soapclientVoicemail->setOpt('curl', 'CURLOPT_SSL_VERIFYPEER', 0); $this->soapclientVoicemail->setOpt('curl', 'CURLOPT_SSL_VERIFYHOST', 0); if (strlen($this->soapEngines[$this->voicemail_engine]['timeout'])) { $this->soapclientVoicemail->_options['timeout'] = intval($this->soapEngines[$this->voicemail_engine]['timeout']); } else { $this->soapclientVoicemail->_options['timeout'] = $this->timeout; } } } else { print "Error: No SOAP credentials defined."; } $this->url = $_SERVER['PHP_SELF']."?1=1"; foreach (array_keys($this->extraFormElements) as $element) { if (!strlen($this->extraFormElements[$element])) continue; $this->url .= sprintf( '&%s=%s', $element, urlencode($this->extraFormElements[$element]) ); } $this->support_email = $this->soapEngines[$this->soapEngine]['support_email']; $this->support_web = $this->soapEngines[$this->soapEngine]['support_web']; $this->welcome_message = $this->soapEngines[$this->soapEngine]['welcome_message']; } /** * returns a list of allowed engines based on a filter * the filter format is: * engine1:port1,port2 engine2 engine3:port1 */ public function getSoapEngineAllowed($soapEngines, $filter) { if (!$filter) { $soapEngines_checked = $soapEngines; } else { $_filter_els = explode(" ", $filter); foreach (array_keys($soapEngines) as $_engine) { foreach ($_filter_els as $_filter) { unset($_allowed_engine); $_allowed_ports = array(); list($_allowed_engine, $_allowed_ports_els) = explode(":", $_filter); if ($_allowed_ports_els) { $_allowed_ports = explode(",", $_allowed_ports_els); } if (count($_allowed_ports) == 0) { $_allowed_ports = array_keys($this->ports); } if ($_engine == $_allowed_engine) { $soapEngines_checked[$_engine] = $soapEngines[$_engine]; $this->allowedPorts[$_engine] = $_allowed_ports; continue; } } } } return $soapEngines_checked; } /** * $function = array( * 'commit' => array( * 'name' => 'addAccount', * 'parameters' => array( * $param1, * $param2 * ), * 'logs' => array( * 'success' => 'The function was a success', * 'failure' => 'The function has failed' * ) * ) * ); */ public function execute($function, $html = true, $adminonly = false) { if (!$function['commit']['name']) { if ($html) { print "Error: no function name supplied"; } else { print "Error: no function name supplied\n"; } return false; } if ($adminonly) { $this->soapclient->addHeader($this->SoapAuthAdmin); } else { $this->soapclient->addHeader($this->SoapAuth); } $result = call_user_func_array( array( $this->soapclient, $function['commit']['name'] ), $function['commit']['parameters'] ); if ((new PEAR)->isError($result)) { $this->error_msg = $result->getMessage(); $this->error_fault = $result->getFault(); $this->error_code = $result->getCode(); $this->exception = $this->error_fault->detail->exception; $log = sprintf( "SOAP request error from %s: %s (%s): %s", $this->SOAPurl, $this->error_msg, $this->error_fault->detail->exception->errorcode, $this->error_fault->detail->exception->errorstring ); syslog(LOG_NOTICE, $log); if ($html) { $log = sprintf( "SOAP query failed: %s (%s): %s", $this->error_msg, $this->error_fault->detail->exception->errorcode, $this->error_fault->detail->exception->errorstring ); print "$log"; } return false; } else { $this->result = $result; if ($function['commit']['logs']['success']) { if ($html) { printf( "
%s \n", htmlentities($function['commit']['logs']['success']) ); } } if (is_object($result) || strlen($result)) { return $result; } else { return true; } } } } class Records { public $maxrowsperpage = '20'; public $sip_settings_page = 'sip_settings.phtml'; public $allowedDomains = array(); public $selectionActive = false; public $selectionKeys = array(); public $resellers = array(); public $customers = array(); public $record_generator = false; public $customer_properties = array(); public $loginProperties = array(); public $errorMessage = ''; public $html = true; public $filters = array(); public $selectionActiveExceptions = array(); public function log_action($action = 'Unknown') { global $CDRTool; $location = "Unknown"; $_loc = geoip_record_by_name($_SERVER['REMOTE_ADDR']); if ($_loc['country_name']) { $location = $_loc['country_name']; } $log = sprintf( "CDRTool login username=%s, type=%s, impersonate=%s, IP=%s, location=%s, action=%s:%s, script=%s", $this->login_credentials['username'], $this->login_credentials['login_type'], $CDRTool['impersonate'], $_SERVER['REMOTE_ADDR'], $location, $this->SoapEngine->port, $action, $_SERVER['PHP_SELF'] ); syslog(LOG_NOTICE, $log); } public function soapHasError($result) { return (new PEAR)->isError($result); } public function checkLogSoapError($result, $syslog = false, $print = false) { if (!$this->soapHasError($result)) { return false; } $error_msg = $result->getMessage(); $error_fault= $result->getFault(); $error_code = $result->getCode(); if ($syslog) { $log = sprintf( "SOAP request error from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring ); syslog(LOG_NOTICE, $log); if ($print) { printf("
Error: $log"); } } else { printf( "Error: %s (%s): %s", $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring ); } return true; } public function buildUrl($data) { return sprintf( "%s&%s", $this->url, http_build_query($data) ); } public function __construct($SoapEngine) { $this->SoapEngine = $SoapEngine; $this->version = $this->SoapEngine->version; $this->login_credentials = $this->SoapEngine->login_credentials; $this->sorting['sortBy'] = trim($_REQUEST['sortBy']); $this->sorting['sortOrder'] = trim($_REQUEST['sortOrder']); $this->next = $_REQUEST['next']; $this->adminonly = $this->SoapEngine->adminonly; $this->reseller = $this->SoapEngine->reseller; $this->customer = $this->SoapEngine->customer; $this->impersonate = $this->SoapEngine->impersonate; $this->url = $this->SoapEngine->url; foreach (array_keys($this->filters) as $_filter) { if (strlen($this->filters[$_filter]) && !in_array($_filter, $this->selectionActiveExceptions)) { $this->selectionActive = true; break; } } if ($this->adminonly) { $this->url .= sprintf('&adminonly=%s', $this->adminonly); if ($this->login_credentials['reseller']) { $this->filters['reseller'] = $this->login_credentials['reseller']; } else { $this->filters['reseller'] = trim($_REQUEST['reseller_filter']); } } $this->filters['customer'] = trim($_REQUEST['customer_filter']); //$this->getResellers(); $this->getCustomers(); $this->getLoginAccount(); if (strlen($this->SoapEngine->sip_settings_page)) { $this->sip_settings_page = $this->SoapEngine->sip_settings_page; } if (strlen($this->SoapEngine->digest_settings_page)) { $this->digest_settings_page = $this->SoapEngine->digest_settings_page; } $this->support_email = $this->SoapEngine->support_email; $this->support_web = $this->SoapEngine->support_web; } function showEngineSelection() { $selected_soapEngine[$this->SoapEngine->service] =' selected'; $pstn_access = $this->getCustomerProperty('pstn_access'); printf(""); printf( "", $this->url ); } function showAfterEngineSelection() { } function showCustomerSelection() { $this->showCustomerForm(); } function showResellerSelection() { if ($this->adminonly) { $this->showResellerForm(); } else { printf("%s", $this->reseller); } } function showPagination($maxrows) { $url .= $this->url.'&'.$this->addFiltersToURL().sprintf( "&service=%s&sortBy=%s&sortOrder=%s", urlencode($this->SoapEngine->service), urlencode($this->sorting['sortBy']), urlencode($this->sorting['sortOrder']) ); print "
%s", $this->SoapEngine->ports[$this->SoapEngine->port]['description'] ); printf( "