Пример #1
0
 /**
  * Get liked members common api controller
  * 
  * @access  protected
  * @param   string  $parent_table  target parent table
  * @param   int     $parent_id  target parent record id
  * @param   string  $public_flag_related  related table for check brows authority
  * @param   array   $parent_member_id_relateds  related table and property array for check edit authority
  * @param   int     $limit  record count for get
  * @param   int     $limit_max  record limited count for get
  * @param   string  $parent_id_prop  parent table id property.
  * @return  Response (json|html)
  * @throws  Exception in Controller_Base::controller_common_api
  * @see  Controller_Base::controller_common_api
  */
 protected function api_get_liked_members_common($parent_table, $parent_id, $public_flag_related = null, $parent_member_id_relateds = array(), $limit = 0, $limit_max = 0, $parent_id_prop = null)
 {
     $this->api_accept_formats = array('json', 'html');
     $this->controller_common_api(function () use($parent_table, $parent_id, $public_flag_related, $parent_member_id_relateds, $limit, $limit_max, $parent_id_prop) {
         if (!conf('like.isEnabled')) {
             throw new HttpNotFoundException();
         }
         $like_model = Site_Model::get_model_name($parent_table . '_like');
         $parent_id = (int) $parent_id;
         $parent_model = Site_Model::get_model_name($parent_table);
         $parent_obj = $parent_model::check_authority($parent_id, 0, $public_flag_related);
         if (!$parent_id_prop) {
             $parent_id_prop = $parent_table . '_id';
         }
         $auther_member_ids = Util_Orm::get_related_member_ids($parent_obj, $parent_member_id_relateds);
         foreach ($auther_member_ids as $member_id) {
             $this->check_browse_authority($public_flag_related ? $parent_obj->{$public_flag_related}->public_flag : $parent_obj->public_flag, $member_id);
         }
         $default_params = array('desc' => 1, 'latest' => 1, 'limit' => $limit ?: conf('view_params_default.like.members.popover.limit'));
         list($limit, $is_latest, $is_desc, $since_id, $max_id) = $this->common_get_list_params($default_params, $limit_max ?: conf('view_params_default.like.members.popover.limit_max'));
         $params[$parent_id_prop] = $parent_id;
         list($list, $next_id) = $like_model::get_list($params, $limit, $is_latest, $is_desc, $since_id, $max_id, 'member', $this->format == 'json');
         $data = array('list' => $list, 'next_id' => $next_id);
         if ($this->format == 'html') {
             $data += array('related_member_table_name' => 'member', 'is_simple_list' => true, 'list_id' => 'liked_member_list_' . $parent_id, 'get_uri' => Site_Util::get_api_uri_get_liked_members(Site_Model::convert_table2controller_path($parent_table), $parent_id), 'no_data_message' => sprintf('%sしている%sはいません', term('form.like'), term('member.view')));
             if ($since_id) {
                 $data['since_id'] = $since_id;
             }
         }
         $this->set_response_body_api($data, $this->format == 'html' ? '_parts/member_list' : null);
     });
 }