From f45f5c3291b060bdd25df3777b5957a5e5e00317 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 9 Jan 2024 20:32:31 +0100 Subject: [PATCH] Fix #yogosha19828 --- build/makepack-dolibarr.pl | 6 + dev/dolibarr_changes.txt | 8 + htdocs/includes/sabre/sabre/dav/bin/build.php | 169 ------- .../sabre/sabre/dav/bin/googlecode_upload.py | 248 ----------- .../sabre/sabre/dav/bin/migrateto20.php | 414 ------------------ .../sabre/sabre/dav/bin/migrateto21.php | 166 ------- .../sabre/sabre/dav/bin/migrateto30.php | 161 ------- .../sabre/sabre/dav/bin/migrateto32.php | 258 ----------- .../sabre/sabre/dav/bin/naturalselection | 140 ------ htdocs/includes/sabre/sabre/dav/bin/sabredav | 2 - .../includes/sabre/sabre/dav/bin/sabredav.php | 51 --- htdocs/includes/sabre/sabre/event/bin/.empty | 0 htdocs/includes/sabre/sabre/http/bin/.empty | 0 .../sabre/sabre/vobject/bin/bench.php | 12 - .../vobject/bin/bench_freebusygenerator.php | 53 --- .../vobject/bin/bench_manipulatevcard.php | 64 --- .../sabre/vobject/bin/fetch_windows_zones.php | 48 -- .../sabre/sabre/vobject/bin/generate_vcards | 241 ---------- .../vobject/bin/generateicalendardata.php | 87 ---- .../sabre/vobject/bin/mergeduplicates.php | 160 ------- .../sabre/sabre/vobject/bin/rrulebench.php | 32 -- .../includes/sabre/sabre/vobject/bin/vobject | 27 -- htdocs/includes/sabre/sabre/xml/bin/.empty | 0 23 files changed, 14 insertions(+), 2333 deletions(-) delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/build.php delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/googlecode_upload.py delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/migrateto20.php delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/migrateto21.php delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/migrateto30.php delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/migrateto32.php delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/naturalselection delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/sabredav delete mode 100755 htdocs/includes/sabre/sabre/dav/bin/sabredav.php delete mode 100644 htdocs/includes/sabre/sabre/event/bin/.empty delete mode 100644 htdocs/includes/sabre/sabre/http/bin/.empty delete mode 100755 htdocs/includes/sabre/sabre/vobject/bin/bench.php delete mode 100644 htdocs/includes/sabre/sabre/vobject/bin/bench_freebusygenerator.php delete mode 100644 htdocs/includes/sabre/sabre/vobject/bin/bench_manipulatevcard.php delete mode 100755 htdocs/includes/sabre/sabre/vobject/bin/fetch_windows_zones.php delete mode 100755 htdocs/includes/sabre/sabre/vobject/bin/generate_vcards delete mode 100755 htdocs/includes/sabre/sabre/vobject/bin/generateicalendardata.php delete mode 100755 htdocs/includes/sabre/sabre/vobject/bin/mergeduplicates.php delete mode 100644 htdocs/includes/sabre/sabre/vobject/bin/rrulebench.php delete mode 100755 htdocs/includes/sabre/sabre/vobject/bin/vobject delete mode 100644 htdocs/includes/sabre/sabre/xml/bin/.empty diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 5862f3f29703e..3dda8035dc464 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -636,6 +636,12 @@ $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/vendor`; $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/webmozart`; $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/autoload.php`; + + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/bin`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/bin`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/bin`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/*/bin`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/*/*/bin`; } # Build package for each target diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt index a2a99bdfd5a8d..a87d5de3207b6 100644 --- a/dev/dolibarr_changes.txt +++ b/dev/dolibarr_changes.txt @@ -41,6 +41,14 @@ With protected $connector; +SABRE: +------ +rm -fr ./htdocs/includes/sabre/sabre/bin; +rm -fr ./htdocs/includes/sabre/sabre/*/bin; +rm -fr ./htdocs/includes/sabre/sabre/*/*/bin; +rm -fr ./htdocs/includes/sabre/sabre/*/*/*/bin; +rm -fr ./htdocs/includes/sabre/sabre/*/*/*/*/bin; + NUSOAP: ------- diff --git a/htdocs/includes/sabre/sabre/dav/bin/build.php b/htdocs/includes/sabre/sabre/dav/bin/build.php deleted file mode 100755 index 4dd25d9c95932..0000000000000 --- a/htdocs/includes/sabre/sabre/dav/bin/build.php +++ /dev/null @@ -1,169 +0,0 @@ -#!/usr/bin/env php - [ - 'init', 'test', 'clean', - ], - 'markrelease' => [ - 'init', 'test', 'clean', - ], - 'clean' => [], - 'test' => [ - 'composerupdate', - ], - 'init' => [], - 'composerupdate' => [], - ]; - -$default = 'buildzip'; - -$baseDir = __DIR__.'/../'; -chdir($baseDir); - -$currentTask = $default; -if ($argc > 1) { - $currentTask = $argv[1]; -} -$version = null; -if ($argc > 2) { - $version = $argv[2]; -} - -if (!isset($tasks[$currentTask])) { - echo 'Task not found: ', $currentTask, "\n"; - exit(1); -} - -// Creating the dependency graph -$newTaskList = []; -$oldTaskList = [$currentTask => true]; - -while (count($oldTaskList) > 0) { - foreach ($oldTaskList as $task => $foo) { - if (!isset($tasks[$task])) { - echo 'Dependency not found: '.$task, "\n"; - exit(1); - } - $dependencies = $tasks[$task]; - - $fullFilled = true; - foreach ($dependencies as $dependency) { - if (isset($newTaskList[$dependency])) { - // Already in the fulfilled task list. - continue; - } else { - $oldTaskList[$dependency] = true; - $fullFilled = false; - } - } - if ($fullFilled) { - unset($oldTaskList[$task]); - $newTaskList[$task] = 1; - } - } -} - -foreach (array_keys($newTaskList) as $task) { - echo 'task: '.$task, "\n"; - call_user_func($task); - echo "\n"; -} - -function init() -{ - global $version; - if (!$version) { - include __DIR__.'/../vendor/autoload.php'; - $version = Sabre\DAV\Version::VERSION; - } - - echo ' Building sabre/dav '.$version, "\n"; -} - -function clean() -{ - global $baseDir; - echo " Removing build files\n"; - $outputDir = $baseDir.'/build/SabreDAV'; - if (is_dir($outputDir)) { - system('rm -r '.$baseDir.'/build/SabreDAV'); - } -} - -function composerupdate() -{ - global $baseDir; - echo " Updating composer packages to latest version\n\n"; - system('cd '.$baseDir.'; composer update'); -} - -function test() -{ - global $baseDir; - - echo " Running all unittests.\n"; - echo " This may take a while.\n\n"; - system(__DIR__.'/phpunit --configuration '.$baseDir.'/tests/phpunit.xml.dist --stop-on-failure', $code); - if (0 != $code) { - echo "PHPUnit reported error code $code\n"; - exit(1); - } -} - -function buildzip() -{ - global $baseDir, $version; - echo " Generating composer.json\n"; - - $input = json_decode(file_get_contents(__DIR__.'/../composer.json'), true); - $newComposer = [ - 'require' => $input['require'], - 'config' => [ - 'bin-dir' => './bin', - ], - 'prefer-stable' => true, - 'minimum-stability' => 'alpha', - ]; - unset( - $newComposer['require']['sabre/vobject'], - $newComposer['require']['sabre/http'], - $newComposer['require']['sabre/uri'], - $newComposer['require']['sabre/event'] - ); - $newComposer['require']['sabre/dav'] = $version; - mkdir('build/SabreDAV'); - file_put_contents('build/SabreDAV/composer.json', json_encode($newComposer, JSON_PRETTY_PRINT)); - - echo " Downloading dependencies\n"; - system('cd build/SabreDAV; composer install -n', $code); - if (0 !== $code) { - echo "Composer reported error code $code\n"; - exit(1); - } - - echo " Removing pointless files\n"; - unlink('build/SabreDAV/composer.json'); - unlink('build/SabreDAV/composer.lock'); - - echo " Moving important files to the root of the project\n"; - - $fileNames = [ - 'CHANGELOG.md', - 'LICENSE', - 'README.md', - 'examples', - ]; - foreach ($fileNames as $fileName) { - echo " $fileName\n"; - rename('build/SabreDAV/vendor/sabre/dav/'.$fileName, 'build/SabreDAV/'.$fileName); - } - - // - - echo "\n"; - echo "Zipping the sabredav distribution\n\n"; - system('cd build; zip -qr sabredav-'.$version.'.zip SabreDAV'); - - echo 'Done.'; -} diff --git a/htdocs/includes/sabre/sabre/dav/bin/googlecode_upload.py b/htdocs/includes/sabre/sabre/dav/bin/googlecode_upload.py deleted file mode 100755 index caafd5dedac4b..0000000000000 --- a/htdocs/includes/sabre/sabre/dav/bin/googlecode_upload.py +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2006, 2007 Google Inc. All Rights Reserved. -# Author: danderson@google.com (David Anderson) -# -# Script for uploading files to a Google Code project. -# -# This is intended to be both a useful script for people who want to -# streamline project uploads and a reference implementation for -# uploading files to Google Code projects. -# -# To upload a file to Google Code, you need to provide a path to the -# file on your local machine, a small summary of what the file is, a -# project name, and a valid account that is a member or owner of that -# project. You can optionally provide a list of labels that apply to -# the file. The file will be uploaded under the same name that it has -# in your local filesystem (that is, the "basename" or last path -# component). Run the script with '--help' to get the exact syntax -# and available options. -# -# Note that the upload script requests that you enter your -# googlecode.com password. This is NOT your Gmail account password! -# This is the password you use on googlecode.com for committing to -# Subversion and uploading files. You can find your password by going -# to http://code.google.com/hosting/settings when logged in with your -# Gmail account. If you have already committed to your project's -# Subversion repository, the script will automatically retrieve your -# credentials from there (unless disabled, see the output of '--help' -# for details). -# -# If you are looking at this script as a reference for implementing -# your own Google Code file uploader, then you should take a look at -# the upload() function, which is the meat of the uploader. You -# basically need to build a multipart/form-data POST request with the -# right fields and send it to https://PROJECT.googlecode.com/files . -# Authenticate the request using HTTP Basic authentication, as is -# shown below. -# -# Licensed under the terms of the Apache Software License 2.0: -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Questions, comments, feature requests and patches are most welcome. -# Please direct all of these to the Google Code users group: -# http://groups.google.com/group/google-code-hosting - -"""Google Code file uploader script. -""" - -__author__ = 'danderson@google.com (David Anderson)' - -import httplib -import os.path -import optparse -import getpass -import base64 -import sys - - -def upload(file, project_name, user_name, password, summary, labels=None): - """Upload a file to a Google Code project's file server. - - Args: - file: The local path to the file. - project_name: The name of your project on Google Code. - user_name: Your Google account name. - password: The googlecode.com password for your account. - Note that this is NOT your global Google Account password! - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - - Returns: a tuple: - http_status: 201 if the upload succeeded, something else if an - error occurred. - http_reason: The human-readable string associated with http_status - file_url: If the upload succeeded, the URL of the file on Google - Code, None otherwise. - """ - # The login is the user part of user@gmail.com. If the login provided - # is in the full user@domain form, strip it down. - if user_name.endswith('@gmail.com'): - user_name = user_name[:user_name.index('@gmail.com')] - - form_fields = [('summary', summary)] - if labels is not None: - form_fields.extend([('label', l.strip()) for l in labels]) - - content_type, body = encode_upload_request(form_fields, file) - - upload_host = '%s.googlecode.com' % project_name - upload_uri = '/files' - auth_token = base64.b64encode('%s:%s'% (user_name, password)) - headers = { - 'Authorization': 'Basic %s' % auth_token, - 'User-Agent': 'Googlecode.com uploader v0.9.4', - 'Content-Type': content_type, - } - - server = httplib.HTTPSConnection(upload_host) - server.request('POST', upload_uri, body, headers) - resp = server.getresponse() - server.close() - - if resp.status == 201: - location = resp.getheader('Location', None) - else: - location = None - return resp.status, resp.reason, location - - -def encode_upload_request(fields, file_path): - """Encode the given fields and file into a multipart form body. - - fields is a sequence of (name, value) pairs. file is the path of - the file to upload. The file will be uploaded to Google Code with - the same file name. - - Returns: (content_type, body) ready for httplib.HTTP instance - """ - BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla' - CRLF = '\r\n' - - body = [] - - # Add the metadata about the upload first - for key, value in fields: - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="%s"' % key, - '', - value, - ]) - - # Now add the file itself - file_name = os.path.basename(file_path) - f = open(file_path, 'rb') - file_content = f.read() - f.close() - - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="filename"; filename="%s"' - % file_name, - # The upload server determines the mime-type, no need to set it. - 'Content-Type: application/octet-stream', - '', - file_content, - ]) - - # Finalize the form body - body.extend(['--' + BOUNDARY + '--', '']) - - return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body) - - -def upload_find_auth(file_path, project_name, summary, labels=None, - user_name=None, password=None, tries=3): - """Find credentials and upload a file to a Google Code project's file server. - - file_path, project_name, summary, and labels are passed as-is to upload. - - Args: - file_path: The local path to the file. - project_name: The name of your project on Google Code. - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - config_dir: Path to Subversion configuration directory, 'none', or None. - user_name: Your Google account name. - tries: How many attempts to make. - """ - - while tries > 0: - if user_name is None: - # Read username if not specified or loaded from svn config, or on - # subsequent tries. - sys.stdout.write('Please enter your googlecode.com username: ') - sys.stdout.flush() - user_name = sys.stdin.readline().rstrip() - if password is None: - # Read password if not loaded from svn config, or on subsequent tries. - print 'Please enter your googlecode.com password.' - print '** Note that this is NOT your Gmail account password! **' - print 'It is the password you use to access Subversion repositories,' - print 'and can be found here: http://code.google.com/hosting/settings' - password = getpass.getpass() - - status, reason, url = upload(file_path, project_name, user_name, password, - summary, labels) - # Returns 403 Forbidden instead of 401 Unauthorized for bad - # credentials as of 2007-07-17. - if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]: - # Rest for another try. - user_name = password = None - tries = tries - 1 - else: - # We're done. - break - - return status, reason, url - - -def main(): - parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY ' - '-p PROJECT [options] FILE') - parser.add_option('-s', '--summary', dest='summary', - help='Short description of the file') - parser.add_option('-p', '--project', dest='project', - help='Google Code project name') - parser.add_option('-u', '--user', dest='user', - help='Your Google Code username') - parser.add_option('-w', '--password', dest='password', - help='Your Google Code password') - parser.add_option('-l', '--labels', dest='labels', - help='An optional list of comma-separated labels to attach ' - 'to the file') - - options, args = parser.parse_args() - - if not options.summary: - parser.error('File summary is missing.') - elif not options.project: - parser.error('Project name is missing.') - elif len(args) < 1: - parser.error('File to upload not provided.') - elif len(args) > 1: - parser.error('Only one file may be specified.') - - file_path = args[0] - - if options.labels: - labels = options.labels.split(',') - else: - labels = None - - status, reason, url = upload_find_auth(file_path, options.project, - options.summary, labels, - options.user, options.password) - if url: - print 'The file was uploaded successfully.' - print 'URL: %s' % url - return 0 - else: - print 'An error occurred. Your file was not uploaded.' - print 'Google Code upload server said: %s (%s)' % (reason, status) - return 1 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/htdocs/includes/sabre/sabre/dav/bin/migrateto20.php b/htdocs/includes/sabre/sabre/dav/bin/migrateto20.php deleted file mode 100755 index fb24fe599d16d..0000000000000 --- a/htdocs/includes/sabre/sabre/dav/bin/migrateto20.php +++ /dev/null @@ -1,414 +0,0 @@ -#!/usr/bin/env php -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - -$driver = $pdo->getAttribute(PDO::ATTR_DRIVER_NAME); - -switch ($driver) { - case 'mysql': - echo "Detected MySQL.\n"; - break; - case 'sqlite': - echo "Detected SQLite.\n"; - break; - default: - echo 'Error: unsupported driver: '.$driver."\n"; - exit(-1); -} - -foreach (['calendar', 'addressbook'] as $itemType) { - $tableName = $itemType.'s'; - $tableNameOld = $tableName.'_old'; - $changesTable = $itemType.'changes'; - - echo "Upgrading '$tableName'\n"; - - // The only cross-db way to do this, is to just fetch a single record. - $row = $pdo->query("SELECT * FROM $tableName LIMIT 1")->fetch(); - - if (!$row) { - echo "No records were found in the '$tableName' table.\n"; - echo "\n"; - echo "We're going to rename the old table to $tableNameOld (just in case).\n"; - echo "and re-create the new table.\n"; - - switch ($driver) { - case 'mysql': - $pdo->exec("RENAME TABLE $tableName TO $tableNameOld"); - switch ($itemType) { - case 'calendar': - $pdo->exec(" - CREATE TABLE calendars ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - principaluri VARCHAR(100), - displayname VARCHAR(100), - uri VARCHAR(200), - synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1', - description TEXT, - calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', - calendarcolor VARCHAR(10), - timezone TEXT, - components VARCHAR(20), - transparent TINYINT(1) NOT NULL DEFAULT '0', - UNIQUE(principaluri, uri) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - "); - break; - case 'addressbook': - $pdo->exec(" - CREATE TABLE addressbooks ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - principaluri VARCHAR(255), - displayname VARCHAR(255), - uri VARCHAR(200), - description TEXT, - synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1', - UNIQUE(principaluri, uri) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - "); - break; - } - break; - - case 'sqlite': - $pdo->exec("ALTER TABLE $tableName RENAME TO $tableNameOld"); - - switch ($itemType) { - case 'calendar': - $pdo->exec(' - CREATE TABLE calendars ( - id integer primary key asc, - principaluri text, - displayname text, - uri text, - synctoken integer, - description text, - calendarorder integer, - calendarcolor text, - timezone text, - components text, - transparent bool - ); - '); - break; - case 'addressbook': - $pdo->exec(' - CREATE TABLE addressbooks ( - id integer primary key asc, - principaluri text, - displayname text, - uri text, - description text, - synctoken integer - ); - '); - - break; - } - break; - } - echo "Creation of 2.0 $tableName table is complete\n"; - } else { - // Checking if there's a synctoken field already. - if (array_key_exists('synctoken', $row)) { - echo "The 'synctoken' field already exists in the $tableName table.\n"; - echo "It's likely you already upgraded, so we're simply leaving\n"; - echo "the $tableName table alone\n"; - } else { - echo "1.8 table schema detected\n"; - switch ($driver) { - case 'mysql': - $pdo->exec("ALTER TABLE $tableName ADD synctoken INT(11) UNSIGNED NOT NULL DEFAULT '1'"); - $pdo->exec("ALTER TABLE $tableName DROP ctag"); - $pdo->exec("UPDATE $tableName SET synctoken = '1'"); - break; - case 'sqlite': - $pdo->exec("ALTER TABLE $tableName ADD synctoken integer"); - $pdo->exec("UPDATE $tableName SET synctoken = '1'"); - echo "Note: there's no easy way to remove fields in sqlite.\n"; - echo "The ctag field is no longer used, but it's kept in place\n"; - break; - } - - echo "Upgraded '$tableName' to 2.0 schema.\n"; - } - } - - try { - $pdo->query("SELECT * FROM $changesTable LIMIT 1"); - - echo "'$changesTable' already exists. Assuming that this part of the\n"; - echo "upgrade was already completed.\n"; - } catch (Exception $e) { - echo "Creating '$changesTable' table.\n"; - - switch ($driver) { - case 'mysql': - $pdo->exec(" - CREATE TABLE $changesTable ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - uri VARCHAR(200) NOT NULL, - synctoken INT(11) UNSIGNED NOT NULL, - {$itemType}id INT(11) UNSIGNED NOT NULL, - operation TINYINT(1) NOT NULL, - INDEX {$itemType}id_synctoken ({$itemType}id, synctoken) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - - "); - break; - case 'sqlite': - $pdo->exec(" - - CREATE TABLE $changesTable ( - id integer primary key asc, - uri text, - synctoken integer, - {$itemType}id integer, - operation bool - ); - - "); - $pdo->exec("CREATE INDEX {$itemType}id_synctoken ON $changesTable ({$itemType}id, synctoken);"); - break; - } - } -} - -try { - $pdo->query('SELECT * FROM calendarsubscriptions LIMIT 1'); - - echo "'calendarsubscriptions' already exists. Assuming that this part of the\n"; - echo "upgrade was already completed.\n"; -} catch (Exception $e) { - echo "Creating calendarsubscriptions table.\n"; - - switch ($driver) { - case 'mysql': - $pdo->exec(" -CREATE TABLE calendarsubscriptions ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - uri VARCHAR(200) NOT NULL, - principaluri VARCHAR(100) NOT NULL, - source TEXT, - displayname VARCHAR(100), - refreshrate VARCHAR(10), - calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', - calendarcolor VARCHAR(10), - striptodos TINYINT(1) NULL, - stripalarms TINYINT(1) NULL, - stripattachments TINYINT(1) NULL, - lastmodified INT(11) UNSIGNED, - UNIQUE(principaluri, uri) -); - "); - break; - case 'sqlite': - $pdo->exec(' - -CREATE TABLE calendarsubscriptions ( - id integer primary key asc, - uri text, - principaluri text, - source text, - displayname text, - refreshrate text, - calendarorder integer, - calendarcolor text, - striptodos bool, - stripalarms bool, - stripattachments bool, - lastmodified int -); - '); - - $pdo->exec('CREATE INDEX principaluri_uri ON calendarsubscriptions (principaluri, uri);'); - break; - } -} - -try { - $pdo->query('SELECT * FROM propertystorage LIMIT 1'); - - echo "'propertystorage' already exists. Assuming that this part of the\n"; - echo "upgrade was already completed.\n"; -} catch (Exception $e) { - echo "Creating propertystorage table.\n"; - - switch ($driver) { - case 'mysql': - $pdo->exec(' -CREATE TABLE propertystorage ( - id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - path VARBINARY(1024) NOT NULL, - name VARBINARY(100) NOT NULL, - value MEDIUMBLOB -); - '); - $pdo->exec(' -CREATE UNIQUE INDEX path_property ON propertystorage (path(600), name(100)); - '); - break; - case 'sqlite': - $pdo->exec(' -CREATE TABLE propertystorage ( - id integer primary key asc, - path TEXT, - name TEXT, - value TEXT -); - '); - $pdo->exec(' -CREATE UNIQUE INDEX path_property ON propertystorage (path, name); - '); - - break; - } -} - -echo "Upgrading cards table to 2.0 schema\n"; - -try { - $create = false; - $row = $pdo->query('SELECT * FROM cards LIMIT 1')->fetch(); - if (!$row) { - $random = mt_rand(1000, 9999); - echo "There was no data in the cards table, so we're re-creating it\n"; - echo "The old table will be renamed to cards_old$random, just in case.\n"; - - $create = true; - - switch ($driver) { - case 'mysql': - $pdo->exec("RENAME TABLE cards TO cards_old$random"); - break; - case 'sqlite': - $pdo->exec("ALTER TABLE cards RENAME TO cards_old$random"); - break; - } - } -} catch (Exception $e) { - echo "Exception while checking cards table. Assuming that the table does not yet exist.\n"; - echo 'Debug: ', $e->getMessage(), "\n"; - $create = true; -} - -if ($create) { - switch ($driver) { - case 'mysql': - $pdo->exec(' -CREATE TABLE cards ( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - addressbookid INT(11) UNSIGNED NOT NULL, - carddata MEDIUMBLOB, - uri VARCHAR(200), - lastmodified INT(11) UNSIGNED, - etag VARBINARY(32), - size INT(11) UNSIGNED NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - - '); - break; - - case 'sqlite': - $pdo->exec(' -CREATE TABLE cards ( - id integer primary key asc, - addressbookid integer, - carddata blob, - uri text, - lastmodified integer, - etag text, - size integer -); - '); - break; - } -} else { - switch ($driver) { - case 'mysql': - $pdo->exec(' - ALTER TABLE cards - ADD etag VARBINARY(32), - ADD size INT(11) UNSIGNED NOT NULL; - '); - break; - - case 'sqlite': - $pdo->exec(' - ALTER TABLE cards ADD etag text; - ALTER TABLE cards ADD size integer; - '); - break; - } - echo "Reading all old vcards and populating etag and size fields.\n"; - $result = $pdo->query('SELECT id, carddata FROM cards'); - $stmt = $pdo->prepare('UPDATE cards SET etag = ?, size = ? WHERE id = ?'); - while ($row = $result->fetch(\PDO::FETCH_ASSOC)) { - $stmt->execute([ - md5($row['carddata']), - strlen($row['carddata']), - $row['id'], - ]); - } -} - -echo "Upgrade to 2.0 schema completed.\n"; diff --git a/htdocs/includes/sabre/sabre/dav/bin/migrateto21.php b/htdocs/includes/sabre/sabre/dav/bin/migrateto21.php deleted file mode 100755 index 2c15b0a217eb7..0000000000000 --- a/htdocs/includes/sabre/sabre/dav/bin/migrateto21.php +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/env php -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - -$driver = $pdo->getAttribute(PDO::ATTR_DRIVER_NAME); - -switch ($driver) { - case 'mysql': - echo "Detected MySQL.\n"; - break; - case 'sqlite': - echo "Detected SQLite.\n"; - break; - default: - echo 'Error: unsupported driver: '.$driver."\n"; - exit(-1); -} - -echo "Upgrading 'calendarobjects'\n"; -$addUid = false; -try { - $result = $pdo->query('SELECT * FROM calendarobjects LIMIT 1'); - $row = $result->fetch(\PDO::FETCH_ASSOC); - - if (!$row) { - echo "No data in table. Going to try to add the uid field anyway.\n"; - $addUid = true; - } elseif (array_key_exists('uid', $row)) { - echo "uid field exists. Assuming that this part of the migration has\n"; - echo "Already been completed.\n"; - } else { - echo "2.0 schema detected.\n"; - $addUid = true; - } -} catch (Exception $e) { - echo "Could not find a calendarobjects table. Skipping this part of the\n"; - echo "upgrade.\n"; -} - -if ($addUid) { - switch ($driver) { - case 'mysql': - $pdo->exec('ALTER TABLE calendarobjects ADD uid VARCHAR(200)'); - break; - case 'sqlite': - $pdo->exec('ALTER TABLE calendarobjects ADD uid TEXT'); - break; - } - - $result = $pdo->query('SELECT id, calendardata FROM calendarobjects'); - $stmt = $pdo->prepare('UPDATE calendarobjects SET uid = ? WHERE id = ?'); - $counter = 0; - - while ($row = $result->fetch(\PDO::FETCH_ASSOC)) { - try { - $vobj = \Sabre\VObject\Reader::read($row['calendardata']); - } catch (\Exception $e) { - echo "Warning! Item with id $row[id] could not be parsed!\n"; - continue; - } - $uid = null; - $item = $vobj->getBaseComponent(); - if (!isset($item->UID)) { - echo "Warning! Item with id $item[id] does NOT have a UID property and this is required.\n"; - continue; - } - $uid = (string) $item->UID; - $stmt->execute([$uid, $row['id']]); - ++$counter; - } -} - -echo "Creating 'schedulingobjects'\n"; - -switch ($driver) { - case 'mysql': - $pdo->exec('CREATE TABLE IF NOT EXISTS schedulingobjects -( - id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - principaluri VARCHAR(255), - calendardata MEDIUMBLOB, - uri VARCHAR(200), - lastmodified INT(11) UNSIGNED, - etag VARCHAR(32), - size INT(11) UNSIGNED NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - '); - break; - - case 'sqlite': - $pdo->exec('CREATE TABLE IF NOT EXISTS schedulingobjects ( - id integer primary key asc, - principaluri text, - calendardata blob, - uri text, - lastmodified integer, - etag text, - size integer -) -'); - break; -} - -echo "Done.\n"; - -echo "Upgrade to 2.1 schema completed.\n"; diff --git a/htdocs/includes/sabre/sabre/dav/bin/migrateto30.php b/htdocs/includes/sabre/sabre/dav/bin/migrateto30.php deleted file mode 100755 index 9798cadd2591b..0000000000000 --- a/htdocs/includes/sabre/sabre/dav/bin/migrateto30.php +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env php -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - -$driver = $pdo->getAttribute(PDO::ATTR_DRIVER_NAME); - -switch ($driver) { - case 'mysql': - echo "Detected MySQL.\n"; - break; - case 'sqlite': - echo "Detected SQLite.\n"; - break; - default: - echo 'Error: unsupported driver: '.$driver."\n"; - exit(-1); -} - -echo "Upgrading 'propertystorage'\n"; -$addValueType = false; -try { - $result = $pdo->query('SELECT * FROM propertystorage LIMIT 1'); - $row = $result->fetch(\PDO::FETCH_ASSOC); - - if (!$row) { - echo "No data in table. Going to re-create the table.\n"; - $random = mt_rand(1000, 9999); - echo "Renaming propertystorage -> propertystorage_old$random and creating new table.\n"; - - switch ($driver) { - case 'mysql': - $pdo->exec('RENAME TABLE propertystorage TO propertystorage_old'.$random); - $pdo->exec(' - CREATE TABLE propertystorage ( - id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, - path VARBINARY(1024) NOT NULL, - name VARBINARY(100) NOT NULL, - valuetype INT UNSIGNED, - value MEDIUMBLOB - ); - '); - $pdo->exec('CREATE UNIQUE INDEX path_property_'.$random.' ON propertystorage (path(600), name(100));'); - break; - case 'sqlite': - $pdo->exec('ALTER TABLE propertystorage RENAME TO propertystorage_old'.$random); - $pdo->exec(' -CREATE TABLE propertystorage ( - id integer primary key asc, - path text, - name text, - valuetype integer, - value blob -);'); - - $pdo->exec('CREATE UNIQUE INDEX path_property_'.$random.' ON propertystorage (path, name);'); - break; - } - } elseif (array_key_exists('valuetype', $row)) { - echo "valuetype field exists. Assuming that this part of the migration has\n"; - echo "Already been completed.\n"; - } else { - echo "2.1 schema detected. Going to perform upgrade.\n"; - $addValueType = true; - } -} catch (Exception $e) { - echo "Could not find a propertystorage table. Skipping this part of the\n"; - echo "upgrade.\n"; - echo $e->getMessage(), "\n"; -} - -if ($addValueType) { - switch ($driver) { - case 'mysql': - $pdo->exec('ALTER TABLE propertystorage ADD valuetype INT UNSIGNED'); - break; - case 'sqlite': - $pdo->exec('ALTER TABLE propertystorage ADD valuetype INT'); - - break; - } - - $pdo->exec('UPDATE propertystorage SET valuetype = 1 WHERE valuetype IS NULL '); -} - -echo "Migrating vcardurl\n"; - -$result = $pdo->query('SELECT id, uri, vcardurl FROM principals WHERE vcardurl IS NOT NULL'); -$stmt1 = $pdo->prepare('INSERT INTO propertystorage (path, name, valuetype, value) VALUES (?, ?, 3, ?)'); - -while ($row = $result->fetch(\PDO::FETCH_ASSOC)) { - // Inserting the new record - $stmt1->execute([ - 'addressbooks/'.basename($row['uri']), - '{http://calendarserver.org/ns/}me-card', - serialize(new Sabre\DAV\Xml\Property\Href($row['vcardurl'])), - ]); - - echo serialize(new Sabre\DAV\Xml\Property\Href($row['vcardurl'])); -} - -echo "Done.\n"; -echo "Upgrade to 3.0 schema completed.\n"; diff --git a/htdocs/includes/sabre/sabre/dav/bin/migrateto32.php b/htdocs/includes/sabre/sabre/dav/bin/migrateto32.php deleted file mode 100755 index 09ac55d13eef0..0000000000000 --- a/htdocs/includes/sabre/sabre/dav/bin/migrateto32.php +++ /dev/null @@ -1,258 +0,0 @@ -#!/usr/bin/env php -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - -$driver = $pdo->getAttribute(PDO::ATTR_DRIVER_NAME); - -switch ($driver) { - case 'mysql': - echo "Detected MySQL.\n"; - break; - case 'sqlite': - echo "Detected SQLite.\n"; - break; - default: - echo 'Error: unsupported driver: '.$driver."\n"; - exit(-1); -} - -echo "Creating 'calendarinstances'\n"; -$addValueType = false; -try { - $result = $pdo->query('SELECT * FROM calendarinstances LIMIT 1'); - $result->fetch(\PDO::FETCH_ASSOC); - echo "calendarinstances exists. Assuming this part of the migration has already been done.\n"; -} catch (Exception $e) { - echo "calendarinstances does not yet exist. Creating table and migrating data.\n"; - - switch ($driver) { - case 'mysql': - $pdo->exec(<<exec(' -INSERT INTO calendarinstances - ( - calendarid, - principaluri, - access, - displayname, - uri, - description, - calendarorder, - calendarcolor, - transparent - ) -SELECT - id, - principaluri, - 1, - displayname, - uri, - description, - calendarorder, - calendarcolor, - transparent -FROM calendars -'); - break; - case 'sqlite': - $pdo->exec(<<exec(' -INSERT INTO calendarinstances - ( - calendarid, - principaluri, - access, - displayname, - uri, - description, - calendarorder, - calendarcolor, - transparent - ) -SELECT - id, - principaluri, - 1, - displayname, - uri, - description, - calendarorder, - calendarcolor, - transparent -FROM calendars -'); - break; - } -} -try { - $result = $pdo->query('SELECT * FROM calendars LIMIT 1'); - $row = $result->fetch(\PDO::FETCH_ASSOC); - - if (!$row) { - echo "Source table is empty.\n"; - $migrateCalendars = true; - } - - $columnCount = count($row); - if (3 === $columnCount) { - echo "The calendars table has 3 columns already. Assuming this part of the migration was already done.\n"; - $migrateCalendars = false; - } else { - echo 'The calendars table has '.$columnCount." columns.\n"; - $migrateCalendars = true; - } -} catch (Exception $e) { - echo "calendars table does not exist. This is a major problem. Exiting.\n"; - exit(-1); -} - -if ($migrateCalendars) { - $calendarBackup = 'calendars_3_1_'.$backupPostfix; - echo "Backing up 'calendars' to '", $calendarBackup, "'\n"; - - switch ($driver) { - case 'mysql': - $pdo->exec('RENAME TABLE calendars TO '.$calendarBackup); - break; - case 'sqlite': - $pdo->exec('ALTER TABLE calendars RENAME TO '.$calendarBackup); - break; - } - - echo "Creating new calendars table.\n"; - switch ($driver) { - case 'mysql': - $pdo->exec(<<exec(<<exec(<<0): - print "Bytes to go before we hit threshold:", bytes - else: - print "Threshold exceeded with:", -bytes, "bytes" - dir = os.listdir(cacheDir) - dir2 = [] - for file in dir: - path = cacheDir + '/' + file - dir2.append({ - "path" : path, - "atime": os.stat(path).st_atime, - "size" : os.stat(path).st_size - }) - - dir2.sort(lambda x,y: int(x["atime"]-y["atime"])) - - filesunlinked = 0 - gainedspace = 0 - - # Left is the amount of bytes that need to be freed up - # The default is the 'min_erase setting' - left = min_erase - - # If the min_erase setting is lower than the amount of bytes over - # the threshold, we use that number instead. - if left < -bytes : - left = -bytes - - print "Need to delete at least:", left; - - for file in dir2: - - # Only deleting files if we're not simulating - if not simulate: os.unlink(file["path"]) - left = int(left - file["size"]) - gainedspace = gainedspace + file["size"] - filesunlinked = filesunlinked + 1 - - if(left<0): - break - - print "%d files deleted (%d bytes)" % (filesunlinked, gainedspace) - - - time.sleep(sleep) - - - -def main(): - parser = OptionParser( - version="naturalselection v0.3", - description="Cache directory manager. Deletes cache entries based on accesstime and free space thresholds.\n" + - "This utility is distributed alongside SabreDAV.", - usage="usage: %prog [options] cacheDirectory", - ) - parser.add_option( - '-s', - dest="simulate", - action="store_true", - help="Don't actually make changes, but just simulate the behaviour", - ) - parser.add_option( - '-r','--runs', - help="How many times to check before exiting. -1 is infinite, which is the default", - type="int", - dest="runs", - default=-1 - ) - parser.add_option( - '-n','--interval', - help="Sleep time in seconds (default = 5)", - type="int", - dest="sleep", - default=5 - ) - parser.add_option( - '-l','--threshold', - help="Threshold in bytes (default = 10737418240, which is 10GB)", - type="int", - dest="threshold", - default=10737418240 - ) - parser.add_option( - '-m', '--min-erase', - help="Minimum number of bytes to erase when the threshold is reached. " + - "Setting this option higher will reduce the number of times the cache directory will need to be scanned. " + - "(the default is 1073741824, which is 1GB.)", - type="int", - dest="min_erase", - default=1073741824 - ) - - options,args = parser.parse_args() - if len(args)<1: - parser.error("This utility requires at least 1 argument") - cacheDir = args[0] - - print "Natural Selection" - print "Cache directory:", cacheDir - free = getfreespace(cacheDir); - print "Current free disk space:", free - - runs = options.runs; - while runs!=0 : - run( - cacheDir, - sleep=options.sleep, - simulate=options.simulate, - threshold=options.threshold, - min_erase=options.min_erase - ) - if runs>0: - runs = runs - 1 - -if __name__ == '__main__' : - main() diff --git a/htdocs/includes/sabre/sabre/dav/bin/sabredav b/htdocs/includes/sabre/sabre/dav/bin/sabredav deleted file mode 100755 index 032371ba8bc71..0000000000000 --- a/htdocs/includes/sabre/sabre/dav/bin/sabredav +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -php -S 0.0.0.0:8080 `dirname $0`/sabredav.php diff --git a/htdocs/includes/sabre/sabre/dav/bin/sabredav.php b/htdocs/includes/sabre/sabre/dav/bin/sabredav.php deleted file mode 100755 index 71047b8f8b95c..0000000000000 --- a/htdocs/includes/sabre/sabre/dav/bin/sabredav.php +++ /dev/null @@ -1,51 +0,0 @@ -stream = fopen('php://stdout', 'w'); - } - - public function log($msg) - { - fwrite($this->stream, $msg."\n"); - } -} - -$log = new CliLog(); - -if ('cli-server' !== php_sapi_name()) { - exit('This script is intended to run on the built-in php webserver'); -} - -// Finding composer - -$paths = [ - __DIR__.'/../vendor/autoload.php', - __DIR__.'/../../../autoload.php', -]; - -foreach ($paths as $path) { - if (file_exists($path)) { - include $path; - break; - } -} - -use Sabre\DAV; - -// Root -$root = new DAV\FS\Directory(getcwd()); - -// Setting up server. -$server = new DAV\Server($root); - -// Browser plugin -$server->addPlugin(new DAV\Browser\Plugin()); - -$server->exec(); diff --git a/htdocs/includes/sabre/sabre/event/bin/.empty b/htdocs/includes/sabre/sabre/event/bin/.empty deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/htdocs/includes/sabre/sabre/http/bin/.empty b/htdocs/includes/sabre/sabre/http/bin/.empty deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/htdocs/includes/sabre/sabre/vobject/bin/bench.php b/htdocs/includes/sabre/sabre/vobject/bin/bench.php deleted file mode 100755 index 0a2736fa6d54d..0000000000000 --- a/htdocs/includes/sabre/sabre/vobject/bin/bench.php +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env php -parse->start(); - -$vcal = Sabre\VObject\Reader::read(fopen($inputFile, 'r')); - -$bench->parse->stop(); - -$repeat = 100; -$start = new \DateTime('2000-01-01'); -$end = new \DateTime('2020-01-01'); -$timeZone = new \DateTimeZone('America/Toronto'); - -$bench->fb->start(); - -for ($i = 0; $i < $repeat; ++$i) { - $fb = new Sabre\VObject\FreeBusyGenerator($start, $end, $vcal, $timeZone); - $results = $fb->getResult(); -} -$bench->fb->stop(); - -echo $bench,"\n"; - -function formatMemory($input) -{ - if (strlen($input) > 6) { - return round($input / (1024 * 1024)).'M'; - } elseif (strlen($input) > 3) { - return round($input / 1024).'K'; - } -} - -unset($input, $splitter); - -echo 'peak memory usage: '.formatMemory(memory_get_peak_usage()), "\n"; -echo 'current memory usage: '.formatMemory(memory_get_usage()), "\n"; diff --git a/htdocs/includes/sabre/sabre/vobject/bin/bench_manipulatevcard.php b/htdocs/includes/sabre/sabre/vobject/bin/bench_manipulatevcard.php deleted file mode 100644 index df6d9f23d66ab..0000000000000 --- a/htdocs/includes/sabre/sabre/vobject/bin/bench_manipulatevcard.php +++ /dev/null @@ -1,64 +0,0 @@ -parse->start(); - $vcard = $splitter->getNext(); - $bench->parse->pause(); - - if (!$vcard) { - break; - } - - $bench->manipulate->start(); - $vcard->{'X-FOO'} = 'Random new value!'; - $emails = []; - if (isset($vcard->EMAIL)) { - foreach ($vcard->EMAIL as $email) { - $emails[] = (string) $email; - } - } - $bench->manipulate->pause(); - - $bench->serialize->start(); - $vcard2 = $vcard->serialize(); - $bench->serialize->pause(); - - $vcard->destroy(); -} - -echo $bench,"\n"; - -function formatMemory($input) -{ - if (strlen($input) > 6) { - return round($input / (1024 * 1024)).'M'; - } elseif (strlen($input) > 3) { - return round($input / 1024).'K'; - } -} - -unset($input, $splitter); - -echo 'peak memory usage: '.formatMemory(memory_get_peak_usage()), "\n"; -echo 'current memory usage: '.formatMemory(memory_get_usage()), "\n"; diff --git a/htdocs/includes/sabre/sabre/vobject/bin/fetch_windows_zones.php b/htdocs/includes/sabre/sabre/vobject/bin/fetch_windows_zones.php deleted file mode 100755 index 2361dc3093fa5..0000000000000 --- a/htdocs/includes/sabre/sabre/vobject/bin/fetch_windows_zones.php +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env php -xpath('//mapZone') as $mapZone) { - $from = (string) $mapZone['other']; - $to = (string) $mapZone['type']; - - list($to) = explode(' ', $to, 2); - - if (!isset($map[$from])) { - $map[$from] = $to; - } -} - -ksort($map); -echo "Writing to: $outputFile\n"; - -$f = fopen($outputFile, 'w'); -fwrite($f, " testdata.vcf - -HI; - - fwrite(STDERR, $help); - exit(2); -} - -$count = (int)$argv[1]; -if ($count < 1) { - fwrite(STDERR, "Count must be at least 1\n"); - exit(2); -} - -fwrite(STDERR, "sabre/vobject " . Version::VERSION . "\n"); -fwrite(STDERR, "Generating " . $count . " vcards in vCard 4.0 format\n"); - -/** - * The following list is just some random data we compiled from various - * sources online. - * - * Very little thought went into compiling this list, and certainly nothing - * political or ethical. - * - * We would _love_ more additions to this to add more variation to this list. - * - * Send us PR's and don't be shy adding your own first and last name for fun. - */ - -$sets = array( - "nl" => array( - "country" => "Netherlands", - "boys" => array( - "Anno", - "Bram", - "Daan", - "Evert", - "Finn", - "Jayden", - "Jens", - "Jesse", - "Levi", - "Lucas", - "Luuk", - "Milan", - "René", - "Sem", - "Sibrand", - "Willem", - ), - "girls" => array( - "Celia", - "Emma", - "Fenna", - "Geke", - "Inge", - "Julia", - "Lisa", - "Lotte", - "Mila", - "Sara", - "Sophie", - "Tess", - "Zoë", - ), - "last" => array( - "Bakker", - "Bos", - "De Boer", - "De Groot", - "De Jong", - "De Vries", - "Jansen", - "Janssen", - "Meyer", - "Mulder", - "Peters", - "Smit", - "Van Dijk", - "Van den Berg", - "Visser", - "Vos", - ), - ), - "us" => array( - "country" => "United States", - "boys" => array( - "Aiden", - "Alexander", - "Charles", - "David", - "Ethan", - "Jacob", - "James", - "Jayden", - "John", - "Joseph", - "Liam", - "Mason", - "Michael", - "Noah", - "Richard", - "Robert", - "Thomas", - "William", - ), - "girls" => array( - "Ava", - "Barbara", - "Chloe", - "Dorothy", - "Elizabeth", - "Emily", - "Emma", - "Isabella", - "Jennifer", - "Lily", - "Linda", - "Margaret", - "Maria", - "Mary", - "Mia", - "Olivia", - "Patricia", - "Roxy", - "Sophia", - "Susan", - "Zoe", - ), - "last" => array( - "Smith", - "Johnson", - "Williams", - "Jones", - "Brown", - "Davis", - "Miller", - "Wilson", - "Moore", - "Taylor", - "Anderson", - "Thomas", - "Jackson", - "White", - "Harris", - "Martin", - "Thompson", - "Garcia", - "Martinez", - "Robinson", - ), - ), -); - -$current = 0; - -$r = function($arr) { - - return $arr[mt_rand(0,count($arr)-1)]; - -}; - -$bdayStart = strtotime('-85 years'); -$bdayEnd = strtotime('-20 years'); - -while($current < $count) { - - $current++; - fwrite(STDERR, "\033[100D$current/$count"); - - $country = array_rand($sets); - $gender = mt_rand(0,1)?'girls':'boys'; - - $vcard = new Component\VCard(array( - 'VERSION' => '4.0', - 'FN' => $r($sets[$country][$gender]) . ' ' . $r($sets[$country]['last']), - 'UID' => UUIDUtil::getUUID(), - )); - - $bdayRatio = mt_rand(0,9); - - if($bdayRatio < 2) { - // 20% has a birthday property with a full date - $dt = new \DateTime('@' . mt_rand($bdayStart, $bdayEnd)); - $vcard->add('BDAY', $dt->format('Ymd')); - - } elseif ($bdayRatio < 3) { - // 10% we only know the month and date of - $dt = new \DateTime('@' . mt_rand($bdayStart, $bdayEnd)); - $vcard->add('BDAY', '--' . $dt->format('md')); - } - if ($result = $vcard->validate()) { - ob_start(); - echo "\nWe produced an invalid vcard somehow!\n"; - foreach($result as $message) { - echo " " . $message['message'] . "\n"; - } - fwrite(STDERR, ob_get_clean()); - } - echo $vcard->serialize(); - -} - -fwrite(STDERR,"\nDone.\n"); diff --git a/htdocs/includes/sabre/sabre/vobject/bin/generateicalendardata.php b/htdocs/includes/sabre/sabre/vobject/bin/generateicalendardata.php deleted file mode 100755 index 019ed97450e45..0000000000000 --- a/htdocs/includes/sabre/sabre/vobject/bin/generateicalendardata.php +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env php -add('VEVENT'); - $event->DTSTART = 'bla'; - $event->SUMMARY = 'Event #'.$ii; - $event->UID = md5(microtime(true)); - - $doctorRandom = mt_rand(1, 1000); - - switch ($doctorRandom) { - // All-day event - case 1: - $event->DTEND = 'bla'; - $dtStart = clone $currentDate; - $dtEnd = clone $currentDate; - $dtEnd->modify('+'.mt_rand(1, 3).' days'); - $event->DTSTART->setDateTime($dtStart); - $event->DTSTART['VALUE'] = 'DATE'; - $event->DTEND->setDateTime($dtEnd); - break; - case 2: - $event->RRULE = 'FREQ=DAILY;COUNT='.mt_rand(1, 10); - // no break intentional - default: - $dtStart = clone $currentDate; - $dtStart->setTime(mt_rand(1, 23), mt_rand(0, 59), mt_rand(0, 59)); - $event->DTSTART->setDateTime($dtStart); - $event->DURATION = 'PT'.mt_rand(1, 3).'H'; - break; - } - - $currentDate->modify('+ '.mt_rand(0, 3).' days'); -} -fwrite(STDERR, "Validating\n"); - -$result = $calendar->validate(); -if ($result) { - fwrite(STDERR, "Errors!\n"); - fwrite(STDERR, print_r($result, true)); - exit(-1); -} - -fwrite(STDERR, "Serializing this beast\n"); - -echo $calendar->serialize(); - -fwrite(STDERR, "done.\n"); diff --git a/htdocs/includes/sabre/sabre/vobject/bin/mergeduplicates.php b/htdocs/includes/sabre/sabre/vobject/bin/mergeduplicates.php deleted file mode 100755 index 31b2c14ab6140..0000000000000 --- a/htdocs/includes/sabre/sabre/vobject/bin/mergeduplicates.php +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env php - 0, - 'No FN property' => 0, - 'Ignored duplicates' => 0, - 'Merged values' => 0, - 'Error' => 0, - 'Unique cards' => 0, - 'Total written' => 0, -]; - -function writeStats() -{ - global $stats; - foreach ($stats as $name => $value) { - echo str_pad($name, 23, ' ', STR_PAD_RIGHT), str_pad($value, 6, ' ', STR_PAD_LEFT), "\n"; - } - // Moving cursor back a few lines. - echo "\033[".count($stats).'A'; -} - -function write($vcard) -{ - global $stats, $output; - - ++$stats['Total written']; - fwrite($output, $vcard->serialize()."\n"); -} - -while ($vcard = $splitter->getNext()) { - ++$stats['Total vcards']; - writeStats(); - - $fn = isset($vcard->FN) ? (string) $vcard->FN : null; - - if (empty($fn)) { - // Immediately write this vcard, we don't compare it. - ++$stats['No FN property']; - ++$stats['Unique cards']; - write($vcard); - $vcard->destroy(); - continue; - } - - if (!isset($collectedNames[$fn])) { - $collectedNames[$fn] = $vcard; - ++$stats['Unique cards']; - continue; - } else { - // Starting comparison for all properties. We only check if properties - // in the current vcard exactly appear in the earlier vcard as well. - foreach ($vcard->children() as $newProp) { - if (in_array($newProp->name, $ignoredProperties)) { - // We don't care about properties such as UID and REV. - continue; - } - $ok = false; - foreach ($collectedNames[$fn]->select($newProp->name) as $compareProp) { - if ($compareProp->serialize() === $newProp->serialize()) { - $ok = true; - break; - } - } - - if (!$ok) { - if ('EMAIL' === $newProp->name || 'TEL' === $newProp->name) { - // We're going to make another attempt to find this - // property, this time just by value. If we find it, we - // consider it a success. - foreach ($collectedNames[$fn]->select($newProp->name) as $compareProp) { - if ($compareProp->getValue() === $newProp->getValue()) { - $ok = true; - break; - } - } - - if (!$ok) { - // Merging the new value in the old vcard. - $collectedNames[$fn]->add(clone $newProp); - $ok = true; - ++$stats['Merged values']; - } - } - } - - if (!$ok) { - // echo $newProp->serialize() . " does not appear in earlier vcard!\n"; - ++$stats['Error']; - if ($debug) { - fwrite($debug, "Missing '".$newProp->name."' property in duplicate. Earlier vcard:\n".$collectedNames[$fn]->serialize()."\n\nLater:\n".$vcard->serialize()."\n\n"); - } - - $vcard->destroy(); - continue 2; - } - } - } - - $vcard->destroy(); - ++$stats['Ignored duplicates']; -} - -foreach ($collectedNames as $vcard) { - // Overwriting any old PRODID - $vcard->PRODID = '-//Sabre//Sabre VObject '.Version::VERSION.'//EN'; - write($vcard); - writeStats(); -} - -echo str_repeat("\n", count($stats)), "\nDone.\n"; diff --git a/htdocs/includes/sabre/sabre/vobject/bin/rrulebench.php b/htdocs/includes/sabre/sabre/vobject/bin/rrulebench.php deleted file mode 100644 index 69008002e3338..0000000000000 --- a/htdocs/includes/sabre/sabre/vobject/bin/rrulebench.php +++ /dev/null @@ -1,32 +0,0 @@ -parse->start(); - -echo "Parsing.\n"; -$vobj = Sabre\VObject\Reader::read(fopen($inputFile, 'r')); - -$bench->parse->stop(); - -echo "Expanding.\n"; -$bench->expand->start(); - -$vobj->expand(new DateTime($startDate), new DateTime($endDate)); - -$bench->expand->stop(); - -echo $bench,"\n"; diff --git a/htdocs/includes/sabre/sabre/vobject/bin/vobject b/htdocs/includes/sabre/sabre/vobject/bin/vobject deleted file mode 100755 index 2aca7e729659c..0000000000000 --- a/htdocs/includes/sabre/sabre/vobject/bin/vobject +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env php -main($argv)); - diff --git a/htdocs/includes/sabre/sabre/xml/bin/.empty b/htdocs/includes/sabre/sabre/xml/bin/.empty deleted file mode 100644 index e69de29bb2d1d..0000000000000