/**
     * @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);
    }
 function __construct($name, $title, $value = '')
 {
     if (!$value) {
         $value = Geoip::visitor_country();
     }
     parent::__construct($name, $title, Geoip::getCountryDropDown(), $value);
 }
 function testSetDefaultCountry()
 {
     Geoip::set_default_country_code('DE');
     Geoip::set_enabled(false);
     $this->assertEquals('DE', Geoip::visitor_country());
     $this->assertEquals('DE', Geoip::get_default_country_code());
 }
 function __construct($controller, $name)
 {
     Requirements::javascript(ECOMMERCE_DIR . '/javascript/OrderFormWithShippingAddress.js');
     parent::__construct($controller, $name);
     if (self::$fixed_country_code) {
         $defaultCountry = self::$fixed_country_code;
     } else {
         $defaultCountry = EcommerceRole::find_country();
     }
     $countryField = new DropdownField('ShippingCountry', 'Country', Geoip::getCountryDropDown(), $defaultCountry, $this);
     $shippingFields = new Tab("ShippingDetails", new HeaderField('Delivery Address', 3, $this), new LiteralField('ShippingNote', '<p class="warningMessage"><em>Your goods will be sent to the address below.</em></p>'), new TextField('ShippingName', 'Name', null, 100, $this), new TextField('ShippingAddress', 'Address', null, 100, $this), new TextField('ShippingAddress2', '', null, 100, $this), new TextField('ShippingCity', 'City', null, 100, $this), $countryField);
     //$this->fields->push($shippingFields);
     $this->fields->addFieldToTab("", new CheckboxField("UseShippingAddress", "Use Alternative Delivery Address"));
     $this->fields->addFieldToTab("", $shippingFields);
     foreach ($this->fields->dataFields() as $i => $child) {
         if (is_object($child)) {
             $name = $child->Name();
             switch ($name) {
                 case "Address":
                     $child->setTitle('Address');
                     break;
                 default:
                     break;
             }
         }
     }
 }
 function Field()
 {
     $source = $this->getSource();
     if ($this->defaultToVisitorCountry && !$this->value || !isset($source[$this->value])) {
         $this->value = ($vc = Geoip::visitor_country()) ? $vc : Geoip::$default_country_code;
     }
     return parent::Field();
 }
Example #6
0
 /**
  * Returns the country code, for the current visitor
  */
 static function visitor_country()
 {
     if (ereg('^dev(\\.|$)', $_SERVER['HTTP_HOST']) && isset($_GET['country'])) {
         return $_GET['country'];
     } else {
         return Geoip::ip2country($_SERVER['REMOTE_ADDR'], true);
     }
 }
 public function getCountryName()
 {
     $country = '';
     if ($this->Country) {
         $country = Geoip::countryCode2name($this->Country);
     }
     return $country;
 }
 /**
  *
  * @return String (Country Code - e.g. NZ, AU, or AF)
  */
 public function getCountry()
 {
     if (class_exists("Geoip")) {
         return Geoip::visitor_country();
     } else {
         return Config::inst()->get("EcommerceCountry", "default_country_code");
     }
 }
 public function getTableTitle()
 {
     if ($this->Country) {
         $countryList = Geoip::getCountryDropDown();
         return _t("SimpleShippingModifier.SHIPPINGTO", "Shipping to") . " " . $countryList[$this->Country];
     } else {
         return _t("SimpleShippingModifier.SHIPPING", "Shipping");
     }
 }
 /**
  * @TODO Add i18n entities to the text.
  * @return string
  */
 function TableTitle()
 {
     if ($this->Country()) {
         $countryList = Geoip::getCountryDropDown();
         return "Shipping to {$countryList[$this->Country()]}";
     } else {
         return 'Shipping';
     }
 }
 public function getCMSFields_forPopup()
 {
     $sponsors_manager = new DataObjectManager($this, 'CleanUpSponsors', 'CleanUpSponsor', array('Name' => 'Name', 'Weblink' => 'Weblink', 'getDOMThumbnail' => 'Logo Image'));
     $sponsors_manager->addPermission("duplicate");
     $sponsors_manager->setConfirmDelete(true);
     $source = DataObject::get('Member');
     $members_manager = new MultiSelectField("Members", "CleanUpGroup", $source->map('ID', 'Title'));
     $oCountryField = new DropdownField('Country', 'Country', Geoip::getCountryDropDown(), 'NZ');
     return new FieldSet(new CheckboxField('TopEvent', 'Top Event'), new TextField('Title', 'Title'), new TextField('Subtitle', 'Subtitle'), new TextField('Organisation', 'Organistaion'), new DatePickerField('Date', 'OLD - Event Date'), new DatePickerField('FromDate', 'From'), new DatePickerField('ToDate', 'To'), new TextField('FromTime', 'From time'), new TextField('ToTime', 'To time'), $oCountryField, new TextField('Region', 'Event Region'), new TextField('LocationAddress', 'Location Address'), new GoogleMapSelectableMapField('Location', "Location of the Event", "{$this->LocationLatitude}", "{$this->LocationLongitude}", "575px", "250px", "6"), new TextField('LocationLongitude', 'Longitude (don\'t edit, for reference only)'), new TextField('LocationLatitude', 'Latitude (don\'t edit, for reference only)'), new CheckboxField('LocationShowDetails', 'Show Location Details'), new TextField('LocationDetails', 'Location Meeting Point Details'), new TextField('FacebookLink', 'FacebookLink'), new SimpleHTMLEditorField('Description', 'Description', array('css' => 'mysite/css/my_simple_stylesheet.css', 'insertUnorderedList' => true, 'copy' => true, 'justifyCenter' => false), 30), new CheckboxField('Private', 'Private Event'), new CheckboxField('Agree', 'Agreed to T&C'), new TextField('JoinedCount', 'Number of participants'), new ImageUploadField('EventImage', 'Main Event Image, Only shown for Top Events'), $sponsors_manager, $members_manager);
 }
 function run($request)
 {
     $count = 0;
     $array = Geoip::getCountryDropDown();
     foreach ($array as $key => $value) {
         if (!DataObject::get_one("EcommerceCountry", "\"Code\" = '" . Convert::raw2sql($key) . "'")) {
             $obj = new EcommerceCountry();
             $obj->Code = $key;
             $obj->Name = $value;
             $obj->write();
             DB::alteration_message("adding {$value} to Ecommerce Country", "created");
             $count++;
         }
     }
     DB::alteration_message("{$count} countries created");
 }
    /**
     * @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);
    }
    /**                                                              
     * Constructor                                                   
     *                                                               
     * @param  object $controller The controller class                           
     * @param  string $name       The name of the form class              
     * @return object The form                                       
     */
    function __construct($controller, $name)
    {
        //FILTER BLOCK 1 : WHERE ARE YOU
        // Create new group
        $oFilterField1 = new CompositeField();
        // Set the field group ID
        $oFilterField1->setID('Group1');
        // Add fields to the group
        $oFilterField1->push(new LiteralField('Group1Title', '<div class="filter-title-block">Where are you?</div>'));
        $oFilterField1->push(new DropdownField('Country', '', Geoip::getCountryDropDown(), 'NZ'));
        //FILTER BLOCK 2: UPLOAD IMAGE
        // Create new group
        $oFilterField2 = new CompositeField();
        // Set the field group ID
        $oFilterField2->setID('Group2');
        // Add fields to the group
        $oFilterField2->push(new LiteralField('Group2Title', '<div class="filter-title-block">When can you help?</div>'));
        //Set Date Defaults
        $tToday = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
        $dToday = date("d/m/Y", $tToday);
        $tNextMonth = mktime(0, 0, 0, date("m") + 2, date("d"), date("Y"));
        $dNextMonth = date("d/m/Y", $tNextMonth);
        //Check if Dates are Set otherwise use Defaults
        $sFromDate = $this->sFromDate != '' ? $this->sFromDate : $dToday;
        $sToDate = $this->sToDate != '' ? $this->sToDate : $dNextMonth;
        //Date Fields
        $oFromDate = new DatePickerField('FromDate', 'From', $sFromDate);
        $oToDate = new DatePickerField('ToDate', 'To', $sToDate);
        $oFilterField2->push($oFromDate);
        $oFilterField2->push($oToDate);
        DatePickerField::$showclear = false;
        // Create new fieldset
        $oFields = new FieldSet();
        // Add the groups to the fieldset
        $oFields->push($oFilterField1);
        $oFields->push($oFilterField2);
        // Create the form action
        $oAction = new FieldSet(new FormAction('SubmitFilter', 'Find events'));
        // Add custom jQuery validation script for requred fields
        Requirements::customScript('
			
		');
        // Construct the form
        parent::__construct($controller, $name, $oFields, $oAction);
    }
 /**
  * Add some fields for managing Members in the CMS.
  * 
  * @return FieldSet
  */
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->addFieldToTab('Root.Address', new TextField('Address', _t('Customer.ADDRESS', "Address")));
     $fields->addFieldToTab('Root.Address', new TextField('AddressLine2', ''));
     $fields->addFieldToTab('Root.Address', new TextField('City', _t('Customer.CITY', "City")));
     $fields->addFieldToTab('Root.Address', new TextField('State', _t('Customer.STATE', "State")));
     $fields->addFieldToTab('Root.Address', new TextField('PostalCode', _t('Customer.POSTAL_CODE', "Postal Code")));
     $fields->addFieldToTab('Root.Address', new DropdownField('Country', _t('Customer.COUNTRY', "Country"), Geoip::getCountryDropDown()));
     $fields->removeByName('Street');
     $fields->removeByName('Suburb');
     $fields->removeByName('CityTown');
     $fields->removeByName('DateFormat');
     $fields->removeByName('TimeFormat');
     $fields->removeByName('Notes');
     $fields->removeByName('Orders');
     $fields->removeByName('Addresses');
     $fields->removeByName('Groups');
     $fields->removeByName('Permissions');
     return $fields;
 }
 /**
  * Calculates the extra charges from the order based on the weight attribute of a product
  * ASSUMPTION -> weight in grams
  */
 function LiveAmount()
 {
     $order = $this->Order();
     $orderItems = $order->Items();
     // Calculate the total weight of the order
     if ($orderItems) {
         foreach ($orderItems as $orderItem) {
             $totalWeight += $orderItem->Weight * $orderItem->quantity;
         }
     }
     // Check if UseShippingAddress is true and if ShippingCountry exists and use that if it does
     if ($order->UseShippingAddress && $order->ShippingCountry) {
         $shippingCountry = $order->ShippingCountry;
     }
     // if there is a shipping country then check whether it is national or international
     if ($shippingCountry) {
         if ($shippingCountry == 'NZ') {
             return $this->nationalCost($totalWeight);
         } else {
             return $this->internationalCost($totalWeight, $shippingCountry);
         }
     } else {
         if ($order->MemberID && ($member = DataObject::get_by_id('Member', $order->MemberID))) {
             if ($member->Country) {
                 $country = $member->Country;
             } else {
                 $country = Geoip::visitor_country();
             }
         }
         if (!$country) {
             $country = 'NZ';
         }
         if ($country == 'NZ') {
             return $this->nationalCost($totalWeight);
         } else {
             return $this->internationalCost($totalWeight, $country);
         }
     }
 }
 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());
 }
 /**
  * Give the two letter code to resolve the title of the country.
  *
  * @param string $code Country code
  * @return string|boolean String if country found, boolean FALSE if nothing found
  */
 static function findCountryTitle($code)
 {
     $countries = Geoip::getCountryDropDown();
     // check if code was provided, and is found in the country array
     if ($code && $countries[$code]) {
         return $countries[$code];
     } else {
         return false;
     }
 }
 /**
  * Give the two letter code to resolve the title of the country.
  *
  * @param string $code Country code
  * @return string|boolean String if country found, boolean FALSE if nothing found
  */
 function getEcommerceFields()
 {
     $fields = new FieldSet(new HeaderField(_t('EcommerceRole.PERSONALINFORMATION', 'Personal Information'), 3), new TextField('FirstName', _t('EcommerceRole.FIRSTNAME', 'First Name')), new TextField('Surname', _t('EcommerceRole.SURNAME', 'Surname')), new TextField('HomePhone', _t('EcommerceRole.HOMEPHONE', 'Phone')), new TextField('MobilePhone', _t('EcommerceRole.MOBILEPHONE', 'Mobile')), new EmailField('Email', _t('EcommerceRole.EMAIL', 'Email')), new TextField('Address', _t('EcommerceRole.ADDRESS', 'Address')), new TextField('AddressLine2', _t('EcommerceRole.ADDRESSLINE2', '&nbsp;')), new TextField('City', _t('EcommerceRole.CITY', 'City')), new TextField('PostalCode', _t('EcommerceRole.POSTALCODE', 'Postal Code')), new DropdownField('Country', _t('EcommerceRole.COUNTRY', 'Country'), Geoip::getCountryDropDown(), self::find_country()));
     $this->owner->extend('augmentEcommerceFields', $fields);
     return $fields;
 }
