original_string: protected function parseCookieHeader ($line, $defaultDomain)
      {
          if (!$defaultDomain) {
              throw new CAS_InvalidArgumentException(
                  '$defaultDomain was not provided.'
              );
          }
  
          // Set our default values
          $cookie = array(
              'domain' => $defaultDomain,
              'path' => '/',
              'secure' => false,
          );
  
          $line = preg_replace('/^Set-Cookie2?: /i', '', trim($line));
  
          // trim any trailing semicolons.
          $line = trim($line, ';');
  
          phpCAS::trace("Cookie Line: $line");
  
          // This implementation makes the assumption that semicolons will not
          // be present in quoted attribute values. While attribute values that
          // contain semicolons are allowed by RFC2965, they are hopefully rare
          // enough to ignore for our purposes. Most browsers make the same
          // assumption.
          $attributeStrings = explode(';', $line);
  
          foreach ( $attributeStrings as $attributeString ) {
              // split on the first equals sign and use the rest as value
              $attributeParts = explode('=', $attributeString, 2);
  
              $attributeName = trim($attributeParts[0]);
              $attributeNameLC = strtolower($attributeName);
  
              if (isset($attributeParts[1])) {
                  $attributeValue = trim($attributeParts[1]);
                  // Values may be quoted strings.
                  if (strpos($attributeValue, '"') === 0) {
                      $attributeValue = trim($attributeValue, '"');
                      // unescape any escaped quotes:
                      $attributeValue = str_replace('\"', '"', $attributeValue);
                  }
              } else {
                  $attributeValue = null;
              }
  
              switch ($attributeNameLC) {
              case 'expires':
                  $cookie['expires'] = strtotime($attributeValue);
                  break;
              case 'max-age':
                  $cookie['max-age'] = (int)$attributeValue;
                  // Set an expiry time based on the max-age
                  if ($cookie['max-age']) {
                      $cookie['expires'] = time() + $cookie['max-age'];
                  } else {
                      // If max-age is zero, then the cookie should be removed
                      // imediately so set an expiry before now.
                      $cookie['expires'] = time() - 1;
                  }
                  break;
              case 'secure':
                  $cookie['secure'] = true;
                  break;
              case 'domain':
              case 'path':
              case 'port':
              case 'version':
              case 'comment':
              case 'commenturl':
              case 'discard':
              case 'httponly':
                  $cookie[$attributeNameLC] = $attributeValue;
                  break;
              default:
                  $cookie['name'] = $attributeName;
                  $cookie['value'] = $attributeValue;
              }
          }
  
          return $cookie;
      }
code: protected function parseCookieHeader ($line, $defaultDomain)
      {
          if (!$defaultDomain) {
              throw new CAS_InvalidArgumentException(
                  '$defaultDomain was not provided.'
              );
          }
  
          // Set our default values
          $cookie = array(
              'domain' => $defaultDomain,
              'path' => '/',
              'secure' => false,
          );
  
          $line = preg_replace('/^Set-Cookie2?: /i', '', trim($line));
  
          // trim any trailing semicolons.
          $line = trim($line, ';');
  
          phpCAS::trace("Cookie Line: $line");
  
          // This implementation makes the assumption that semicolons will not
          // be present in quoted attribute values. While attribute values that
          // contain semicolons are allowed by RFC2965, they are hopefully rare
          // enough to ignore for our purposes. Most browsers make the same
          // assumption.
          $attributeStrings = explode(';', $line);
  
          foreach ( $attributeStrings as $attributeString ) {
              // split on the first equals sign and use the rest as value
              $attributeParts = explode('=', $attributeString, 2);
  
              $attributeName = trim($attributeParts[0]);
              $attributeNameLC = strtolower($attributeName);
  
              if (isset($attributeParts[1])) {
                  $attributeValue = trim($attributeParts[1]);
                  // Values may be quoted strings.
                  if (strpos($attributeValue, '"') === 0) {
                      $attributeValue = trim($attributeValue, '"');
                      // unescape any escaped quotes:
                      $attributeValue = str_replace('\"', '"', $attributeValue);
                  }
              } else {
                  $attributeValue = null;
              }
  
              switch ($attributeNameLC) {
              case 'expires':
                  $cookie['expires'] = strtotime($attributeValue);
                  break;
              case 'max-age':
                  $cookie['max-age'] = (int)$attributeValue;
                  // Set an expiry time based on the max-age
                  if ($cookie['max-age']) {
                      $cookie['expires'] = time() + $cookie['max-age'];
                  } else {
                      // If max-age is zero, then the cookie should be removed
                      // imediately so set an expiry before now.
                      $cookie['expires'] = time() - 1;
                  }
                  break;
              case 'secure':
                  $cookie['secure'] = true;
                  break;
              case 'domain':
              case 'path':
              case 'port':
              case 'version':
              case 'comment':
              case 'commenturl':
              case 'discard':
              case 'httponly':
                  $cookie[$attributeNameLC] = $attributeValue;
                  break;
              default:
                  $cookie['name'] = $attributeName;
                  $cookie['value'] = $attributeValue;
              }
          }
  
          return $cookie;
      }
