name = 'statsgeolocation'; $this->tab = 'Stats'; $this->version = 1.0; parent::__construct(); $this->displayName = $this->l('Geolocation'); $this->description = $this->l('Display your customers\' origin'); } function install() { $countries = array('AT' => array('x' => 294, 'y' => 68), 'AU' => array('x' => 534, 'y' => 228), 'BE' => array('x' => 276, 'y' => 62), 'BO' => array('x' => 135, 'y' => 210), 'CA' => array('x' => 84, 'y' => 45), 'CH' => array('x' => 281, 'y' => 69), 'CI' => array('x' => 253, 'y' => 156), 'CN' => array('x' => 470, 'y' => 99), 'CZ' => array('x' => 293, 'y' => 63), 'DE' => array('x' => 285, 'y' => 61), 'DK' => array('x' => 284, 'y' => 51), 'ES' => array('x' => 260, 'y' => 85), 'FI' => array('x' => 310, 'y' => 35), 'FR' => array('x' => 271, 'y' => 69), 'GB' => array('x' => 265, 'y' => 55), 'GR' => array('x' => 308, 'y' => 87), 'HK' => array('x' => 491, 'y' => 123), 'IE' => array('x' => 253, 'y' => 58), 'IL' => array('x' => 334, 'y' => 106), 'IT' => array('x' => 292, 'y' => 80), 'JP' => array('x' => 531, 'y' => 92), 'KR' => array('x' => 509, 'y' => 93), 'LU' => array('x' => 277, 'y' => 63), 'NG' => array('x' => 282, 'y' => 153), 'NL' => array('x' => 278, 'y' => 58), 'NO' => array('x' => 283, 'y' => 41), 'NZ' => array('x' => 590, 'y' => 264), 'PL' => array('x' => 300, 'y' => 59), 'PT' => array('x' => 251, 'y' => 86), 'TG' => array('x' => 267, 'y' => 154), 'SE' => array('x' => 294, 'y' => 40), 'SG' => array('x' => 475, 'y' => 169), 'US' => array('x' => 71, 'y' => 87), 'ZA' => array('x' => 311, 'y' => 239)); if ( !parent::install() OR !$this->registerHook('AdminStatsModules')) return false; if (!Db::getInstance()->Execute(' CREATE TABLE `'._DB_PREFIX_.'location_coords` ( `id_location_coords` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `x` int(4) NOT NULL, `y` int(4) NOT NULL, `id_country` INTEGER UNSIGNED NOT NULL, PRIMARY KEY(`id_location_coords`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8')) return false; $flag = 0; $query = 'INSERT INTO `'._DB_PREFIX_.'location_coords` (`x`, `y`, `id_country`) VALUES '; $result = Db::getInstance()->ExecuteS('SELECT `id_country`, `iso_code` FROM `'._DB_PREFIX_.'country`;'); foreach ($result as $index => $row) { if (isset($countries[$row['iso_code']])) { if ($flag) $query .= ', '; $query .= '(\''.$countries[$row['iso_code']]['x'].'\', \''.$countries[$row['iso_code']]['y'].'\', \''.$row['id_country'].'\')'; $flag = 1; } } return Db::getInstance()->Execute($query.';'); } function uninstall() { if (!parent::uninstall()) return false; return (Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'location_coords`')); } function hookAdminStatsModules() { $this->_html = '
'.$this->displayName.'

'.$this->l('This module shows the country distribution of your customers by displaying different sized points on the worldmap below. See the fame of your website all around the world and which continent you\'ve not conquered yet.').'


'.$this->l('Guide').'

'.$this->l('Open to the world').'

'; return $this->_html; } public function getContent() { $output = '

'.$this->displayName.'

'; return $output.$this->displayForm(); } public function displayForm() { global $cookie; $map_size; $cross_size; $id_lang = (isset($cookie->id_lang) ? intval($cookie->id_lang) : Configuration::get('PS_LANG_DEFAULT')); $wait = $this->l('Please wait...'); if ((file_exists('../modules/'.$this->name.'/'.$this->_map_path) == FALSE) || (file_exists('../modules/'.$this->name.'/'.$this->_cross_path) == FALSE) || (!($map_size = getimagesize('../modules/'.$this->name.'/'.$this->_map_path))) || (!($cross_size = getimagesize('../modules/'.$this->name.'/'.$this->_cross_path)))) return ("Error: cannot load images"); $output = '
'.$this->l('Update coordinates').'
'.$this->l('Click on a country\'s name and define its position on the map').'

'.$wait.'
'; return $output; } } ?>