Exemplo n.º 1
0
 /**
  * add identifier
  *
  * @author Matthias Pfefferle
  * @param User $pUser
  * @param AuthToken $pAuthToken
  * @return OnlineIdentity
  */
 public function addIdentifier($pUser, $pOAuthToken)
 {
     $lAccessToken = $this->getAccessToken($pOAuthToken);
     // get params
     $lParams = $lAccessToken->params;
     $lParamsArray = array();
     // extract params
     parse_str($lParams, $lParamsArray);
     $lXml = OAuthClient::get($this->getConsumer(), $lParamsArray['oauth_token'], $lParamsArray['oauth_token_secret'], "http://api.linkedin.com/v1/people/~:(id,site-standard-profile-request,summary,picture-url,first-name,last-name,date-of-birth,location)");
     $lProfileArray = XmlUtils::XML2Array($lXml);
     //var_dump($lProfileArray);die();
     // identifier
     $lLinkedInId = $lProfileArray['id'];
     $lProfileUri = "http://www.linkedin.com/profile/view?id=" . $lLinkedInId;
     // ask for online identity
     $lOnlineIdentity = OnlineIdentityTable::retrieveByAuthIdentifier($lProfileUri);
     // check if user already exists
     if ($lOnlineIdentity) {
         if ($lOnlineIdentity->getUserId() && $pUser->getId() == $lOnlineIdentity->getUserId()) {
             if (!$lOnlineIdentity->getActive()) {
                 $lOnlineIdentity->setActive(true);
             } else {
                 throw new sfException("online identity already added", 1);
             }
         } elseif ($lOnlineIdentity->getUserId() && $pUser->getId() != $lOnlineIdentity->getUserId()) {
             throw new sfException("online identity already added by someone else", 2);
         }
     } else {
         // new online identity if no exist
         $lOnlineIdentity = OnlineIdentityTable::addOnlineIdentity($lProfileUri, $lLinkedInId, $this->aCommunityId, $lProfileUri);
     }
     $this->completeOnlineIdentity($lOnlineIdentity, $lProfileArray, $pUser);
     AuthTokenTable::saveToken($pUser->getId(), $lOnlineIdentity->getId(), $lParamsArray['oauth_token'], $lParamsArray['oauth_token_secret'], true);
     return $lOnlineIdentity;
 }
Exemplo n.º 2
0
 /**
  * Retorna um DOMElement baseado na estrutura do Objeto
  *
  * @param Object $obj
  * @param DOMDocument $dom
  * @return DOMElement
  */
 private static function object2Xml($obj, &$dom, $attrDefault = null)
 {
     $vars = get_object_vars($obj);
     if (get_class($obj) != "stdClass") {
         $elem = $dom->createElement(get_class($obj));
     } else {
         $elem = $dom->createElement("objeto");
     }
     $i = 0;
     foreach ($vars as $chave => $valor) {
         if (is_object($valor)) {
             $elem->appendChild(XmlUtils::object2Xml($valor, $dom, $attrDefault));
         } elseif (is_array($valor)) {
             XmlUtils::array2Xml($valor, $elem, $dom, $attrDefault);
         } else {
             if ($attrDefault) {
                 $elem->setAttribute($chave, $valor);
             } else {
                 $elem2 = $dom->createElement($chave);
                 $elemText = $dom->createTextNode($valor);
                 $elem2->appendChild($elemText);
                 $elem->appendChild($elem2);
             }
         }
     }
     return $elem;
 }
 /**
  * Converts an object to an XML string. The root element name is passed in as
  * a parameter, and each field of the object becomes a child element. Array
  * values are represented by multiples instances of that element. Methods on
  * the object are ignored.
  *
  * @param mixed $object the object to serialize
  * @param string $rootElementName the name of the root element
  * @param bool $useXsiType whether the xsi:type will be added into XML tags
  *     when available
  * @return string the XML serialized string of the object
  */
 public function ConvertObjectToXml($object, $rootElementName, $useXsiType)
 {
     $document = new DOMDocument('1.0', 'UTF-8');
     $document->appendChild(self::ConvertObjectToElement($object, $rootElementName, $document, $useXsiType));
     $xml = XmlUtils::GetXmlFromDom($document);
     if ($useXsiType) {
         // Insert links to definitions of the ns1 and xsi namespaces.
         $xml = preg_replace('/<ns1:mutate/', '<ns1:mutate ' . self::ADWORDS_NS_ATTR_PREFIX . $object::WSDL_NAMESPACE . '"', $xml);
         $xml = preg_replace('/<operations/', '<operations ' . self::XSI_ATTRIBUTE, $xml);
     }
     return $xml;
 }
