예제 #1
0
 public function getCountry($country_name)
 {
     $var_cache = 'facebookCountry' . str_replace('-', '_', $country_name);
     //if (!Cache::has($var_cache)) {
     if (true) {
         $data = FacebookCountry::whereSlug($country_name)->first();
         if ($data) {
             $country['id_country'] = $data['id_country'];
             $country['code'] = strtolower($data['code']);
             $country['name'] = $data['name'];
             $country['abbreviation'] = $data['abbreviation'];
             $country['slug'] = $data['slug'];
             $country['total_user'] = $this->owloo_number_format($data['total_user']);
             $country['total_user_str'] = $this->owloo_number_format_str($data['total_user']);
             $country['total_female'] = array('value' => $this->owloo_number_format($data['total_female']), 'value_str' => $this->owloo_number_format_str($data['total_female']), 'percent' => $this->owlooFormatPorcent($data['total_female'], $data['total_user']));
             $country['total_male'] = array('value' => $this->owloo_number_format($data['total_male']), 'value_str' => $this->owloo_number_format_str($data['total_male']), 'percent' => $this->owlooFormatPorcent($data['total_male'], $data['total_user']));
             $country['audience_history'] = $this->owloo_chart_data_format($data['audience_history']);
             $country['audience_grow']['grow_90'] = $this->formatGrow($data['audience_grow_90'], $data['total_user']);
             $country['audience_grow']['grow_180'] = $this->formatGrow($data['audience_grow_180'], $data['total_user']);
             $country['audience_grow']['grow_270'] = $this->formatGrow($data['audience_grow_270'], $data['total_user']);
             $country['audience_grow']['grow_360'] = $this->formatGrow($data['audience_grow_360'], $data['total_user']);
             $country['audience_down_360'] = $this->formatGrow($data['audience_down_360'], $data['total_user']);
             $country['general_ranking'] = $data['general_ranking'];
             $country['trends'] = array();
             /***** Cities *****/
             $country['cities']['supports'] = $data['supports_city'] ? true : false;
             $country['cities']['items'] = array();
             $cities = FacebookCity::whereCountryCode($country['code'])->take(5)->orderBy('total_user', 'DESC')->get(['id_city', 'name', 'total_user']);
             foreach ($cities as $city) {
                 $country['cities']['items'][] = array('id' => $city['id_city'], 'name' => $city['name'], 'total_user' => $this->owloo_number_format($city['total_user']), 'percent' => $this->owlooFormatPorcent($city['total_user'], $data['total_user']));
             }
             /***** Regions *****/
             $country['regions']['supports'] = $data['supports_region'] ? true : false;
             $country['regions']['items'] = array();
             $regions = FacebookRegion::whereCountryCode($country['code'])->take(5)->orderBy('total_user', 'DESC')->get(['id_region', 'name', 'total_user']);
             foreach ($regions as $region) {
                 $country['regions']['items'][] = array('id' => $region['id_region'], 'name' => $region['name'], 'total_user' => $this->owloo_number_format($region['total_user']), 'percent' => $this->owlooFormatPorcent($region['total_user'], $data['total_user']));
             }
             /***** Ages *****/
             $country['ages']['has_more'] = true;
             $country['ages']['items'] = array();
             $ages = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'total_female', 'total_male', 'grow_30']);
             foreach ($ages as $age) {
                 $country['ages']['items'][] = array('name' => $age['name'], 'total_user' => $this->owloo_number_format($age['total_user']), 'percent' => $this->owlooFormatPorcent($age['total_user'], $data['total_user']), 'more' => array('female' => $this->owloo_number_format($age['total_female']), 'male' => $this->owloo_number_format($age['total_male']), 'grow_30' => $this->formatGrow($age['grow_30'], $age['total_user'])));
             }
             //Get max values
             foreach (array('user') as $value) {
                 $country['ages']['max_' . $value] = array();
                 $age_max_total = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('total_' . $value, 'DESC')->orderBy('id', 'ASC')->first(['name', 'total_' . $value]);
                 if (isset($age_max_total['name'])) {
                     $country['ages']['max_' . $value] = array('name' => $age_max_total['name'], 'value' => $this->owloo_number_format($age_max_total['total_' . $value]), 'percent' => $this->owlooFormatPorcent($age_max_total['total_' . $value], $data['total_user']));
                 }
             }
             //Get Trend-up
             $trend_up = array();
             $age_grow = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('grow_30', 'DESC')->orderBy('id', 'ASC')->first(['name', 'total_user', 'grow_30']);
             if (isset($age_grow['name']) && $age_grow['grow_30'] > 0) {
                 $trend_up = array('name' => $age_grow['name'], 'grow' => $this->formatGrow($age_grow['grow_30'], $age_grow['total_user']));
             }
             $country['trends']['age'] = $trend_up;
             /***** Languages *****/
             $country['languages']['has_more'] = false;
             $country['languages']['items'] = array();
             $languages = FacebookCountryLanguage::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'grow_30']);
             foreach ($languages as $language) {
                 $country['languages']['items'][] = array('name' => $language['name'], 'total_user' => $this->owloo_number_format($language['total_user']), 'percent' => $this->owlooFormatPorcent($language['total_user'], $data['total_user']));
             }
             //Get max values
             foreach (array('user') as $value) {
                 $country['languages']['max_' . $value] = array();
                 $language_max_total = FacebookCountryLanguage::whereCountryCode($country['code'])->orderBy('total_' . $value, 'DESC')->orderBy('id', 'ASC')->first(['name', 'total_' . $value]);
                 if (isset($language_max_total['name'])) {
                     $country['languages']['max_' . $value] = array('name' => $language_max_total['name'], 'value' => $this->owloo_number_format($language_max_total['total_' . $value]), 'percent' => $this->owlooFormatPorcent($language_max_total['total_' . $value], $data['total_user']));
                 }
             }
             //Get the Trend-up
             $trend_up = array();
             $language_grow = FacebookCountryLanguage::whereCountryCode($country['code'])->orderBy('grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_30']);
             if (isset($language_grow['name']) && $language_grow['grow_30'] > 0) {
                 $trend_up = array('name' => $language_grow['name'], 'grow' => $this->formatGrow($language_grow['grow_30'], $language_grow['total_user']));
             }
             $country['trends']['language'] = $trend_up;
             /***** Gender trend *****/
             $trend_up = array();
             if ($data['audience_female_grow_30'] > 0 || $data['audience_male_grow_30'] > 0) {
                 if ($data['audience_male_grow_30'] > $data['audience_female_grow_30']) {
                     $trend_up = array('name' => 'Hombres', 'grow' => $this->formatGrow($data['audience_male_grow_30'], $data['total_male']));
                 } else {
                     $trend_up = array('name' => 'Mujeres', 'grow' => $this->formatGrow($data['audience_female_grow_30'], $data['total_female']));
                 }
             }
             $country['trends']['gender'] = $trend_up;
             /***** Relationships *****/
             $country['relationships']['has_more'] = true;
             $country['relationships']['items'] = array();
             $relationships = FacebookCountryRelationship::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'total_female', 'total_male', 'total_user_grow_30']);
             foreach ($relationships as $relationship) {
                 $country['relationships']['items'][] = array('name' => $relationship['name'], 'total_user' => $this->owloo_number_format($relationship['total_user']), 'percent' => $this->owlooFormatPorcent($relationship['total_user'], $data['total_user']), 'more' => array('female' => $this->owloo_number_format($relationship['total_female']), 'male' => $this->owloo_number_format($relationship['total_male']), 'grow_30' => $this->formatGrow($relationship['total_user_grow_30'], $relationship['total_user'])));
             }
             //Get Trend-up
             foreach (array('user', 'female', 'male') as $value) {
                 $trend_relationships[$value] = array();
                 $relationship_grow = FacebookCountryRelationship::whereCountryCode($country['code'])->orderBy('total_' . $value . '_grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_' . $value, 'total_' . $value . '_grow_30']);
                 if (isset($relationship_grow['name']) && $relationship_grow['total_' . $value . '_grow_30'] > 0) {
                     $trend_relationships[$value] = array('name' => $relationship_grow['name'], 'grow' => $this->formatGrow($relationship_grow['total_' . $value . '_grow_30'], $relationship_grow['total_' . $value]));
                 }
             }
             $country['trends']['female_relationship'] = $trend_relationships['female'];
             $country['trends']['male_relationship'] = $trend_relationships['male'];
             /***** Interests *****/
             $country['interests']['items'] = array();
             $interests = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivel(1)->orderBy('total_user', 'DESC')->get(['id', 'name', 'total_user', 'grow_7']);
             foreach ($interests as $interest) {
                 $country['interests']['items'][] = array('id' => $interest['id'], 'name' => $interest['name'], 'grow_7' => $this->formatGrow($interest['grow_7'], $interest['total_user']), 'total_user' => $this->owloo_number_format($interest['total_user']), 'percent' => $this->owlooFormatPorcent($interest['total_user'], $data['total_user']));
             }
             //Get the Trend-up
             $country['interests']['trend_up'] = array();
             foreach (array(1, 3, 7, 15, 30) as $days) {
                 $country['interests']['trend_up']['grow_' . $days] = array();
                 $interest_grow = FacebookCountryInterest::whereCountryCode($country['code'])->orderBy('grow_' . $days, 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_' . $days]);
                 $time = NULL;
                 switch ($days) {
                     case 1:
                         $time = '24 hours';
                         break;
                     case 3:
                         $time = '72 hours';
                         break;
                     default:
                         $time = $days . ' days';
                         break;
                 }
                 if (isset($interest_grow['name']) && $interest_grow['grow_' . $days] > 0) {
                     $country['interests']['trend_up']['grow_' . $days] = array('name' => $interest_grow['name'], 'grow' => $this->formatGrow($interest_grow['grow_' . $days], $interest_grow['total_user']), 'time' => $time);
                 } else {
                     $country['interests']['trend_up']['grow_' . $days] = array('name' => '', 'grow' => '', 'time' => $time);
                 }
             }
             /***** Comportamientos *****/
             $country['comportamientos']['items'] = array();
             $items_has_more = array();
             $comportamientos = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivel(2)->whereMobileDevice(0)->orderBy('total_user', 'DESC')->get(['id', 'name', 'total_user', 'grow_7']);
             foreach ($comportamientos as $comportamiento) {
                 if ($comportamiento['total_user'] != '') {
                     $country['comportamientos']['items'][] = array('has_more' => false, 'id' => $comportamiento['id'], 'name' => $comportamiento['name'], 'grow_7' => $this->formatGrow($comportamiento['grow_7'], $comportamiento['total_user']), 'total_user' => $this->owloo_number_format($comportamiento['total_user']), 'percent' => $this->owlooFormatPorcent($comportamiento['total_user'], $data['total_user']));
                 } else {
                     $items_has_more[] = array('has_more' => true, 'id' => $comportamiento['id_comportamiento'], 'name' => $comportamiento['name']);
                 }
             }
             foreach ($items_has_more as $more) {
                 $country['comportamientos']['items'][] = $more;
             }
             //Get the Trend-up
             $country['comportamientos']['trend_up'] = array();
             foreach (array(1, 3, 7, 15, 30) as $days) {
                 $country['comportamientos']['trend_up']['grow_' . $days] = array();
                 $comportamiento_grow = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereMobileDevice(0)->orderBy('grow_' . $days, 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_' . $days]);
                 $time = NULL;
                 switch ($days) {
                     case 1:
                         $time = '24 hours';
                         break;
                     case 3:
                         $time = '72 hours';
                         break;
                     default:
                         $time = $days . ' days';
                         break;
                 }
                 if (isset($comportamiento_grow['name']) && $comportamiento_grow['grow_' . $days] > 0) {
                     $country['comportamientos']['trend_up']['grow_' . $days] = array('name' => $comportamiento_grow['name'], 'grow' => $this->formatGrow($comportamiento_grow['grow_' . $days], $comportamiento_grow['total_user']), 'time' => $time);
                 } else {
                     $country['comportamientos']['trend_up']['grow_' . $days] = array('name' => '', 'grow' => '', 'time' => $time);
                 }
             }
             /***** Mobile device *****/
             //Top values
             $country['mobile_devices']['top'] = array();
             $top_elements = array(array('id' => '92', 'name' => 'Android'), array('id' => '94', 'name' => 'IOS'), array('id' => '93', 'name' => 'Windows Phones'), array('id' => '96', 'name' => 'Todos los dispositivos móviles'), array('id' => '100', 'name' => 'Propietarios de tabletas'));
             foreach ($top_elements as $top_comportamiento) {
                 $mobile_device = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereIdComportamiento($top_comportamiento['id'])->get(['total_user'])->first();
                 if ($mobile_device) {
                     $country['mobile_devices']['top'][] = array('name' => $top_comportamiento['name'], 'total_user' => $this->owloo_number_format($mobile_device['total_user']));
                 }
             }
             //Table
             $country['mobile_devices']['brands'] = array();
             foreach (array('android', 'ios', 'others') as $operating_system) {
                 $mobile_devices = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivel($operating_system == 'ios' ? 4 : 3)->whereMobileOs($operating_system)->orderBy('total_user', 'DESC')->get(['id', 'id_comportamiento', 'name', 'total_user', 'grow_7']);
                 foreach ($mobile_devices as $mobile_device) {
                     $country['mobile_devices']['brands'][$operating_system][] = array('has_more' => $operating_system != 'ios' && $this->mobile_device_has_more_device($mobile_device['id_comportamiento']) ? true : false, 'id' => $mobile_device['id'], 'name' => $mobile_device['name'], 'grow_7' => $this->formatGrow($mobile_device['grow_7'], $mobile_device['total_user']), 'total_user' => $this->owloo_number_format($mobile_device['total_user']), 'percent' => $this->owlooFormatPorcent($mobile_device['total_user'], $data['total_user']));
                 }
             }
             //Trend ups
             $country['mobile_devices']['trend_up'] = array();
             foreach (array('android', 'ios', 'others') as $operating_system) {
                 foreach (array(1, 3, 7, 15, 30) as $days) {
                     $country['mobile_devices']['trend_up'][$operating_system]['grow_' . $days] = array();
                     $comportamiento_grow = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereMobileOs($operating_system)->orderBy('grow_' . $days, 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_' . $days]);
                     $time = NULL;
                     switch ($days) {
                         case 1:
                             $time = '24 hours';
                             break;
                         case 3:
                             $time = '72 hours';
                             break;
                         default:
                             $time = $days . ' days';
                             break;
                     }
                     if (isset($comportamiento_grow['name']) && $comportamiento_grow['grow_' . $days] > 0) {
                         $country['mobile_devices']['trend_up'][$operating_system]['grow_' . $days] = array('name' => $comportamiento_grow['name'], 'grow' => $this->formatGrow($comportamiento_grow['grow_' . $days], $comportamiento_grow['total_user']), 'time' => $time);
                     } else {
                         $country['mobile_devices']['trend_up'][$operating_system]['grow_' . $days] = array('name' => '', 'grow' => '', 'time' => $time);
                     }
                 }
             }
             //Android vs. IOS
             //Top values
             $country['mobile_devices']['vs'] = array();
             $vs_elements = array(array('id' => '92', 'name' => 'Android'), array('id' => '94', 'name' => 'IOS'));
             foreach ($vs_elements as $vs_comportamiento) {
                 $mobile_device = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereIdComportamiento($vs_comportamiento['id'])->get(['chart_history'])->first();
                 if ($mobile_device) {
                     $country['mobile_devices']['vs'][strtolower($vs_comportamiento['name'])] = array('name' => $vs_comportamiento['name'], 'history' => $this->owloo_chart_data_format($mobile_device['chart_history']));
                 }
             }
             Cache::put($var_cache, $country, 1440);
         } else {
             return 'Invalid method';
         }
     }
     return Cache::get($var_cache);
 }
