Пример #1
0
 public function make($user)
 {
     Cache::request()->save('analitica.sugerido.rebuild' . $user, true, Cache::get_conf()->cache_time->analitica_user_recomendados_rebuild);
     $intervalos_timeline = array(12, 24, 36, 48, 60);
     $nids_view = array();
     $tag_rank_timeline = array();
     $nids_by_tag = array();
     $nids_sugeridos_by_tag = array();
     foreach ($intervalos_timeline as $intervalo) {
         $now = $intervalo - 12;
         $notas_muestra = $this->redis->zRangeByScore(user_notas . $user, strtotime("-{$intervalo} hours"), strtotime("-{$now} hours"), array('limit' => array(0, 20)));
         $notas_muestra = array_reverse($notas_muestra);
         foreach ($notas_muestra as $time_nid) {
             $time_nid = explode(":", $time_nid);
             $nids_view[$time_nid[0]] = $time_nid[0];
             $mtags = \Rpp\Services\Get\Content::part($time_nid[0], 'tags');
             if (is_array($mtags)) {
                 foreach ($mtags as $tag) {
                     if (isset($tag_rank_timeline[$tag['slug']])) {
                         $tag_rank_timeline[$tag['slug']]++;
                     } else {
                         $tag_rank_timeline[$tag['slug']] = 1;
                     }
                 }
             }
         }
     }
     arsort($tag_rank_timeline);
     $tag_rank_timeline = array_slice($tag_rank_timeline, 0, 15);
     $notas_by_tops = $this->redis->zRevRangeByScore('notas:views', 10000000, 0, array('withscores' => TRUE, 'limit' => array(0, 60)));
     $notas_by_tops = array_reverse(array_keys($notas_by_tops));
     $notas_by_tops = array_combine($notas_by_tops, $notas_by_tops);
     $notas_by_tops = array_diff($notas_by_tops, $nids_view);
     $SearchPatternBuilder = new SearchPatternBuilder(new \Rpp\Repositorio\Builder\Search\Pattern\Tag());
     foreach ($tag_rank_timeline as $slug => $score) {
         $Pattern = $SearchPatternBuilder->addFields(array("_id"))->addFilter(array("tags.slug" => $slug))->addLimit(30)->build();
         $result = $Pattern->load();
         foreach ($result as $node) {
             $nids_by_tag[$slug][$node->_id] = $node->_id;
         }
         $nids_by_tag[$slug] = array_diff($nids_by_tag[$slug], $nids_view);
     }
     foreach ($nids_by_tag as $slug => $list) {
         $nids_sugeridos_by_tag[$slug] = array_intersect($list, $notas_by_tops);
     }
     $nids_by_secciones = array();
     $menu = new \Phalcon\Config\Adapter\Ini(CONFIG_PATH . DIRS . "ini/menu.ini");
     $secciones = explode(",", $menu->secciones->slug);
     $Pattern = $SearchPatternBuilder->reset(new \Rpp\Repositorio\Builder\Search\Pattern\Seccion());
     foreach ($secciones as $seccion) {
         $Pattern = $SearchPatternBuilder->addFields(array("_id"))->addSlug($seccion)->addLimit(20)->build();
         $result = $Pattern->load();
         foreach ($result as $node) {
             $nids_by_secciones[$seccion][$node->_id] = $node->_id;
         }
         $nids_by_secciones[$seccion] = array_diff($nids_by_secciones[$seccion], $nids_view);
     }
     $nids_sugeridos_by_secciones = array();
     foreach ($nids_by_secciones as $seccion => $list) {
         $nids_sugeridos_by_secciones[$seccion] = array_intersect($list, $notas_by_tops);
     }
     /*----guardando tags------*/
     foreach ($nids_sugeridos_by_tag as $tag => $list) {
         var_dump($tag);
         Cache::request()->save('analitica.sugeridos.tag.' . $tag . '-' . $user, $list, Cache::get_conf()->cache_time->analitica_user_sugeridos);
         var_dump(Cache::request()->get('analitica.sugeridos.tag.' . $tag . '-' . $user));
     }
     foreach ($nids_sugeridos_by_secciones as $seccion => $list) {
         Cache::request()->save('analitica.sugeridos.seccion.' . $seccion . '-' . $user, $list, Cache::get_conf()->cache_time->analitica_user_sugeridos);
         var_dump(Cache::request()->get('analitica.sugeridos.seccion.' . $seccion . '-' . $user));
     }
 }