Example #22
0
 public function moveCreditCardsFromJoomlaToSS()
 {
     die('test2');
     error_reporting(E_ALL);
     ini_set('display_errors', 1);
     ini_set('max_execution_time', 0);
     ini_set('memory_limit', '-1');
     $countries = Geoip::getCountryDropDown();
     $mysqli = $this->getDbConnection();
     $result = $mysqli->query("SELECT *, u.id uid FROM jos_users u\n\t\tINNER JOIN jos_aw_creditcard c ON u.id = c.creditcard_userid\n\t\tLEFT JOIN jos_aw_iscontacts ic ON c.creditcard_userid = ic.member_id\n\t\tLEFT JOIN jos_osemsc_billinginfo bi ON c.creditcard_userid = bi.user_id");
     $totalRec = 0;
     while ($obj = $result->fetch_object()) {
         $ssMember = $this->getSSMember($obj->email);
         if (!$ssMember) {
             continue;
         }
         $creditCard = new CreditCard();
         $creditCard->Created = $obj->creditcard_date;
         $creditCard->LastEdited = $obj->creditcard_date;
         $creditCard->CreditCardType = strtolower($obj->creditcard_type);
         $creditCard->NameOnCard = $obj->creditcard_name;
         $creditCard->CreditCardNumber = $obj->creditcard_number;
         $creditCard->CreditCardCVV = $obj->creditcard_cvv;
         $creditCard->ExpiryMonth = $obj->creditcard_month;
         $creditCard->ExpiryYear = $obj->creditcard_year;
         $creditCard->Company = $obj->company;
         $creditCard->StreetAddress1 = $obj->street1;
         $creditCard->StreetAddress2 = $obj->street2;
         $creditCard->City = $obj->city;
         $creditCard->State = $obj->state_id;
         $creditCard->PostalCode = $obj->postcode;
         $countryCode = array_search($obj->country_id, $countries);
         $creditCard->Country = $countryCode;
         if ($this->joomlaCurrentCreditCard($obj->creditcard_number, $obj->uid)) {
             $creditCard->Current = 1;
         }
         if ($this->joomlaTrialCreditCard($obj->creditcard_number)) {
             $creditCard->UsedForTrial = 1;
         }
         if ($obj->is_contact_id && ($ccID = $this->joomlaGetISCreditCardId($obj->creditcard_number, $obj->is_contact_id))) {
             $creditCard->ISCCID = $ccID;
         }
         $creditCard->MemberID = $ssMember->ID;
         $creditCard->write();
         $totalRec++;
     }
     $mysqli->close();
     echo "Total Cards moved: {$totalRec}";
 }
 public function search()
 {
     $output = '';
     if (!$this->isJson()) {
         return $this->httpError(500, 'Content Type not allowed');
     }
     try {
         $search_params = json_decode($this->request->getBody(), true);
         $query = new QueryObject(new Consultant());
         $query->addAlias(QueryAlias::create('Company'));
         $query->addAndCondition(QueryCriteria::equal("Active", true));
         $location = @explode(',', @$search_params['location_term']);
         $name = @$search_params['name_term'];
         $service = @$search_params['service_term'];
         if (!empty($name)) {
             $query->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name))));
         }
         if (!empty($service)) {
             $query->addAlias(QueryAlias::create('ConsultantServiceOfferedType'));
             $query->addAndCondition(QueryCriteria::like("ConsultantServiceOfferedType.Type", $service));
         }
         if (is_array($location) && !empty($location[0])) {
             $query->addAlias(QueryAlias::create('Office'));
             $query->addAndCondition(QueryCriteria::like("Office.City", $location[0]));
         }
         $countries = array_flip(Geoip::getCountryDropDown());
         if (is_array($location) && count($location) == 2) {
             $country = trim($location[1]);
             if (!empty($country) && array_key_exists($country, $countries)) {
                 $query->addAndCondition(QueryCriteria::like("Office.Country", $countries[$country]));
             }
         } else {
             if (is_array($location) && count($location) == 3) {
                 $state = trim($location[1]);
                 $country = trim($location[2]);
                 if (!empty($country) && array_key_exists($country, $countries)) {
                     $query->addAndCondition(QueryCriteria::like("Office.Country", $countries[$country]));
                 }
                 if (!empty($state)) {
                     $query->addAndCondition(QueryCriteria::like("Office.State", $state));
                 }
             }
         }
         list($list, $size) = $this->consultants_repository->getAll($query, 0, 1000);
         foreach ($list as $public_cloud) {
             $output .= $public_cloud->renderWith('ConsultantsDirectoryPage_CloudBox', array('ConsultantLink' => $this->Link()));
         }
     } catch (Exception $ex) {
         return $this->httpError(500, 'Server Error');
     }
     return empty($output) ? $this->httpError(404, '') : $output;
 }
 /**
  * Attempt to find out the country from a user who
  * is not logged into the website using GeoIP.
  * 
  * @return string
  */
 public function findCountry()
 {
     return Geoip::visitor_country();
 }
 /**
  * @return Array
  * e.g.
  * "NZ" => "New Zealand"
  * @return Array
  */
 public static function get_country_dropdown($showAllCountries = true)
 {
     if (class_exists("Geoip") && $showAllCountries) {
         return Geoip::getCountryDropDown();
     }
     if ($showAllCountries) {
         $objects = EcommerceCountry::get();
     } else {
         $objects = EcommerceCountry::get()->filter(array("DoNotAllowSales" => 0));
     }
     if ($objects && $objects->count()) {
         return $objects->map("Code", "Name")->toArray();
     }
     return array();
 }
Example #26
0
 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);
 }
Example #28
0
 /**
  *	@fn last_n_visits
  *	@short Action method that shows the last <em>N</em> hosts that have visited the website.
  */
 public function last_n_visits($n)
 {
     $conn = Db::get_connection();
     $conn->prepare("SELECT `ip_addr`, `params`, COUNT(*) AS `weight` " . "FROM `visits` " . "GROUP BY CONCAT(`ip_addr`, `user_agent`) " . "ORDER BY `date` DESC " . "LIMIT {1}", $n * 3);
     $conn->exec();
     $this->hosts = array();
     if ($conn->num_rows() > 0) {
         $i = 0;
         while ($line = $conn->fetch_assoc()) {
             $host = Geoip::by_ip_addr($line['ip_addr'], $line['params']);
             $host->weight = $line['weight'];
             if (!(empty($host->latitude) && empty($host->longitude))) {
                 $this->hosts[] = $host;
                 $i++;
             }
             if ($i >= $n) {
                 break;
             }
         }
     }
     Db::close_connection($conn);
     $this->render(array('action' => 'hits_by_host'));
 }
 /**
  * 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) : "";
 }
Example #30
0
 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';
     }
 }