Exemplo n.º 1
0
 /**
  * Create a mail from a URL, Page or PageRevision.
  *
  * @param string|Page|PageRevision $page
  * @param Curry_Request $request
  * @param array $variables Additional template variables.
  * @return Curry_Mail
  */
 public static function createFromPage($page, $request = null, array $variables = array())
 {
     $app = Curry_Application::getInstance();
     // If a URL is provided, attempt to find page using route
     if (is_string($page)) {
         $r = new Curry_Request('GET', (string) url($page));
         $page = $app->findPage($r);
         if (!$request) {
             $request = $r;
         }
     }
     // Find PageRevision
     if ($page instanceof PageRevision) {
         $pageRevision = $page;
     } elseif ($page instanceof Page) {
         $pageRevision = $page->getPageRevision();
         if (!$pageRevision) {
             throw new Exception('Page has no active revision.');
         }
     } else {
         throw new Exception('$page is of invalid type, expected Page or PageRevision.');
     }
     // Create Curry_Request object if not provided
     $oldVal = Curry_URL::setPreventRedirect(true);
     if (!$request) {
         $url = (string) url($pageRevision->getPage()->getUrl());
         $request = new Curry_Request('GET', $url);
     }
     // Generate page
     $pageGenerator = $app->createPageGenerator($pageRevision, $request);
     $content = $pageGenerator->render($variables);
     // Create email
     $mail = new Curry_Mail();
     $mail->setBodyHtml($content);
     $mail->setBodyText(strip_tags($content));
     // restore redirect status
     Curry_URL::setPreventRedirect($oldVal);
     return $mail;
 }