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; } }
/** * 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(); } } } } }); }
/** * 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; }
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'); }