Exemplo n.º 4
0
 /**
  * import twitter contacts
  *
  * @author Matthias Pfefferle
  * @author Karina Mies
  */
 public static function importContacts($pOnlineIdentity)
 {
     $lToken = AuthTokenTable::getByUserAndOnlineIdentity($pOnlineIdentity->getUserId(), $pOnlineIdentity->getId());
     // get api informations
     if (!$lToken) {
         $pOnlineIdentity->deactivate();
         throw new Exception('damn theres no token!', '666');
     }
     $lConsumer = new OAuthConsumer(sfConfig::get("app_linkedin_oauth_token"), sfConfig::get("app_linkedin_oauth_secret"));
     $lXml = OAuthClient::get($lConsumer, $lToken->getTokenKey(), $lToken->getTokenSecret(), "http://api.linkedin.com/v1/people/~/connections:(id)");
     $lFriendObject = simplexml_load_string($lXml);
     $lXml = OAuthClient::get($lConsumer, $lToken->getTokenKey(), $lToken->getTokenSecret(), "http://api.linkedin.com/v1/people/~:(id,site-standard-profile-request,summary,picture-url,first-name,last-name,date-of-birth,location)");
     $lProfileArray = XmlUtils::XML2Array($lXml);
     @self::importFriends($pOnlineIdentity, $lFriendObject);
     @self::updateIdentity($pOnlineIdentity, $lProfileArray);
 }
Exemplo n.º 5
0
 /**
  * Fixes the XML based on the parameters specified in the constructor.
  * @param string $request the raw request produced by the SOAP client
  * @param array $arguments the arguments passed to the SOAP method
  * @param array $headers the headers used in the request
  * @return string the prepared request ready to be sent to the server
  */
 public function FixXml($request, array $arguments, array $headers)
 {
     $requestDom = XmlUtils::GetDomFromXml($request);
     $xpath = new DOMXPath($requestDom);
     // Fix headers.
     $headersDomNodes = $xpath->query("//*[local-name()='Envelope']/*[local-name()='Header']/*");
     $this->FixXmlNodes($headersDomNodes, $headers, $xpath);
     // Fix body.
     $argumentsDomNodes = $xpath->query("//*[local-name()='Envelope']/*[local-name()='Body']/*");
     $this->FixXmlNodes($argumentsDomNodes, $arguments, $xpath);
     // Remove empty headers.
     if ($this->removeEmptyElements) {
         $this->RemoveEmptyHeaderElements($xpath);
     }
     return $requestDom->saveXML();
 }
Exemplo n.º 6
0
 /**
  * Generates the parameters to use for the download request.
  * @param mixed $reportDefinition the report definition, as an ID or object
  * @return array the parameters
  */
 private static function GetParams($reportDefinition)
 {
     $params = array();
     if (is_numeric($reportDefinition)) {
         $params['__rd'] = $reportDefinition;
     } else {
         if (is_object($reportDefinition) || is_array($reportDefinition)) {
             $document = XmlUtils::ConvertObjectToDocument($reportDefinition, 'reportDefinition');
             $document->formatOutput = TRUE;
             $params['__rdxml'] = XmlUtils::GetXmlFromDom($document);
         } else {
             throw new ReportDownloadException('Invalid report definition type: ' . $reportDefinition);
         }
     }
     return $params;
 }
