/** * @param IQuerySpecification $specification * @return IQueryResult */ public function handle(IQuerySpecification $specification) { $params = $specification->getSpecificationParams(); $current_date = @$params['name_pattern']; $current_date = Convert::raw2sql($current_date); $sql = <<<SQL SELECT TrainingCourseSchedule.City, TrainingCourseSchedule.State, TrainingCourseSchedule.Country FROM TrainingCourse INNER JOIN CompanyService ON CompanyService.ID = TrainingCourse.TrainingServiceID AND CompanyService.ClassName='TrainingService' INNER JOIN TrainingCourseSchedule ON TrainingCourseSchedule.CourseID = TrainingCourse.ID LEFT JOIN TrainingCourseScheduleTime ON TrainingCourseScheduleTime.LocationID = TrainingCourseSchedule.ID WHERE CompanyService.Active = 1 AND ( ((DATE('{$current_date}') < TrainingCourseScheduleTime.StartDate AND DATE('{$current_date}') < TrainingCourseScheduleTime.EndDate) OR (TrainingCourse.Online=1 AND TrainingCourseScheduleTime.StartDate IS NULL AND TrainingCourseScheduleTime.EndDate IS NULL)) ) GROUP BY TrainingCourseSchedule.City, TrainingCourseSchedule.State, TrainingCourseSchedule.Country ORDER BY TrainingCourseSchedule.City, TrainingCourseSchedule.State, TrainingCourseSchedule.Country ASC; SQL; $results = DB::query($sql); $locations = array(); for ($i = 0; $i < $results->numRecords(); $i++) { $record = $results->nextRecord(); $city = $record['City']; $state = $record['State']; $country = Geoip::countryCode2name($record['Country']); if (!empty($state)) { $value = sprintf('%s, %s, %s', $city, $state, $country); } else { $value = sprintf('%s, %s', $city, $country); } array_push($locations, new SearchDTO($value, $value)); } return new OpenStackImplementationNamesQueryResult($locations); }
public function getCountryName() { $country = ''; if ($this->Country) { $country = Geoip::countryCode2name($this->Country); } return $country; }
/** * @param IQuerySpecification $specification * @return IQueryResult */ public function handle(IQuerySpecification $specification) { $params = $specification->getSpecificationParams(); $filter = ''; if (!empty($term)) { $term = @$params['name_pattern']; $term = Convert::raw2sql($term); $countries = Geoip::getCountryDropDown(); $matched_countries = array_filter($countries, function ($el) use($term) { return strpos(strtolower($el), strtolower($term)) !== false; }); $country_filter = ''; if (count($matched_countries)) { foreach ($matched_countries as $code => $name) { $country_filter .= " OR Country = '{$code}' "; } } else { $country_filter = " OR Country LIKE '%{$term}%' "; } $filter = "AND City LIKE '%{$term}%' {$country_filter}"; } $locations = array(); $class_name = $this->getClassName(); $sql = <<<SQL SELECT City,Country,State FROM DataCenterLocation INNER JOIN CompanyService ON CompanyService.ID = DataCenterLocation.CloudServiceID \t\tWHERE CompanyService.ClassName = '{$class_name}' \t\t{$filter} \t\tGROUP BY City,Country,State \t\tORDER BY City,State, Country ASC SQL; $results = DB::query($sql); for ($i = 0; $i < $results->numRecords(); $i++) { $record = $results->nextRecord(); $city = $record['City']; $state = $record['State']; $country = Geoip::countryCode2name($record['Country']); if (!empty($state)) { $value = sprintf('%s, %s, %s', $city, $state, $country); } else { $value = sprintf('%s, %s', $city, $country); } array_push($locations, new SearchDTO($value, $value)); } return new OpenStackImplementationNamesQueryResult($locations); }
public function getDataCenterLocationsJson() { $locations = array(); $query = new QueryObject(); $query->addAndCondition(QueryCriteria::equal("Active", true)); list($list, $size) = $this->public_cloud_repository->getAll($query, 0, 1000); foreach ($list as $public_cloud) { foreach ($public_cloud->getDataCentersLocations() as $location) { $json_data = array(); $json_data['color'] = $location->getDataCenterRegion()->getColor(); $json_data['country'] = Geoip::countryCode2name($location->getCountry()); $json_data['city'] = $location->getCity(); $json_data['lat'] = $location->getLat(); $json_data['lng'] = $location->getLng(); $json_data['product_name'] = $public_cloud->getName(); $json_data['product_url'] = $this->buildCloudLink($public_cloud->getCompany()->URLSegment . '/' . strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $public_cloud->getName())))); $json_data['owner'] = $public_cloud->getCompany()->getName(); array_push($locations, $json_data); } } return json_encode($locations); }
public static function getDataCenterLocationsJson(ICloudService $cloud) { $locations = array(); foreach ($cloud->getDataCentersLocations() as $location) { $json_data = array(); $json_data['country'] = Geoip::countryCode2name($location->getCountry()); $json_data['city'] = $location->getCity(); $json_data['lat'] = $location->getLat(); $json_data['lng'] = $location->getLng(); $json_data['color'] = $location->getDataCenterRegion()->getColor(); $json_data['endpoint'] = $location->getDataCenterRegion()->getEndpoint(); $json_data['zone'] = $location->getDataCenterRegion()->getName(); $json_data['availability_zones'] = array(); $json_data['product_name'] = $cloud->getName(); $json_data['owner'] = $cloud->getCompany()->getName(); foreach ($location->getAvailabilityZones() as $az) { $json_data_az = array(); $json_data_az['name'] = $az->getName(); array_push($json_data['availability_zones'], $json_data_az); } array_push($locations, $json_data); } return json_encode($locations); }
public function getCountryFriendlyName() { return Geoip::countryCode2name($this->getCountry()); }
public function UpdateBillingAddress($data, $form) { $member = Member::currentUser(); $isConID = $member->ISContactID; //Get InfusionSoft Api $creditCardType = Controller::curr()->getISCreditCardType($data['CreditCardType']); $app = Controller::curr()->getInfusionSoftApi(); if (!isset($data['CreditCardNumber']) || $data['CreditCardNumber'] != $data['CreditCardNumberCopy'] && !is_numeric($data['CreditCardNumber'])) { Controller::curr()->setMessage('Error', 'The credit card is invalid!'); return Controller::curr()->redirect(Controller::curr()->Link('#tabs-2')); } if ($data['CreditCardNumber'] == $data['CreditCardNumberCopy']) { $cardNumber = $data['CreditCardNumberCur']; } else { $cardNumber = $data['CreditCardNumber']; } // Validate credit card $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $cardNumber, 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear'], 'CVV2' => $data['CreditCardCVV']); $result = $app->validateCard($card); if ($result['Valid'] != 'true') { Controller::curr()->setMessage('Error', 'The credit card is invalid!'); return Controller::curr()->redirect(Controller::curr()->Link('#tabs-2')); } // Get country text from code $country = Geoip::countryCode2name($data['Country']); if ($data['CreditCardNumber'] == $data['CreditCardNumberCopy']) { //Get the credit card $creditCard = CreditCard::get()->filter(array('CreditCardNumber' => $data['CreditCardNumberCur'], 'MemberID' => $member->ID))->First(); //Update the credit card on InfusionSoft $ccData = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']); $app->dsUpdate("CreditCard", $creditCard->ISCCID, $ccData); //Update the credit card on site $creditCard->CreditCardType = $data['CreditCardType']; $creditCard->NameOnCard = $data['NameOnCard']; $creditCard->CreditCardCVV = $data['CreditCardCVV']; $creditCard->ExpiryMonth = $data['ExpiryMonth']; $creditCard->ExpiryYear = $data['ExpiryYear']; $creditCard->Company = $data['Company']; $creditCard->StreetAddress1 = $data['StreetAddress1']; $creditCard->StreetAddress2 = $data['StreetAddress2']; $creditCard->City = $data['City']; $creditCard->State = $data['State']; $creditCard->PostalCode = $data['PostalCode']; $creditCard->Country = $data['Country']; $creditCard->Current = 1; $creditCard->write(); } else { //Find if the credit card exist $creditCard = CreditCard::get()->filter(array('CreditCardNumber' => $data['CreditCardNumber'], 'MemberID' => $member->ID))->First(); if ($creditCard) { //Get current credit card, un-mark it as current Controller::curr()->unsetCurrentCreditCard($member->ID); $ccID = $creditCard->ISCCID; //Update the credit card on InfusionSoft $ccData = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']); $app->dsUpdate("CreditCard", $ccID, $ccData); //Update the credit card on site $creditCard->CreditCardType = $data['CreditCardType']; $creditCard->NameOnCard = $data['NameOnCard']; $creditCard->CreditCardCVV = $data['CreditCardCVV']; $creditCard->ExpiryMonth = $data['ExpiryMonth']; $creditCard->ExpiryYear = $data['ExpiryYear']; $creditCard->Company = $data['Company']; $creditCard->StreetAddress1 = $data['StreetAddress1']; $creditCard->StreetAddress2 = $data['StreetAddress2']; $creditCard->City = $data['City']; $creditCard->State = $data['State']; $creditCard->PostalCode = $data['PostalCode']; $creditCard->Country = $data['Country']; $creditCard->Current = 1; $creditCard->write(); } else { // Add the credit card on InfusionSoft $ccData = array('ContactId' => $isConID, 'FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CardNumber' => $data['CreditCardNumber'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']); $ccID = $app->dsAdd("CreditCard", $ccData); //Get current credit card un-mark it as current Controller::curr()->unsetCurrentCreditCard($member->ID); // Store Credit card on site and mark it as current $newCreditCard = new CreditCard(); $newCreditCard->CreditCardType = $data['CreditCardType']; $newCreditCard->CreditCardNumber = $data['CreditCardNumber']; $newCreditCard->NameOnCard = $data['NameOnCard']; $newCreditCard->CreditCardCVV = $data['CreditCardCVV']; $newCreditCard->ExpiryMonth = $data['ExpiryMonth']; $newCreditCard->ExpiryYear = $data['ExpiryYear']; $newCreditCard->Company = $data['Company']; $newCreditCard->StreetAddress1 = $data['StreetAddress1']; $newCreditCard->StreetAddress2 = $data['StreetAddress2']; $newCreditCard->City = $data['City']; $newCreditCard->State = $data['State']; $newCreditCard->PostalCode = $data['PostalCode']; $newCreditCard->Country = $data['Country']; $newCreditCard->Current = 1; $newCreditCard->ISCCID = $ccID; $newCreditCard->MemberID = $member->ID; $newCreditCard->write(); } //Update the user active Infusionsoft subscription Credit Card $subscription = Subscription::get()->filter(array('MemberID' => $member->ID, 'Status' => 1))->first(); if ($subscription) { $subData = array('CC1' => $ccID); $app->dsUpdate("RecurringOrder", $subscription->SubscriptionID, $subData); } } //Update Member $member->FirstName = $data['FirstName']; $member->Surname = $data['LastName']; $member->write(); // Update billing address on InfusionSoft $conDat = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country); $conID = $app->updateCon($isConID, $conDat); Controller::curr()->setMessage('Success', 'Credit Card and Billing Address successfully updated.'); return Controller::curr()->redirect(Controller::curr()->Link('#tabs-2')); }
function EwayURL() { // 1) Main Informations $order = $this->Order(); //$items = $order->Items(); $member = $order->Member(); // 2) Main Settings if ($this->config()->get('test_mode') == 'yes') { $inputs['CustomerID'] = $this->config()->get('test_customer_id'); $inputs['UserName'] = $this->config()->get('test_customer_username'); } else { $inputs['CustomerID'] = $this->config()->get('customer_id'); $inputs['UserName'] = $this->config()->get('customer_username'); } if ($this->config()->get('test_mode') == 'yes' && isset($_REQUEST["PaymentTypeTest"])) { $amount = round($this->Amount->getAmount()) + intval($_REQUEST["PaymentTypeTest"]) / 100; } else { $amount = $this->Amount->getAmount(); } $inputs['Amount'] = number_format($amount, 2, '.', ''); //$decimals = 2, $decPoint = '.' , $thousands_sep = '' $inputs['Currency'] = $this->Amount->getCurrency(); $inputs['ReturnURL'] = $inputs['CancelURL'] = Director::absoluteBaseURL() . EwayPayment_Handler::complete_link($this); $inputs['CompanyName'] = $this->config()->get('company_name'); $inputs['MerchantReference'] = $inputs['MerchantInvoice'] = $order->ID; //$inputs['InvoiceDescription'] = $inputs['PageTitle'] = $this->config()->get('page_title'); $inputs['PageDescription'] = 'Please fill the details below to complete your order.'; if ($logo = $this->config()->get('company_logo')) { $inputs['CompanyLogo'] = Director::absoluteBaseURL() . $logo; } // 7) Prepopulating Customer Informations $address = $this->Order()->BillingAddress(); $inputs['CustomerFirstName'] = $address->FirstName; $inputs['CustomerLastName'] = $address->Surname; $inputs['CustomerAddress'] = "{$address->Address} {$address->Address2}"; $inputs['CustomerPostCode'] = $address->PostalCode; $inputs['CustomerCity'] = $address->City; $inputs['CustomerCountry'] = class_exists("Geoip") ? Geoip::countryCode2name($address->Country) : $address->Country; $inputs['CustomerPhone'] = $address->Phone; $inputs['CustomerEmail'] = $address->Email; $inputs['CustomerState'] = $address->RegionCode; if ($this->config()->get('test_mode') == 'yes') { $inputs['CompanyName'] = "TEST FOR " . $inputs['CompanyName']; debug::log(print_r($inputs, 1)); debug::log($this->config()->get('url')); } return $this->config()->get('url') . '?' . http_build_query($inputs); }
function doPrepaidSignup() { $data = $_POST; //Check for existing member email address if ($member = DataObject::get_one("Member", "`Email` = '" . Convert::raw2sql($data['Email']) . "'")) { return "inlineMsg1"; } $currentYear = date('Y'); $currentMonth = date('n'); //Stop sign-up when the credit card is expired if ($data['ExpirationYear'] < $currentYear) { return "inlineMsg6"; } if ($data['ExpirationYear'] == $currentYear) { if ($data['ExpirationMonth'] < $currentMonth) { return "inlineMsg6"; } } //Get InfusionSoft Api $app = $this->getInfusionSoftApi(); // Get country text from code $country = Geoip::countryCode2name($data['Country']); // Create IndusionSoft contact $returnFields = array('Id'); $conInfo = $app->findByEmail($data['Email'], $returnFields); if (count($conInfo)) { $isConID = $conInfo[0]['Id']; } else { $conDat = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country, 'Email' => $data['Email']); $isConID = $app->addCon($conDat); } // Locate existing credit card $ccID = $app->locateCard($isConID, substr($data['CreditCardNumber'], -4, 4)); $creditCardType = $this->getISCreditCardType($data['CreditCardType']); if (!$ccID) { //Validate the credit card $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $data['CreditCardNumber'], 'ExpirationMonth' => sprintf("%02s", $data['ExpirationMonth']), 'ExpirationYear' => $data['ExpirationYear'], 'CVV2' => $data['CVVCode']); $result = $app->validateCard($card); if ($result['Valid'] == 'false') { return "inlineMsg5"; } $ccData = array('ContactId' => $isConID, 'FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CardNumber' => $data['CreditCardNumber'], 'CVV2' => $data['CVVCode'], 'ExpirationMonth' => sprintf("%02s", $data['ExpirationMonth']), 'ExpirationYear' => $data['ExpirationYear']); $ccID = $app->dsAdd("CreditCard", $ccData); } // Create AttentionWizard member $member = new Member(); $member->FirstName = $data['FirstName']; $member->Surname = $data['LastName']; $member->Email = $data['Email']; $member->Password = $data['Password']['_Password']; $member->ISContactID = $isConID; $memberID = $member->write(); //Find or create the 'user' group if (!($userGroup = DataObject::get_one('Group', "Code = 'customers'"))) { $userGroup = new Group(); $userGroup->Code = "customers"; $userGroup->Title = "Customers"; $userGroup->Write(); } //Add member to user group $userGroup->Members()->add($member); //Get the current date $curdate = $app->infuDate(date('j-n-Y')); $product = Product::get()->byID(7); // Store credit card info $creditCard = new CreditCard(); $creditCard->CreditCardType = $data['CreditCardType']; $creditCard->CreditCardNumber = $data['CreditCardNumber']; $creditCard->NameOnCard = $data['NameOnCard']; $creditCard->CreditCardCVV = $data['CVVCode']; $creditCard->ExpiryMonth = $data['ExpirationMonth']; $creditCard->ExpiryYear = $data['ExpirationYear']; $creditCard->Company = $data['Company']; $creditCard->StreetAddress1 = $data['StreetAddress1']; $creditCard->StreetAddress2 = $data['StreetAddress2']; $creditCard->City = $data['City']; $creditCard->State = $data['State']; $creditCard->PostalCode = $data['PostalCode']; $creditCard->Country = $data['Country']; $creditCard->Current = 1; $creditCard->ISCCID = $ccID; $creditCard->MemberID = $memberID; $creditCardID = $creditCard->write(); // Create an Infusionsoft order $config = SiteConfig::current_site_config(); $invoiceId = $app->blankOrder($isConID, $product->Name, $curdate, 0, 0); $orderItem = $app->addOrderItem($invoiceId, $this->getNonExpiringIsProductId(7), 3, floatval($data['Price']), intval($data['Quantity']), $product->Name, $product->Name); $result = $app->chargeInvoice($invoiceId, $product->Name, $ccID, $config->MerchantAccount, false); // Create an order $order = new Order(); $order->OrderStatus = 'P'; $order->Amount = $data['Price'] * $data['Quantity']; $order->MemberID = $memberID; $order->ProductID = 7; $order->CreditCardID = $creditCardID; $orderID = $order->write(); $returnFields = array('_AttentionWizard', 'Leadsource'); $conDat1 = $app->loadCon($isConID, $returnFields); if ($result['Successful']) { // Add tag Paid member - prepaid $app->grpAssign($isConID, 2290); $conDat = array('ContactType' => 'AW Customer'); if (!isset($conDat1['_AttentionWizard'])) { $conDat['_AttentionWizard'] = 'Prepaid only - no subscription'; } if (isset($conDat1['_AttentionWizard']) && $conDat1['_AttentionWizard'] != 'Paid and Current' && $conDat1['_AttentionWizard'] != 'Free') { $conDat['_AttentionWizard'] = 'Prepaid only - no subscription'; } if (!isset($conDat1['Leadsource']) || !$conDat1['Leadsource']) { $conDat['Leadsource'] = 'AttentionWizard'; } $conID = $app->updateCon($isConID, $conDat); // Note is added $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Purchased AW Prepaid Credits", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1); $conActionID = $app->dsAdd("ContactAction", $conActionDat); // Update order $order->OrderStatus = 'c'; $order->write(); // Create a Subscription record $subscription = new Subscription(); $subscription->StartDate = date("Y-m-d H:i:s"); $subscription->MemberID = $memberID; $subscription->ProductID = 7; $subscription->OrderID = $orderID; $subscription->write(); // Create a MemberCredits record $memberCredits = new MemberCredits(); $memberCredits->Credits = $product->Credits * $data['Quantity']; $memberCredits->MemberID = $memberID; $memberCredits->ProductID = 7; $memberCredits->SubscriptionID = $subscription->ID; $memberCredits->write(); $member->logIn(); $this->setMessage('Success', 'Purchased non-expiring heatmaps successfully.'); return 'url1'; } else { //Update Infusionsoft contact $conDat = array('_AttentionWizard' => 'Unsuccessful prepaid sign-up', 'ContactType' => 'AW Prospect'); if (!isset($conDat1['Leadsource'])) { $conDat['Leadsource'] = 'AttentionWizard'; } $app->updateCon($isConID, $conDat); // Add an AW prospect tag $app->grpAssign($isConID, $this->getISTagIdByPaymentCode(strtoupper($result['Code']))); // Add a note $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Unsuccessful attempt to sign-up prepaid plan", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1); $conActionID = $app->dsAdd("ContactAction", $conActionDat); $member->logIn(); $this->setMessage('Error', 'Sorry,the payment failed due to some reason.please update your credit card.'); return 'url2'; } }
/** * Run the Country code through a converter to get the proper Country Name */ function FullCountry() { return isset($this->owner->Country) && !is_null($this->owner->Country) ? Geoip::countryCode2name($this->owner->Country) : ""; }
/** * Return the full country name for the 2 letter country code this has * stored in the database. * * @return string */ public function getNiceLocation() { return $this->Location ? Geoip::countryCode2name($this->Location) : "Anywhere"; }
public function getValueFromData($data) { if (isset($data[$this->Name])) { return Geoip::countryCode2name($data[$this->Name]); } }
function getMap($width = 400, $height = 260, $zoom = 15) { $city = $this->City(); if ($city && $city->exists()) { $address = array($this->Address, $this->Address2, $this->PostalCode, Geoip::countryCode2name($city->Country)); $address = urlencode(implode(' ', $address)); // 1) Image $imageLink = 'http://maps.googleapis.com/maps/api/staticmap?'; $params = array('center' => $address, 'zoom' => $zoom, 'size' => "{$width}x{$height}", 'maptype' => 'roadmap', 'markers' => "color:red|{$address}", 'sensor' => 'false'); $imageLink .= http_build_query($params); // 2) Google Map $gmapLink = 'http://maps.google.com/maps?'; $params = array('q' => $address, 'z' => $zoom); $gmapLink .= http_build_query($params); return new ArrayData(array('ImageLink' => $imageLink, 'GMapLink' => $gmapLink)); } return array(); }
public function updateCreditCard($data, $form) { $member = Member::get()->byID($data['MemberID']); $isConID = $member->ISContactID; // Get the Page controller $Pg_Ctrl = new Page_Controller(); //Get InfusionSoft Api $creditCardType = $Pg_Ctrl->getISCreditCardType($data['CreditCardType']); $app = $Pg_Ctrl->getInfusionSoftApi(); // Validate credit card $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $data['CreditCardNumber'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear'], 'CVV2' => $data['CreditCardCVV']); $result = $app->validateCard($card); if ($result['Valid'] != 'true') { $form->sessionMessage("The credit card details are invalid!", 'bad'); return $this->edit(Controller::curr()->getRequest()); } //Update the credit card on InfusionSoft $country = Geoip::countryCode2name($data['Country']); $ccData = array('BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']); $app->dsUpdate("CreditCard", $data['ISCCID'], $ccData); if (isset($data['Current'])) { // Update billing address on InfusionSoft $conDat = array('Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country); $conID = $app->updateCon($isConID, $conDat); } //Get the credit card $creditCard = CreditCard::get()->filter(array('CreditCardNumber' => $data['CreditCardNumber']))->First(); //Unset the current card if (isset($data['Current']) && !$creditCard->Current) { $Pg_Ctrl->unsetCurrentCreditCard($member->ID); } //Update the credit card on site $creditCard->CreditCardType = $data['CreditCardType']; $creditCard->NameOnCard = $data['NameOnCard']; $creditCard->CreditCardCVV = $data['CreditCardCVV']; $creditCard->ExpiryMonth = $data['ExpiryMonth']; $creditCard->ExpiryYear = $data['ExpiryYear']; $creditCard->Company = $data['Company']; $creditCard->StreetAddress1 = $data['StreetAddress1']; $creditCard->StreetAddress2 = $data['StreetAddress2']; $creditCard->City = $data['City']; $creditCard->State = $data['State']; $creditCard->PostalCode = $data['PostalCode']; $creditCard->Country = $data['Country']; if (isset($data['Current']) && !$creditCard->Current) { $creditCard->Current = 1; } if (isset($data['UsedForTrial'])) { $creditCard->UsedForTrial = 1; } $creditCard->write(); $form->sessionMessage("Credit Card and Billing Address successfully updated.", 'good'); $randomNumber = rand(); return $this->getController()->redirect("admin/manage-data/CreditCard/EditForm/field/CreditCard/item/{$creditCard->ID}/edit?rand={$randomNumber}"); }
function doSignup() { $data = $_POST; //Stop sign-up if the user does not check the chebox if (!isset($data['Agreement'])) { return "inlineMsg5"; } if ($this->isCCUsedForTrial("{$data['CreditCardNumber']}") && $data['SubscriptionType'] == 1) { return "inlineMsg1"; } $currentYear = date('Y'); $currentMonth = date('n'); //Stop sign-up when the credit card is expired if ($data['ExpirationYear'] < $currentYear) { return "inlineMsg4"; } if ($data['ExpirationYear'] == $currentYear) { if ($data['ExpirationMonth'] < $currentMonth) { return "inlineMsg4"; } } //Get InfusionSoft Api $app = $this->getInfusionSoftApi(); //Get current date $curdate = $app->infuDate(date('j-n-Y')); //Get the registration form from session $regFormData = Session::get('RegistrationFormData'); // Get country text from code $country = Geoip::countryCode2name($data['Country']); // Get InfusionSoft Contact ID $returnFields = array('Id', 'Leadsource'); $conInfo = $app->findByEmail($regFormData['Email'], $returnFields); if (empty($conInfo)) { // If IS contact doesn't exist create one $conDat = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country, 'Email' => $regFormData['Email']); if (empty($conInfo)) { $conDat['Leadsource'] = 'AttentionWizard'; } $isConID = $app->addCon($conDat); } else { $isConID = $conInfo[0]['Id']; } // Locate existing credit card $ccID = $app->locateCard($isConID, substr($data['CreditCardNumber'], -4, 4)); $creditCardType = $this->getISCreditCardType($data['CreditCardType']); if (!$ccID) { //Validate the credit card $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $data['CreditCardNumber'], 'ExpirationMonth' => sprintf("%02s", $data['ExpirationMonth']), 'ExpirationYear' => $data['ExpirationYear'], 'CVV2' => $data['CVVCode']); $result = $app->validateCard($card); if ($result['Valid'] == 'false') { return "inlineMsg3"; } $ccData = array('ContactId' => $isConID, 'FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CardNumber' => $data['CreditCardNumber'], 'CVV2' => $data['CVVCode'], 'ExpirationMonth' => sprintf("%02s", $data['ExpirationMonth']), 'ExpirationYear' => $data['ExpirationYear']); $ccID = $app->dsAdd("CreditCard", $ccData); } // Create AttentionWizard member $member = new Member(); $member->FirstName = $data['FirstName']; $member->Surname = $data['LastName']; $member->Email = $regFormData['Email']; $member->Password = $regFormData['Password']['_Password']; $member->ISContactID = $isConID; $memberID = $member->write(); //Find or create the 'user' group and add the member to the group if (!($userGroup = DataObject::get_one('Group', "Code = 'customers'"))) { $userGroup = new Group(); $userGroup->Code = "customers"; $userGroup->Title = "Customers"; $userGroup->Write(); $userGroup->Members()->add($member); } else { $userGroup->Members()->add($member); } //Get product details $product = Product::get()->byID($data['SubscriptionType']); $credits = $product->Credits; if ($data['SubscriptionType'] == 1) { $orderAmount = $product->TrialPrice; $productName = "30 days 1-dollar Trial"; $isProductID = 38; } else { $productName = $product->Name; $orderAmount = $product->RecurringPrice; $isProductID = $product->ISInitialProductID; } // Store credit card info $creditCard = new CreditCard(); $creditCard->CreditCardType = $data['CreditCardType']; $creditCard->CreditCardNumber = $data['CreditCardNumber']; $creditCard->NameOnCard = $data['NameOnCard']; $creditCard->CreditCardCVV = $data['CVVCode']; $creditCard->ExpiryMonth = $data['ExpirationMonth']; $creditCard->ExpiryYear = $data['ExpirationYear']; $creditCard->Company = $data['Company']; $creditCard->StreetAddress1 = $data['StreetAddress1']; $creditCard->StreetAddress2 = $data['StreetAddress2']; $creditCard->City = $data['City']; $creditCard->State = $data['State']; $creditCard->PostalCode = $data['PostalCode']; $creditCard->Country = $data['Country']; $creditCard->Current = 1; $creditCard->ISCCID = $ccID; $creditCard->MemberID = $memberID; $creditCardID = $creditCard->write(); // Create an order $order = new Order(); $order->OrderStatus = 'P'; $order->Amount = $orderAmount; $order->MemberID = $memberID; $order->ProductID = $data['SubscriptionType']; $order->CreditCardID = $creditCardID; $orderID = $order->write(); //Create the Infusionsoft subscription $subscriptionID = $this->createISSubscription($isConID, $product->ISProductID, $product->RecurringPrice, $ccID, 30); if ($subscriptionID && is_int($subscriptionID)) { //Create an infusionsoft order $config = SiteConfig::current_site_config(); $invoiceId = $app->blankOrder($isConID, $productName, $curdate, 0, 0); $orderItem = $app->addOrderItem($invoiceId, $isProductID, 9, floatval($orderAmount), 1, $productName, $productName); $result = $app->chargeInvoice($invoiceId, $productName, $ccID, $config->MerchantAccount, false); if ($result['Successful']) { // Create a Subscription record $nextBillDate = $this->getSubscriptionNextBillDate($subscriptionID); $expireDate = date('Y-m-d H:i:s', strtotime($nextBillDate)); $startDate = date('Y-m-d H:i:s', strtotime($expireDate . "-30 days")); $subscription = new Subscription(); $subscription->StartDate = $startDate; $subscription->ExpireDate = $expireDate; $subscription->MemberID = $memberID; $subscription->ProductID = $data['SubscriptionType']; $subscription->OrderID = $orderID; $subscription->Status = 1; $subscription->SubscriptionID = $subscriptionID; $subscription->write(); // Create a MemberCredits record $memberCredits = new MemberCredits(); $memberCredits->Credits = $credits; $memberCredits->ExpireDate = $expireDate; $memberCredits->MemberID = $memberID; $memberCredits->ProductID = $data['SubscriptionType']; $memberCredits->SubscriptionID = $subscription->ID; $memberCredits->write(); // Update order $order->OrderStatus = 'c'; $order->write(); // If product selected is bronze do a trial signup if ($data['SubscriptionType'] == 1) { //Add the InfusionSoft tag $app->grpAssign($isConID, 2216); //Update the InfusionSoft contact details $conDat = array('ContactType' => 'AW Customer', '_AWstartdate' => $curdate, '_AttentionWizard' => 'Free'); $app->updateCon($isConID, $conDat); // Update Subscription $subscription->IsTrial = 1; $subscription->SubscriptionCount = 0; $subscription->write(); // Update Member $member->SignUpTrial = 1; $member->write(); // Update Order $order->IsTrial = 1; $order->write(); // Update credit card $creditCard->UsedForTrial = 1; $creditCard->write(); } else { // Update Subscription $subscription->SubscriptionCount = 1; $subscription->write(); // Add the InfusionSoft tag $isTagId = $this->getISTagIdByProduct($data['SubscriptionType']); $app->grpAssign($isConID, $isTagId); //Update the InfusionSoft contact details $returnFields = array('_AWofmonths'); $conDat1 = $app->loadCon($isConID, $returnFields); if (!isset($conDat1['_AWofmonths'])) { $conDat1['_AWofmonths'] = 0; } $conDat = array('_AWofmonths' => $conDat1['_AWofmonths'] + 1, 'ContactType' => 'AW Customer', '_AttentionWizard' => 'Paid and Current', '_AWstartdate' => $curdate); $app->updateCon($isConID, $conDat); //Add a note $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Payment made for AW service", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'CreationNotes' => "{$product->Name} Subscription", 'UserID' => 1); $app->dsAdd("ContactAction", $conActionDat); } $member->logIn(); $this->setMessage('Success', 'You have signed-up & the Subscription is created successfully'); return 'url1'; } else { //Set the subscription to Inactive $this->setSubscriptionStatus($subscriptionID, 'Inactive'); //Update InfusionSoft contact if ($data['SubscriptionType'] == 1) { $aw = 'Unsuccessful trial sign-up'; } else { $aw = 'Unsuccessful paid sign-up'; } $conDat = array('ContactType' => 'AW Prospect', '_AttentionWizard' => $aw); $app->updateCon($isConID, $conDat); // Add an AW prospect tag //$app->grpAssign($isConID, $this->getISTagIdByPaymentCode(strtoupper($result['Code']))); $app->grpAssign($isConID, $this->getISTagIdByPaymentCode('DECLINED')); // Add a note $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Unsuccessful attempt to sign-up for AW", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1); $conActionID = $app->dsAdd("ContactAction", $conActionDat); $member->logIn(); $this->setMessage('Error', 'Sorry,the payment failed due to some reason.please update your credit card'); return "url2"; } } else { $member->logIn(); // Add an AW prospect tag $app->grpAssign($isConID, 3097); //Update InfusionSoft contact if ($data['SubscriptionType'] == 1) { $aw = 'Unsuccessful trial sign-up'; } else { $aw = 'Unsuccessful paid sign-up'; } $conDat = array('ContactType' => 'AW Prospect', '_AttentionWizard' => $aw); $app->updateCon($isConID, $conDat); // Add a note $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Unsuccessful attempt to sign-up for AW", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1); $conActionID = $app->dsAdd("ContactAction", $conActionDat); $this->setMessage('Error', 'You have signed-up successfully but the Subscription is not created,please try again.'); return "url3"; } }