예제 #1
0
파일: Users.php 프로젝트: bztsrc/phppe3
 /**
  * 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'];
 }
예제 #2
0
파일: Email.php 프로젝트: bztsrc/phppe3
 /**
  * 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);
     }
 }
예제 #3
0
파일: index.php 프로젝트: bztsrc/phppe3
 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;
 }
예제 #4
0
파일: pages.php 프로젝트: bztsrc/phppe3
 /**
  * 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;
 }