Exemplo n.º 7
0
 /**
  * A typemap conversion function for parsing long values in SOAP responses.
  * @param string $xml the XML snippet containing the long value.
  * @return mixed the inner long value as an integer, float, or string
  */
 public static function TypemapLongFromXml($xml)
 {
     $document = XmlUtils::GetDomFromXml($xml);
     $tag = $document->documentElement->localName;
     $value = $document->documentElement->nodeValue;
     $isIdField = preg_match('/^id$|Id$|ID$/', $tag);
     if (!$isIdField) {
         if (strcmp(strval(intval($value)), $value) === 0) {
             return intval($value);
         } elseif (strcmp(sprintf('%.0f', floatval($value)), $value) === 0) {
             return floatval($value);
         }
     }
     return $value;
 }
 /**
  * Get an Asset as an XML Dom.
  * @param string $assetName the XML asset name
  * @param null|string $ext the extension of the asset, if applicable
  * @return string the contents of the asset
  * @throws InvalidArgumentException if theres an issue finding the file
  * @throws DOMException if the DOM could not be loaded
  */
 public function getAssetAsDom($assetName, $ext = null)
 {
     return XmlUtils::GetDomFromXml($this->getAsset($assetName, $ext));
 }
 /**
  * Test converting an object to a DOM document.
  * @param string $expected the expected XML
  * @param Object $object the object to convert
  * @covers XmlUtils::ConvertObjectToDocument
  * @covers XmlUtils::ConvertObjectToElement
  * @covers XmlUtils::ConvertObjectToNodeValue
  * @dataProvider ObjectToXmlProvider
  */
 public function testConvertObjectToDocument($object, $expected)
 {
     $document = XmlUtils::ConvertObjectToDocument($object, 'root');
     $result = XmlUtils::GetXmlFromDom($document);
     $this->assertEquals($expected, $result);
 }
 /**
  * @covers XmlSerializer::ConvertObjectToXml
  * @covers XmlSerializer::ConvertObjectToElement
  * @covers XmlSerializer::ConvertObjectToNodeValue
  */
 public function testConvertObjectToXmlReportDefinition()
 {
     $serializer = new XmlSerializer();
     $result = $serializer->ConvertObjectToXml(XmlTestHelper::$REPORT_DEFINITION_OBJECT, 'reportDefinition', false);
     $this->assertEquals(XmlTestHelper::$REPORT_DEFINITION_XML, XmlUtils::PrettyPrint($result));
 }
 /**
  * @covers XmlSerializer::ConvertObjectToXml
  * @covers XmlSerializer::ConvertObjectToElement
  * @covers XmlSerializer::ConvertObjectToNodeValue
  */
 public function testConvertObjectToXmlReportDownloadErrorFormatted()
 {
     $serializer = new XmlSerializer();
     $result = $serializer->ConvertObjectToXml(XmlTestHelper::$REPORT_DOWNLOAD_ERROR_OBJECT, 'reportDownloadError', false);
     $this->assertEquals(XmlTestHelper::$REPORT_DOWNLOAD_ERROR_FORMATTED_XML, XmlUtils::PrettyPrint($result));
 }
 /**
  * Converts an XML representation to objects of proper classes using many
  * types of information, e.g., the xsi:type attribute.
  *
  * @param string $xml the XML representation to be deserialized
  * @return mixed the converted object
  */
 public function ConvertXmlToObject($xml)
 {
     return self::ConvertElementToObject(XmlUtils::GetDomFromXml($xml)->documentElement);
 }
Exemplo n.º 13
0
 /**
  * @covers XmlUtils::PrettyPrint
  * @dataProvider PrettyXmlProvider
  */
 public function testPrettyPrint($xml, $expected)
 {
     $result = XmlUtils::PrettyPrint($xml);
     $this->assertEquals($expected, $result);
 }