/** * generate the achievement image, put it in the public achievements folder and return it * @access public * @return void */ public function generate_image() { $filename = $this->params['filename']; $id = basename($filename, '.png'); $achievement = Achievement::$objects->get_or_404($id); $path = achievement_path($achievement); $image = generate_achievement($achievement, $path); $this->render_image($image->image); $image->destroy(); }
/** * The new achievement notification * body is loaded by the create method, from the template * @param User $user * @access public * @return void */ protected function achievement_created_notification($achievement) { $image_path = achievement_path($achievement); if (!file_exists($image_path)) { generate_achievement($achievement, $image_path); } $image_name = "achievement-{$achievement->id}.png"; $image_cid = md5($image_name); $this->subject = "[ACHIEVEMENTS] New challenge created by {$achievement->creator->target()}"; $this->body = array('achievement' => $achievement, 'image_cid' => $image_cid); $this->images = array(array('content' => file_get_contents($image_path), 'content_id' => $image_cid, 'filename' => $image_name, 'content_type' => 'image/png')); $this->from = DEFAULT_MAIL_FROM; $this->recipients = array(); foreach (User::$objects->all()->values('email', 'login') as $user) { $this->recipients[] = array($user['email'], $user['login']); } }