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); } }
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); } }
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); }