public function downloadPlugins()
{
ipRequest()->mustBePost();
$plugins = ipRequest()->getPost('plugins');
if (!is_writable(Model::pluginInstallDir())) {
return JsonRpc::error(__('Directory is not writable. Please check your email and install the plugin manually.', 'Ip-admin', false), 777);
}
try {
if (!is_array($plugins)) {
return JsonRpc::error(__('Download failed: invalid parameters', 'Ip-admin', false), 101);
}
if (function_exists('set_time_limit')) {
set_time_limit(count($plugins) * 180 + 30);
}
$pluginDownloader = new PluginDownloader();
foreach ($plugins as $plugin) {
if (!empty($plugin['url']) && !empty($plugin['name']) && !empty($plugin['signature'])) {
$pluginDownloader->downloadPlugin($plugin['name'], $plugin['url'], $plugin['signature']);
}
}
} catch (\Ip\Exception $e) {
return JsonRpc::error($e->getMessage(), $e->getCode());
} catch (\Exception $e) {
return JsonRpc::error(__('Unknown error. Please see logs.', 'Ip-admin', false), 987);
}
return JsonRpc::result(array('plugins' => $plugins));
}