protected function pushMail($mailer, &$headers, &$options) { if (isset($options['testMode'])) { $this->testMode = $options['testMode']; } else { if ($this->testMode) { $options['testMode'] = 1; } } $sent = -(int) (bool) (!empty($options['testMode'])); $archive = (int) (!(empty($options['archive']) && empty($options['testMode']))); $time = isset($options['time']) ? $options['time'] : 0; if ($time < $_SERVER['REQUEST_TIME'] - 366 * 86400) { $time += $_SERVER['REQUEST_TIME']; } if (!empty($options['attachments']) && is_array($options['attachments'])) { $tmpToken = false; foreach ($options['attachments'] as &$file) { if (is_uploaded_file($file) || PATCHWORK_ZCACHE === substr($file, 0, strlen(PATCHWORK_ZCACHE))) { $tmpToken || ($tmpToken = p::strongId(8)); $base = PATCHWORK_ZCACHE . p::strongId(8) . '~' . $tmpToken; copy($file, $base); $file = $base; } } unset($file, $options['attachments.tmpToken']); $tmpToken && ($options['attachments.tmpToken'] = $tmpToken); } $data = array('mailer' => $mailer, 'headers' => &$headers, 'options' => &$options, 'cookie' => &$_COOKIE, 'session' => class_exists('SESSION', false) ? s::getAll() : array()); $db = $this->getPdoConnection(); $sql = "INSERT INTO queue (base, data, send_time, archive, sent_time)\n VALUES (?,?,?,?,?)"; $db->prepare($sql)->execute(array(p::__BASE__(), serialize($data), $time, $archive, $sent)); $sql = $db->lastInsertId(); $this->registerQueue(); return $sql; }
static function __init() { self::$savePath = $CONFIG['session.save_path']; self::$cookiePath = $CONFIG['session.cookie_path']; self::$cookieDomain = $CONFIG['session.cookie_domain']; $CONFIG['session.auth_vars'] && (self::$authVars = array_merge(self::$authVars, $CONFIG['session.auth_vars'])); $CONFIG['session.group_vars'] && (self::$groupVars = array_merge(self::$groupVars, $CONFIG['session.group_vars'])); self::$authVars = array_flip(self::$authVars); self::$groupVars = array_flip(self::$groupVars); if (self::$maxIdleTime < 1 && self::$maxLifeTime < 1) { user_error('At least one of the SESSION::$max*Time variables must be strictly positive.'); } if (mt_rand(1, self::$gcProbabilityDenominator) <= self::$gcProbabilityNumerator) { $adapter = new self('0lastGC'); $i = $adapter->read(); $j = max(self::$maxIdleTime, self::$maxLifeTime); if ($j && $_SERVER['REQUEST_TIME'] - $i > $j) { $adapter->write($_SERVER['REQUEST_TIME']); register_shutdown_function(array(__CLASS__, 'gc'), $j); } unset($adapter); } if (isset($_COOKIE['SID'])) { self::setSID($_COOKIE['SID']); self::$adapter = new self(self::$SID); $i = self::$adapter->read(); } else { $i = false; } if ($i) { $i = unserialize($i); self::$lastseen = $i[0]; self::$birthtime = $i[1]; if (self::$maxIdleTime && $_SERVER['REQUEST_TIME'] - self::$lastseen > self::$maxIdleTime) { // Session has idled self::onIdle(); self::$isIdled = true; } else { if (self::$maxLifeTime && $_SERVER['REQUEST_TIME'] - self::$birthtime > self::$maxLifeTime) { // Session has expired self::onExpire(); } else { self::$DATA =& $i[2]; } } if (isset($_SERVER['HTTPS']) && (!isset($_COOKIE['SSL']) || $i[3] != $_COOKIE['SSL'])) { self::regenerateId(true); } else { self::$sslid = $i[3]; if ('-' == self::$sslid[0] && isset($_SERVER['HTTPS'])) { self::$sslid = p::strongId(); setcookie('SSL', self::$sslid, 0, self::$cookiePath, self::$cookieDomain, true, true); unset($_SERVER['HTTP_IF_NONE_MATCH'], $_SERVER['HTTP_IF_MODIFIED_SINCE']); } } } else { self::regenerateId(true); } }
protected function getToken() { $token = patchworkPath($this->queueFolder) . $this->queueName . '.token'; //XXX user right problem? file_exists($token) || file_put_contents($token, p::strongId()); return trim(file_get_contents($token)); }