code_tokens: protected function parseCookieHeader ( $ line , $ defaultDomain ) { if ( ! $ defaultDomain ) { throw new CAS_InvalidArgumentException ( '$defaultDomain was not provided.' ) ; } // Set our default values $ cookie = array ( 'domain' => $ defaultDomain , 'path' => '/' , 'secure' => false , ) ; $ line = preg_replace ( '/^Set-Cookie2?: /i' , '' , trim ( $ line ) ) ; // trim any trailing semicolons. $ line = trim ( $ line , ';' ) ; phpCAS :: trace ( "Cookie Line: $line" ) ; // This implementation makes the assumption that semicolons will not // be present in quoted attribute values. While attribute values that // contain semicolons are allowed by RFC2965, they are hopefully rare // enough to ignore for our purposes. Most browsers make the same // assumption. $ attributeStrings = explode ( ';' , $ line ) ; foreach ( $ attributeStrings as $ attributeString ) { // split on the first equals sign and use the rest as value $ attributeParts = explode ( '=' , $ attributeString , 2 ) ; $ attributeName = trim ( $ attributeParts [ 0 ] ) ; $ attributeNameLC = strtolower ( $ attributeName ) ; if ( isset ( $ attributeParts [ 1 ] ) ) { $ attributeValue = trim ( $ attributeParts [ 1 ] ) ; // Values may be quoted strings. if ( strpos ( $ attributeValue , '"' ) === 0 ) { $ attributeValue = trim ( $ attributeValue , '"' ) ; // unescape any escaped quotes: $ attributeValue = str_replace ( '\"' , '"' , $ attributeValue ) ; } } else { $ attributeValue = null ; } switch ( $ attributeNameLC ) { case 'expires' : $ cookie [ 'expires' ] = strtotime ( $ attributeValue ) ; break ; case 'max-age' : $ cookie [ 'max-age' ] = ( int ) $ attributeValue ; // Set an expiry time based on the max-age if ( $ cookie [ 'max-age' ] ) { $ cookie [ 'expires' ] = time ( ) + $ cookie [ 'max-age' ] ; } else { // If max-age is zero, then the cookie should be removed // imediately so set an expiry before now. $ cookie [ 'expires' ] = time ( ) - 1 ; } break ; case 'secure' : $ cookie [ 'secure' ] = true ; break ; case 'domain' : case 'path' : case 'port' : case 'version' : case 'comment' : case 'commenturl' : case 'discard' : case 'httponly' : $ cookie [ $ attributeNameLC ] = $ attributeValue ; break ; default : $ cookie [ 'name' ] = $ attributeName ; $ cookie [ 'value' ] = $ attributeValue ; } } return $ cookie ; }
docstring: Parse a single cookie header line.
  
  Based on RFC2965 http://www.ietf.org/rfc/rfc2965.txt
  
  @param string $line          The header line.
  @param string $defaultDomain The domain to use if none is specified in
  the cookie.
  
  @return array
docstring_tokens: Parse a single cookie header line .