/** * Create a new translatable email * * @param DBObject $context * @param string $translation_id * @param array $variables * * @return TranslatableEmail */ public static function create($translation_id, $variables) { $email = new self(); // Get translation data and variables $email->translation_id = $translation_id; $email->variables = array(); if ($variables) { foreach ($variables as $k => $v) { // Convert DBObject types to type/id pairs for saving if ($v instanceof DBObject) { $v = array('dbobject_type' => get_class($v), 'dbobject_id' => $v->id); } $email->variables[$k] = $v; } } // Add meta $email->created = time(); // Generate token until it is indeed unique $email->token = Utilities::generateUID(function ($token) { $statement = DBI::prepare('SELECT * FROM ' . TranslatableEmail::getDBTable() . ' WHERE token = :token'); $statement->execute(array(':token' => $token)); $data = $statement->fetch(); return !$data; }); $email->save(); return $email; }