예제 #1
0
파일: Artist.php 프로젝트: 4otaku/api
 protected function add_meta_data(&$data)
 {
     parent::add_meta_data($data);
     $ids = array();
     $users = array();
     foreach ($data as &$item) {
         $item['md5'] = false;
         $ids[] = $item['id'];
         $users[] = $item['id_user'];
     }
     if (!empty($users)) {
         $users = $this->db->get_table('user', array('id', 'login'), $this->db->array_in('id', $users), $users);
     }
     if (!empty($ids)) {
         $covers = $this->db->order('a.sortdate')->join('meta', 'm.item_type = 1 and m.meta_type = ' . Meta::ART_ARTIST . ' and m.id_item = a.id')->filter('meta', array('item_type = 1', 'id_item = id', 'meta_type = ' . Meta::STATE, 'meta = 4'), 'meta')->make_temp('art', array('m.meta', 'a.md5', 'a.sortdate'), $this->db->array_in('m.meta', $ids), $ids)->group('tmp.meta')->get_table('tmp', array('meta', 'md5'));
         foreach ($data as &$item) {
             foreach ($covers as $cover) {
                 if ($item['id'] == $cover['meta']) {
                     $item['md5'] = $cover['md5'];
                     break;
                 }
             }
             foreach ($users as $user) {
                 if ($item['id_user'] == $user['id']) {
                     $item['artist'] = $user['login'];
                     break;
                 }
             }
         }
         unset($item);
     }
 }
예제 #2
0
파일: Pack.php 프로젝트: 4otaku/api
 protected function add_meta_data(&$data)
 {
     parent::add_meta_data($data);
     $cover = array();
     $nocover = array();
     foreach ($data as &$item) {
         $item['md5'] = false;
         if (!empty($item['cover'])) {
             $cover[] = $item['cover'];
         } else {
             $nocover[] = $item['id'];
         }
     }
     if (!empty($nocover)) {
         $links = $this->db->order('order', 'asc')->group('id_pack')->get_table('art_pack_item', array('id_pack', 'id_art'), $this->db->array_in('id_pack', $nocover), $nocover);
         foreach ($data as &$item) {
             foreach ($links as $link) {
                 if ($item['id'] == $link['id_pack']) {
                     $item['cover'] = $link['id_art'];
                     $cover[] = $item['cover'];
                     break;
                 }
             }
         }
         unset($item);
     }
     if (!empty($cover)) {
         $covers = $this->db->get_table('art', array('id', 'md5'), $this->db->array_in('id', $cover), $cover);
         foreach ($data as &$item) {
             foreach ($covers as $cover) {
                 if ($item['cover'] == $cover['id']) {
                     $item['md5'] = $cover['md5'];
                     break;
                 }
             }
         }
         unset($item);
     }
 }
예제 #3
0
파일: Art.php 프로젝트: 4otaku/api
 protected function add_meta_data(&$data)
 {
     parent::add_meta_data($data);
     $similar_fields = array();
     foreach ($data as $item) {
         $similar_fields[] = $item[$this->group_field];
     }
     if ($this->group_field != 'id') {
         $similar_counts = $this->db->group($this->group_field)->get_vector('art', array($this->group_field, 'count(*)'), $this->db->array_in($this->group_field, $similar_fields), $similar_fields);
     } else {
         $similar_counts = array();
     }
     foreach ($data as &$item) {
         $item['similar_count'] = 1;
         foreach ($similar_counts as $id_similar => $similar_count) {
             if ($item[$this->group_field] == $id_similar) {
                 $item['similar_count'] = $similar_count;
                 break;
             }
         }
     }
     unset($item);
 }