Plugin Directory

Changeset 610821


Ignore:
Timestamp:
10/11/2012 12:40:32 PM (13 years 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.