From 4ae5e52fda96489f74bc83b7d8973119e02558a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Tue, 30 Jun 2015 11:14:59 +0200 Subject: [PATCH] Reuse Sabre\VObject\UUIDUtil to generate UUIDs --- lib/utils/properties.php | 35 +++++++++++--------- lib/utils/uuid.php | 71 ---------------------------------------- 2 files changed, 20 insertions(+), 86 deletions(-) delete mode 100644 lib/utils/uuid.php diff --git a/lib/utils/properties.php b/lib/utils/properties.php index 005e336d..e40c1ca7 100644 --- a/lib/utils/properties.php +++ b/lib/utils/properties.php @@ -23,6 +23,8 @@ namespace OCA\Contacts\Utils; use OCA\Contacts\App; +use OCA\Contacts\VObject\VCard; +use Sabre\VObject\UUIDUtil; Properties::$l10n = \OCP\Util::getL10N('contacts'); @@ -39,7 +41,7 @@ Class Properties { /** * @brief language object for calendar app * - * @var OC_L10N + * @var \OCP\IL10N */ public static $l10n; @@ -207,9 +209,12 @@ Class Properties { ); } - public static function generateUID($app = 'contacts') { - $uuid = new UUID(); - return $uuid->get() . '@' . \OCP\Util::getServerHostName(); + /** + * @return string + */ + public static function generateUID() { + $uuid = UUIDUtil::getUUID(); + return $uuid . '@' . \OCP\Util::getServerHostName(); } /** @@ -246,13 +251,13 @@ Class Properties { * If it is a valid object the old properties will first be purged * and the current properties indexed. * - * @param string $contactid - * @param \OCA\VObject\VCard|null $vcard + * @param string $contactId + * @param VCard|null $vCard */ - public static function updateIndex($contactid, $vcard = null) { - self::purgeIndexes(array($contactid)); + public static function updateIndex($contactId, $vCard = null) { + self::purgeIndexes(array($contactId)); - if(is_null($vcard)) { + if(is_null($vCard)) { return; } @@ -260,7 +265,7 @@ Class Properties { self::$updateindexstmt = \OCP\DB::prepare( 'INSERT INTO `' . self::$indexTableName . '` ' . '(`userid`, `contactid`,`name`,`value`,`preferred`) VALUES(?,?,?,?,?)' ); } - foreach($vcard->children as $property) { + foreach($vCard->children as $property) { if(!in_array($property->name, self::$indexProperties)) { continue; } @@ -275,7 +280,7 @@ Class Properties { $result = self::$updateindexstmt->execute( array( \OC::$server->getUserSession()->getUser()->getUId(), - $contactid, + $contactId, $property->name, substr($property->getValue(), 0, 254), $preferred, @@ -294,7 +299,7 @@ Class Properties { } public static function cacheThumbnail($backendName, $addressBookId, $contactId, - \OCP\Image $image = null, $vcard = null, $options = array() + \OCP\Image $image = null, $vCard = null, $options = array() ) { $cache = \OC::$server->getCache(); $key = self::THUMBNAIL_PREFIX . $backendName . '::' . $addressBookId . '::' . $contactId; @@ -320,12 +325,12 @@ Class Properties { } if (is_null($image)) { - if (is_null($vcard)) { + if (is_null($vCard)) { $app = new App(); - $vcard = $app->getContact($backendName, $addressBookId, $contactId); + $vCard = $app->getContact($backendName, $addressBookId, $contactId); } $image = new \OCP\Image(); - if (!isset($vcard->PHOTO) || !$image->loadFromBase64((string)$vcard->PHOTO)) { + if (!isset($vCard->PHOTO) || !$image->loadFromBase64((string)$vCard->PHOTO)) { return false; } } diff --git a/lib/utils/uuid.php b/lib/utils/uuid.php deleted file mode 100644 index 1c7473a0..00000000 --- a/lib/utils/uuid.php +++ /dev/null @@ -1,71 +0,0 @@ -urand = @fopen ( '/dev/urandom', 'rb' ); - } - - /** - * @brief Generates a Universally Unique IDentifier, version 4. - * - * This function generates a truly random UUID. The built in CakePHP String::uuid() function - * is not cryptographically secure. You should uses this function instead. - * From http://php.net/manual/en/function.uniqid.php comments - * - * @see http://tools.ietf.org/html/rfc4122#section-4.4 - * @see http://en.wikipedia.org/wiki/UUID - * @return string A UUID, made up of 32 hex digits and 4 hyphens. - */ - public function get() { - - $prBits = false; - if (is_a($this, 'uuid')) { - if (is_resource($this->urand)) { - $prBits .= @fread($this->urand, 16); - } - } - if (!$prBits) { - $fp = @fopen('/dev/urandom', 'rb'); - if ($fp !== false) { - $prBits .= @fread($fp, 16); - @fclose ( $fp ); - } else { - // If /dev/urandom isn't available (eg: in non-unix systems), use mt_rand(). - $prBits = ""; - for($cnt = 0; $cnt < 16; $cnt ++) { - $prBits .= chr(mt_rand(0, 255)); - } - } - } - $timeLow = bin2hex(substr($prBits, 0, 4)); - $timeMid = bin2hex(substr($prBits, 4, 2)); - $timeHiAndVersion = bin2hex(substr($prBits, 6, 2)); - $clockSeqHiAndReserved = bin2hex(substr($prBits, 8, 2)); - $node = bin2hex(substr($prBits, 10, 6)); - - /** - * Set the four most significant bits (bits 12 through 15) of the - * time_hi_and_version field to the 4-bit version number from - * Section 4.1.3. - * @see http://tools.ietf.org/html/rfc4122#section-4.1.3 - */ - $timeHiAndVersion = hexdec($timeHiAndVersion); - $timeHiAndVersion = $timeHiAndVersion >> 4; - $timeHiAndVersion = $timeHiAndVersion | 0x4000; - - /** - * Set the two most significant bits (bits 6 and 7) of the - * clock_seq_hi_and_reserved to zero and one, respectively. - */ - $clockSeqHiAndReserved = hexdec($clockSeqHiAndReserved); - $clockSeqHiAndReserved = $clockSeqHiAndReserved >> 2; - $clockSeqHiAndReserved = $clockSeqHiAndReserved | 0x8000; - - return sprintf('%08s-%04s-%04x-%04x-%012s', $timeLow, $timeMid, $timeHiAndVersion, $clockSeqHiAndReserved, $node); - } - -} \ No newline at end of file