Beispiel #1
0
 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;
 }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
 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));
 }