예제 #2
0
 public function getCountry($code)
 {
     $var_cache = 'facebookCountry' . $code;
     if (!Cache::has($var_cache)) {
         $data = FacebookCountry::whereCode($code)->first();
         if ($data) {
             $country['id_country'] = $data['id_country'];
             $country['code'] = strtolower($data['code']);
             $country['name'] = $data['name'];
             $country['abbreviation'] = $data['abbreviation'];
             $country['link'] = $this->convert_string_to_url($data['name_en']);
             $country['total_user'] = $this->owloo_number_format($data['total_user']);
             $country['total_female'] = array('value' => $this->owloo_number_format($data['total_female']), 'percent' => $this->owlooFormatPorcent($data['total_female'], $data['total_user']));
             $country['total_male'] = array('value' => $this->owloo_number_format($data['total_male']), 'percent' => $this->owlooFormatPorcent($data['total_male'], $data['total_user']));
             $country['audience_history'] = json_decode($data['audience_history'], true);
             $country['audience_grow']['grow_1'] = $this->formatGrow($data['audience_grow_1'], $data['total_user']);
             $country['audience_grow']['grow_7'] = $this->formatGrow($data['audience_grow_7'], $data['total_user']);
             $country['audience_grow']['grow_30'] = $this->formatGrow($data['audience_grow_30'], $data['total_user']);
             $country['audience_grow']['grow_60'] = $this->formatGrow($data['audience_grow_60'], $data['total_user']);
             $country['audience_grow']['grow_90'] = $this->formatGrow($data['audience_grow_90'], $data['total_user']);
             $country['audience_grow']['grow_180'] = $this->formatGrow($data['audience_grow_180'], $data['total_user']);
             $country['general_ranking'] = $data['general_ranking'];
             /***** Cities *****/
             $country['cities']['supports'] = $data['supports_city'];
             $country['cities']['items'] = array();
             $cities = FacebookCity::whereCountryCode($country['code'])->take(5)->orderBy('total_user', 'DESC')->get(['name', 'total_user']);
             foreach ($cities as $city) {
                 $country['cities']['items'][] = array('name' => $city['name'], 'total_user' => $this->owloo_number_format($city['total_user']), 'percent' => $this->owlooFormatPorcent($city['total_user'], $data['total_user']));
             }
             /***** Regions *****/
             $country['regions']['supports'] = $data['supports_region'];
             $country['regions']['items'] = array();
             $regions = FacebookRegion::whereCountryCode($country['code'])->take(5)->orderBy('total_user', 'DESC')->get(['name', 'total_user']);
             foreach ($regions as $region) {
                 $country['regions']['items'][] = array('name' => $region['name'], 'total_user' => $this->owloo_number_format($region['total_user']), 'percent' => $this->owlooFormatPorcent($region['total_user'], $data['total_user']));
             }
             /***** Ages *****/
             $country['ages']['items'] = array();
             $ages = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'total_female', 'total_male', 'grow_30']);
             foreach ($ages as $age) {
                 $country['ages']['items'][] = array('name' => $age['name'], 'total_user' => $this->owloo_number_format($age['total_user']), 'percent' => $this->owlooFormatPorcent($age['total_user'], $data['total_user']));
             }
             //Get max values
             foreach (array('user', 'female', 'male') as $value) {
                 $country['ages']['max_' . $value] = array();
                 $age_max_total = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('total_' . $value, 'DESC')->orderBy('id', 'ASC')->first(['name', 'total_' . $value]);
                 if (isset($age_max_total['name'])) {
                     $country['ages']['max_' . $value] = array('name' => $age_max_total['name'], 'value' => $this->owloo_number_format($age_max_total['total_' . $value]), 'percent' => $this->owlooFormatPorcent($age_max_total['total_' . $value], $data['total_user']));
                 }
             }
             //Get Trend-up
             $country['ages']['trend_up'] = array();
             $age_grow = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('grow_30', 'DESC')->orderBy('id', 'ASC')->first(['name', 'total_user', 'grow_30']);
             if (isset($age_grow['name']) && $age_grow['grow_30'] > 0) {
                 $country['ages']['trend_up'] = array('name' => $age_grow['name'], 'grow' => $this->formatGrow($age_grow['grow_30'], $age_grow['total_user']));
             }
             /***** Languages *****/
             $country['languages']['items'] = array();
             $languages = FacebookCountryLanguage::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'grow_30']);
             foreach ($languages as $language) {
                 $country['languages']['items'][] = array('name' => $language['name'], 'total_user' => $this->owloo_number_format($language['total_user']), 'percent' => $this->owlooFormatPorcent($language['total_user'], $data['total_user']));
             }
             //Get the Trend-up
             $country['languages']['trend_up'] = array();
             $language_grow = FacebookCountryLanguage::whereCountryCode($country['code'])->orderBy('grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_30']);
             if (isset($language_grow['name']) && $language_grow['grow_30'] > 0) {
                 $country['languages']['trend_up'] = array('name' => $language_grow['name'], 'grow' => $this->formatGrow($language_grow['grow_30'], $language_grow['total_user']));
             }
             /***** Relationships *****/
             $country['relationships']['items'] = array();
             $relationships = FacebookCountryRelationship::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'total_user_grow_30', 'total_female_grow_30', 'total_male_grow_30']);
             foreach ($relationships as $relationship) {
                 $country['relationships']['items'][] = array('name' => $relationship['name'], 'total_user' => $this->owloo_number_format($relationship['total_user']), 'percent' => $this->owlooFormatPorcent($relationship['total_user'], $data['total_user']));
             }
             //Get Trend-up
             foreach (array('user', 'female', 'male') as $value) {
                 $country['relationships']['trend_up_' . $value] = array();
                 $relationship_grow = FacebookCountryRelationship::whereCountryCode($country['code'])->orderBy('total_' . $value . '_grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_' . $value, 'total_' . $value . '_grow_30']);
                 if (isset($relationship_grow['name']) && $relationship_grow['total_' . $value . '_grow_30'] > 0) {
                     $country['relationships']['trend_up_' . $value] = array('name' => $relationship_grow['name'], 'grow' => $this->formatGrow($relationship_grow['total_' . $value . '_grow_30'], $relationship_grow['total_' . $value]));
                 }
             }
             /***** Interests *****/
             $country['interests']['items'] = array();
             $interests = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivel(1)->orderBy('total_user', 'DESC')->get(['id_interest', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
             $count_nivel_1 = 0;
             foreach ($interests as $interest) {
                 $country['interests']['items'][$count_nivel_1] = array('name' => $interest['name'], 'total_user' => $this->owloo_number_format($interest['total_user']), 'female_percent' => $this->owlooFormatPorcent($interest['total_female'], $interest['total_user']), 'male_percent' => $this->owlooFormatPorcent($interest['total_male'], $interest['total_user']), 'percent' => $this->owlooFormatPorcent($interest['total_user'], $data['total_user']), 'items' => array());
                 $interests_childrens_1 = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivelSuperior($interest['id_interest'])->orderBy('total_user', 'DESC')->take(5)->get(['id_interest', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                 $count_nivel_2 = 0;
                 foreach ($interests_childrens_1 as $children_1) {
                     $country['interests']['items'][$count_nivel_1]['items'][$count_nivel_2] = array('name' => $children_1['name'], 'total_user' => $this->owloo_number_format($children_1['total_user']), 'percent' => $this->owlooFormatPorcent($children_1['total_user'], $data['total_user']), 'items' => array());
                     $interests_childrens_2 = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivelSuperior($children_1['id_interest'])->orderBy('total_user', 'DESC')->take(5)->get(['id_interest', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                     foreach ($interests_childrens_2 as $children_2) {
                         $country['interests']['items'][$count_nivel_1]['items'][$count_nivel_2]['items'][] = array('name' => $children_2['name'], 'total_user' => $this->owloo_number_format($children_2['total_user']), 'percent' => $this->owlooFormatPorcent($children_2['total_user'], $data['total_user']));
                     }
                     $count_nivel_2++;
                 }
                 $count_nivel_1++;
             }
             //Get the Trend-up
             $country['interests']['trend_up'] = array();
             $interest_grow = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivel(1)->orderBy('grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_30']);
             if (isset($interest_grow['name']) && $interest_grow['grow_30'] > 0) {
                 $country['interests']['trend_up'] = array('name' => $interest_grow['name'], 'grow' => $this->formatGrow($interest_grow['grow_30'], $interest_grow['total_user']));
             }
             /***** Comportamientos *****/
             $country['comportamientos']['items'] = array();
             $comportamientos = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivel(1)->orderBy('total_user', 'DESC')->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
             $count_nivel_1 = 0;
             foreach ($comportamientos as $comportamiento) {
                 $country['comportamientos']['items'][$count_nivel_1] = array('name' => $comportamiento['name'], 'total_user' => !empty($comportamiento['total_user']) ? $this->owloo_number_format($comportamiento['total_user']) : NULL, 'female_percent' => !empty($comportamiento['total_user']) ? $this->owlooFormatPorcent($comportamiento['total_female'], $comportamiento['total_user']) : NULL, 'male_percent' => !empty($comportamiento['total_user']) ? $this->owlooFormatPorcent($comportamiento['total_male'], $comportamiento['total_user']) : NULL, 'percent' => !empty($comportamiento['total_user']) ? $this->owlooFormatPorcent($comportamiento['total_user'], $data['total_user']) : NULL, 'items' => array());
                 $comportamientos_childrens_1 = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivelSuperior($comportamiento['id_comportamiento'])->orderBy('total_user', 'DESC')->take(5)->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                 $count_nivel_2 = 0;
                 foreach ($comportamientos_childrens_1 as $children_1) {
                     $country['comportamientos']['items'][$count_nivel_1]['items'][$count_nivel_2] = array('name' => $children_1['name'], 'total_user' => !empty($children_1['total_user']) ? $this->owloo_number_format($children_1['total_user']) : NULL, 'percent' => !empty($children_1['total_user']) ? $this->owlooFormatPorcent($children_1['total_user'], $data['total_user']) : NULL, 'items' => array());
                     $comportamientos_childrens_2 = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivelSuperior($children_1['id_comportamiento'])->orderBy('total_user', 'DESC')->take(5)->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                     $count_nivel_3 = 0;
                     foreach ($comportamientos_childrens_2 as $children_2) {
                         $country['comportamientos']['items'][$count_nivel_1]['items'][$count_nivel_2]['items'][$count_nivel_3] = array('name' => $children_2['name'], 'total_user' => !empty($children_2['total_user']) ? $this->owloo_number_format($children_2['total_user']) : NULL, 'percent' => !empty($children_2['total_user']) ? $this->owlooFormatPorcent($children_2['total_user'], $data['total_user']) : NULL);
                         $comportamientos_childrens_3 = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivelSuperior($children_2['id_comportamiento'])->orderBy('total_user', 'DESC')->take(5)->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                         foreach ($comportamientos_childrens_3 as $children_3) {
                             $country['comportamientos']['items'][$count_nivel_1]['items'][$count_nivel_2]['items'][$count_nivel_3]['items'][] = array('name' => $children_3['name'], 'total_user' => !empty($children_2['total_user']) ? $this->owloo_number_format($children_2['total_user']) : NULL, 'percent' => $this->owlooFormatPorcent($children_3['total_user'], $data['total_user']));
                         }
                         $count_nivel_3++;
                     }
                     $count_nivel_2++;
                 }
                 $count_nivel_1++;
             }
             /***** Mobile device *****/
             /*
                41 - Samsung
                25 - Apple
                39 - Google
                62 - Otros dispositivos Android
                63 - Blackberry
                69 - HTC
                71 - LG
                76 - Sony
                77 - Motorola
                78 - Nokia
                90 - Huawei
                92 - Todos los dispositivos Android
                93 - Windows Phones
                94 - Todos los dispositivos iOS
                95 - Teléfonos convencionales
                96 - Todos los dispositivos móviles
                97 - Smartphones y tablets
                99 - Smartphone Owners
                100 - Tablet Owners
             */
             $mobile_ids = array('Android' => array(41, 90, 39, 71, 69, 76, 77, 62), 'iOS' => array(25), 'Otros' => array(93, 78, 63));
             foreach ($mobile_ids as $key => $value) {
                 $count_nivel_1 = 0;
                 foreach ($value as $item) {
                     $mobile_devices = FacebookCountryComportamiento::whereIdComportamiento($item)->whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                     foreach ($mobile_devices as $mobile_device) {
                         $country['mobile_devices'][$key][$count_nivel_1] = array('name' => $mobile_device['name'], 'total_user' => !empty($mobile_device['total_user']) ? $this->owloo_number_format($mobile_device['total_user']) : NULL, 'female_percent' => !empty($mobile_device['total_user']) ? $this->owlooFormatPorcent($mobile_device['total_female'], $mobile_device['total_user']) : NULL, 'male_percent' => !empty($mobile_device['total_user']) ? $this->owlooFormatPorcent($mobile_device['total_male'], $mobile_device['total_user']) : NULL, 'percent' => !empty($mobile_device['total_user']) ? $this->owlooFormatPorcent($mobile_device['total_user'], $data['total_user']) : NULL, 'items' => array());
                         $mobile_devices_childrens_1 = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivelSuperior($mobile_device['id_comportamiento'])->orderBy('total_user', 'DESC')->take(5)->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                         $count_nivel_2 = 0;
                         foreach ($mobile_devices_childrens_1 as $children_1) {
                             $country['mobile_devices'][$key][$count_nivel_1]['items'][$count_nivel_2] = array('name' => $children_1['name'], 'total_user' => $this->owloo_number_format($children_1['total_user']), 'percent' => $this->owlooFormatPorcent($children_1['total_user'], $data['total_user']), 'items' => array());
                             $count_nivel_2++;
                         }
                         $count_nivel_1++;
                     }
                 }
             }
             Cache::put($var_cache, $country, 1440);
         } else {
             return 'Invalid method';
         }
     }
     return Cache::get($var_cache);
 }
예제 #3
0
 public function getCountry($code)
 {
     $var_cache = 'facebookCountry' . $code;
     if (!Cache::has($var_cache)) {
         $data = FacebookCountry::whereCode($code)->first();
         if ($data) {
             $country['id_country'] = $data['id_country'];
             $country['code'] = strtolower($data['code']);
             $country['name'] = $data['name'];
             $country['abbreviation'] = $data['abbreviation'];
             $country['link'] = $this->convert_string_to_url($data['name_en']);
             $country['total_user'] = $this->owloo_number_format($data['total_user']);
             $country['total_female'] = array('value' => $this->owloo_number_format($data['total_female']), 'percent' => $this->owlooFormatPorcent($data['total_female'], $data['total_user']));
             $country['total_male'] = array('value' => $this->owloo_number_format($data['total_male']), 'percent' => $this->owlooFormatPorcent($data['total_male'], $data['total_user']));
             $country['audience_history'] = json_decode($data['audience_history'], true);
             $country['audience_grow']['grow_1'] = $this->formatGrow($data['audience_grow_1'], $data['total_user']);
             $country['audience_grow']['grow_7'] = $this->formatGrow($data['audience_grow_7'], $data['total_user']);
             $country['audience_grow']['grow_30'] = $this->formatGrow($data['audience_grow_30'], $data['total_user']);
             $country['audience_grow']['grow_60'] = $this->formatGrow($data['audience_grow_60'], $data['total_user']);
             $country['audience_grow']['grow_90'] = $this->formatGrow($data['audience_grow_90'], $data['total_user']);
             $country['audience_grow']['grow_180'] = $this->formatGrow($data['audience_grow_180'], $data['total_user']);
             $country['general_ranking'] = $data['general_ranking'];
             /***** Cities *****/
             $country['cities']['supports'] = $data['supports_city'];
             $country['cities']['items'] = array();
             $cities = FacebookCity::whereCountryCode($country['code'])->take(5)->orderBy('total_user', 'DESC')->get(['name', 'total_user']);
             foreach ($cities as $city) {
                 $country['cities']['items'][] = array('name' => $city['name'], 'total_user' => $this->owloo_number_format($city['total_user']), 'percent' => $this->owlooFormatPorcent($city['total_user'], $data['total_user']));
             }
             /***** Regions *****/
             $country['regions']['supports'] = $data['supports_region'];
             $country['regions']['items'] = array();
             $regions = FacebookRegion::whereCountryCode($country['code'])->take(5)->orderBy('total_user', 'DESC')->get(['name', 'total_user']);
             foreach ($regions as $region) {
                 $country['regions']['items'][] = array('name' => $region['name'], 'total_user' => $this->owloo_number_format($region['total_user']), 'percent' => $this->owlooFormatPorcent($region['total_user'], $data['total_user']));
             }
             /***** Ages *****/
             $country['ages']['items'] = array();
             $ages = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'total_female', 'total_male', 'grow_30']);
             foreach ($ages as $age) {
                 $country['ages']['items'][] = array('name' => $age['name'], 'total_user' => $this->owloo_number_format($age['total_user']), 'percent' => $this->owlooFormatPorcent($age['total_user'], $data['total_user']));
             }
             //Get max values
             foreach (array('user', 'female', 'male') as $value) {
                 $country['ages']['max_' . $value] = array();
                 $age_max_total = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('total_' . $value, 'DESC')->orderBy('id', 'ASC')->first(['name', 'total_' . $value]);
                 if (isset($age_max_total['name'])) {
                     $country['ages']['max_' . $value] = array('name' => $age_max_total['name'], 'value' => $this->owloo_number_format($age_max_total['total_' . $value]), 'percent' => $this->owlooFormatPorcent($age_max_total['total_' . $value], $data['total_user']));
                 }
             }
             //Get Trend-up
             $country['ages']['trend_up'] = array();
             $age_grow = FacebookCountryAge::whereCountryCode($country['code'])->orderBy('grow_30', 'DESC')->orderBy('id', 'ASC')->first(['name', 'total_user', 'grow_30']);
             if (isset($age_grow['name']) && $age_grow['grow_30'] > 0) {
                 $country['ages']['trend_up'] = array('name' => $age_grow['name'], 'grow' => $this->formatGrow($age_grow['grow_30'], $age_grow['total_user']));
             }
             /***** Languages *****/
             $country['languages']['items'] = array();
             $languages = FacebookCountryLanguage::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'grow_30']);
             foreach ($languages as $language) {
                 $country['languages']['items'][] = array('name' => $language['name'], 'total_user' => $this->owloo_number_format($language['total_user']), 'percent' => $this->owlooFormatPorcent($language['total_user'], $data['total_user']));
             }
             //Get the Trend-up
             $country['languages']['trend_up'] = array();
             $language_grow = FacebookCountryLanguage::whereCountryCode($country['code'])->orderBy('grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_30']);
             if (isset($language_grow['name']) && $language_grow['grow_30'] > 0) {
                 $country['languages']['trend_up'] = array('name' => $language_grow['name'], 'grow' => $this->formatGrow($language_grow['grow_30'], $language_grow['total_user']));
             }
             /***** Relationships *****/
             $country['relationships']['items'] = array();
             $relationships = FacebookCountryRelationship::whereCountryCode($country['code'])->orderBy('total_user', 'DESC')->get(['name', 'total_user', 'total_user_grow_30', 'total_female_grow_30', 'total_male_grow_30']);
             foreach ($relationships as $relationship) {
                 $country['relationships']['items'][] = array('name' => $relationship['name'], 'total_user' => $this->owloo_number_format($relationship['total_user']), 'percent' => $this->owlooFormatPorcent($relationship['total_user'], $data['total_user']));
             }
             //Get Trend-up
             foreach (array('user', 'female', 'male') as $value) {
                 $country['relationships']['trend_up_' . $value] = array();
                 $relationship_grow = FacebookCountryRelationship::whereCountryCode($country['code'])->orderBy('total_' . $value . '_grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_' . $value, 'total_' . $value . '_grow_30']);
                 if (isset($relationship_grow['name']) && $relationship_grow['total_' . $value . '_grow_30'] > 0) {
                     $country['relationships']['trend_up_' . $value] = array('name' => $relationship_grow['name'], 'grow' => $this->formatGrow($relationship_grow['total_' . $value . '_grow_30'], $relationship_grow['total_' . $value]));
                 }
             }
             /***** Interests *****/
             $country['interests']['items'] = array();
             $interests = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivel(1)->orderBy('total_user', 'DESC')->get(['id_interest', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
             $count_nivel_1 = 0;
             foreach ($interests as $interest) {
                 $country['interests']['items'][$count_nivel_1] = array('name' => $interest['name'], 'total_user' => $this->owloo_number_format($interest['total_user']), 'percent' => $this->owlooFormatPorcent($interest['total_user'], $data['total_user']), 'items' => array());
                 $interests_childrens_1 = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivelSuperior($interest['id_interest'])->orderBy('total_user', 'DESC')->take(5)->get(['id_interest', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                 $count_nivel_2 = 0;
                 foreach ($interests_childrens_1 as $children_1) {
                     $country['interests']['items'][$count_nivel_1]['items'][$count_nivel_2] = array('name' => $children_1['name'], 'total_user' => $this->owloo_number_format($children_1['total_user']), 'percent' => $this->owlooFormatPorcent($children_1['total_user'], $data['total_user']), 'items' => array());
                     $interests_childrens_2 = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivelSuperior($children_1['id_interest'])->orderBy('total_user', 'DESC')->take(5)->get(['id_interest', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                     foreach ($interests_childrens_2 as $children_2) {
                         $country['interests']['items'][$count_nivel_1]['items'][$count_nivel_2]['items'][] = array('name' => $children_2['name'], 'total_user' => $this->owloo_number_format($children_2['total_user']), 'percent' => $this->owlooFormatPorcent($children_2['total_user'], $data['total_user']));
                     }
                     $count_nivel_2++;
                 }
                 $count_nivel_1++;
             }
             //Get the Trend-up
             $country['interests']['trend_up'] = array();
             $interest_grow = FacebookCountryInterest::whereCountryCode($country['code'])->whereNivel(1)->orderBy('grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_30']);
             if (isset($interest_grow['name']) && $interest_grow['grow_30'] > 0) {
                 $country['interests']['trend_up'] = array('name' => $interest_grow['name'], 'grow' => $this->formatGrow($interest_grow['grow_30'], $interest_grow['total_user']));
             }
             /***** Comportamientos *****/
             $country['comportamientos']['items'] = array();
             $comportamientos = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivel(1)->orderBy('total_user', 'DESC')->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
             $count_nivel_1 = 0;
             foreach ($comportamientos as $comportamiento) {
                 $country['comportamientos']['items'][$count_nivel_1] = array('name' => $comportamiento['name'], 'total_user' => $this->owloo_number_format($comportamiento['total_user']), 'percent' => $this->owlooFormatPorcent($comportamiento['total_user'], $data['total_user']), 'items' => array());
                 $comportamientos_childrens_1 = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivelSuperior($comportamiento['id_comportamiento'])->orderBy('total_user', 'DESC')->take(5)->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                 $count_nivel_2 = 0;
                 foreach ($comportamientos_childrens_1 as $children_1) {
                     $country['comportamientos']['items'][$count_nivel_1]['items'][$count_nivel_2] = array('name' => $children_1['name'], 'total_user' => $this->owloo_number_format($children_1['total_user']), 'percent' => $this->owlooFormatPorcent($children_1['total_user'], $data['total_user']), 'items' => array());
                     $comportamientos_childrens_2 = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivelSuperior($children_1['id_comportamiento'])->orderBy('total_user', 'DESC')->take(5)->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                     $count_nivel_3 = 0;
                     foreach ($comportamientos_childrens_2 as $children_2) {
                         $country['comportamientos']['items'][$count_nivel_1]['items'][$count_nivel_2]['items'][$count_nivel_3] = array('name' => $children_2['name'], 'total_user' => $this->owloo_number_format($children_2['total_user']), 'percent' => $this->owlooFormatPorcent($children_2['total_user'], $data['total_user']));
                         $comportamientos_childrens_3 = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivelSuperior($children_2['id_comportamiento'])->orderBy('total_user', 'DESC')->take(5)->get(['id_comportamiento', 'name', 'total_user', 'total_female', 'total_male', 'grow_30']);
                         foreach ($comportamientos_childrens_3 as $children_3) {
                             $country['comportamientos']['items'][$count_nivel_1]['items'][$count_nivel_2]['items'][$count_nivel_3]['items'][] = array('name' => $children_3['name'], 'total_user' => $this->owloo_number_format($children_3['total_user']), 'percent' => $this->owlooFormatPorcent($children_3['total_user'], $data['total_user']));
                         }
                         $count_nivel_3++;
                     }
                     $count_nivel_2++;
                 }
                 $count_nivel_1++;
             }
             //Get the Trend-up
             $country['comportamientos']['trend_up'] = array();
             $comportamiento_grow = FacebookCountryComportamiento::whereCountryCode($country['code'])->whereNivel(1)->orderBy('grow_30', 'DESC')->orderBy('total_user', 'DESC')->first(['name', 'total_user', 'grow_30']);
             if (isset($comportamiento_grow['name']) && $comportamiento_grow['grow_30'] > 0) {
                 $country['comportamientos']['trend_up'] = array('name' => $comportamiento_grow['name'], 'grow' => $this->formatGrow($comportamiento_grow['grow_30'], $comportamiento_grow['total_user']));
             }
             print_r($country);
             die;
             Cache::put($var_cache, $country, 1440);
         } else {
             return 'Invalid method';
         }
     }
     return Cache::get($var_cache);
 }