IPBSDK et la (mauvaise) gestion des attachements

Plus j'avance dans le débugage du IPBSDK et le développement de mon portail, plus je me rends compte qu'il n'y a pas de cohésion entre les différentes fonctions qui compose ce SKD. En effet, prenons l'exemple de la gestion des attachements qui fait 1 requête par attachement alors qu'il est si simple d'utiliser une fonction récupérant tout les attachements d'un message... Le pire est que cette fonction existe ! Mais les 2 ne sont pas reliées. Rassurez vous, je vous livre mon code à rajouter dans la classe MySDK.

[php]
/**
     * Get a post's attachments
     * Gestion d'une mise en cache.
     * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com>
     * @author Pita <peter@randomnity.com>
     * @since 1.11
     * @param integer $postid The post id to check
     * @param boolean $override Whether to override permissions or not.
     * @return array Post's attachments
     */
     function get_post_attachments($postid,$override=FALSE) {

        $query = "";
        if($override == FALSE)
            { $query = " AND attach_approved=1"; }
            
        $this->DB->query(    "    SELECT *
                                        FROM ibf_attachments
                                        WHERE attach_pid='".$postid."'".$query);
        
        if( $this->DB->get_num_rows() == 0 )
            { return FALSE; }

        while ( $row = $this->DB->fetch_row() )
            { $return[] = $row; }
        
        $this->_cache['post_attachments'.$postid] = $return;
    }




    /**
     * Get HTML code for outputting an attachment image.
     * Utilisation d'un cache.
     * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com>
     * @since 1.11
     * @param integer $postid The post id to check
     * @param integer $id The attachment id to be parsed.
     * @param boolean $override Whether to override permissions or not.
     * @return string HTML code
     * @see attachment_info(), attachment_thumb()
     */
    function attachment_image( $pid, $id,$override=FALSE ) {
        
        /*
         * On récupère tous les attachements du poste :
         */
        if ( empty($this->_cache['post_attachments'.$pid]) )
            {
                $this->get_post_attachments($pid);
                // Ancien sysèmeme, au cas où :
                if ( empty($this->_cache['post_attachments'.$pid]) )
                    {
                        $att = $this->attachment_info($id,$override);
                        if($att['attach_is_image'] == 0)
                            { return FALSE; }
                    }
            }
        else
            {
                foreach( $this->_cache['post_attachments'.$pid] as $key => $value )
                    {
                        if ( $value['attach_id'] == $id )
                            { $att = $value; }
                    }
            }
        
        /*
         * Gestion des miniatures :
         */
        if ( empty($att['attach_thumb_location']) )
            { $out = '<img src="'.$this->board_url.'/uploads/'.$att['attach_location'].'" alt="'.$att['attach_file'].'" />'; }
        else
            { $out = '<a href="'.$this->board_url.'/index.php?act=Attach&type=post&amp;id='.$att['attach_id'].'" target="_blank"><img src="'.$this->board_url.'/uploads/'.$att['attach_thumb_location'].'" class="attach" alt="'.$att['attach_file'].'" /></a>'; }
        return $out;
    }
?>
Attribution - Partage dans les Mêmes Conditions 4.0 International