WordPress.org

Plugin Directory

Changeset 610821


Ignore:
Timestamp:
10/11/12 12:40:32 (18 months ago)
Author:
sushkov
Message:

Added pdf generation part and email.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • buddypress-courseware-certificate/trunk/courseware-certificate.php

    r610819 r610821  
    3030 
    3131/** 
    32  * Main Courseware-certificate Class 
     32 * Courseware Certificate Class 
    3333 */ 
    3434class CoursewareCertificate { 
     
    5353 
    5454      $group_assignments = BPSP_Assignments::has_assignments( $group_id ); 
    55       $grades = array(); 
    5655 
    5756      $completed = true; 
     
    6362        } 
    6463 
    65         $grades[] = BPSP_Gradebook::load_grade_by_user_id( 
    66           $group_assignment->ID, $response->post_author 
    67         ); 
    68  
    6964        $responded = get_post_meta( $group_assignment->ID, 'responded_author' ); 
    7065        if ( !in_array( $response->post_author, $responded ) ) { 
     
    7469 
    7570      if ( $completed && $passed ) { 
    76         self::generate_certificate( $response->post_author, $group_id, $grades ); 
     71        self::generate_certificate( $response->post_author, $group_id ); 
    7772      } 
    7873    } 
    7974 
    8075    /** 
    81      * Generate and email the certificate 
     76     * Generates the pdf 
    8277     */ 
    83     function generate_certificate( $user_id, $group_id, $grades ) { 
    84       $group = groups_get_group( array( 'group_id' => $group_id ) ); 
    85       $user = get_users( array( 'include' => $user_id ) ); 
    86       var_dump( 
    87         $user, 
    88         $group, 
    89         $grades 
     78    function save_pdf( $svg, $user ) { 
     79      $tmp_pdf = sys_get_temp_dir() . '/certificate.pdf'; 
     80      $pdf = new TCPDF( PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false ); 
     81 
     82      $pdf->SetCreator( PDF_CREATOR ); 
     83      $pdf->SetAuthor( 'BuddyPress Courseware' ); 
     84      $pdf->SetTitle( 'Certificate for ' . $user->display_name ); 
     85 
     86      $pdf->SetMargins( 0, 0, 0 ); 
     87      $pdf->SetHeaderMargin(0); 
     88      $pdf->SetFooterMargin(0); 
     89      $pdf->AddPage(); 
     90      $pdf->ImageSVG( 
     91        $file=$svg, 
     92        $x=0, 
     93        $y=0, 
     94        $w='', 
     95        $h='', 
     96        $link='', 
     97        $align='', 
     98        $palign='', 
     99        $border=0, 
     100        $fitonpage=false 
    90101      ); 
    91       die(); 
    92       // TODO: generate certificate in png/pdf 
     102      $pdf->Output( $tmp_pdf, 'F' ); 
     103 
     104      return $tmp_pdf; 
    93105    } 
    94106 
     107    /** 
     108     * Parses the svg file 
     109     */ 
     110    function prepare_pdf( $user, $group ) { 
     111      $original_svg = get_stylesheet_directory() . '/certificate.svg'; 
     112 
     113      if ( !file_exists( $original_svg ) ) { 
     114        $original_svg = dirname( __FILE__ ) . '/svg/certificate.svg'; 
     115      } 
     116 
     117      $tmp_svg = sys_get_temp_dir() . '/certificate.svg'; 
     118 
     119      $svg = file_get_contents( $original_svg ); 
     120 
     121      $svg = str_replace( 'USER_FULL_NAME', $user->display_name, $svg ); 
     122      $svg = str_replace( 'GROUP_FULL_NAME', $group->name, $svg ); 
     123      $svg = str_replace( 'GROUP_DESCRIPTION', $group->description, $svg ); 
     124      $svg = str_replace( 'GROUP_URL', get_site_url(), $svg ); 
     125      $svg = str_replace( 'FULL_DATE', bpsp_get_date( date('Y-m-d H:i:s' ) ), $svg ); 
     126 
     127      file_put_contents( $tmp_svg, $svg ); 
     128 
     129      return self::save_pdf( $tmp_svg, $user ); 
     130    } 
     131 
     132    /** 
     133     * Emails the certificate 
     134     */ 
     135    function email_certificate( $email, $pdf ) { 
     136      wp_mail( $email, 'BuddyPress Courseware Certificate', '', '', array( $pdf ) ); 
     137    } 
     138 
     139    /** 
     140     * Generates the certificate 
     141     */ 
     142    function generate_certificate( $user_id, $group_id ) { 
     143      $group = groups_get_group( array( 'group_id' => $group_id ) ); 
     144      $user = reset( get_users( array( 'include' => $user_id ) ) ); 
     145 
     146      $certificate = self::prepare_pdf( $user, $group ); 
     147      if ( self::email_certificate( $user->user_email, $certificate ) ) { 
     148        unlink( $certificate ); 
     149        unlink( str_replace( '.pdf', '.svg', $certificate ) ); 
     150      } 
     151    } 
    95152} 
    96153CoursewareCertificate::init(); 
Note: See TracChangeset for help on using the changeset viewer.