/** * Authenticate with username and password and create user object * * @param string username * @param string password * * @return Users object on success, null otherwise */ public function login($name, $pass) { // if another event handler already logged the user in, do nothing if (!empty($_SESSION['pe_u']->id)) { return; } // login handler specific part $rec = DS::fetch("id,pass", static::$_table, "name=? AND active!='0'", "", "", [$name]); // authentication if (empty($rec['pass']) || !password_verify($pass, $rec['pass'])) { return; } // success, save user object in session $_SESSION['pe_u'] = new self($rec['id']); // housekeeping DS::exec("UPDATE " . static::$_table . " SET logind=CURRENT_TIMESTAMP WHERE id=?", [$rec['id']]); return $_SESSION['pe_u']; }
/** * Cron job to read mails from queue and send them out */ public function cronMinute($item) { //! get real mailer backend ($core->mailer points to db queue backend) // @codeCoverageIgnoreStart if (empty(Core::$core->realmailer)) { Core::log('C', L('Real mailer backend not configured!')); } // @codeCoverageIgnoreEnd //! get items from database $lastId = 0; while ($row = DS::fetch('*', 'email_queue', 'id>?', '', 'id ASC', [$lastId])) { $email = new self($row['data']); $lastId = $row['id']; try { if (!$email->send(Core::$core->realmailer)) { // @codeCoverageIgnoreStart throw new \Exception('send() returned false'); } DS::exec('DELETE FROM email_queue WHERE id=?;', [$row['id']]); } catch (\Exception $e) { Core::log('E', sprintf(L('Unable to send #%s from queue'), $row['id']) . ': ' . $e->getMessage()); } // @codeCoverageIgnoreEnd sleep(1); } }
public static function get($n) { $t = ''; $m = []; $V = 'views'; $e = '.tpl'; $C = 't_' . sha1(Core::$core->base . '_' . $n); if ($p = Cache::get($C) && !empty($p) && is_array($p) && !empty($p['d'])) { $t = $p['d']; } if (empty($t)) { if (!empty(DS::db())) { try { foreach ([Core::$core->app . '/' . $n, $n] as $v) { $p = DS::fetch('*', $V, 'id=?', '', '', [$v]); if (!empty($p['data'])) { foreach (['css', 'jslib'] as $c) { $t = json_decode($p[$c], true); if (is_array($t)) { foreach ($t as $v) { self::$hdr[$c][basename($v)] = ($c == 'jslib' ? '99' : '') . $v; } } } $t = $p['data']; break; } } } catch (\Exception $e) { } } if (!$t) { foreach (["app/{$V}/{$n}{$e}", self::$p ? self::$p . "/{$V}/{$n}{$e}" : '', 'vendor/phppe/' . Core::$core->app . "/{$V}/{$n}{$e}", "vendor/phppe/Core/{$V}/{$n}{$e}"] as $F) { if ($F && file_exists($F)) { $t = file_get_contents($F); break; } } } $t = preg_replace("/<!-.*?->[\r\n]*/ms", '', preg_replace("/<\\?.*?\\?\\>[\r\n]*/ms", '', $t)); if (!empty($t)) { Cache::set($C, ['d' => $t]); } } return $t; }
/** * Save page meta information * * @param parameters * @param boolean new page */ static function savePageInfo($params, $new = false) { if (empty(Core::$user->id) || !Core::$user->has("siteadm|webadm")) { throw new \Exception(L('No user id')); } $rename = false; //! url checks if ($new) { if (!empty(DS::fetch("id", static::$_table, "id=? AND lang=?", "", "", [$params['id'], $params['lang']]))) { Core::error(L("A page already exists with this url!"), "page.id"); return false; } } else { //! if url changed if (!$new && !empty($params['pageid']) && $params['pageid'] != $params['id']) { $rename = true; DS::exec("UPDATE " . static::$_table . " SET id=? WHERE id=?", [$params['id'], $params['pageid']]); Core::log('A', sprintf("Page %s renamed to %s by %s", $params['pageid'], $params['id'], Core::$user->name), "cmsaudit"); } } //! create page object $page = new self($params['id']); $needsave = false; foreach ($params as $k => $v) { if (property_exists($page, $k) && $page->{$k} != $v) { Core::log('A', sprintf("Set page %s for %s by %s", $k, $params['id'], Core::$user->name) . (Core::$core->runlevel > 2 ? " '" . addslashes(strtr($page->{$k}, ["\n" => ""])) . "' -> '" . addslashes(strtr($v, ["\n" => ""])) . "'" : ""), "cmsaudit"); $page->{$k} = $v; $needsave = true; } } //! save it if ($needsave && !$page->save($new)) { Core::error(L("Unable to save page!")); return false; } elseif ($new || $rename) { //! on successful new add and renames, redirect user to the new page die("<html><script>window.parent.document.location.href='" . url($params['id']) . "';</script></html>"); } return true; }