summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2014-04-12 18:58:08 +0200
committerFlorian Pritz <bluewind@xinu.at>2014-04-12 19:04:53 +0200
commit72a2e368c71cad39187d10f6ddaa69d6e8f4a8ba (patch)
treef41d4943b3583e7d597d45f0f4c18ae8bf41f96c
parentc49ba7354ee27fde980c7ff1722040232a3cb373 (diff)
Add foreign keys to database
Changing the referrer value for the root admin from 0 to NULL to make the foreign key check work. Signed-off-by: Florian Pritz <bluewind@xinu.at>
-rw-r--r--INSTALL2
-rw-r--r--application/config/migration.php2
-rw-r--r--application/controllers/user.php2
-rw-r--r--application/migrations/012_add_constraints.php29
4 files changed, 32 insertions, 3 deletions
diff --git a/INSTALL b/INSTALL
index 3ca7bbe74..f63ee8e74 100644
--- a/INSTALL
+++ b/INSTALL
@@ -23,4 +23,4 @@
* Run the following SQL command in your database:
insert into users (username, password, email, referrer)
- values ("your_name", "hash_from_above", "you@foo.com", 0);
+ values ("your_name", "hash_from_above", "you@foo.com", NULL);
diff --git a/application/config/migration.php b/application/config/migration.php
index 391b6c7c7..d27107cd4 100644
--- a/application/config/migration.php
+++ b/application/config/migration.php
@@ -21,7 +21,7 @@ $config['migration_enabled'] = true;
| be upgraded / downgraded to.
|
*/
-$config['migration_version'] = 11;
+$config['migration_version'] = 12;
/*
diff --git a/application/controllers/user.php b/application/controllers/user.php
index 7ebaa0b68..b4e2613ac 100644
--- a/application/controllers/user.php
+++ b/application/controllers/user.php
@@ -331,7 +331,7 @@ class User extends MY_Controller {
$admininfo = $this->db->query("
SELECT email
FROM users
- WHERE referrer = 0
+ WHERE referrer is null
ORDER BY id asc
LIMIT 1
")->row_array();
diff --git a/application/migrations/012_add_constraints.php b/application/migrations/012_add_constraints.php
new file mode 100644
index 000000000..e0116ea05
--- /dev/null
+++ b/application/migrations/012_add_constraints.php
@@ -0,0 +1,29 @@
+<?php
+defined('BASEPATH') OR exit('No direct script access allowed');
+
+class Migration_add_constraints extends CI_Migration {
+
+ public function up()
+ {
+ $this->db->query("UPDATE `users` SET `referrer` = NULL where `referrer` = 0;");
+ $this->db->query("ALTER TABLE `apikeys` ADD FOREIGN KEY (`user`)
+ REFERENCES `filebin`.`users`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT;");
+ $this->db->query("ALTER TABLE `files` ADD FOREIGN KEY (`user`)
+ REFERENCES `filebin`.`users`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;");
+ $this->db->query("ALTER TABLE `profiles` ADD FOREIGN KEY (`user`)
+ REFERENCES `filebin`.`users`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT;");
+ $this->db->query("ALTER TABLE `actions` ADD FOREIGN KEY (`user`)
+ REFERENCES `filebin`.`users`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT;");
+
+ $this->db->query("ALTER TABLE `users` ADD INDEX(`referrer`);");
+ $this->db->query("ALTER TABLE `users` CHANGE `referrer` `referrer`
+ INT(8) UNSIGNED NULL;");
+ $this->db->query("ALTER TABLE `users` ADD FOREIGN KEY (`referrer`)
+ REFERENCES `filebin`.`users`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;");
+ }
+
+ public function down()
+ {
+ show_error("downgrade not supported");
+ }
+}