1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/limesurvey_ynh.git synced 2024-09-03 19:36:32 +02:00

[dev][fix] Add the patchs :whistle:

This commit is contained in:
Shnoulle 2017-02-20 16:21:45 +01:00
parent b02660cf9d
commit d574e836c9
2 changed files with 194 additions and 0 deletions

View file

@ -0,0 +1,107 @@
From 14c81c86b7692794e7b251de3628f9afe353e020 Mon Sep 17 00:00:00 2001
From: Denis Chenu <denis@sondages.pro>
Date: Wed, 15 Feb 2017 01:15:35 +0100
Subject: [PATCH] [feature][yunohost] Allow update via PHP cli - Included in
LimeSurvey 3.0
---
application/commands/UpdateCommand.php | 90 ++++++++++++++++++++++++++++++++++
1 file changed, 90 insertions(+)
create mode 100644 application/commands/UpdateCommand.php
diff --git a/application/commands/UpdateCommand.php b/application/commands/UpdateCommand.php
new file mode 100644
index 0000000..faa216f
--- /dev/null
+++ b/application/commands/UpdateCommand.php
@@ -0,0 +1,90 @@
+<?php
+ /*
+ * @author Denis Chenu <denis@sondages.pro>
+ * @license GPL v3
+ * @version 0.1.1
+ * @deprecated in LimeSurvey 3.0/develop UpdateDbCommand do it
+ *
+ * Copyright (C) 2017 Denis Chenu
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+class UpdateCommand extends CConsoleCommand
+{
+ public function run(){
+ $this->_setConfigs();
+ $newDbVersion = (float)Yii::app()->getConfig('dbversionnumber');
+ $currentDbVersion = (float)Yii::app()->getConfig('DBVersion');
+ if($newDbVersion > $currentDbVersion){
+ echo "Update ".Yii::app()->db->connectionString.", prefix :".Yii::app()->db->tablePrefix." from {$currentDbVersion} to {$newDbVersion}\n";
+ Yii::import('application.helpers.common_helper', true);
+ Yii::import('application.helpers.update.updatedb_helper', true);
+ $result=db_upgrade_all($currentDbVersion);/* @todo : fix bad echoing here */
+ if ($result) {
+ echo "Database has been successfully upgraded to version $newDbVersion \n";
+ } else {
+ echo "Please fix this error in your database and try again\n";
+ return 1;
+ }
+ } else {
+ echo "no need update ".$newDbVersion ." ". $currentDbVersion ."\n";
+ }
+ }
+
+ /**
+ * Fonction to set all needed (and unneeded) config
+ * @deprecated in LimeSurvey 3.0/develop version config is set by LimeSurvey Core
+ * @return void
+ */
+ private function _setConfigs(){
+ /* default config */
+ $aDefaultConfigs = require(Yii::app()->basePath. DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config-defaults.php');
+ foreach($aDefaultConfigs as $sConfig=>$defaultConfig){
+ Yii::app()->setConfig($sConfig,$defaultConfig);
+ }
+ /* Fix for badly set rootdir */
+ $sRootDir=realpath(Yii::app()->basePath. DIRECTORY_SEPARATOR . "..") ;
+ Yii::app()->setConfig('rootdir',$sRootDir);
+ Yii::app()->setConfig('publicdir',$sRootDir);
+ Yii::app()->setConfig('homedir',$sRootDir);
+ Yii::app()->setConfig('tempdir',$sRootDir.DIRECTORY_SEPARATOR."tmp");
+ Yii::app()->setConfig('imagedir',$sRootDir.DIRECTORY_SEPARATOR."images");
+ Yii::app()->setConfig('uploaddir',$sRootDir.DIRECTORY_SEPARATOR."upload");
+ Yii::app()->setConfig('standardtemplaterootdir',$sRootDir.DIRECTORY_SEPARATOR."templates");
+ Yii::app()->setConfig('usertemplaterootdir',$sRootDir.DIRECTORY_SEPARATOR."upload".DIRECTORY_SEPARATOR."templates");
+ Yii::app()->setConfig('styledir',$sRootDir.DIRECTORY_SEPARATOR."styledir");
+ /* version */
+ $aVersionConfigs = require(Yii::app()->basePath. DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'version.php');
+ foreach($aVersionConfigs as $sConfig=>$versionConfig){
+ Yii::app()->setConfig($sConfig,$versionConfig);
+ }
+
+ if(file_exists(Yii::app()->basePath. DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php'))
+ {
+ $config = require(Yii::app()->basePath. DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php');
+ if(is_array($config['config']) && !empty($config['config']))
+ {
+ foreach($config['config'] as $key=>$value) {
+ Yii::app()->setConfig($key,$value);
+ }
+ }
+ }
+ $oSettings=SettingGlobal::model()->findAll();
+ if (count($oSettings) > 0)
+ {
+ foreach ($oSettings as $oSetting)
+ {
+ Yii::app()->setConfig($oSetting->getAttribute('stg_name'), $oSetting->getAttribute('stg_value'));
+ }
+ }
+ }
+
+}

View file

@ -0,0 +1,87 @@
From 301de6eb25dda2b9342a006baadaa068c42b115e Mon Sep 17 00:00:00 2001
From: Denis Chenu <denis@sondages.pro>
Date: Wed, 15 Feb 2017 01:59:12 +0100
Subject: [PATCH] [feature][yunohost] Activate a plugin by command - Needed for
update
---
application/commands/ActivatePluginCommand.php | 70 ++++++++++++++++++++++++++
1 file changed, 70 insertions(+)
create mode 100644 application/commands/ActivatePluginCommand.php
diff --git a/application/commands/ActivatePluginCommand.php b/application/commands/ActivatePluginCommand.php
new file mode 100644
index 0000000..512e9a4
--- /dev/null
+++ b/application/commands/ActivatePluginCommand.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Description
+ *
+ * @author Denis Chenu <denis@sondages.pro>
+ * @copyright 2015 Denis Chenu <http://www.sondages.pro>
+ * @license GPL v3
+ * @version 0.0.1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+class ActivatePluginCommand extends CConsoleCommand
+{
+
+ /**
+ * @var string $defaultAction
+ * @see http://www.yiiframework.com/doc/api/1.1/CConsoleCommand#defaultAction-detail
+ */
+ public $defaultAction='activate';
+ /**
+ * Activate a plugin by name
+ * @param string $name The plugin Class name
+ * @return void
+ */
+ public function actionActivate($classname)
+ {
+ $oPluginManager = \Yii::app()->pluginManager;
+ $aDiscoveredPlugins = $oPluginManager->scanPlugins();
+ if(!array_key_exists($classname,$aDiscoveredPlugins)) {
+ echo "Plugin {$classname} are not in your plugin directory\n";
+ return 1;
+ }
+
+ $oPlugin=Plugin::model()->find("name=:name",array(":name"=>$classname));
+ /* If plugin is not installed : just install it */
+ if(!$oPlugin) {
+ $oPlugin = new Plugin();
+ $oPlugin->name = $classname;
+ $oPlugin->active = 0;
+ $oPlugin->save();
+ }
+ /* Activate the plugin with the event beforeActivate */
+ if ($oPlugin->active == 0)
+ {
+ /* Load the plugin and dispatch beforeActivate event */
+ App()->getPluginManager()->loadPlugin($oPlugin->name, $oPlugin->id);
+ $result = App()->getPluginManager()->dispatchEvent(new PluginEvent('beforeActivate',$this), $oPlugin->name);
+ if ($result->get('success', true)) {
+ $oPlugin->active = 1;
+ if(!$oPlugin->save()){
+ return 1; /* This must not happen */
+ }
+ } else {
+ echo $result->get('message', 'Failed to activate the plugin.')."\n";
+ return 1;
+ }
+ } else {
+ // No error if try to activate an already activated plugin
+ }
+ }
+
+}