Я не знаком с Sharepoint. Я хотел бы запросить или прочитать базу данных Sharepoint с помощью PHP.
Как я могу это сделать?
Спасибо заранее. Любая помощь приветствуется.
Я не знаком с Sharepoint. Я хотел бы запросить или прочитать базу данных Sharepoint с помощью PHP.
Как я могу это сделать?
Спасибо заранее. Любая помощь приветствуется.
Вам следует подумать об использовании Camelot PHP Tools для SharePoint, это хорошо документированная PHP-среда для формата Camelot XML, специально созданная для списков SharePoint.
Документация и загрузка
Вам также понадобится Camelot SharePoint Integration Toolkit, http://camelottoolkit.codeplex.com/ и Camelot .NET Connector (http: //www.bendsoft.com/net-sharepoint-connector/).
Установите коннектор в коробке, которая может подключиться к серверу SharePoint, это может быть тот же сервер, что и сервер SharePoint, затем установите 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 WebServices ... если нет веских причин (например, производительности), я бы не стал трогать базу данных. Цитата из этого ответа:
- Это полностью не поддерживается лицензионным соглашением, с которым вы согласились при установке SharePoint.
- Не гарантируется, что ваши запросы будут работать после применения каких-либо исправлений или пакетов обновления к SharePoint, поскольку Microsoft может изменить схему базы данных в любое время.
- Прямой запрос к базе данных может вызвать дополнительную нагрузку на сервер и, следовательно, проблемы с производительностью.
- Операторы Direct SELECT для базы данных принимают общие блокировки чтения на уровне транзакции по умолчанию, поэтому ваши пользовательские запросы могут вызвать взаимоблокировки и, следовательно, проблемы со стабильностью.
- Ваши персонализированные запросы могут привести к получению неверных данных.
Если вы хотите узнать больше о том, почему вам не следует запрашивать базу данных, здесь отличная статья
Запросить веб-службу SharePoint с помощью PHP
Это просто база данных - пока у вас есть имя сервера / базы данных и соответствующие разрешения, ничто не может вас остановить. Однако - схема довольно сложна, поэтому выяснить оттуда, что вам нужно, может быть сложно - в зависимости от того, что вы действительно хотите сделать, вам может быть лучше использовать веб-службы для доступа к Sharepoint OM. .
Если вы хотите писать напрямую в базу данных - не делайте этого. Невозможно сделать это, не попав в более серьезные проблемы, и поддержка не сможет вам помочь.
База данных Sharepoint - это не что иное, как MS SQL Server. Если вы знаете имя сервера, вы можете подключиться к нему так же, как вы можете подключиться к серверу MSSQL из PHP.
Я использовал это в API для подключения моего веб-приложения PHP к SharePoint и передачи данных с PHP на SharePoint, у меня это сработало на 100%:
Инструкции по использованию:
Установка
Загрузите файл WSDL для списков SharePoint, с которыми вы хотите взаимодействовать. Обычно его можно получить по адресу: sharepoint.url/subsite/_vti_bin/Lists.asmx?WSDL
Если вы используете композитор, просто добавьте thybag / php-sharepoint-lists-api в свой composer.json и запустите композитор.
{
"require": {
"thybag/php-sharepoint-lists-api": "dev-master"
}
}
Если вы не используете композитор, вы можете загрузить копию файлов API SharePoint вручную и включить в свой проект верхний класс «SharePointAPI.php».
Создание объекта SharePointAPI
Чтобы использовать PHP SharePoint Lists API, вам потребуется действующая учетная запись пользователя / службы с разрешениями на требуемый список.
Для большинства установок 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);
or
$sp->query('')->limit(10)->get();
Чтобы вернуть все элементы из списка с фамилией Смит:
$sp->read('', NULL, array('surname'=>'smith'));
or
$sp->query('')->where('surname', '=', 'smith')->get();
Запрос списка
Метод запроса можно использовать, когда вам нужно указать запрос, который слишком сложен, чтобы его можно было легко определить с помощью методов чтения. Запросы строятся с использованием ряда (надеюсь, выразительных) методов псевдо-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 элементов, но включая все поля, содержащиеся в списке, вы можете использовать. (передайте false в all_fields, чтобы включить скрытые поля).
$sp->query('list of pets')->all_fields()->get();
Если у вас есть набор CAML для конкретного расширенного запроса, который вы хотите выполнить, вы можете передать его объекту запроса, используя:
$sp->query('list of pets')->raw_where('Hello World')->limit(10)->get();
Добавление в список
Чтобы добавить новый элемент в список, вы можете использовать метод «написать», «добавить» или «вставить» (все функции идентичны). Создание новой записи в Списке со столбцами имя, фамилия, возраст и телефон может выглядеть так:
$sp->write('', array('forename'=>'Bob','surname' =>'Smith', 'age'=>40, 'phone'=>'(00000) 000000' ));
Вы также можете запускать несколько операций записи вместе, используя:
$sp->writeMultiple('', array(array('forename' => 'James'),array('forename' => 'Steve')));
Редактирование строк
Чтобы отредактировать строку, вам нужен ее идентификатор. Предполагая, что в приведенной выше строке был ID 5, мы могли бы изменить имя Боба на Джеймс с помощью:
$sp->update('','5', array('forename'=>'James'));/code>
As with the write method you can also run multiple update operations together by using:
$sp->updateMultiple('', array( array('ID'=>5,'job'=>'Intern'),array('ID'=>6,'job'=>'Intern')));
При использовании updateMultiple каждый элемент ДОЛЖЕН иметь идентификатор.
Удаление строк
Чтобы удалить строку, требуется идентификатор, а также название списка. Чтобы удалить запись для Джеймса с идентификатором 5, вы должны использовать:
$sp->delete('', '5');
Если вы хотите удалить несколько записей одновременно, массив идентификаторов также может быть передан методам удаления нескольких
$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 (необходимый для завивки URL-адресов https) не включен на вашем веб-сервере. На многих локальных веб-серверах (например, XAMPP) вы можете просто открыть файл php.ini и раскомментировать строку php_openssl (т.е. удалить; перед ней).
Примечание. Если вы используете SharePoint Online и у вас есть ошибки SSL, загрузите последнюю версию, которая была изменена с SSL v3 на TLS для подключений к SharePoint Online.
Add this line to your composer.json file
thybag/php-sharepoint-lists-api: dev-develop
Вы можете выполнить операцию CRUD (создание / чтение / обновление / удаление) с помощью вышеуказанного SharePoint API.
Ссылка URL-адреса ссылки: https://github.com/thybag/PHP-SharePoint-Lists-API