diff --git a/components/project/controller.php b/components/project/controller.php index 27492b3..f87aa0a 100755 --- a/components/project/controller.php +++ b/components/project/controller.php @@ -17,7 +17,7 @@ require_once('./class.project.php'); checkSession(); $Project = new Project(); -$Project->projects = $this->get_projects(); +$Project->projects = $Project->get_projects(); if( $_GET['action'] == 'add_user' ) { diff --git a/components/settings/class.settings.php b/components/settings/class.settings.php index 0790775..77cd0c5 100755 --- a/components/settings/class.settings.php +++ b/components/settings/class.settings.php @@ -9,6 +9,10 @@ class Settings { const DEFAULT_OPTIONS = array( + array( + "name" => "codiad.editor.autocomplete", + "value" => "false", + ), array( "name" => "codiad.editor.fileManagerTrigger", "value" => "false", diff --git a/components/update/update.php b/components/update/update.php index 551b5ca..ccbfb4f 100755 --- a/components/update/update.php +++ b/components/update/update.php @@ -1,787 +1,869 @@ - -

- Hello, this update requires new variables in your Codiad config.php
- Please place the following code in your config.php with the correct values applying to your databse and then reload this page.
-
- Please be aware that at the moment, only mysql databases are supported. However, more database support is planned. -

- - -
-define( "DBHOST", "localhost" );
-define( "DBNAME", "database" );
-define( "DBUSER", "username" );
-define( "DBPASS", "password" );
-define( "DBTYPE", "mysql" );
-
-
- update = new Update(); - $this->protocol = $this->check_protocol(); - $this->archive = $this->update->archive; - $this->path = BASE_PATH; - - /* - //Trigger update - $this->update();*/ - } - - function check_protocol() { - - if( extension_loaded( 'curl' ) ) { - - //Curl is loaded - return "curl"; - } elseif( ini_get('allow_url_fopen') ) { - - //Remote get file is enabled - return "fopen"; - } else { - - //None are enabled exit. - return "none"; - } - } - - function check_update() { - - $response = $this->update->getRemoteVersion(); - $local_version = $this->update::VERSION; - $remote_version = $response["name"]; - $return = "false"; - - if( $local_version < $remote_version ) { - - $return = "true"; - } - - return( $return ); - } - - function check_version() { - - $local_version = $this->update::VERSION; - $remote_version = $response["name"]; - $return = "false"; - - if( $local_version <= "v.2.9.2" ) { - - $return = "convert"; - } - - return( $return ); - } - - function convert() { - - require_once('../../common.php'); - require_once('../sql/class.sql.php'); - require_once('../settings/class.settings.php'); - require_once('../project/class.project.php'); - require_once('../user/class.user.php'); - - $user_settings_file = DATA . "/settings.php"; - $projects_file = DATA . "/projects.php"; - $users_file = DATA . "/users.php"; - - $Settings = new Settings(); - $Project = new Project(); - $User = new User(); - - $connection = $Settings->connect(); - - $sql = " --- phpMyAdmin SQL Dump --- version 4.6.6deb5 --- https://www.phpmyadmin.net/ --- --- Host: localhost:3306 --- Generation Time: Dec 11, 2018 at 05:31 PM --- Server version: 5.7.24-0ubuntu0.18.04.1 --- PHP Version: 7.2.10-0ubuntu0.18.04.1 - -SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO'; -SET time_zone = '+00:00'; - - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; - --- --- Database: `code_test` --- - --- -------------------------------------------------------- - --- --- Table structure for table `options` --- - -CREATE TABLE IF NOT EXISTS `options` ( - `id` int(11) NOT NULL, - `name` varchar(255) NOT NULL, - `value` text NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - --- -------------------------------------------------------- - --- --- Table structure for table `projects` --- - -CREATE TABLE IF NOT EXISTS `projects` ( - `id` int(11) NOT NULL, - `name` varchar(255) NOT NULL, - `path` varchar(255) NOT NULL, - `owner` varchar(255) NOT NULL, - `access` text -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - --- -------------------------------------------------------- - --- --- Table structure for table `users` --- - -CREATE TABLE IF NOT EXISTS `users` ( - `id` int(11) NOT NULL, - `first_name` varchar(255) DEFAULT NULL, - `last_name` varchar(255) DEFAULT NULL, - `username` varchar(255) NOT NULL, - `password` text NOT NULL, - `email` varchar(255) DEFAULT NULL, - `project` varchar(255) DEFAULT NULL, - `access` varchar(255) NOT NULL, - `groups` text, - `token` text -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - --- --- Table structure for table `user_options` --- - -CREATE TABLE IF NOT EXISTS `user_options` ( - `id` int(11) NOT NULL, - `name` varchar(255) NOT NULL, - `username` varchar(255) NOT NULL, - `value` text NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - --- --- Indexes for dumped tables --- - --- --- Indexes for table `options` --- -ALTER TABLE `options` - ADD PRIMARY KEY (`id`), - ADD UNIQUE KEY `option_name` (`name`); - --- --- Indexes for table `projects` --- -ALTER TABLE `projects` - ADD PRIMARY KEY (`id`), - ADD UNIQUE KEY `project_path` (`path`,`owner`); - --- --- Indexes for table `users` --- -ALTER TABLE `users` - ADD PRIMARY KEY (`id`), - ADD UNIQUE KEY `username` (`username`); - --- --- Indexes for table `user_options` --- -ALTER TABLE `user_options` - ADD PRIMARY KEY (`id`), - ADD UNIQUE KEY `option_name` (`name`,`username`); - --- --- AUTO_INCREMENT for dumped tables --- - --- --- AUTO_INCREMENT for table `options` --- -ALTER TABLE `options` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; --- --- AUTO_INCREMENT for table `projects` --- -ALTER TABLE `projects` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=41; --- --- AUTO_INCREMENT for table `users` --- -ALTER TABLE `users` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=79; --- --- AUTO_INCREMENT for table `user_options` --- -ALTER TABLE `user_options` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2541; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -"; - $bind = ""; - $bind_variables = array(); - $result = mysqli_prepare( $connection, $sql ) or die( "Error creating tables" ); - $result->bind_param( $bind, ...$bind_variables ); - $result->execute(); - - if( file_exists( $user_settings_file ) ) { - - $user_settings = getJSON( 'settings.php' ); - foreach( $user_settings as $user => $settings ) { - - $Settings->username = $user; - foreach( $settings as $setting => $value ) { - - $Settings->update_option( $setting, $value, true ); - } - } - unlink( $user_settings_file ); - } - - if( file_exists( $projects_file ) ) { - - $projects = getJSON( 'projects.php' ); - foreach( $projects as $project => $data ) { - - $Project->add_project( $data["name"], $data["path"], true ); - } - unlink( $projects_file ); - } - - if( file_exists( $users_file ) ) { - - $users = getJSON( 'users.php' ); - foreach( $users as $user ) { - - $User->username = $user["username"]; - $User->password = $user["password"]; - $User->add_user(); - } - unlink( $users_file ); - } - } - - function copyr( $source, $dest ) { - // Check for symlinks - if (is_link($source)) { - return symlink(readlink($source), $dest); - } - - // Simple copy for a file - if (is_file($source)) { - return copy($source, $dest); - } - - // Make destination directory - if (!is_dir($dest)) { - mkdir($dest); - } - - // Loop through the folder - $dir = dir( $source ); - while (false !== $entry = $dir->read()) { - // Skip pointers - if ($entry == '.' || $entry == '..') { - continue; - } - - // Deep copy directories - $this->copyr("$source/$entry", "$dest/$entry"); - } - - // Clean up - $dir->close(); - return true; - } - - ////////////////////////////////////////////////////////////////// - // Download latest archive - ////////////////////////////////////////////////////////////////// - - function download() { - - switch( $this->protocol ) { - - case( "curl" ): - - $filepath = $this->path . "/update.zip"; - if( file_exists( $filepath ) ) { - unlink( $filepath ); - } - $curl = curl_init(); - curl_setopt( $curl, CURLOPT_URL, $this->archive ); - //curl_setopt($curl, CURLOPT_POSTFIELDS, ""); - curl_setopt( $curl, CURLOPT_HEADER, 0 ); - curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); - curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ); - curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 0 ); - curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13' ); - $raw_file_data = curl_exec( $curl ); - curl_close( $curl ); - file_put_contents( $filepath, $raw_file_data ); - if( filesize( $filepath ) > 0 ) { - - return( "true" ); - } else { - - return( "false" ); - } - break; - } - } - - function extract() { - - if ( ! extension_loaded( 'zip' ) ) { - - return "false"; - } - - $zip = new ZipArchive; - if ( $zip->open( $this->path . "/update.zip" ) === TRUE ) { - - $zip->extractTo( $this->path ); - $zip->close(); - - return "true"; - } else { - - return "false"; - } - } - - function remove_directory( $path ) { - - $files = glob($path . '/*'); - foreach ($files as $file) { - - is_dir($file) ? $this->remove_directory($file) : unlink($file); - } - - if( is_dir( $path ) ) { - - rmdir( $path ); - } - return; - } - - function update() { - - $sessions = "../../data/sessions"; - //Add Sessions path if not there. - - /** - * Create sessions path. - */ - - if ( ! is_dir( $sessions ) ) { - - mkdir( $sessions, 00755 ); - } - - /** - * If any directories in the array below are still set delete them. - * - */ - $folder_conflictions = array( - - $this->path . "/plugins/auto_save", - $this->path . "/plugins/Codiad-Auto-Save", - $this->path . "/plugins/Codiad-Auto-Save-master", - $this->path . "/plugins/Codiad-CodeSettings", - $this->path . "/plugins/Codiad-CodeSettings-master", - ); - - foreach( $folder_conflictions as $dir ) { - - $this->remove_directory( $dir ); - } - - /** - * If any files in the array below are still set delete them. - * - */ - - $file_conflictions = array( - - $this->path . "/.travis.yml", - $this->path . "/codiad-master/.travis.yml", - - $this->path . "/.gitignore", - $this->path . "/codiad-master/.gitignore", - - $this->path . "/.gitlab-ci.yml", - $this->path . "/codiad-master/.gitlab-ci.yml" - ); - - foreach( $file_conflictions as $file ) { - - if( is_file( $file ) ) { - - unlink( $file ); - } - } - - - $src = $this->path . "/codiad-master/"; - $src_folder = $this->path . "/codiad-master"; - $dest = $this->path . "/"; - - $this->copyr( $src, $dest ); - $this->remove_directory( $src ); - $this->convert(); - return( "true" ); - } - - function version() { - - $return = ""; - - if( file_exists( $user_settings_file ) || file_exists( $projects_file ) || file_exists( $users_file ) ) { - - $return = "true"; - } - } -} - -if( isset( $_GET["action"] ) && $_GET["action"] !== '' ) { - - $updater = new updater(); - $action = $_GET["action"]; - - switch( $action ) { - - case( "apply" ): - - echo $updater->update(); - break; - - case( "check_update" ): - - echo $updater->check_update(); - break; - - case( "check_version" ): - - echo $updater->check_version(); - break; - - case( "download" ): - - echo $updater->download(); - break; - - case( "extract" ): - - echo $updater->extract(); - break; - - case( "update" ): - - echo $updater->update(); - break; - } - - exit(); -} -?> - - - - - Codiad Update - - - - - -

- Tela Codiad Updater -

-
-

Do not leave this page until the process has finished.

-

-
- - + +

+ Hello, this update requires new variables in your Codiad config.php
+ Please place the following code in your config.php with the correct values applying to your databse and then reload this page.
+
+ Please be aware that at the moment, only mysql databases are supported. However, more database support is planned. +

+ + +
+define( "DBHOST", "localhost" );
+define( "DBNAME", "database" );
+define( "DBUSER", "username" );
+define( "DBPASS", "password" );
+define( "DBTYPE", "mysql" );
+
+
+ "codiad.editor.autocomplete", + "value" => "false", + ), + array( + "name" => "codiad.editor.fileManagerTrigger", + "value" => "false", + ), + array( + "name" => "codiad.editor.fontSize", + "value" => "14px", + ), + array( + "name" => "codiad.editor.highlightLine", + "value" => "true", + ), + array( + "name" => "codiad.editor.indentGuides", + "value" => "true", + ), + array( + "name" => "codiad.editor.overScroll", + "value" => "0.5", + ), + array( + "name" => "codiad.editor.persistentModal", + "value" => "true", + ), + array( + "name" => "codiad.editor.printMargin", + "value" => "true", + ), + array( + "name" => "codiad.editor.printMarginColumn", + "value" => "80", + ), + array( + "name" => "codiad.editor.rightSidebarTrigger", + "value" => "false", + ), + array( + "name" => "codiad.editor.softTabs", + "value" => "false", + ), + array( + "name" => "codiad.editor.tabSize", + "value" => "4", + ), + array( + "name" => "codiad.editor.theme", + "value" => "twilight", + ), + array( + "name" => "codiad.editor.wrapMode", + "value" => "false", + ), + array( + "name" => "codiad.settings.autosave", + "value" => "true", + ), + array( + "name" => "codiad.settings.plugin.sync", + "value" => "true", + ), + array( + "name" => "codiad.settings.plugin.sync", + "value" => "true", + ), + ); + + /** + * Properties + */ + + public $archive = ""; + public $path = ""; + public $protocol = ""; + public $update = null; + public $username = ""; + + function __construct() { + + + $this->update = new Update(); + $this->protocol = $this->check_protocol(); + $this->archive = $this->update->archive; + $this->path = BASE_PATH; + $this->username = $_SESSION["user"]; + /* + //Trigger update + $this->update();*/ + } + + function backup() { + + $backup = "../../backup/"; + $source = "../../"; + //Add Sessions path if not there. + + /** + * Create sessions path. + */ + + if ( ! is_dir( $backup ) ) { + + mkdir( $backup, 00755 ); + } + + function copy_backup( $source, $dest ) { + // Check for symlinks + if (is_link($source)) { + return symlink(readlink($source), $dest); + } + + // Simple copy for a file + if (is_file($source)) { + return copy($source, $dest); + } + + // Make destination directory + if (!is_dir($dest)) { + mkdir($dest); + } + + // Loop through the folder + $dir = dir( $source ); + while (false !== $entry = $dir->read()) { + // Skip pointers + if ($entry == '.' || $entry == '..' || $entry == 'backup' || $entry == 'codiad-master' || $entry == 'workspace') { + continue; + } + + // Deep copy directories + copy_backup("$source/$entry", "$dest/$entry"); + } + + // Clean up + $dir->close(); + } + + copy_backup( $source, $backup ); + } + + function check_protocol() { + + if( extension_loaded( 'curl' ) ) { + + //Curl is loaded + return "curl"; + } elseif( ini_get('allow_url_fopen') ) { + + //Remote get file is enabled + return "fopen"; + } else { + + //None are enabled exit. + return "none"; + } + } + + function check_update() { + + $response = $this->update->getRemoteVersion(); + $local_version = $this->update::VERSION; + $remote_version = $response["name"]; + $return = "false"; + + if( $local_version < $remote_version ) { + + $return = "true"; + } + + return( $return ); + } + + function check_version() { + + $local_version = $this->update::VERSION; + $remote_version = $response["name"]; + $return = "false"; + + if( $local_version <= "v.2.9.2" ) { + + $return = "convert"; + } + + return( $return ); + } + + function convert() { + + require_once('../../common.php'); + require_once('../sql/class.sql.php'); + + $user_settings_file = DATA . "/settings.php"; + $projects_file = DATA . "/projects.php"; + $users_file = DATA . "/users.php"; + + $sql = new sql(); + $connection = $sql->connect(); + + $sql = " +CREATE TABLE IF NOT EXISTS `options`( + `id` INT(11) NOT NULL, + `name` VARCHAR(255) NOT NULL, + `value` TEXT NOT NULL +); +CREATE TABLE IF NOT EXISTS `projects`( + `id` INT(11) NOT NULL, + `name` VARCHAR(255) NOT NULL, + `path` VARCHAR(255) NOT NULL, + `owner` VARCHAR(255) NOT NULL, + `access` TEXT +); +CREATE TABLE IF NOT EXISTS `users`( + `id` INT(11) NOT NULL, + `first_name` VARCHAR(255) DEFAULT NULL, + `last_name` VARCHAR(255) DEFAULT NULL, + `username` VARCHAR(255) NOT NULL, + `password` TEXT NOT NULL, + `email` VARCHAR(255) DEFAULT NULL, + `project` VARCHAR(255) DEFAULT NULL, + `access` VARCHAR(255) NOT NULL, + `groups` TEXT, + `token` TEXT +); +CREATE TABLE IF NOT EXISTS `user_options`( + `id` INT(11) NOT NULL, + `name` VARCHAR(255) NOT NULL, + `username` VARCHAR(255) NOT NULL, + `value` TEXT NOT NULL +); +ALTER TABLE `options` ADD PRIMARY KEY(`id`), ADD UNIQUE KEY `option_name`(`name`); +ALTER TABLE `projects` ADD PRIMARY KEY(`id`), ADD UNIQUE KEY `project_path`(`path`, `owner`); +ALTER TABLE `users` ADD PRIMARY KEY(`id`), ADD UNIQUE KEY `username`(`username`); +ALTER TABLE `user_options` ADD PRIMARY KEY(`id`), ADD UNIQUE KEY `option_name`(`name`, `username`); +ALTER TABLE `options` MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT; +ALTER TABLE `projects` MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT; +ALTER TABLE `users` MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT; +ALTER TABLE `user_options` MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT; +"; + if ( $connection->multi_query( $sql ) !== TRUE ) { + + $this->restore(); + exit( $connection->error ); + } + + if( file_exists( $user_settings_file ) ) { + + unlink( $user_settings_file ); + } + + if( file_exists( $projects_file ) ) { + + $projects = getJSON( 'projects.php' ); + foreach( $projects as $project => $data ) { + + $owner = 'nobody'; + $sql = "INSERT INTO `projects`( `name`, `path`, `owner` ) VALUES ( ?, ?, ? );"; + $bind = "sss"; + $bind_variables = array( $data["name"], $data["path"], $owner ); + $return = sql::sql( $sql, $bind, $bind_variables, formatJSEND( "error", "Error creating project $project." ) ); + } + unlink( $projects_file ); + } + + if( file_exists( $users_file ) ) { + + $users = getJSON( 'users.php' ); + foreach( $users as $user ) { + + if( $user["username"] === $_SESSION["user"] ) { + + $access = "admin"; + } else { + + $access = "user"; + } + $sql = "INSERT INTO `users`( `username`, `password`, `access`, `project` ) VALUES ( ?, PASSWORD( ? ), ?, ? );"; + $bind = "ssss"; + $bind_variables = array( $user["username"], $user["password"], $access, null ); + $return = sql::sql( $sql, $bind, $bind_variables, formatJSEND( "error", "Error that username is already taken." ) ); + + if( sql::check_sql_error( $return ) ) { + + $this->username = $user["username"]; + $this->set_default_options(); + echo formatJSEND( "success", array( "username" => $user["username"] ) ); + } else { + + echo formatJSEND( "error", "The Username is Already Taken" ); + } + } + unlink( $users_file ); + } + } + + function copyr( $source, $dest ) { + + // Check for symlinks + if (is_link($source)) { + return symlink(readlink($source), $dest); + } + + // Simple copy for a file + if (is_file($source)) { + return copy($source, $dest); + } + + // Make destination directory + if (!is_dir($dest)) { + mkdir($dest); + } + + // Loop through the folder + $dir = dir( $source ); + while (false !== $entry = $dir->read()) { + // Skip pointers + if ($entry == '.' || $entry == '..' || $entry == 'backup' || $entry == 'codiad-master' || $entry == 'workspace' || $entry == 'plugins') { + continue; + } + + // Deep copy directories + $this->copyr("$source/$entry", "$dest/$entry"); + } + + // Clean up + $dir->close(); + return true; + } + + ////////////////////////////////////////////////////////////////// + // Download latest archive + ////////////////////////////////////////////////////////////////// + + function download() { + + switch( $this->protocol ) { + + case( "curl" ): + + $filepath = $this->path . "/update.zip"; + if( file_exists( $filepath ) ) { + unlink( $filepath ); + } + $curl = curl_init(); + curl_setopt( $curl, CURLOPT_URL, $this->archive ); + //curl_setopt($curl, CURLOPT_POSTFIELDS, ""); + curl_setopt( $curl, CURLOPT_HEADER, 0 ); + curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); + curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ); + curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 0 ); + curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13' ); + $raw_file_data = curl_exec( $curl ); + curl_close( $curl ); + file_put_contents( $filepath, $raw_file_data ); + if( filesize( $filepath ) > 0 ) { + + return( "true" ); + } else { + + return( "false" ); + } + break; + } + } + + function extract() { + + if ( ! extension_loaded( 'zip' ) ) { + + return "false"; + } + + $zip = new ZipArchive; + if ( $zip->open( $this->path . "/update.zip" ) === TRUE ) { + + $zip->extractTo( $this->path ); + $zip->close(); + + return "true"; + } else { + + return "false"; + } + } + + function remove_directory( $path ) { + + $files = glob($path . '/*'); + foreach ($files as $file) { + + is_dir($file) ? $this->remove_directory($file) : unlink($file); + } + + if( is_dir( $path ) ) { + + rmdir( $path ); + } + return; + } + + function restore() { + + $dest = "../../"; + $source = "../../backup/"; + + $this->copyr( $source, $dest ); + $this->remove_directory( $source ); + } + + public function set_default_options() { + + foreach( self::DEFAULT_OPTIONS as $id => $option ) { + + $this->update_option( $option["name"], $option["value"], true ); + } + } + + function update() { + + $this->backup(); + + try { + + $sessions = "../../data/sessions"; + //Add Sessions path if not there. + + /** + * Create sessions path. + */ + + if ( ! is_dir( $sessions ) ) { + + mkdir( $sessions, 00755 ); + } + + /** + * If any directories in the array below are still set delete them. + * + */ + $folder_conflictions = array( + + $this->path . "/plugins/auto_save", + $this->path . "/plugins/Codiad-Auto-Save", + $this->path . "/plugins/Codiad-Auto-Save-master", + $this->path . "/plugins/Codiad-CodeSettings", + $this->path . "/plugins/Codiad-CodeSettings-master", + ); + + foreach( $folder_conflictions as $dir ) { + + $this->remove_directory( $dir ); + } + + /** + * If any files in the array below are still set delete them. + * + */ + + $file_conflictions = array( + + $this->path . "/.travis.yml", + $this->path . "/codiad-master/.travis.yml", + + $this->path . "/.gitignore", + $this->path . "/codiad-master/.gitignore", + + $this->path . "/.gitlab-ci.yml", + $this->path . "/codiad-master/.gitlab-ci.yml" + ); + + foreach( $file_conflictions as $file ) { + + if( is_file( $file ) ) { + + unlink( $file ); + } + } + + + $src = $this->path . "/codiad-master/"; + $src_folder = $this->path . "/codiad-master"; + $dest = $this->path . "/"; + + $this->copyr( $src, $dest ); + $this->remove_directory( $src ); + $this->convert(); + return( "true" ); + } catch( Exception $e ) { + + $this->restore(); + return( $e ); + } + } + + public function update_option( $option, $value, $user_setting = null ) { + + $query = "INSERT INTO user_options ( `name`, `username`, `value` ) VALUES ( ?, ?, ? );"; + $bind = "sss"; + $bind_variables = array( + $option, + $this->username, + $value, + ); + $result = sql::sql( $query, $bind, $bind_variables, formatJSEND( "error", "Error, Could not add user's settings." ) ); + + if( $result !== true ) { + + $query = "UPDATE user_options SET `value`=? WHERE `name`=? AND `username`=?;"; + $bind = "sss"; + $bind_variables = array( + $value, + $option, + $this->username, + ); + $result = sql::sql( $query, $bind, $bind_variables, formatJSEND( "error", "Error, Could not update user's settings." ) ); + } + } + + function version() { + + $return = ""; + + if( file_exists( $user_settings_file ) || file_exists( $projects_file ) || file_exists( $users_file ) ) { + + $return = "true"; + } + } +} + +if( isset( $_GET["action"] ) && $_GET["action"] !== '' ) { + + $updater = new updater(); + $action = $_GET["action"]; + + switch( $action ) { + + case( "apply" ): + + echo $updater->update(); + break; + + case( "check_update" ): + + echo $updater->check_update(); + break; + + case( "check_version" ): + + echo $updater->check_version(); + break; + + case( "download" ): + + echo $updater->download(); + break; + + case( "extract" ): + + echo $updater->extract(); + break; + + case( "update" ): + + echo $updater->update(); + break; + } + + exit(); +} +?> + + + + + Codiad Update + + + + + +

+ Tela Codiad Updater +

+
+

Do not leave this page until the process has finished.

+

+
+ + \ No newline at end of file