本文整理汇总了PHP中OC_App::isAppVersionCompatible方法的典型用法代码示例。如果您正苦于以下问题:PHP OC_App::isAppVersionCompatible方法的具体用法?PHP OC_App::isAppVersionCompatible怎么用?PHP OC_App::isAppVersionCompatible使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OC_App
的用法示例。
在下文中一共展示了OC_App::isAppVersionCompatible方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: installApp
/**
* @brief Installs an app
* @param $data array with all information
* @throws \Exception
* @returns integer
*
* This function installs an app. All information needed are passed in the
* associative array $data.
* The following keys are required:
* - source: string, can be "path" or "http"
*
* One of the following keys is required:
* - path: path to the file containing the app
* - href: link to the downloadable file containing the app
*
* The following keys are optional:
* - pretend: boolean, if set true the system won't do anything
* - noinstall: boolean, if true appinfo/install.php won't be loaded
* - inactive: boolean, if set true the appconfig/app.sample.php won't be
* renamed
*
* This function works as follows
* -# fetching the file
* -# unzipping it
* -# check the code
* -# installing the database at appinfo/database.xml
* -# including appinfo/install.php
* -# setting the installed version
*
* It is the task of oc_app_install to create the tables and do whatever is
* needed to get the app working.
*/
public static function installApp($data = array())
{
$l = \OC_L10N::get('lib');
if (!isset($data['source'])) {
throw new \Exception($l->t("No source specified when installing app"));
}
//download the file if necessary
if ($data['source'] == 'http') {
$pathInfo = pathinfo($data['href']);
$path = OC_Helper::tmpFile('.' . $pathInfo['extension']);
if (!isset($data['href'])) {
throw new \Exception($l->t("No href specified when installing app from http"));
}
copy($data['href'], $path);
} else {
if (!isset($data['path'])) {
throw new \Exception($l->t("No path specified when installing app from local file"));
}
$path = $data['path'];
}
//detect the archive type
$mime = OC_Helper::getMimeType($path);
if ($mime !== 'application/zip' && $mime !== 'application/x-gzip') {
throw new \Exception($l->t("Archives of type %s are not supported", array($mime)));
}
//extract the archive in a temporary folder
$extractDir = OC_Helper::tmpFolder();
OC_Helper::rmdirr($extractDir);
mkdir($extractDir);
if ($archive = OC_Archive::open($path)) {
$archive->extract($extractDir);
} else {
OC_Helper::rmdirr($extractDir);
if ($data['source'] == 'http') {
unlink($path);
}
throw new \Exception($l->t("Failed to open archive when installing app"));
}
//load the info.xml file of the app
if (!is_file($extractDir . '/appinfo/info.xml')) {
//try to find it in a subdir
$dh = opendir($extractDir);
if (is_resource($dh)) {
while (($folder = readdir($dh)) !== false) {
if ($folder[0] != '.' and is_dir($extractDir . '/' . $folder)) {
if (is_file($extractDir . '/' . $folder . '/appinfo/info.xml')) {
$extractDir .= '/' . $folder;
}
}
}
}
}
if (!is_file($extractDir . '/appinfo/info.xml')) {
OC_Helper::rmdirr($extractDir);
if ($data['source'] == 'http') {
unlink($path);
}
throw new \Exception($l->t("App does not provide an info.xml file"));
}
$info = OC_App::getAppInfo($extractDir . '/appinfo/info.xml', true);
// check the code for not allowed calls
if (!OC_Installer::checkCode($info['id'], $extractDir)) {
OC_Helper::rmdirr($extractDir);
throw new \Exception($l->t("App can't be installed because of not allowed code in the App"));
}
// check if the app is compatible with this version of ownCloud
if (!isset($info['require']) or !OC_App::isAppVersionCompatible(OC_Util::getVersion(), $info['require'])) {
OC_Helper::rmdirr($extractDir);
//.........这里部分代码省略.........