Подключение к базе данных Sharepoint через PHP
Я не знаком с Sharepoint. Я хотел бы запросить или прочитать базу данных Sharepoint с помощью PHP.
есть ли способ сделать это?
Спасибо в advanc. Любая помощь очень ценится.
6 ответов
вы должны рассмотреть возможность использования инструментов Camelot PHP для SharePoint, это хорошо документированный PHP-фреймворк для формата Camelot XML, специально созданного для списков SharePoint.
документация и скачать
Вам также понадобится Camelot SharePoint Integration Toolkit, http://camelottoolkit.codeplex.com/ и разъем Camelot .NET (http://www.bendsoft.com/net-sharepoint-connector/).
установите соединитель на поле, которое может достигать SharePoint server, это может быть тот же сервер, что и SharePoint server, затем установите Integration Toolkit на том же сервере, что и соединитель. Настройте службу интеграции, включенную в набор средств интеграции (следуйте инструкциям), и все готово. Есть несколько видео инструкция также на сайтах.
недостатками использования этого является то, что вы сможете общаться со списками и библиотеками SharePoint через API с помощью общих SQL-запросов, базовая база данных mssql никогда не используется.
выбор данных из SharePoint с помощью SQL
$SharePointQuery = new SharePointQuery(array(
'sql' => "SELECT * FROM Tasks WHERE ID > 10",
'connection_name' => 'SharePointConnection1'
));
выбор данных из SharePoint по списку и имени представления
$SharePointQuery = new SharePointQuery(
array(
'listName' => 'Tasks',
'viewName' => 'All Tasks',
'includeAttachements' => false,
'connection_name' => 'SharePointConnection1',
'columns' => ''
)
);
вставка данных в SharePoint с помощью SQL и SharePointNonQuery
$SharePointNonQuery = new SharePointNonQuery(array(
'sql' => "INSERT INTO Tasks (Title,AssignedTo,Status,Priority,DueDate,PercentComplete) VALUES ('Test task from PHP',1,'In Progress','(1) High', '". date('Y-m-d H:i:s') ."',0.95)",
'method' => 'ExecuteNonQuery',
'connection_name' => 'SharePointConnection1'
));
есть также хранимые процедуры, чтобы помочь вам с некоторыми операциями, такими как обработка документов
Скачать файл
$download = new CamelotDownloadFile(array(
"file" => $_GET["file"],
"listName" => 'Shared Documents',
"connection_name" => 'SharePointConnection1'
));
$download->download_file();
Загрузить файл
$args = array(
"file" => $_FILES,
"listName" => 'Shared Documents',
"folder" => 'Folder/',
"connection_name" => 'SharePointConnection2'
);
$UploadFile = new CamelotUploadFile($args);
Я настоятельно рекомендую использовать веб-службы SharePoint вместо этого... если нет веских причин (т. е. производительности), я бы не касался базы данных. цитата из этого ответа:
- это полностью не поддерживается EULA вы согласились, когда вы установлен SharePoint.
- ваши запросы не гарантированно работать после применение любых исправлений или пакетов обновления к SharePoint начиная с Microsoft можно изменить схему базы данных в любое время.
- прямой запрос базы данных может разместить дополнительную нагрузку на сервер и, следовательно, производительность проблемы.
- инструкции Direct SELECT против базы данных take shared чтение блокировок на уровне транзакций по умолчанию, чтобы ваши пользовательские запросы может привести к блокировкам и, следовательно, проблемам стабильности.
- ваш заказ запросы могут привести к неправильному извлечению данных.
Если вы хотите знать больше о том, почему вы не должны запросите базу данных,здесь это действительно отличная статья
Это просто база данных-пока у вас есть имя сервера/базы данных и соответствующие разрешения, нет ничего, что может остановить вас. - схема довольно вовлечена, поэтому выяснить оттуда, что вам нужно, может быть сложно - в зависимости от того, что вы действительно хотите сделать, вам может быть лучше использовать веб-службы для доступа к SharePoint OM.
в случае, если вы хотите написать к базе данных напрямую-нет. Нет никакого практического способа чтобы сделать это, не попадая в глубокие неприятности дальше по линии, и поддержка не сможет вам помочь.
база данных Sharepoint-это не что иное, как MS SQL Server. Если вы знаете имя сервера, вы можете подключиться к нему так же, как и к серверу MSSQL из PHP.
самый простой способ получить данные SharePoint из PHP, вероятно, через REST API.
я использовал это в API для подключения моего веб-приложения PHP с SharePoint и передачи данных с PHP на SharePoint, он работал 100% для меня:
Инструкция По Применению:
установка
загрузите файл WSDL для списков SharePoint, с которыми вы хотите взаимодействовать. Обычно это можно получить по адресу:sharepoint.url/subsite/_vti_bin/Lists.asmx?WSDL
если вы используете composer, просто добавьте thybag / php-sharepoint-lists-api в свой композитор.json и run composer.
{
"require": {
"thybag/php-sharepoint-lists-api": "dev-master"
}
}
если вы не используете composer, вы можете загрузить копию файлов API SharePoint вручную и включить верхний "SharePointAPI.php " класс в вашем проекте.
создание объекта SharePointAPI
для использования API списков PHP SharePoint вам понадобится действительная учетная запись пользователя / службы с разрешениями на требуемый список.
для большинства установок SharePoint можно создайте новый экземпляр API, используя:
use Thybag\SharePointAPI;
$sp = new SharePointAPI('', '', '');
если ваша установка требует проверки подлинности NTLM, вы можете вместо этого использовать:
use Thybag\SharePointAPI;
$sp = new SharePointAPI('', '', '', 'NTLM');
пользователи SharePoint Online должны использовать:
use Thybag\SharePointAPI;
$sp = new SharePointAPI('', '', '', 'SPONLINE');
все методы возвращают массив по умолчанию. SetReturnType можно использовать, чтобы указать, что результаты должны быть возвращены как объекты.
чтение из списка.
для возврата всех элементов из списка используйте либо
$sp->read('');
or
$sp->query('')->get();
возвращает только первые 10 элементов из списка использовать:
$sp->read('', 10);
или
$sp->query('')->limit(10)->get();
чтобы вернуть все элементы из списка, где фамилия Смит использовать:
$sp->read('', NULL, array('surname'=>'smith'));
или
$sp->query('')->where('surname', '=', 'smith')->get();
запрос списка
метод запроса может использоваться, когда вам нужно указать запрос, который должен быть сложным, чтобы быть легко определен с помощью метод read. Запросы строятся с использованием ряда (надеюсь, выразительных) псевдо-SQL-методов.
если вы, например, хотите запросить список домашних животных и вернуть всех собак в возрасте до 5 лет (отсортированных по возрасту), вы можете использовать.
$sp->query('list of pets')->where('type','=','dog')->and_where('age','sort('age','ASC')->get();
если вы хотите получить первые 10 домашних животных, которые были либо кошки или хомяки вы можете использовать:
$sp->query('list of pets')->where('type','=','cat')->or_where('type','=','hamster')->limit(10)->get();
Если вам необходимо вернуть 5 элементов, но включая все поля, содержащиеся в списке, вы можете использовать. (pass false to all_fields для включения скрытых полей).
$sp->query('list of pets')->all_fields()->get();
если у вас есть набор CAML для конкретного расширенного запроса, который вы хотите запустить, вы можете передать его объекту запроса, используя:
$sp->query('list of pets')->raw_where('Hello World')->limit(10)->get();
добавление в список
чтобы добавить новый элемент в список, вы можете использовать метод "write", "add" или "insert" (все функции одинаковы). Создание новой записи в списке со столбцами имя, фамилия, возраст и телефон может выглядеть например:
$sp->write('', array('forename'=>'Bob','surname' =>'Smith', 'age'=>40, 'phone'=>'(00000) 000000' ));
вы также можете запускать несколько операций записи вместе с помощью:
$sp->writeMultiple('', array(array('forename' => 'James'),array('forename' => 'Steve')));
Редактирование Строки
чтобы отредактировать строку, вам нужно иметь ее идентификатор. Предполагая, что вышеупомянутая строка имела идентификатор 5, мы могли бы изменить имя Боба на Джеймс с помощью:
$sp->update('','5', array('forename'=>'James'));/code>
как и в методе write, вы также можете запускать несколько операций обновления вместе с помощью:
$sp->updateMultiple('', array( array('ID'=>5,'job'=>'Intern'),array('ID'=>6,'job'=>'Intern')));
при использовании updateMultiple каждый элемент должен иметь ИДЕНТИФИКАТОР.
Удаление Строк
для удаления строки требуется идентификатор, а также имя списка. Чтобы удалить запись для Джеймса с ID 5, Вы должны использовать:
$sp->delete('', '5');
если вы хотите удалить сразу несколько записей, массив идентификаторов также может быть передан в delete multiple methods
$sp->deleteMultiple('', array('6','7','8'));
вспомогательные методы
PHP SharePoint API содержит ряд вспомогательных методов для убедитесь, что некоторые значения имеют правильный формат для некоторых специальных типов данных SharePoint.
dateTime Метод DateTime может быть передан как текстовая дата
$date = \Thybag\SharepointApi::dateTime("2012-12-21");
или временная метка unix
$date = \Thybag\SharepointApi::dateTime(time(), true);
устранение неисправностей
не удалось найти оболочку "https"
если вы получаете эту ошибку, это обычно означает, что php_openssl (необходимый для скручивания https-адресов) не включен на вашем веб-сервер. Со многими локальными веб-серверами (например, XAMPP) вы можете просто открыть свой php.ini и раскомментируйте строку php_openssl (т. е. удалите; перед ним).
Примечание. Если вы используете SharePoint Online и имеете ошибки SSL, пожалуйста, вытащите последнюю версию, которая изменилась с SSL v3 на TLS для подключений SharePoint online.
добавьте эту строку в свой композитор.файл json
thybag/php-sharepoint-lists-api: dev-develop
вы можете выполнить операцию CRUD (Create/Read/Update/Delete) с помощью выше в SharePoint API-интерфейс.
ссылка URL ссылка:https://github.com/thybag/PHP-SharePoint-Lists-API