Esempio n. 1
0
 function postContent()
 {
     $this->adminGatekeeper();
     // Flag that a site export has been requested
     \Idno\Core\Idno::site()->config()->export_last_requested = time();
     \Idno\Core\Idno::site()->config()->export_in_progress = 1;
     \Idno\Core\Idno::site()->config()->save();
     $this->forward(\Idno\Core\Idno::site()->config()->getDisplayURL() . 'admin/export/', false);
     ignore_user_abort(true);
     // This is dangerous, but we need export to continue
     session_write_close();
     header('Connection: close');
     header('Content-length: ' . (string) ob_get_length());
     @ob_end_flush();
     // Return output to the browser
     @ob_end_clean();
     @flush();
     sleep(10);
     // Pause
     set_time_limit(0);
     // Eliminate time limit - this could take a while
     // Remove the previous export file
     if (!empty(\Idno\Core\Idno::site()->config()->export_file_id)) {
         if ($file = File::getByID(\Idno\Core\Idno::site()->config()->export_file_id)) {
             $file->remove();
             \Idno\Core\Idno::site()->config()->export_file_id = false;
             \Idno\Core\Idno::site()->config()->export_filename = false;
             \Idno\Core\Idno::site()->config()->save();
         }
     }
     if ($path = Migration::createCompressedArchive()) {
         $filename = \Idno\Core\Idno::site()->config()->host . '.zip';
         /*                    header('Content-disposition: attachment;filename=' . $filename);
                               if ($fp = fopen($path, 'r')) {
                                   while ($content = fread($fp, 4096)) {
                                       echo $content;
                                   }
                               }
                               fclose($fp);*/
         if ($file = File::createFromFile($path, $filename)) {
             @unlink($path);
             \Idno\Core\Idno::site()->config()->export_filename = $filename;
             \Idno\Core\Idno::site()->config()->export_file_id = $file;
             \Idno\Core\Idno::site()->config()->export_in_progress = 0;
             \Idno\Core\Idno::site()->config()->save();
             $mail = new Email();
             $mail->setHTMLBodyFromTemplate('admin/export');
             $mail->setTextBodyFromTemplate('admin/export');
             $mail->addTo(\Idno\Core\Idno::site()->session()->currentUser()->email);
             $mail->setSubject("Your data export is ready");
             $mail->send();
         }
         exit;
     }
 }
Esempio n. 2
0
 /**
  * Register user-related events
  */
 static function registerEvents()
 {
     // Hook to add user data to webfinger
     \Idno\Core\Idno::site()->addEventHook('webfinger', function (\Idno\Core\Event $event) {
         $eventdata = $event->data();
         $user = $eventdata['object'];
         $links = $event->response();
         if (empty($links)) {
             $links = array();
         }
         if ($user instanceof User) {
             $links = array(array('rel' => 'http://webfinger.net/rel/avatar', 'href' => $user->getIcon()), array('rel' => 'http://webfinger.net/rel/profile-page', 'href' => $user->getURL()));
         }
         $event->setResponse($links);
     });
     // Refresh session user whenever it is saved
     \Idno\Core\Idno::site()->addEventHook('saved', function (\Idno\Core\Event $event) {
         $eventdata = $event->data();
         $user = $eventdata['object'];
         if ($user instanceof User) {
             if ($currentUser = \Idno\Core\Idno::site()->session()->currentUser()) {
                 if ($user->getUUID() == $currentUser->getUUID()) {
                     \Idno\Core\Idno::site()->session()->refreshSessionUser($user);
                 }
             }
         }
     });
     // Email notifications
     \Idno\Core\Idno::site()->addEventHook('notify', function (\Idno\Core\Event $event) {
         $eventdata = $event->data();
         $user = $eventdata['user'];
         $eventdata = $event->data();
         if ($user instanceof User && ($context = $eventdata['context'])) {
             if (empty($user->notifications['email']) || $user->notifications['email'] == 'all' || $user->notifications['email'] == 'comment' && in_array($context, array('comment', 'reply'))) {
                 $eventdata = $event->data();
                 $vars = $eventdata['vars'];
                 if (empty($vars)) {
                     $vars = array();
                 }
                 if (empty($user->notifications['ignored_domains']) || empty($vars['permalink']) || !in_array(parse_url($vars['permalink'], PHP_URL_HOST), $user->notifications['ignored_domains'])) {
                     $eventdata = $event->data();
                     $vars['object'] = $eventdata['object'];
                     if (filter_var($user->email, FILTER_VALIDATE_EMAIL)) {
                         $email = new Email();
                         $email->setSubject($eventdata['message']);
                         $email->setHTMLBodyFromTemplate($eventdata['message_template'], $vars);
                         $email->setTextBodyFromTemplate($eventdata['message_template'], $vars);
                         $email->addTo($user->email);
                         $email->send();
                     }
                 }
             }
         }
     });
 }
Esempio n. 3
0
 /**
  * Saves this invitation and sends it to the appropriate email address
  * @param $email
  * @return bool|int
  */
 function sendToEmail($email)
 {
     if ($this->associateWithEmail($email)) {
         $this->save();
         $message = new Email();
         $message->addTo($email);
         $message->setSubject(\Idno\Core\site()->session()->currentUser()->getTitle() . " has invited you to join " . \Idno\Core\site()->config()->title . '!');
         $message->setHTMLBodyFromTemplate('account/invite', array('email' => $email, 'code' => $this->code, 'inviter' => \Idno\Core\site()->session()->currentUser()->getTitle()));
         $message->setTextBodyFromTemplate('account/invite', array('email' => $email, 'code' => $this->code, 'inviter' => \Idno\Core\site()->session()->currentUser()->getTitle()));
         return $message->send();
     }
     return false;
 }
Esempio n. 4
0
 function postContent()
 {
     $this->reverseGatekeeper();
     $email_address = $this->getInput('email');
     if ($user = User::getByEmail($email_address)) {
         if ($auth_code = $user->addPasswordRecoveryCode()) {
             $user->save();
             // Save the recovery code to the user
             $t = clone \Idno\Core\site()->template();
             $t->setTemplateType('email');
             $email = new Email();
             $email->setSubject("Password reset");
             $email->addTo($user->email);
             $email->setHTMLBody($t->__(array('email' => $email_address, 'code' => $auth_code))->draw('account/password'));
             $email->setTextBodyFromTemplate('account/password', array('email' => $email_address, 'code' => $auth_code));
             $email->send();
             $this->forward(\Idno\Core\site()->config()->getURL() . 'account/password/?sent=true');
         }
     }
     \Idno\Core\site()->session()->addErrorMessage("Oh no! We couldn't find an account associated with that email address.");
     $this->forward(\Idno\Core\site()->config()->getURL() . 'account/password');
 }