From 4ecac790faee4daa7ea88cf8a431381a2282e193 Mon Sep 17 00:00:00 2001 From: Sorrel Harriet <s.harriet@gold.ac.uk> Date: Fri, 16 Sep 2016 11:38:12 +0100 Subject: [PATCH] cleaning out lab exercises. Archived old ones, will add to teaching resources repo --- coursework-blog/step-1/admin.php | 30 --- .../step-1/controllers/admin/editor.php | 23 -- .../step-1/controllers/admin/entries.php | 5 - coursework-blog/step-1/coursework-blog.sql | 8 - coursework-blog/step-1/css/blog.css | 24 --- .../step-1/models/Blog_Entry_Table.class.php | 24 --- .../step-1/views/admin/admin-navigation.php | 11 - .../step-1/views/admin/editor-html.php | 22 -- .../step-1/views/admin/entries-html.php | 12 -- coursework-blog/step-1/views/footer.php | 8 - coursework-blog/step-1/views/header.php | 12 -- coursework-blog/step-10/admin.php | 30 --- .../step-10/controllers/admin/editor.php | 52 ----- .../step-10/controllers/admin/entries.php | 11 - .../step-10/controllers/admin/users.php | 21 -- coursework-blog/step-10/controllers/blog.php | 17 -- coursework-blog/step-10/coursework-blog.sql | 16 -- coursework-blog/step-10/css/blog.css | 24 --- coursework-blog/step-10/index.php | 19 -- .../step-10/models/Admin_Table.class.php | 25 --- .../step-10/models/Blog_Entry_Table.class.php | 45 ---- .../step-10/models/Table.class.php | 22 -- .../step-10/views/admin/admin-navigation.php | 12 -- .../step-10/views/admin/editor-html.php | 25 --- .../step-10/views/admin/entries-html.php | 16 -- .../views/admin/new-admin-form-html.php | 21 -- coursework-blog/step-10/views/entry-html.php | 14 -- coursework-blog/step-10/views/footer.php | 8 - coursework-blog/step-10/views/header.php | 12 -- .../step-10/views/list-entries-html.php | 24 --- coursework-blog/step-11/admin.php | 36 ---- .../step-11/controllers/admin/editor.php | 52 ----- .../step-11/controllers/admin/entries.php | 11 - .../step-11/controllers/admin/login.php | 26 --- .../step-11/controllers/admin/users.php | 21 -- coursework-blog/step-11/controllers/blog.php | 17 -- coursework-blog/step-11/coursework-blog.sql | 16 -- coursework-blog/step-11/css/blog.css | 24 --- coursework-blog/step-11/index.php | 19 -- .../step-11/models/Admin_Table.class.php | 39 ---- .../step-11/models/Admin_User.class.php | 25 --- .../step-11/models/Blog_Entry_Table.class.php | 45 ---- .../step-11/models/Table.class.php | 22 -- .../step-11/views/admin/admin-navigation.php | 12 -- .../step-11/views/admin/editor-html.php | 25 --- .../step-11/views/admin/entries-html.php | 16 -- .../step-11/views/admin/login-form-html.php | 10 - .../step-11/views/admin/logout-form-html.php | 8 - .../views/admin/new-admin-form-html.php | 20 -- coursework-blog/step-11/views/entry-html.php | 14 -- coursework-blog/step-11/views/footer.php | 8 - coursework-blog/step-11/views/header.php | 12 -- .../step-11/views/list-entries-html.php | 24 --- coursework-blog/step-2/admin.php | 30 --- .../step-2/controllers/admin/editor.php | 23 -- .../step-2/controllers/admin/entries.php | 10 - coursework-blog/step-2/coursework-blog.sql | 8 - coursework-blog/step-2/css/blog.css | 24 --- .../step-2/models/Blog_Entry_Table.class.php | 38 ---- .../step-2/views/admin/admin-navigation.php | 11 - .../step-2/views/admin/editor-html.php | 22 -- .../step-2/views/admin/entries-html.php | 12 -- coursework-blog/step-2/views/footer.php | 8 - coursework-blog/step-2/views/header.php | 12 -- coursework-blog/step-3/admin.php | 30 --- .../step-3/controllers/admin/editor.php | 23 -- .../step-3/controllers/admin/entries.php | 10 - coursework-blog/step-3/controllers/blog.php | 8 - coursework-blog/step-3/coursework-blog.sql | 8 - coursework-blog/step-3/css/blog.css | 24 --- coursework-blog/step-3/index.php | 19 -- .../step-3/models/Blog_Entry_Table.class.php | 40 ---- .../step-3/views/admin/admin-navigation.php | 11 - .../step-3/views/admin/editor-html.php | 22 -- .../step-3/views/admin/entries-html.php | 12 -- coursework-blog/step-3/views/footer.php | 8 - coursework-blog/step-3/views/header.php | 12 -- .../step-3/views/list-entries-html.php | 24 --- coursework-blog/step-4/admin.php | 30 --- .../step-4/controllers/admin/editor.php | 23 -- .../step-4/controllers/admin/entries.php | 10 - coursework-blog/step-4/controllers/blog.php | 16 -- coursework-blog/step-4/coursework-blog.sql | 8 - coursework-blog/step-4/css/blog.css | 24 --- coursework-blog/step-4/index.php | 19 -- .../models/.Blog_Entry_Table.class.php.swp | Bin 12288 -> 0 bytes .../step-4/models/Blog_Entry_Table.class.php | 56 ----- .../step-4/views/admin/admin-navigation.php | 11 - .../step-4/views/admin/editor-html.php | 22 -- .../step-4/views/admin/entries-html.php | 12 -- coursework-blog/step-4/views/entry-html.php | 14 -- coursework-blog/step-4/views/footer.php | 8 - coursework-blog/step-4/views/header.php | 12 -- .../step-4/views/list-entries-html.php | 24 --- coursework-blog/step-5/admin.php | 30 --- .../step-5/controllers/admin/editor.php | 23 -- .../step-5/controllers/admin/entries.php | 10 - coursework-blog/step-5/controllers/blog.php | 16 -- coursework-blog/step-5/coursework-blog.sql | 8 - coursework-blog/step-5/css/blog.css | 24 --- coursework-blog/step-5/index.php | 19 -- .../step-5/models/Blog_Entry_Table.class.php | 53 ----- .../step-5/views/admin/admin-navigation.php | 11 - .../step-5/views/admin/editor-html.php | 22 -- .../step-5/views/admin/entries-html.php | 12 -- coursework-blog/step-5/views/entry-html.php | 14 -- coursework-blog/step-5/views/footer.php | 8 - coursework-blog/step-5/views/header.php | 12 -- .../step-5/views/list-entries-html.php | 24 --- coursework-blog/step-6/admin.php | 30 --- .../step-6/controllers/admin/editor.php | 38 ---- .../step-6/controllers/admin/entries.php | 10 - coursework-blog/step-6/controllers/blog.php | 16 -- coursework-blog/step-6/coursework-blog.sql | 8 - coursework-blog/step-6/css/blog.css | 24 --- coursework-blog/step-6/index.php | 19 -- .../step-6/models/Blog_Entry_Table.class.php | 53 ----- .../step-6/views/admin/admin-navigation.php | 11 - .../step-6/views/admin/editor-html.php | 23 -- .../step-6/views/admin/entries-html.php | 16 -- coursework-blog/step-6/views/entry-html.php | 14 -- coursework-blog/step-6/views/footer.php | 8 - coursework-blog/step-6/views/header.php | 12 -- .../step-6/views/list-entries-html.php | 24 --- coursework-blog/step-7/admin.php | 30 --- .../step-7/controllers/admin/editor.php | 42 ---- .../step-7/controllers/admin/entries.php | 10 - coursework-blog/step-7/controllers/blog.php | 16 -- coursework-blog/step-7/coursework-blog.sql | 8 - coursework-blog/step-7/css/blog.css | 24 --- coursework-blog/step-7/index.php | 19 -- .../step-7/models/Blog_Entry_Table.class.php | 59 ----- .../step-7/views/admin/admin-navigation.php | 11 - .../step-7/views/admin/editor-html.php | 24 --- .../step-7/views/admin/entries-html.php | 16 -- coursework-blog/step-7/views/entry-html.php | 14 -- coursework-blog/step-7/views/footer.php | 8 - coursework-blog/step-7/views/header.php | 12 -- .../step-7/views/list-entries-html.php | 24 --- coursework-blog/step-8/admin.php | 30 --- .../step-8/controllers/admin/editor.php | 46 ---- .../step-8/controllers/admin/entries.php | 10 - coursework-blog/step-8/controllers/blog.php | 16 -- coursework-blog/step-8/coursework-blog.sql | 8 - coursework-blog/step-8/css/blog.css | 24 --- coursework-blog/step-8/index.php | 19 -- .../step-8/models/Blog_Entry_Table.class.php | 61 ------ .../step-8/views/admin/admin-navigation.php | 11 - .../step-8/views/admin/editor-html.php | 24 --- .../step-8/views/admin/entries-html.php | 16 -- coursework-blog/step-8/views/entry-html.php | 14 -- coursework-blog/step-8/views/footer.php | 8 - coursework-blog/step-8/views/header.php | 12 -- .../step-8/views/list-entries-html.php | 24 --- coursework-blog/step-9/admin.php | 30 --- .../step-9/controllers/admin/editor.php | 51 ----- .../step-9/controllers/admin/entries.php | 10 - coursework-blog/step-9/controllers/blog.php | 16 -- coursework-blog/step-9/coursework-blog.sql | 8 - coursework-blog/step-9/css/blog.css | 24 --- coursework-blog/step-9/index.php | 19 -- .../step-9/models/Blog_Entry_Table.class.php | 62 ------ .../step-9/views/admin/admin-navigation.php | 11 - .../step-9/views/admin/editor-html.php | 25 --- .../step-9/views/admin/entries-html.php | 16 -- coursework-blog/step-9/views/entry-html.php | 14 -- coursework-blog/step-9/views/footer.php | 8 - coursework-blog/step-9/views/header.php | 12 -- .../step-9/views/list-entries-html.php | 24 --- week-1/test_app/README.txt | 21 -- week-1/test_app/includes/functions.php | 6 - week-1/test_app/index.php | 44 ---- week-1/test_app/views/404.php | 4 - week-1/test_app/views/home.php | 4 - week-1/test_app/views/page_2.php | 4 - week-12/README.txt | 27 --- week-12/includes/db_connect.php | 18 -- week-12/index.php | 61 ------ week-12/sql/dummy_data.sql | 67 ------ week-12/sql/practice_queries.sql | 9 - week-12/sql/record-store.sql | 71 ------ week-12/sql/recordstore-dump.sql | 196 ----------------- week-12/templates/footer.html | 2 - week-12/templates/header.html | 7 - week-12/templates/navigation.html | 9 - week-12/uploads/2009-a32-08-05-adorno-b.jpg | Bin 35380 -> 0 bytes week-12/uploads/avatar 1.jpg | Bin 13273 -> 0 bytes week-12/uploads/avatar 2 06_mask-2 square.jpg | Bin 56863 -> 0 bytes week-12/uploads/je-participe.gif | Bin 16732 -> 0 bytes week-12/uploads/think of this as a window.jpg | Bin 68496 -> 0 bytes week-12/views/404.php | 10 - week-12/views/add-record-insecure.php | 100 --------- week-12/views/add-record.php | 175 --------------- week-12/views/artist.php | 68 ------ week-12/views/home.php | 10 - week-12/views/order.php | 67 ------ week-12/views/orders.php | 40 ---- week-12/views/record.php | 43 ---- week-12/views/search.php | 90 -------- week-13/README.txt | 29 --- week-13/admin/index.php | 70 ------ week-13/admin/views/404.php | 10 - week-13/admin/views/add-record.php | 175 --------------- week-13/admin/views/artist.php | 68 ------ week-13/admin/views/home.php | 10 - week-13/admin/views/login.php | 51 ----- week-13/admin/views/logout.php | 7 - week-13/admin/views/navigation.html | 10 - week-13/admin/views/order.php | 67 ------ week-13/admin/views/orders.php | 40 ---- week-13/admin/views/record.php | 43 ---- week-13/admin/views/search.php | 90 -------- week-13/includes/db_connect.php | 18 -- week-13/includes/functions.php | 60 ------ week-13/index.php | 65 ------ week-13/sql/dummy_data.sql | 67 ------ week-13/sql/practice_queries.sql | 9 - week-13/sql/record-store.sql | 71 ------ week-13/sql/recordstore-dump.sql | 196 ----------------- week-13/sql/recordstore-dump2.sql | 196 ----------------- week-13/sql/user-table.sql | 25 --- week-13/templates/footer.html | 2 - week-13/templates/header.html | 7 - week-13/templates/navigation.html | 7 - week-13/uploads/2009-a32-08-05-adorno-b.jpg | Bin 35380 -> 0 bytes week-13/uploads/avatar 1.jpg | Bin 13273 -> 0 bytes week-13/uploads/je-participe.gif | Bin 16732 -> 0 bytes week-13/uploads/man-ray-iron-A.gif | Bin 5401 -> 0 bytes week-13/uploads/think of this as a window.jpg | Bin 68496 -> 0 bytes week-13/views/404.php | 10 - week-13/views/add-record-insecure.php | 100 --------- week-13/views/add-record.php | 174 --------------- week-13/views/artist.php | 68 ------ week-13/views/home.php | 10 - week-13/views/order.php | 67 ------ week-13/views/orders.php | 40 ---- week-13/views/record.php | 43 ---- week-13/views/search.php | 131 ----------- week-15/database-class/config.php | 10 - week-15/database-class/database.class.php | 88 -------- week-15/database-class/index.php | 19 -- .../image-upload/classes/Uploader.class.php | 29 --- week-15/image-upload/css/layout.css | 4 - week-15/image-upload/css/navigation.css | 15 -- .../img/2009-a32-08-05-adorno-b.jpg | Bin 35380 -> 0 bytes week-15/image-upload/index.php | 21 -- week-15/image-upload/templates/footer.php | 9 - week-15/image-upload/templates/header.php | 14 -- week-15/image-upload/views/gallery.php | 27 --- week-15/image-upload/views/navigation.php | 4 - week-15/image-upload/views/upload.php | 29 --- week-15/simple-classes/Rectangle.php | 51 ----- week-15/simple-classes/Rectangle1.php | 36 ---- week-15/simple-classes/Rectangle2.php | 42 ---- week-15/simple-classes/cat.class.php | 16 -- week-15/simple-classes/dog.class.php | 17 -- week-15/simple-classes/pet.class.php | 19 -- week-15/simple-classes/pets1.php | 65 ------ week-15/simple-classes/pets2.php | 68 ------ week-15/simple-classes/pets3.php | 96 --------- week-15/simple-classes/pets4.php | 47 ---- week-15/simple-classes/rectangle1.php | 37 ---- week-15/simple-classes/rectangle2.php | 35 --- week-2/record-store-app/sql/dummy_data.sql | 14 -- .../record-store-app/sql/practice_queries.sql | 9 - week-2/record-store-app/sql/record-store.sql | 23 -- week-3/record-store-app/artist.php | 35 --- week-3/record-store-app/index.php | 37 ---- week-3/record-store-app/sql/dummy_data.sql | 14 -- .../record-store-app/sql/practice_queries.sql | 9 - week-3/record-store-app/sql/record-store.sql | 23 -- week-4/record-store-app/README.txt | 24 --- .../record-store-app/includes/db_connect.php | 18 -- week-4/record-store-app/index.php | 41 ---- week-4/record-store-app/sql/dummy_data.sql | 25 --- .../record-store-app/sql/practice_queries.sql | 9 - week-4/record-store-app/sql/record-store.sql | 58 ----- week-4/record-store-app/templates/footer.html | 2 - week-4/record-store-app/templates/header.html | 7 - .../templates/navigation.html | 7 - week-4/record-store-app/views/404.php | 10 - week-4/record-store-app/views/artist.php | 30 --- week-4/record-store-app/views/home.php | 10 - week-4/record-store-app/views/record.php | 31 --- week-5/record-store-app/README.txt | 22 -- .../record-store-app/includes/db_connect.php | 18 -- week-5/record-store-app/index.php | 47 ---- week-5/record-store-app/sql/dummy_data.sql | 51 ----- .../record-store-app/sql/practice_queries.sql | 9 - week-5/record-store-app/sql/record-store.sql | 62 ------ week-5/record-store-app/templates/footer.html | 2 - week-5/record-store-app/templates/header.html | 7 - .../templates/navigation.html | 7 - week-5/record-store-app/views/404.php | 10 - week-5/record-store-app/views/artist.php | 68 ------ week-5/record-store-app/views/home.php | 10 - week-5/record-store-app/views/order.php | 72 ------- .../record-store-app/views/order_example.php | 67 ------ week-5/record-store-app/views/orders.php | 43 ---- .../record-store-app/views/orders_example.php | 40 ---- week-5/record-store-app/views/record.php | 36 ---- week-6/record-store-app/README.txt | 22 -- .../record-store-app/includes/db_connect.php | 18 -- week-6/record-store-app/index.php | 50 ----- week-6/record-store-app/sql/dummy_data.sql | 51 ----- .../record-store-app/sql/practice_queries.sql | 9 - week-6/record-store-app/sql/record-store.sql | 62 ------ week-6/record-store-app/templates/footer.html | 2 - week-6/record-store-app/templates/header.html | 7 - .../templates/navigation.html | 8 - week-6/record-store-app/views/404.php | 10 - .../views/add-record-insecure.php | 100 --------- week-6/record-store-app/views/add-record.php | 111 ---------- week-6/record-store-app/views/artist.php | 68 ------ week-6/record-store-app/views/edit-record.php | 147 ------------- week-6/record-store-app/views/home.php | 10 - week-6/record-store-app/views/order.php | 67 ------ week-6/record-store-app/views/orders.php | 40 ---- week-6/record-store-app/views/record.php | 39 ---- week-7/record-store-app/README.txt | 12 -- week-7/record-store-app/sql/record-store.sql | 66 ------ week-8/record-store-app/README.txt | 27 --- .../record-store-app/includes/db_connect.php | 18 -- week-8/record-store-app/index.php | 50 ----- week-8/record-store-app/sql/dummy_data.sql | 67 ------ .../record-store-app/sql/practice_queries.sql | 9 - week-8/record-store-app/sql/record-store.sql | 71 ------ week-8/record-store-app/templates/footer.html | 2 - week-8/record-store-app/templates/header.html | 7 - .../templates/navigation.html | 8 - week-8/record-store-app/views/404.php | 10 - .../views/add-record-insecure.php | 100 --------- week-8/record-store-app/views/add-record.php | 125 ----------- week-8/record-store-app/views/artist.php | 68 ------ week-8/record-store-app/views/home.php | 10 - week-8/record-store-app/views/order.php | 67 ------ week-8/record-store-app/views/orders.php | 40 ---- week-8/record-store-app/views/record.php | 42 ---- week-9/sharr003_dump.sql | 203 ------------------ 339 files changed, 10212 deletions(-) delete mode 100644 coursework-blog/step-1/admin.php delete mode 100644 coursework-blog/step-1/controllers/admin/editor.php delete mode 100644 coursework-blog/step-1/controllers/admin/entries.php delete mode 100644 coursework-blog/step-1/coursework-blog.sql delete mode 100644 coursework-blog/step-1/css/blog.css delete mode 100644 coursework-blog/step-1/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-1/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-1/views/admin/editor-html.php delete mode 100644 coursework-blog/step-1/views/admin/entries-html.php delete mode 100644 coursework-blog/step-1/views/footer.php delete mode 100644 coursework-blog/step-1/views/header.php delete mode 100644 coursework-blog/step-10/admin.php delete mode 100644 coursework-blog/step-10/controllers/admin/editor.php delete mode 100644 coursework-blog/step-10/controllers/admin/entries.php delete mode 100644 coursework-blog/step-10/controllers/admin/users.php delete mode 100644 coursework-blog/step-10/controllers/blog.php delete mode 100644 coursework-blog/step-10/coursework-blog.sql delete mode 100644 coursework-blog/step-10/css/blog.css delete mode 100644 coursework-blog/step-10/index.php delete mode 100644 coursework-blog/step-10/models/Admin_Table.class.php delete mode 100644 coursework-blog/step-10/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-10/models/Table.class.php delete mode 100644 coursework-blog/step-10/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-10/views/admin/editor-html.php delete mode 100644 coursework-blog/step-10/views/admin/entries-html.php delete mode 100644 coursework-blog/step-10/views/admin/new-admin-form-html.php delete mode 100644 coursework-blog/step-10/views/entry-html.php delete mode 100644 coursework-blog/step-10/views/footer.php delete mode 100644 coursework-blog/step-10/views/header.php delete mode 100644 coursework-blog/step-10/views/list-entries-html.php delete mode 100644 coursework-blog/step-11/admin.php delete mode 100644 coursework-blog/step-11/controllers/admin/editor.php delete mode 100644 coursework-blog/step-11/controllers/admin/entries.php delete mode 100644 coursework-blog/step-11/controllers/admin/login.php delete mode 100644 coursework-blog/step-11/controllers/admin/users.php delete mode 100644 coursework-blog/step-11/controllers/blog.php delete mode 100644 coursework-blog/step-11/coursework-blog.sql delete mode 100644 coursework-blog/step-11/css/blog.css delete mode 100644 coursework-blog/step-11/index.php delete mode 100644 coursework-blog/step-11/models/Admin_Table.class.php delete mode 100644 coursework-blog/step-11/models/Admin_User.class.php delete mode 100644 coursework-blog/step-11/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-11/models/Table.class.php delete mode 100644 coursework-blog/step-11/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-11/views/admin/editor-html.php delete mode 100644 coursework-blog/step-11/views/admin/entries-html.php delete mode 100644 coursework-blog/step-11/views/admin/login-form-html.php delete mode 100644 coursework-blog/step-11/views/admin/logout-form-html.php delete mode 100644 coursework-blog/step-11/views/admin/new-admin-form-html.php delete mode 100644 coursework-blog/step-11/views/entry-html.php delete mode 100644 coursework-blog/step-11/views/footer.php delete mode 100644 coursework-blog/step-11/views/header.php delete mode 100644 coursework-blog/step-11/views/list-entries-html.php delete mode 100644 coursework-blog/step-2/admin.php delete mode 100644 coursework-blog/step-2/controllers/admin/editor.php delete mode 100644 coursework-blog/step-2/controllers/admin/entries.php delete mode 100644 coursework-blog/step-2/coursework-blog.sql delete mode 100644 coursework-blog/step-2/css/blog.css delete mode 100644 coursework-blog/step-2/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-2/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-2/views/admin/editor-html.php delete mode 100644 coursework-blog/step-2/views/admin/entries-html.php delete mode 100644 coursework-blog/step-2/views/footer.php delete mode 100644 coursework-blog/step-2/views/header.php delete mode 100644 coursework-blog/step-3/admin.php delete mode 100644 coursework-blog/step-3/controllers/admin/editor.php delete mode 100644 coursework-blog/step-3/controllers/admin/entries.php delete mode 100644 coursework-blog/step-3/controllers/blog.php delete mode 100644 coursework-blog/step-3/coursework-blog.sql delete mode 100644 coursework-blog/step-3/css/blog.css delete mode 100644 coursework-blog/step-3/index.php delete mode 100644 coursework-blog/step-3/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-3/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-3/views/admin/editor-html.php delete mode 100644 coursework-blog/step-3/views/admin/entries-html.php delete mode 100644 coursework-blog/step-3/views/footer.php delete mode 100644 coursework-blog/step-3/views/header.php delete mode 100644 coursework-blog/step-3/views/list-entries-html.php delete mode 100644 coursework-blog/step-4/admin.php delete mode 100644 coursework-blog/step-4/controllers/admin/editor.php delete mode 100644 coursework-blog/step-4/controllers/admin/entries.php delete mode 100644 coursework-blog/step-4/controllers/blog.php delete mode 100644 coursework-blog/step-4/coursework-blog.sql delete mode 100644 coursework-blog/step-4/css/blog.css delete mode 100644 coursework-blog/step-4/index.php delete mode 100644 coursework-blog/step-4/models/.Blog_Entry_Table.class.php.swp delete mode 100644 coursework-blog/step-4/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-4/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-4/views/admin/editor-html.php delete mode 100644 coursework-blog/step-4/views/admin/entries-html.php delete mode 100644 coursework-blog/step-4/views/entry-html.php delete mode 100644 coursework-blog/step-4/views/footer.php delete mode 100644 coursework-blog/step-4/views/header.php delete mode 100644 coursework-blog/step-4/views/list-entries-html.php delete mode 100644 coursework-blog/step-5/admin.php delete mode 100644 coursework-blog/step-5/controllers/admin/editor.php delete mode 100644 coursework-blog/step-5/controllers/admin/entries.php delete mode 100644 coursework-blog/step-5/controllers/blog.php delete mode 100644 coursework-blog/step-5/coursework-blog.sql delete mode 100644 coursework-blog/step-5/css/blog.css delete mode 100644 coursework-blog/step-5/index.php delete mode 100644 coursework-blog/step-5/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-5/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-5/views/admin/editor-html.php delete mode 100644 coursework-blog/step-5/views/admin/entries-html.php delete mode 100644 coursework-blog/step-5/views/entry-html.php delete mode 100644 coursework-blog/step-5/views/footer.php delete mode 100644 coursework-blog/step-5/views/header.php delete mode 100644 coursework-blog/step-5/views/list-entries-html.php delete mode 100644 coursework-blog/step-6/admin.php delete mode 100644 coursework-blog/step-6/controllers/admin/editor.php delete mode 100644 coursework-blog/step-6/controllers/admin/entries.php delete mode 100644 coursework-blog/step-6/controllers/blog.php delete mode 100644 coursework-blog/step-6/coursework-blog.sql delete mode 100644 coursework-blog/step-6/css/blog.css delete mode 100644 coursework-blog/step-6/index.php delete mode 100644 coursework-blog/step-6/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-6/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-6/views/admin/editor-html.php delete mode 100644 coursework-blog/step-6/views/admin/entries-html.php delete mode 100644 coursework-blog/step-6/views/entry-html.php delete mode 100644 coursework-blog/step-6/views/footer.php delete mode 100644 coursework-blog/step-6/views/header.php delete mode 100644 coursework-blog/step-6/views/list-entries-html.php delete mode 100644 coursework-blog/step-7/admin.php delete mode 100644 coursework-blog/step-7/controllers/admin/editor.php delete mode 100644 coursework-blog/step-7/controllers/admin/entries.php delete mode 100644 coursework-blog/step-7/controllers/blog.php delete mode 100644 coursework-blog/step-7/coursework-blog.sql delete mode 100644 coursework-blog/step-7/css/blog.css delete mode 100644 coursework-blog/step-7/index.php delete mode 100644 coursework-blog/step-7/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-7/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-7/views/admin/editor-html.php delete mode 100644 coursework-blog/step-7/views/admin/entries-html.php delete mode 100644 coursework-blog/step-7/views/entry-html.php delete mode 100644 coursework-blog/step-7/views/footer.php delete mode 100644 coursework-blog/step-7/views/header.php delete mode 100644 coursework-blog/step-7/views/list-entries-html.php delete mode 100644 coursework-blog/step-8/admin.php delete mode 100644 coursework-blog/step-8/controllers/admin/editor.php delete mode 100644 coursework-blog/step-8/controllers/admin/entries.php delete mode 100644 coursework-blog/step-8/controllers/blog.php delete mode 100644 coursework-blog/step-8/coursework-blog.sql delete mode 100644 coursework-blog/step-8/css/blog.css delete mode 100644 coursework-blog/step-8/index.php delete mode 100644 coursework-blog/step-8/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-8/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-8/views/admin/editor-html.php delete mode 100644 coursework-blog/step-8/views/admin/entries-html.php delete mode 100644 coursework-blog/step-8/views/entry-html.php delete mode 100644 coursework-blog/step-8/views/footer.php delete mode 100644 coursework-blog/step-8/views/header.php delete mode 100644 coursework-blog/step-8/views/list-entries-html.php delete mode 100644 coursework-blog/step-9/admin.php delete mode 100644 coursework-blog/step-9/controllers/admin/editor.php delete mode 100644 coursework-blog/step-9/controllers/admin/entries.php delete mode 100644 coursework-blog/step-9/controllers/blog.php delete mode 100644 coursework-blog/step-9/coursework-blog.sql delete mode 100644 coursework-blog/step-9/css/blog.css delete mode 100644 coursework-blog/step-9/index.php delete mode 100644 coursework-blog/step-9/models/Blog_Entry_Table.class.php delete mode 100644 coursework-blog/step-9/views/admin/admin-navigation.php delete mode 100644 coursework-blog/step-9/views/admin/editor-html.php delete mode 100644 coursework-blog/step-9/views/admin/entries-html.php delete mode 100644 coursework-blog/step-9/views/entry-html.php delete mode 100644 coursework-blog/step-9/views/footer.php delete mode 100644 coursework-blog/step-9/views/header.php delete mode 100644 coursework-blog/step-9/views/list-entries-html.php delete mode 100644 week-1/test_app/README.txt delete mode 100644 week-1/test_app/includes/functions.php delete mode 100755 week-1/test_app/index.php delete mode 100755 week-1/test_app/views/404.php delete mode 100644 week-1/test_app/views/home.php delete mode 100755 week-1/test_app/views/page_2.php delete mode 100644 week-12/README.txt delete mode 100644 week-12/includes/db_connect.php delete mode 100644 week-12/index.php delete mode 100644 week-12/sql/dummy_data.sql delete mode 100644 week-12/sql/practice_queries.sql delete mode 100644 week-12/sql/record-store.sql delete mode 100644 week-12/sql/recordstore-dump.sql delete mode 100644 week-12/templates/footer.html delete mode 100644 week-12/templates/header.html delete mode 100644 week-12/templates/navigation.html delete mode 100644 week-12/uploads/2009-a32-08-05-adorno-b.jpg delete mode 100644 week-12/uploads/avatar 1.jpg delete mode 100644 week-12/uploads/avatar 2 06_mask-2 square.jpg delete mode 100644 week-12/uploads/je-participe.gif delete mode 100644 week-12/uploads/think of this as a window.jpg delete mode 100644 week-12/views/404.php delete mode 100644 week-12/views/add-record-insecure.php delete mode 100644 week-12/views/add-record.php delete mode 100644 week-12/views/artist.php delete mode 100644 week-12/views/home.php delete mode 100644 week-12/views/order.php delete mode 100644 week-12/views/orders.php delete mode 100644 week-12/views/record.php delete mode 100644 week-12/views/search.php delete mode 100644 week-13/README.txt delete mode 100644 week-13/admin/index.php delete mode 100644 week-13/admin/views/404.php delete mode 100644 week-13/admin/views/add-record.php delete mode 100644 week-13/admin/views/artist.php delete mode 100644 week-13/admin/views/home.php delete mode 100644 week-13/admin/views/login.php delete mode 100644 week-13/admin/views/logout.php delete mode 100644 week-13/admin/views/navigation.html delete mode 100644 week-13/admin/views/order.php delete mode 100644 week-13/admin/views/orders.php delete mode 100644 week-13/admin/views/record.php delete mode 100644 week-13/admin/views/search.php delete mode 100644 week-13/includes/db_connect.php delete mode 100644 week-13/includes/functions.php delete mode 100644 week-13/index.php delete mode 100644 week-13/sql/dummy_data.sql delete mode 100644 week-13/sql/practice_queries.sql delete mode 100644 week-13/sql/record-store.sql delete mode 100644 week-13/sql/recordstore-dump.sql delete mode 100644 week-13/sql/recordstore-dump2.sql delete mode 100644 week-13/sql/user-table.sql delete mode 100644 week-13/templates/footer.html delete mode 100644 week-13/templates/header.html delete mode 100644 week-13/templates/navigation.html delete mode 100644 week-13/uploads/2009-a32-08-05-adorno-b.jpg delete mode 100644 week-13/uploads/avatar 1.jpg delete mode 100644 week-13/uploads/je-participe.gif delete mode 100644 week-13/uploads/man-ray-iron-A.gif delete mode 100644 week-13/uploads/think of this as a window.jpg delete mode 100644 week-13/views/404.php delete mode 100644 week-13/views/add-record-insecure.php delete mode 100644 week-13/views/add-record.php delete mode 100644 week-13/views/artist.php delete mode 100644 week-13/views/home.php delete mode 100644 week-13/views/order.php delete mode 100644 week-13/views/orders.php delete mode 100644 week-13/views/record.php delete mode 100644 week-13/views/search.php delete mode 100644 week-15/database-class/config.php delete mode 100644 week-15/database-class/database.class.php delete mode 100644 week-15/database-class/index.php delete mode 100644 week-15/image-upload/classes/Uploader.class.php delete mode 100644 week-15/image-upload/css/layout.css delete mode 100644 week-15/image-upload/css/navigation.css delete mode 100644 week-15/image-upload/img/2009-a32-08-05-adorno-b.jpg delete mode 100644 week-15/image-upload/index.php delete mode 100644 week-15/image-upload/templates/footer.php delete mode 100644 week-15/image-upload/templates/header.php delete mode 100644 week-15/image-upload/views/gallery.php delete mode 100644 week-15/image-upload/views/navigation.php delete mode 100644 week-15/image-upload/views/upload.php delete mode 100644 week-15/simple-classes/Rectangle.php delete mode 100644 week-15/simple-classes/Rectangle1.php delete mode 100644 week-15/simple-classes/Rectangle2.php delete mode 100644 week-15/simple-classes/cat.class.php delete mode 100644 week-15/simple-classes/dog.class.php delete mode 100644 week-15/simple-classes/pet.class.php delete mode 100644 week-15/simple-classes/pets1.php delete mode 100644 week-15/simple-classes/pets2.php delete mode 100644 week-15/simple-classes/pets3.php delete mode 100644 week-15/simple-classes/pets4.php delete mode 100644 week-15/simple-classes/rectangle1.php delete mode 100644 week-15/simple-classes/rectangle2.php delete mode 100644 week-2/record-store-app/sql/dummy_data.sql delete mode 100644 week-2/record-store-app/sql/practice_queries.sql delete mode 100644 week-2/record-store-app/sql/record-store.sql delete mode 100644 week-3/record-store-app/artist.php delete mode 100644 week-3/record-store-app/index.php delete mode 100644 week-3/record-store-app/sql/dummy_data.sql delete mode 100644 week-3/record-store-app/sql/practice_queries.sql delete mode 100644 week-3/record-store-app/sql/record-store.sql delete mode 100644 week-4/record-store-app/README.txt delete mode 100644 week-4/record-store-app/includes/db_connect.php delete mode 100644 week-4/record-store-app/index.php delete mode 100644 week-4/record-store-app/sql/dummy_data.sql delete mode 100644 week-4/record-store-app/sql/practice_queries.sql delete mode 100644 week-4/record-store-app/sql/record-store.sql delete mode 100644 week-4/record-store-app/templates/footer.html delete mode 100644 week-4/record-store-app/templates/header.html delete mode 100644 week-4/record-store-app/templates/navigation.html delete mode 100644 week-4/record-store-app/views/404.php delete mode 100644 week-4/record-store-app/views/artist.php delete mode 100644 week-4/record-store-app/views/home.php delete mode 100644 week-4/record-store-app/views/record.php delete mode 100644 week-5/record-store-app/README.txt delete mode 100644 week-5/record-store-app/includes/db_connect.php delete mode 100644 week-5/record-store-app/index.php delete mode 100644 week-5/record-store-app/sql/dummy_data.sql delete mode 100644 week-5/record-store-app/sql/practice_queries.sql delete mode 100644 week-5/record-store-app/sql/record-store.sql delete mode 100644 week-5/record-store-app/templates/footer.html delete mode 100644 week-5/record-store-app/templates/header.html delete mode 100644 week-5/record-store-app/templates/navigation.html delete mode 100644 week-5/record-store-app/views/404.php delete mode 100644 week-5/record-store-app/views/artist.php delete mode 100644 week-5/record-store-app/views/home.php delete mode 100644 week-5/record-store-app/views/order.php delete mode 100644 week-5/record-store-app/views/order_example.php delete mode 100644 week-5/record-store-app/views/orders.php delete mode 100644 week-5/record-store-app/views/orders_example.php delete mode 100644 week-5/record-store-app/views/record.php delete mode 100644 week-6/record-store-app/README.txt delete mode 100644 week-6/record-store-app/includes/db_connect.php delete mode 100644 week-6/record-store-app/index.php delete mode 100644 week-6/record-store-app/sql/dummy_data.sql delete mode 100644 week-6/record-store-app/sql/practice_queries.sql delete mode 100644 week-6/record-store-app/sql/record-store.sql delete mode 100644 week-6/record-store-app/templates/footer.html delete mode 100644 week-6/record-store-app/templates/header.html delete mode 100644 week-6/record-store-app/templates/navigation.html delete mode 100644 week-6/record-store-app/views/404.php delete mode 100644 week-6/record-store-app/views/add-record-insecure.php delete mode 100644 week-6/record-store-app/views/add-record.php delete mode 100644 week-6/record-store-app/views/artist.php delete mode 100644 week-6/record-store-app/views/edit-record.php delete mode 100644 week-6/record-store-app/views/home.php delete mode 100644 week-6/record-store-app/views/order.php delete mode 100644 week-6/record-store-app/views/orders.php delete mode 100644 week-6/record-store-app/views/record.php delete mode 100644 week-7/record-store-app/README.txt delete mode 100644 week-7/record-store-app/sql/record-store.sql delete mode 100644 week-8/record-store-app/README.txt delete mode 100644 week-8/record-store-app/includes/db_connect.php delete mode 100644 week-8/record-store-app/index.php delete mode 100644 week-8/record-store-app/sql/dummy_data.sql delete mode 100644 week-8/record-store-app/sql/practice_queries.sql delete mode 100644 week-8/record-store-app/sql/record-store.sql delete mode 100644 week-8/record-store-app/templates/footer.html delete mode 100644 week-8/record-store-app/templates/header.html delete mode 100644 week-8/record-store-app/templates/navigation.html delete mode 100644 week-8/record-store-app/views/404.php delete mode 100644 week-8/record-store-app/views/add-record-insecure.php delete mode 100644 week-8/record-store-app/views/add-record.php delete mode 100644 week-8/record-store-app/views/artist.php delete mode 100644 week-8/record-store-app/views/home.php delete mode 100644 week-8/record-store-app/views/order.php delete mode 100644 week-8/record-store-app/views/orders.php delete mode 100644 week-8/record-store-app/views/record.php delete mode 100644 week-9/sharr003_dump.sql diff --git a/coursework-blog/step-1/admin.php b/coursework-blog/step-1/admin.php deleted file mode 100644 index f20b87a..0000000 --- a/coursework-blog/step-1/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include '../../../config.php'; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-1/controllers/admin/editor.php b/coursework-blog/step-1/controllers/admin/editor.php deleted file mode 100644 index a4eb8bf..0000000 --- a/coursework-blog/step-1/controllers/admin/editor.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - //was "save" button clicked - $insertNewEntry = ( $buttonClicked === 'save' ); - - if ( $insertNewEntry ) { - $title = $_POST['title']; - $entry = $_POST['entry']; - //save the new entry - $entryTable->saveEntry( $title, $entry ); - } -} - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-1/controllers/admin/entries.php b/coursework-blog/step-1/controllers/admin/entries.php deleted file mode 100644 index 969eed6..0000000 --- a/coursework-blog/step-1/controllers/admin/entries.php +++ /dev/null @@ -1,5 +0,0 @@ -<? - -echo "here's the entries!"; - -?> diff --git a/coursework-blog/step-1/coursework-blog.sql b/coursework-blog/step-1/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-1/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-1/css/blog.css b/coursework-blog/step-1/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-1/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-1/models/Blog_Entry_Table.class.php b/coursework-blog/step-1/models/Blog_Entry_Table.class.php deleted file mode 100644 index 0cabf4b..0000000 --- a/coursework-blog/step-1/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) - VALUES ( ?, ?)"; - $entryStatement = $this->db->prepare( $entrySQL ); - $formData = array( $title, $entry ); - try{ - $entryStatement->execute( $formData ); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - } - -} diff --git a/coursework-blog/step-1/views/admin/admin-navigation.php b/coursework-blog/step-1/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-1/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-1/views/admin/editor-html.php b/coursework-blog/step-1/views/admin/editor-html.php deleted file mode 100644 index 7147675..0000000 --- a/coursework-blog/step-1/views/admin/editor-html.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' /> - - <label>Entry</label> - <textarea name='entry'></textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='save' /> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-1/views/admin/entries-html.php b/coursework-blog/step-1/views/admin/entries-html.php deleted file mode 100644 index 6814024..0000000 --- a/coursework-blog/step-1/views/admin/entries-html.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-1/views/footer.php b/coursework-blog/step-1/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-1/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-1/views/header.php b/coursework-blog/step-1/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-1/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-10/admin.php b/coursework-blog/step-10/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-10/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-10/controllers/admin/editor.php b/coursework-blog/step-10/controllers/admin/editor.php deleted file mode 100644 index bb87c09..0000000 --- a/coursework-blog/step-10/controllers/admin/editor.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -include_once "models/Table.class.php"; -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - $id = $_POST['id']; - $save = ($buttonClicked === 'save'); - $insertNewEntry = ( $save and $id === '0' ); - $updateEntry = ( $save and $insertNewEntry === false ); - $deleteEntry = ($buttonClicked === 'delete'); - - $title = $_POST['title']; - $entry = $_POST['entry']; - - if ( $insertNewEntry ) { - $savedEntryId = $entryTable->saveEntry( $title, $entry ); - } else if ( $updateEntry ){ - $entryTable->updateEntry( $id, $title, $entry ); - $savedEntryId = $id; - } else if ( $deleteEntry ) { - $entryTable->deleteEntry( $id ); - } -} - -$entryRequested = isset( $_GET['id'] ); -$entrySaved = isset( $savedEntryId ); - -if ( $entryRequested ) { - $id = $_GET['id']; - $entryData = $entryTable->getEntry( $id ); - $entryData->entry_id = $id; - $entryData->message = ""; -} else if ( $entrySaved ) { - $entryData = $entryTable->getEntry( $savedEntryId ); - $entryData->message = "Entry was saved"; -} else { - $entryData = new StdClass(); - $entryData->entry_id = 0; - $entryData->title = ""; - $entryData->entry_text = ""; - $entryData->message = ""; -} - - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-10/controllers/admin/entries.php b/coursework-blog/step-10/controllers/admin/entries.php deleted file mode 100644 index 921d494..0000000 --- a/coursework-blog/step-10/controllers/admin/entries.php +++ /dev/null @@ -1,11 +0,0 @@ -<? - -include_once "models/Table.class.php"; -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-10/controllers/admin/users.php b/coursework-blog/step-10/controllers/admin/users.php deleted file mode 100644 index 29516cf..0000000 --- a/coursework-blog/step-10/controllers/admin/users.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -include_once "models/Table.class.php"; -include_once "models/Admin_Table.class.php"; - -$createNewAdmin = isset( $_POST['new-admin'] ); - -if( $createNewAdmin ) { - - $newEmail = $_POST['email']; - $newPassword = $_POST['password']; - $adminTable = new Admin_Table($db); - - try { - $adminTable->create( $newEmail, $newPassword ); - $adminFormMessage = "New user created"; - } catch ( Exception $e ) { - $adminFormMessage = $e->getMessage(); - } -} - -include_once "views/admin/new-admin-form-html.php"; diff --git a/coursework-blog/step-10/controllers/blog.php b/coursework-blog/step-10/controllers/blog.php deleted file mode 100644 index c675c8f..0000000 --- a/coursework-blog/step-10/controllers/blog.php +++ /dev/null @@ -1,17 +0,0 @@ -<? -include_once "models/Table.class.php"; -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - -$entryClicked = isset( $_GET['id'] ); -if ($entryClicked ) { - $entryId = $_GET['id']; - $entryData = $entryTable->getEntry( $entryId ); -// print_r($entryData); - include_once "views/entry-html.php"; -} else { - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; -} -?> diff --git a/coursework-blog/step-10/coursework-blog.sql b/coursework-blog/step-10/coursework-blog.sql deleted file mode 100644 index d9006b2..0000000 --- a/coursework-blog/step-10/coursework-blog.sql +++ /dev/null @@ -1,16 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) - --- this will create a table for admin users -CREATE TABLE admin ( - admin_id INT NOT NULL AUTO_INCREMENT, - email TEXT, - password VARCHAR( 32 ), - PRIMARY KEY ( admin_id ) -) diff --git a/coursework-blog/step-10/css/blog.css b/coursework-blog/step-10/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-10/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-10/index.php b/coursework-blog/step-10/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-10/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-10/models/Admin_Table.class.php b/coursework-blog/step-10/models/Admin_Table.class.php deleted file mode 100644 index dd52931..0000000 --- a/coursework-blog/step-10/models/Admin_Table.class.php +++ /dev/null @@ -1,25 +0,0 @@ -<? - -class Admin_Table extends Table { - - public function create ( $email, $password ) { - //check if e-mail is available - $this->checkEmail( $email ); - //encrypt password with MD5 - $sql = "INSERT INTO admin ( email, password ) - VALUES( ?, SHA1(?) )"; - $data= array( $email, $password ); - $this->makeStatement( $sql, $data ); - } - - private function checkEmail ($email) { - $sql = "SELECT email FROM admin WHERE email = ?"; - $data = array( $email ); - $this->makeStatement( $sql, $data ); - $statement = $this->makeStatement( $sql, $data ); - if ( $statement->rowCount() === 1 ) { - $e = new Exception("Error: '$email' already used!"); - throw $e; - } - } -} diff --git a/coursework-blog/step-10/models/Blog_Entry_Table.class.php b/coursework-blog/step-10/models/Blog_Entry_Table.class.php deleted file mode 100644 index 9a6c81a..0000000 --- a/coursework-blog/step-10/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -class Blog_Entry_Table extends Table { - - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) VALUES ( ?, ?)"; - $formData = array( $title, $entry ); - $entryStatement = $this->makeStatement( $entrySQL, $formData ); - return $this->db->lastInsertId(); - } - - public function getAllEntries () { - $sql = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->makeStatement($sql); - return $statement; - } - - - public function getEntry( $id ){ - $sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?"; - $data = array($id); - $statement = $this->makeStatement( $sql, $data); - $model = $statement->fetchObject(); - return $model; - } - - public function updateEntry ( $id, $title, $entry) { - $sql = "UPDATE blog_entry - SET title = ?, - entry_text = ? - WHERE entry_id = ?"; - $data = array( $title, $entry, $id ); - $statement = $this->makeStatement( $sql, $data) ; - return $statement; - } - - public function deleteEntry ( $id ) { - $sql = "DELETE FROM blog_entry WHERE entry_id = ?"; - $data = array( $id ); - $statement = $this->makeStatement( $sql, $data ); - } - -} - -?> diff --git a/coursework-blog/step-10/models/Table.class.php b/coursework-blog/step-10/models/Table.class.php deleted file mode 100644 index 0f5eaf1..0000000 --- a/coursework-blog/step-10/models/Table.class.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -class Table { - protected $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function makeStatement( $sql, $data = NULL) { - $statement = $this->db->prepare( $sql ); - try{ - $statement->execute( $data ); - } catch (Exception $e) { - $exceptionMessage = "<p>You tried to run this sql: $sql <p> - <p>Exception: $e</p>"; - trigger_error($exceptionMessage); - } - return $statement; - } - -} diff --git a/coursework-blog/step-10/views/admin/admin-navigation.php b/coursework-blog/step-10/views/admin/admin-navigation.php deleted file mode 100644 index 05a639e..0000000 --- a/coursework-blog/step-10/views/admin/admin-navigation.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> - <a href='admin.php?page=users'>Create admin user</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-10/views/admin/editor-html.php b/coursework-blog/step-10/views/admin/editor-html.php deleted file mode 100644 index e614941..0000000 --- a/coursework-blog/step-10/views/admin/editor-html.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <input type='hidden' name='id' value='$entryData->entry_id' /> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' value='$entryData->title' required /> - - <label>Entry</label> - <textarea name='entry'>$entryData->entry_text</textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='delete' /> - <input type='submit' name='action' value='save' /> - <p id='editor-message'>$entryData->message</p> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-10/views/admin/entries-html.php b/coursework-blog/step-10/views/admin/entries-html.php deleted file mode 100644 index 2097a76..0000000 --- a/coursework-blog/step-10/views/admin/entries-html.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -if ( isset( $allEntries ) === false ) { -trigger_error('views/admin/entries-html.php needs $allEntries'); -} - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-10/views/admin/new-admin-form-html.php b/coursework-blog/step-10/views/admin/new-admin-form-html.php deleted file mode 100644 index 71cb6f2..0000000 --- a/coursework-blog/step-10/views/admin/new-admin-form-html.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -//complete code for views/admin/new-admin-form-html.php -if( isset($adminFormMessage) === false ) { - $adminFormMessage = ""; -} - -$out = "<form method='post' action='admin.php?page=users'> - <fieldset> - <legend>Create new admin user</legend> - <label>e-mail</label> - <input type='text' name='email' required/> - <label>password</label> - <input type='password' name='password' required/> - <input type='submit' value='create user' name='new-admin'/> - </fieldset> - <p id='admin-form-message'>$adminFormMessage</p> -</form>"; - -echo $out; - - diff --git a/coursework-blog/step-10/views/entry-html.php b/coursework-blog/step-10/views/entry-html.php deleted file mode 100644 index 44c629f..0000000 --- a/coursework-blog/step-10/views/entry-html.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -//check if required data is available -$entryDataFound = isset( $entryData ); -if ( $entryDataFound === false ) { - trigger_error('views/entry-html.php needs an $entryData object'); -} -//properties available in $entry: entry_id, title, entry_text, date_created - -echo "<article> - <h1>$entryData->title</h1> - <div class='date'>$entryData->date_created</div> - $entryData->entry_text -</article>"; diff --git a/coursework-blog/step-10/views/footer.php b/coursework-blog/step-10/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-10/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-10/views/header.php b/coursework-blog/step-10/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-10/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-10/views/list-entries-html.php b/coursework-blog/step-10/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-10/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/coursework-blog/step-11/admin.php b/coursework-blog/step-11/admin.php deleted file mode 100644 index f538ad8..0000000 --- a/coursework-blog/step-11/admin.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; - -include_once "models/Table.class.php"; -include_once "models/Admin_User.class.php"; -$admin = new Admin_User(); - -include_once "controllers/admin/login.php"; - -if( $admin->isLoggedIn() ) { - include_once "views/admin/admin-navigation.php"; - - $navigation = isset( $_GET['page'] ); - if ( $navigation ) { - $contrl = $_GET['page']; - } else { - $contrl = "entries"; - } - include_once "controllers/admin/$contrl.php"; - include_once "views/admin/logout-form-html.php"; -} -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-11/controllers/admin/editor.php b/coursework-blog/step-11/controllers/admin/editor.php deleted file mode 100644 index bb87c09..0000000 --- a/coursework-blog/step-11/controllers/admin/editor.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -include_once "models/Table.class.php"; -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - $id = $_POST['id']; - $save = ($buttonClicked === 'save'); - $insertNewEntry = ( $save and $id === '0' ); - $updateEntry = ( $save and $insertNewEntry === false ); - $deleteEntry = ($buttonClicked === 'delete'); - - $title = $_POST['title']; - $entry = $_POST['entry']; - - if ( $insertNewEntry ) { - $savedEntryId = $entryTable->saveEntry( $title, $entry ); - } else if ( $updateEntry ){ - $entryTable->updateEntry( $id, $title, $entry ); - $savedEntryId = $id; - } else if ( $deleteEntry ) { - $entryTable->deleteEntry( $id ); - } -} - -$entryRequested = isset( $_GET['id'] ); -$entrySaved = isset( $savedEntryId ); - -if ( $entryRequested ) { - $id = $_GET['id']; - $entryData = $entryTable->getEntry( $id ); - $entryData->entry_id = $id; - $entryData->message = ""; -} else if ( $entrySaved ) { - $entryData = $entryTable->getEntry( $savedEntryId ); - $entryData->message = "Entry was saved"; -} else { - $entryData = new StdClass(); - $entryData->entry_id = 0; - $entryData->title = ""; - $entryData->entry_text = ""; - $entryData->message = ""; -} - - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-11/controllers/admin/entries.php b/coursework-blog/step-11/controllers/admin/entries.php deleted file mode 100644 index 921d494..0000000 --- a/coursework-blog/step-11/controllers/admin/entries.php +++ /dev/null @@ -1,11 +0,0 @@ -<? - -include_once "models/Table.class.php"; -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-11/controllers/admin/login.php b/coursework-blog/step-11/controllers/admin/login.php deleted file mode 100644 index 83a7aba..0000000 --- a/coursework-blog/step-11/controllers/admin/login.php +++ /dev/null @@ -1,26 +0,0 @@ -<? -include_once "models/Admin_Table.class.php"; - -$loginFormSubmitted = isset( $_POST['log-in'] ); -if( $loginFormSubmitted ) { - $email = $_POST['email']; - $password = $_POST['password']; - - $adminTable = new Admin_Table( $db ); - try { - $adminTable->checkCredentials( $email, $password ); - $admin->login(); - } catch ( Exception $e ) { - echo $e->getMessage(); - } - -} - -$loggingOut = isset ( $_POST['logout'] ); -if ( $loggingOut ){ - $admin->logout(); -} - -if (!$admin->isLoggedIn() ) { - include_once "views/admin/login-form-html.php"; -} diff --git a/coursework-blog/step-11/controllers/admin/users.php b/coursework-blog/step-11/controllers/admin/users.php deleted file mode 100644 index 29516cf..0000000 --- a/coursework-blog/step-11/controllers/admin/users.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -include_once "models/Table.class.php"; -include_once "models/Admin_Table.class.php"; - -$createNewAdmin = isset( $_POST['new-admin'] ); - -if( $createNewAdmin ) { - - $newEmail = $_POST['email']; - $newPassword = $_POST['password']; - $adminTable = new Admin_Table($db); - - try { - $adminTable->create( $newEmail, $newPassword ); - $adminFormMessage = "New user created"; - } catch ( Exception $e ) { - $adminFormMessage = $e->getMessage(); - } -} - -include_once "views/admin/new-admin-form-html.php"; diff --git a/coursework-blog/step-11/controllers/blog.php b/coursework-blog/step-11/controllers/blog.php deleted file mode 100644 index c675c8f..0000000 --- a/coursework-blog/step-11/controllers/blog.php +++ /dev/null @@ -1,17 +0,0 @@ -<? -include_once "models/Table.class.php"; -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - -$entryClicked = isset( $_GET['id'] ); -if ($entryClicked ) { - $entryId = $_GET['id']; - $entryData = $entryTable->getEntry( $entryId ); -// print_r($entryData); - include_once "views/entry-html.php"; -} else { - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; -} -?> diff --git a/coursework-blog/step-11/coursework-blog.sql b/coursework-blog/step-11/coursework-blog.sql deleted file mode 100644 index d9006b2..0000000 --- a/coursework-blog/step-11/coursework-blog.sql +++ /dev/null @@ -1,16 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) - --- this will create a table for admin users -CREATE TABLE admin ( - admin_id INT NOT NULL AUTO_INCREMENT, - email TEXT, - password VARCHAR( 32 ), - PRIMARY KEY ( admin_id ) -) diff --git a/coursework-blog/step-11/css/blog.css b/coursework-blog/step-11/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-11/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-11/index.php b/coursework-blog/step-11/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-11/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-11/models/Admin_Table.class.php b/coursework-blog/step-11/models/Admin_Table.class.php deleted file mode 100644 index 7c873c4..0000000 --- a/coursework-blog/step-11/models/Admin_Table.class.php +++ /dev/null @@ -1,39 +0,0 @@ -<? - -class Admin_Table extends Table { - - public function create ( $email, $password ) { - $this->checkEmail( $email ); - $sql = "INSERT INTO admin ( email, password ) - VALUES( ?, SHA1(?) )"; - $data= array( $email, $password ); - $this->makeStatement( $sql, $data ); - } - - private function checkEmail ($email) { - $sql = "SELECT email FROM admin WHERE email = ?"; - $data = array( $email ); - $this->makeStatement( $sql, $data ); - $statement = $this->makeStatement( $sql, $data ); - if ( $statement->rowCount() === 1 ) { - $e = new Exception("Error: '$email' already used!"); - throw $e; - } - } - - public function checkCredentials ( $email, $password ){ - $sql = "SELECT email FROM admin - WHERE email = ? AND password = SHA1(?)"; - $data = array($email, $password); - $statement = $this->makeStatement( $sql, $data ); - if ( $statement->rowCount() === 1 ) { - $out = true; - } else { - $loginProblem = new Exception( "login failed!" ); - throw $loginProblem; - } - return $out; - } - - -} diff --git a/coursework-blog/step-11/models/Admin_User.class.php b/coursework-blog/step-11/models/Admin_User.class.php deleted file mode 100644 index a6c2ba8..0000000 --- a/coursework-blog/step-11/models/Admin_User.class.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -class Admin_User { - public function __construct(){ - session_start(); - } - - public function isLoggedIn(){ - $sessionIsSet = isset( $_SESSION['logged_in'] ); - if ( $sessionIsSet ) { - $out = $_SESSION['logged_in']; - } else { - $out = false; - } - return $out; - } - - public function login () { - $_SESSION['logged_in'] = true; - } - - public function logout () { - $_SESSION['logged_in'] = false; - } - -} diff --git a/coursework-blog/step-11/models/Blog_Entry_Table.class.php b/coursework-blog/step-11/models/Blog_Entry_Table.class.php deleted file mode 100644 index 9a6c81a..0000000 --- a/coursework-blog/step-11/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -class Blog_Entry_Table extends Table { - - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) VALUES ( ?, ?)"; - $formData = array( $title, $entry ); - $entryStatement = $this->makeStatement( $entrySQL, $formData ); - return $this->db->lastInsertId(); - } - - public function getAllEntries () { - $sql = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->makeStatement($sql); - return $statement; - } - - - public function getEntry( $id ){ - $sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?"; - $data = array($id); - $statement = $this->makeStatement( $sql, $data); - $model = $statement->fetchObject(); - return $model; - } - - public function updateEntry ( $id, $title, $entry) { - $sql = "UPDATE blog_entry - SET title = ?, - entry_text = ? - WHERE entry_id = ?"; - $data = array( $title, $entry, $id ); - $statement = $this->makeStatement( $sql, $data) ; - return $statement; - } - - public function deleteEntry ( $id ) { - $sql = "DELETE FROM blog_entry WHERE entry_id = ?"; - $data = array( $id ); - $statement = $this->makeStatement( $sql, $data ); - } - -} - -?> diff --git a/coursework-blog/step-11/models/Table.class.php b/coursework-blog/step-11/models/Table.class.php deleted file mode 100644 index 0f5eaf1..0000000 --- a/coursework-blog/step-11/models/Table.class.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -class Table { - protected $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function makeStatement( $sql, $data = NULL) { - $statement = $this->db->prepare( $sql ); - try{ - $statement->execute( $data ); - } catch (Exception $e) { - $exceptionMessage = "<p>You tried to run this sql: $sql <p> - <p>Exception: $e</p>"; - trigger_error($exceptionMessage); - } - return $statement; - } - -} diff --git a/coursework-blog/step-11/views/admin/admin-navigation.php b/coursework-blog/step-11/views/admin/admin-navigation.php deleted file mode 100644 index 05a639e..0000000 --- a/coursework-blog/step-11/views/admin/admin-navigation.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> - <a href='admin.php?page=users'>Create admin user</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-11/views/admin/editor-html.php b/coursework-blog/step-11/views/admin/editor-html.php deleted file mode 100644 index e614941..0000000 --- a/coursework-blog/step-11/views/admin/editor-html.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <input type='hidden' name='id' value='$entryData->entry_id' /> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' value='$entryData->title' required /> - - <label>Entry</label> - <textarea name='entry'>$entryData->entry_text</textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='delete' /> - <input type='submit' name='action' value='save' /> - <p id='editor-message'>$entryData->message</p> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-11/views/admin/entries-html.php b/coursework-blog/step-11/views/admin/entries-html.php deleted file mode 100644 index 2097a76..0000000 --- a/coursework-blog/step-11/views/admin/entries-html.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -if ( isset( $allEntries ) === false ) { -trigger_error('views/admin/entries-html.php needs $allEntries'); -} - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-11/views/admin/login-form-html.php b/coursework-blog/step-11/views/admin/login-form-html.php deleted file mode 100644 index 72af92a..0000000 --- a/coursework-blog/step-11/views/admin/login-form-html.php +++ /dev/null @@ -1,10 +0,0 @@ -<? -$out = " <form method='post' action='admin.php'> - <p>Login to access admin area</p> - <label>e-mail</label><input type='email' name='email' required /> - <label>password</label> - <input type='password' name='password' required /> - <input type='submit' value='login' name='log-in' /> -</form>"; - -echo $out; diff --git a/coursework-blog/step-11/views/admin/logout-form-html.php b/coursework-blog/step-11/views/admin/logout-form-html.php deleted file mode 100644 index 92192f1..0000000 --- a/coursework-blog/step-11/views/admin/logout-form-html.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -<form method='post' action='admin.php'> - <label>logged in as administrator</label> - <input type='submit' value='log out' name='logout' /> -</form>"; - -echo $out; diff --git a/coursework-blog/step-11/views/admin/new-admin-form-html.php b/coursework-blog/step-11/views/admin/new-admin-form-html.php deleted file mode 100644 index ca35f9f..0000000 --- a/coursework-blog/step-11/views/admin/new-admin-form-html.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php -if( isset($adminFormMessage) === false ) { - $adminFormMessage = ""; -} - -$out = "<form method='post' action='admin.php?page=users'> - <fieldset> - <legend>Create new admin user</legend> - <label>e-mail</label> - <input type='email' name='email' required/> - <label>password</label> - <input type='password' name='password' required/> - <input type='submit' value='create user' name='new-admin'/> - </fieldset> - <p id='admin-form-message'>$adminFormMessage</p> -</form>"; - -echo $out; - - diff --git a/coursework-blog/step-11/views/entry-html.php b/coursework-blog/step-11/views/entry-html.php deleted file mode 100644 index 44c629f..0000000 --- a/coursework-blog/step-11/views/entry-html.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -//check if required data is available -$entryDataFound = isset( $entryData ); -if ( $entryDataFound === false ) { - trigger_error('views/entry-html.php needs an $entryData object'); -} -//properties available in $entry: entry_id, title, entry_text, date_created - -echo "<article> - <h1>$entryData->title</h1> - <div class='date'>$entryData->date_created</div> - $entryData->entry_text -</article>"; diff --git a/coursework-blog/step-11/views/footer.php b/coursework-blog/step-11/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-11/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-11/views/header.php b/coursework-blog/step-11/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-11/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-11/views/list-entries-html.php b/coursework-blog/step-11/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-11/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/coursework-blog/step-2/admin.php b/coursework-blog/step-2/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-2/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-2/controllers/admin/editor.php b/coursework-blog/step-2/controllers/admin/editor.php deleted file mode 100644 index a4eb8bf..0000000 --- a/coursework-blog/step-2/controllers/admin/editor.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - //was "save" button clicked - $insertNewEntry = ( $buttonClicked === 'save' ); - - if ( $insertNewEntry ) { - $title = $_POST['title']; - $entry = $_POST['entry']; - //save the new entry - $entryTable->saveEntry( $title, $entry ); - } -} - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-2/controllers/admin/entries.php b/coursework-blog/step-2/controllers/admin/entries.php deleted file mode 100644 index adf7103..0000000 --- a/coursework-blog/step-2/controllers/admin/entries.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-2/coursework-blog.sql b/coursework-blog/step-2/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-2/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-2/css/blog.css b/coursework-blog/step-2/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-2/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-2/models/Blog_Entry_Table.class.php b/coursework-blog/step-2/models/Blog_Entry_Table.class.php deleted file mode 100644 index 6467c9f..0000000 --- a/coursework-blog/step-2/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) - VALUES ( ?, ?)"; - $entryStatement = $this->db->prepare( $entrySQL ); - $formData = array( $title, $entry ); - try{ - $entryStatement->execute( $formData ); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - } - - public function getAllEntries () { - $entrySQL = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->db->prepare( $entrySQL ); - try{ - $statement->execute(); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - return $statement; - } - - -} diff --git a/coursework-blog/step-2/views/admin/admin-navigation.php b/coursework-blog/step-2/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-2/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-2/views/admin/editor-html.php b/coursework-blog/step-2/views/admin/editor-html.php deleted file mode 100644 index 7147675..0000000 --- a/coursework-blog/step-2/views/admin/editor-html.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' /> - - <label>Entry</label> - <textarea name='entry'></textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='save' /> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-2/views/admin/entries-html.php b/coursework-blog/step-2/views/admin/entries-html.php deleted file mode 100644 index 6814024..0000000 --- a/coursework-blog/step-2/views/admin/entries-html.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-2/views/footer.php b/coursework-blog/step-2/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-2/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-2/views/header.php b/coursework-blog/step-2/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-2/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-3/admin.php b/coursework-blog/step-3/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-3/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-3/controllers/admin/editor.php b/coursework-blog/step-3/controllers/admin/editor.php deleted file mode 100644 index a4eb8bf..0000000 --- a/coursework-blog/step-3/controllers/admin/editor.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - //was "save" button clicked - $insertNewEntry = ( $buttonClicked === 'save' ); - - if ( $insertNewEntry ) { - $title = $_POST['title']; - $entry = $_POST['entry']; - //save the new entry - $entryTable->saveEntry( $title, $entry ); - } -} - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-3/controllers/admin/entries.php b/coursework-blog/step-3/controllers/admin/entries.php deleted file mode 100644 index adf7103..0000000 --- a/coursework-blog/step-3/controllers/admin/entries.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-3/controllers/blog.php b/coursework-blog/step-3/controllers/blog.php deleted file mode 100644 index 94444e5..0000000 --- a/coursework-blog/step-3/controllers/blog.php +++ /dev/null @@ -1,8 +0,0 @@ -<? -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; - -?> diff --git a/coursework-blog/step-3/coursework-blog.sql b/coursework-blog/step-3/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-3/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-3/css/blog.css b/coursework-blog/step-3/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-3/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-3/index.php b/coursework-blog/step-3/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-3/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-3/models/Blog_Entry_Table.class.php b/coursework-blog/step-3/models/Blog_Entry_Table.class.php deleted file mode 100644 index 4d65271..0000000 --- a/coursework-blog/step-3/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) - VALUES ( ?, ?)"; - $entryStatement = $this->db->prepare( $entrySQL ); - $formData = array( $title, $entry ); - try{ - $entryStatement->execute( $formData ); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - } - - public function getAllEntries () { - $entrySQL = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->db->prepare( $entrySQL ); - try{ - $statement->execute(); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - return $statement; - } - - -} - -?> diff --git a/coursework-blog/step-3/views/admin/admin-navigation.php b/coursework-blog/step-3/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-3/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-3/views/admin/editor-html.php b/coursework-blog/step-3/views/admin/editor-html.php deleted file mode 100644 index 7147675..0000000 --- a/coursework-blog/step-3/views/admin/editor-html.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' /> - - <label>Entry</label> - <textarea name='entry'></textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='save' /> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-3/views/admin/entries-html.php b/coursework-blog/step-3/views/admin/entries-html.php deleted file mode 100644 index 6814024..0000000 --- a/coursework-blog/step-3/views/admin/entries-html.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-3/views/footer.php b/coursework-blog/step-3/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-3/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-3/views/header.php b/coursework-blog/step-3/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-3/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-3/views/list-entries-html.php b/coursework-blog/step-3/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-3/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/coursework-blog/step-4/admin.php b/coursework-blog/step-4/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-4/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-4/controllers/admin/editor.php b/coursework-blog/step-4/controllers/admin/editor.php deleted file mode 100644 index a4eb8bf..0000000 --- a/coursework-blog/step-4/controllers/admin/editor.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - //was "save" button clicked - $insertNewEntry = ( $buttonClicked === 'save' ); - - if ( $insertNewEntry ) { - $title = $_POST['title']; - $entry = $_POST['entry']; - //save the new entry - $entryTable->saveEntry( $title, $entry ); - } -} - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-4/controllers/admin/entries.php b/coursework-blog/step-4/controllers/admin/entries.php deleted file mode 100644 index adf7103..0000000 --- a/coursework-blog/step-4/controllers/admin/entries.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-4/controllers/blog.php b/coursework-blog/step-4/controllers/blog.php deleted file mode 100644 index 51823f9..0000000 --- a/coursework-blog/step-4/controllers/blog.php +++ /dev/null @@ -1,16 +0,0 @@ -<? -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - -$entryClicked = isset( $_GET['id'] ); -if ($entryClicked ) { - $entryId = $_GET['id']; - $entryData = $entryTable->getEntry( $entryId ); -// print_r($entryData); - include_once "views/entry-html.php"; -} else { - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; -} -?> diff --git a/coursework-blog/step-4/coursework-blog.sql b/coursework-blog/step-4/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-4/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-4/css/blog.css b/coursework-blog/step-4/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-4/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-4/index.php b/coursework-blog/step-4/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-4/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-4/models/.Blog_Entry_Table.class.php.swp b/coursework-blog/step-4/models/.Blog_Entry_Table.class.php.swp deleted file mode 100644 index 5d46d90df3e083cf31a60b9e27ef2c81df6e8976..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O>7%Q6vro=2v9)fz=gvj^<gd9aS~F2NNOvkONo?^Hg<wIS^F`um#)3b>^Myn zMF=iEp>hR5RgjQ+gmU7<9fX905E6(35)zy^BgBFKti9f?8=4*qdL#XIH{&-m@BQDr zl_QTkx3juV&(AIjv?qo5`Q7h#K6v_)xc-C?zSB3oCpOqsTiu|4<&xu9TZ?DslH-Te zqFC2Lrx(YyuJ$7@scETt3!&pCRbM%~y5>a#mB_1+x>9w+s8dU{jH`>aUgXO#shvkx z+wN<1&~7<yC}+LUNs`&P8y~+O_p$=4Kv98H;<<(SIn#4y=2?2`^mg$>er5$&0akz& zU<FtKR)7^?1z3UqxdJ+#5^o~LhemO}FuG4o+(&=%jTK-8SOHdm6<`He0akz&U<FtK zR)7^?1^$ByIKB`!9v0&LX*iGH|Fi%9|HAM8zkqMS*WfE~6I=stfkSWsOo5*s$7etR z2^PR<@ZBjPZh>py2wVkwU=#fQm=L$YC*W=1f-~UHM}_zSd;`7!pM%@rGw=?mg1;XT z;y3Uk_!L|R7r`^&55(~+_!8U#AA^s;O>hHz2u!T+0dA}SE5Hh{0;~WlzzRHA3N-5Y z)&!Rb?I^vPCnfbj^{JE|iChxX!v{J?r9?Yg_GDjI>$_5W-A(s(>1nIHG#;DJVrJ4R z=yarNOQj-ZmE^uBV;w~Ob(thiM;68z>#Qxubvv_skxFv87T0I;C5+i!Q^C6#jC(B_ zm_?;eIwCdblkNryC2xe72UmiL$d)-G&p`}ijTghTWjY)i7{g-7a$kA_EiEefj&`Wv zJ&ubWLZ`I*963rk2UaQY3l{l2Mn~gSweGvsdaPvZC^M&V4+Eyt2Sn4f*X);C1hH`z zHSjB>10BlBs6)$rT_G$e+n$oR`SkME<~o@pt?hISz50s1Wsk>W*~ZKgnc(7q8wMWj z4*H%+26d!PPrSm3z^C%zctcEQJ7JvnJPY?sbT8=?VmCTw?S68L(f5(gG|1-VwUbkN zaz+czrm4)lJvnQc7scIB8h73!jm_=z&DPfH#ziZ&ZVwYWU!nQ4b7fj-Qh>xqG?~>= z9UPOwl`yn1B#;SNW)}++M4qMm$@EVY<^!Ftp_=)dCojX@NcAopSBfS?(@JBDtSV7^ z!!jBs32949VrYHmO8-`<L#xYc#gwPxv&+uP+P2*!iy9SblnZaJJ2uAZM$_JE(dtHP zvsks(-E~go+{ekpC(fQUX+OYnlc8m=GGQFc^FMz3m;iluSkja8w%cCRPqZ3%+RW^` faALHl(&=Iq?BT65oFF|TPm@RIVZYok2j~9*K{X@F diff --git a/coursework-blog/step-4/models/Blog_Entry_Table.class.php b/coursework-blog/step-4/models/Blog_Entry_Table.class.php deleted file mode 100644 index 51229d1..0000000 --- a/coursework-blog/step-4/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) - VALUES ( ?, ?)"; - $entryStatement = $this->db->prepare( $entrySQL ); - $formData = array( $title, $entry ); - try{ - $entryStatement->execute( $formData ); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - } - - public function getAllEntries () { - $entrySQL = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->db->prepare( $entrySQL ); - try{ - $statement->execute(); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - return $statement; - } - - - public function getEntry( $id ){ - $sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?"; - $statement = $this->db->prepare( $sql ); - $data = array($id); - try{ - $statement->execute( $data ); - } catch (Exception $e) { - $exceptionMessage = "<p>You tried to run this sql: $sql <p> - <p>Exception: $e</p>"; - trigger_error($exceptionMessage); - } - $model = $statement->fetchObject(); - return $model; - } - - -} - -?> diff --git a/coursework-blog/step-4/views/admin/admin-navigation.php b/coursework-blog/step-4/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-4/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-4/views/admin/editor-html.php b/coursework-blog/step-4/views/admin/editor-html.php deleted file mode 100644 index 7147675..0000000 --- a/coursework-blog/step-4/views/admin/editor-html.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' /> - - <label>Entry</label> - <textarea name='entry'></textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='save' /> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-4/views/admin/entries-html.php b/coursework-blog/step-4/views/admin/entries-html.php deleted file mode 100644 index 6814024..0000000 --- a/coursework-blog/step-4/views/admin/entries-html.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-4/views/entry-html.php b/coursework-blog/step-4/views/entry-html.php deleted file mode 100644 index 44c629f..0000000 --- a/coursework-blog/step-4/views/entry-html.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -//check if required data is available -$entryDataFound = isset( $entryData ); -if ( $entryDataFound === false ) { - trigger_error('views/entry-html.php needs an $entryData object'); -} -//properties available in $entry: entry_id, title, entry_text, date_created - -echo "<article> - <h1>$entryData->title</h1> - <div class='date'>$entryData->date_created</div> - $entryData->entry_text -</article>"; diff --git a/coursework-blog/step-4/views/footer.php b/coursework-blog/step-4/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-4/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-4/views/header.php b/coursework-blog/step-4/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-4/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-4/views/list-entries-html.php b/coursework-blog/step-4/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-4/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/coursework-blog/step-5/admin.php b/coursework-blog/step-5/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-5/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-5/controllers/admin/editor.php b/coursework-blog/step-5/controllers/admin/editor.php deleted file mode 100644 index a4eb8bf..0000000 --- a/coursework-blog/step-5/controllers/admin/editor.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - //was "save" button clicked - $insertNewEntry = ( $buttonClicked === 'save' ); - - if ( $insertNewEntry ) { - $title = $_POST['title']; - $entry = $_POST['entry']; - //save the new entry - $entryTable->saveEntry( $title, $entry ); - } -} - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-5/controllers/admin/entries.php b/coursework-blog/step-5/controllers/admin/entries.php deleted file mode 100644 index adf7103..0000000 --- a/coursework-blog/step-5/controllers/admin/entries.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-5/controllers/blog.php b/coursework-blog/step-5/controllers/blog.php deleted file mode 100644 index 51823f9..0000000 --- a/coursework-blog/step-5/controllers/blog.php +++ /dev/null @@ -1,16 +0,0 @@ -<? -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - -$entryClicked = isset( $_GET['id'] ); -if ($entryClicked ) { - $entryId = $_GET['id']; - $entryData = $entryTable->getEntry( $entryId ); -// print_r($entryData); - include_once "views/entry-html.php"; -} else { - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; -} -?> diff --git a/coursework-blog/step-5/coursework-blog.sql b/coursework-blog/step-5/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-5/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-5/css/blog.css b/coursework-blog/step-5/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-5/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-5/index.php b/coursework-blog/step-5/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-5/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-5/models/Blog_Entry_Table.class.php b/coursework-blog/step-5/models/Blog_Entry_Table.class.php deleted file mode 100644 index 2063813..0000000 --- a/coursework-blog/step-5/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) - VALUES ( ?, ?)"; - $entryStatement = $this->db->prepare( $entrySQL ); - $formData = array( $title, $entry ); - try{ - $entryStatement->execute( $formData ); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - } - - public function getAllEntries () { - $sql = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->makeStatement($sql); - return $statement; - } - - - public function getEntry( $id ){ - $sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?"; - $data = array($id); - $statement = $this->makeStatement( $sql, $data); - $model = $statement->fetchObject(); - return $model; - } - - public function makeStatement( $sql, $data = NULL) { - $statement = $this->db->prepare( $sql ); - try{ - $statement->execute( $data ); - } catch (Exception $e) { - $exceptionMessage = "<p>You tried to run this sql: $sql <p> - <p>Exception: $e</p>"; - trigger_error($exceptionMessage); - } - return $statement; - } - -} - -?> diff --git a/coursework-blog/step-5/views/admin/admin-navigation.php b/coursework-blog/step-5/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-5/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-5/views/admin/editor-html.php b/coursework-blog/step-5/views/admin/editor-html.php deleted file mode 100644 index 7147675..0000000 --- a/coursework-blog/step-5/views/admin/editor-html.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' /> - - <label>Entry</label> - <textarea name='entry'></textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='save' /> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-5/views/admin/entries-html.php b/coursework-blog/step-5/views/admin/entries-html.php deleted file mode 100644 index 6814024..0000000 --- a/coursework-blog/step-5/views/admin/entries-html.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-5/views/entry-html.php b/coursework-blog/step-5/views/entry-html.php deleted file mode 100644 index 44c629f..0000000 --- a/coursework-blog/step-5/views/entry-html.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -//check if required data is available -$entryDataFound = isset( $entryData ); -if ( $entryDataFound === false ) { - trigger_error('views/entry-html.php needs an $entryData object'); -} -//properties available in $entry: entry_id, title, entry_text, date_created - -echo "<article> - <h1>$entryData->title</h1> - <div class='date'>$entryData->date_created</div> - $entryData->entry_text -</article>"; diff --git a/coursework-blog/step-5/views/footer.php b/coursework-blog/step-5/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-5/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-5/views/header.php b/coursework-blog/step-5/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-5/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-5/views/list-entries-html.php b/coursework-blog/step-5/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-5/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/coursework-blog/step-6/admin.php b/coursework-blog/step-6/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-6/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-6/controllers/admin/editor.php b/coursework-blog/step-6/controllers/admin/editor.php deleted file mode 100644 index 4effa65..0000000 --- a/coursework-blog/step-6/controllers/admin/editor.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - //was "save" button clicked - $insertNewEntry = ( $buttonClicked === 'save' ); - - if ( $insertNewEntry ) { - $title = $_POST['title']; - $entry = $_POST['entry']; - //save the new entry - $entryTable->saveEntry( $title, $entry ); - } -} - -$entryRequested = isset( $_GET['id'] ); -if ( $entryRequested ) { - $id = $_GET['id']; - $entryData = $entryTable->getEntry( $id ); - $entryData->entry_id = $id; -// $entryData->message = ""; -} else { - $entryData = new StdClass(); - $entryData->entry_id = 0; - $entryData->title = ""; - $entryData->entry_text = ""; -// $entryData->message = ""; -} - - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-6/controllers/admin/entries.php b/coursework-blog/step-6/controllers/admin/entries.php deleted file mode 100644 index adf7103..0000000 --- a/coursework-blog/step-6/controllers/admin/entries.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-6/controllers/blog.php b/coursework-blog/step-6/controllers/blog.php deleted file mode 100644 index 51823f9..0000000 --- a/coursework-blog/step-6/controllers/blog.php +++ /dev/null @@ -1,16 +0,0 @@ -<? -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - -$entryClicked = isset( $_GET['id'] ); -if ($entryClicked ) { - $entryId = $_GET['id']; - $entryData = $entryTable->getEntry( $entryId ); -// print_r($entryData); - include_once "views/entry-html.php"; -} else { - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; -} -?> diff --git a/coursework-blog/step-6/coursework-blog.sql b/coursework-blog/step-6/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-6/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-6/css/blog.css b/coursework-blog/step-6/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-6/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-6/index.php b/coursework-blog/step-6/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-6/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-6/models/Blog_Entry_Table.class.php b/coursework-blog/step-6/models/Blog_Entry_Table.class.php deleted file mode 100644 index 2063813..0000000 --- a/coursework-blog/step-6/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) - VALUES ( ?, ?)"; - $entryStatement = $this->db->prepare( $entrySQL ); - $formData = array( $title, $entry ); - try{ - $entryStatement->execute( $formData ); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - } - - public function getAllEntries () { - $sql = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->makeStatement($sql); - return $statement; - } - - - public function getEntry( $id ){ - $sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?"; - $data = array($id); - $statement = $this->makeStatement( $sql, $data); - $model = $statement->fetchObject(); - return $model; - } - - public function makeStatement( $sql, $data = NULL) { - $statement = $this->db->prepare( $sql ); - try{ - $statement->execute( $data ); - } catch (Exception $e) { - $exceptionMessage = "<p>You tried to run this sql: $sql <p> - <p>Exception: $e</p>"; - trigger_error($exceptionMessage); - } - return $statement; - } - -} - -?> diff --git a/coursework-blog/step-6/views/admin/admin-navigation.php b/coursework-blog/step-6/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-6/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-6/views/admin/editor-html.php b/coursework-blog/step-6/views/admin/editor-html.php deleted file mode 100644 index bf86ba2..0000000 --- a/coursework-blog/step-6/views/admin/editor-html.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <input type='hidden' name='id' value='$entryData->entry_id' /> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' value='$entryData->title' required /> - - <label>Entry</label> - <textarea name='entry'>$entryData->entry_text</textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='save' /> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-6/views/admin/entries-html.php b/coursework-blog/step-6/views/admin/entries-html.php deleted file mode 100644 index 2097a76..0000000 --- a/coursework-blog/step-6/views/admin/entries-html.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -if ( isset( $allEntries ) === false ) { -trigger_error('views/admin/entries-html.php needs $allEntries'); -} - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-6/views/entry-html.php b/coursework-blog/step-6/views/entry-html.php deleted file mode 100644 index 44c629f..0000000 --- a/coursework-blog/step-6/views/entry-html.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -//check if required data is available -$entryDataFound = isset( $entryData ); -if ( $entryDataFound === false ) { - trigger_error('views/entry-html.php needs an $entryData object'); -} -//properties available in $entry: entry_id, title, entry_text, date_created - -echo "<article> - <h1>$entryData->title</h1> - <div class='date'>$entryData->date_created</div> - $entryData->entry_text -</article>"; diff --git a/coursework-blog/step-6/views/footer.php b/coursework-blog/step-6/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-6/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-6/views/header.php b/coursework-blog/step-6/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-6/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-6/views/list-entries-html.php b/coursework-blog/step-6/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-6/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/coursework-blog/step-7/admin.php b/coursework-blog/step-7/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-7/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-7/controllers/admin/editor.php b/coursework-blog/step-7/controllers/admin/editor.php deleted file mode 100644 index 7040909..0000000 --- a/coursework-blog/step-7/controllers/admin/editor.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - //which button was clicked? - $insertNewEntry = ( $buttonClicked === 'save' ); - $deleteEntry = ($buttonClicked === 'delete'); - $id = $_POST['id']; - - if ( $insertNewEntry ) { - $title = $_POST['title']; - $entry = $_POST['entry']; - //save the new entry - $entryTable->saveEntry( $title, $entry ); - } else if ( $deleteEntry ) { - $entryTable->deleteEntry( $id ); - } -} - -$entryRequested = isset( $_GET['id'] ); -if ( $entryRequested ) { - $id = $_GET['id']; - $entryData = $entryTable->getEntry( $id ); - $entryData->entry_id = $id; -// $entryData->message = ""; -} else { - $entryData = new StdClass(); - $entryData->entry_id = 0; - $entryData->title = ""; - $entryData->entry_text = ""; -// $entryData->message = ""; -} - - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-7/controllers/admin/entries.php b/coursework-blog/step-7/controllers/admin/entries.php deleted file mode 100644 index adf7103..0000000 --- a/coursework-blog/step-7/controllers/admin/entries.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-7/controllers/blog.php b/coursework-blog/step-7/controllers/blog.php deleted file mode 100644 index 51823f9..0000000 --- a/coursework-blog/step-7/controllers/blog.php +++ /dev/null @@ -1,16 +0,0 @@ -<? -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - -$entryClicked = isset( $_GET['id'] ); -if ($entryClicked ) { - $entryId = $_GET['id']; - $entryData = $entryTable->getEntry( $entryId ); -// print_r($entryData); - include_once "views/entry-html.php"; -} else { - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; -} -?> diff --git a/coursework-blog/step-7/coursework-blog.sql b/coursework-blog/step-7/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-7/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-7/css/blog.css b/coursework-blog/step-7/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-7/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-7/index.php b/coursework-blog/step-7/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-7/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-7/models/Blog_Entry_Table.class.php b/coursework-blog/step-7/models/Blog_Entry_Table.class.php deleted file mode 100644 index d301843..0000000 --- a/coursework-blog/step-7/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) - VALUES ( ?, ?)"; - $entryStatement = $this->db->prepare( $entrySQL ); - $formData = array( $title, $entry ); - try{ - $entryStatement->execute( $formData ); - } catch (Exception $e){ - $msg = "<p>You tried to run this sql: $entrySQL<p> - <p>Exception: $e</p>"; - trigger_error($msg); - } - } - - public function getAllEntries () { - $sql = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->makeStatement($sql); - return $statement; - } - - - public function getEntry( $id ){ - $sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?"; - $data = array($id); - $statement = $this->makeStatement( $sql, $data); - $model = $statement->fetchObject(); - return $model; - } - - public function deleteEntry ( $id ) { - $sql = "DELETE FROM blog_entry WHERE entry_id = ?"; - $data = array( $id ); - $statement = $this->makeStatement( $sql, $data ); - } - - public function makeStatement( $sql, $data = NULL) { - $statement = $this->db->prepare( $sql ); - try{ - $statement->execute( $data ); - } catch (Exception $e) { - $exceptionMessage = "<p>You tried to run this sql: $sql <p> - <p>Exception: $e</p>"; - trigger_error($exceptionMessage); - } - return $statement; - } - -} - -?> diff --git a/coursework-blog/step-7/views/admin/admin-navigation.php b/coursework-blog/step-7/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-7/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-7/views/admin/editor-html.php b/coursework-blog/step-7/views/admin/editor-html.php deleted file mode 100644 index bf7c295..0000000 --- a/coursework-blog/step-7/views/admin/editor-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <input type='hidden' name='id' value='$entryData->entry_id' /> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' value='$entryData->title' required /> - - <label>Entry</label> - <textarea name='entry'>$entryData->entry_text</textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='delete' /> - <input type='submit' name='action' value='save' /> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-7/views/admin/entries-html.php b/coursework-blog/step-7/views/admin/entries-html.php deleted file mode 100644 index 2097a76..0000000 --- a/coursework-blog/step-7/views/admin/entries-html.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -if ( isset( $allEntries ) === false ) { -trigger_error('views/admin/entries-html.php needs $allEntries'); -} - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-7/views/entry-html.php b/coursework-blog/step-7/views/entry-html.php deleted file mode 100644 index 44c629f..0000000 --- a/coursework-blog/step-7/views/entry-html.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -//check if required data is available -$entryDataFound = isset( $entryData ); -if ( $entryDataFound === false ) { - trigger_error('views/entry-html.php needs an $entryData object'); -} -//properties available in $entry: entry_id, title, entry_text, date_created - -echo "<article> - <h1>$entryData->title</h1> - <div class='date'>$entryData->date_created</div> - $entryData->entry_text -</article>"; diff --git a/coursework-blog/step-7/views/footer.php b/coursework-blog/step-7/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-7/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-7/views/header.php b/coursework-blog/step-7/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-7/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-7/views/list-entries-html.php b/coursework-blog/step-7/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-7/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/coursework-blog/step-8/admin.php b/coursework-blog/step-8/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-8/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-8/controllers/admin/editor.php b/coursework-blog/step-8/controllers/admin/editor.php deleted file mode 100644 index c2ebc12..0000000 --- a/coursework-blog/step-8/controllers/admin/editor.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - $id = $_POST['id']; - $save = ($buttonClicked === 'save'); - $insertNewEntry = ( $save and $id === '0' ); - $updateEntry = ( $save and $insertNewEntry === false ); - $deleteEntry = ($buttonClicked === 'delete'); - - $title = $_POST['title']; - $entry = $_POST['entry']; - - if ( $insertNewEntry ) { - $entryTable->saveEntry( $title, $entry ); - } else if ( $updateEntry ){ - $entryTable->updateEntry( $id, $title, $entry ); - $savedEntryId = $id; - } else if ( $deleteEntry ) { - $entryTable->deleteEntry( $id ); - } -} - -$entryRequested = isset( $_GET['id'] ); -if ( $entryRequested ) { - $id = $_GET['id']; - $entryData = $entryTable->getEntry( $id ); - $entryData->entry_id = $id; -// $entryData->message = ""; -} else { - $entryData = new StdClass(); - $entryData->entry_id = 0; - $entryData->title = ""; - $entryData->entry_text = ""; -// $entryData->message = ""; -} - - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-8/controllers/admin/entries.php b/coursework-blog/step-8/controllers/admin/entries.php deleted file mode 100644 index adf7103..0000000 --- a/coursework-blog/step-8/controllers/admin/entries.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-8/controllers/blog.php b/coursework-blog/step-8/controllers/blog.php deleted file mode 100644 index 51823f9..0000000 --- a/coursework-blog/step-8/controllers/blog.php +++ /dev/null @@ -1,16 +0,0 @@ -<? -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - -$entryClicked = isset( $_GET['id'] ); -if ($entryClicked ) { - $entryId = $_GET['id']; - $entryData = $entryTable->getEntry( $entryId ); -// print_r($entryData); - include_once "views/entry-html.php"; -} else { - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; -} -?> diff --git a/coursework-blog/step-8/coursework-blog.sql b/coursework-blog/step-8/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-8/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-8/css/blog.css b/coursework-blog/step-8/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-8/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-8/index.php b/coursework-blog/step-8/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-8/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-8/models/Blog_Entry_Table.class.php b/coursework-blog/step-8/models/Blog_Entry_Table.class.php deleted file mode 100644 index d5bfcce..0000000 --- a/coursework-blog/step-8/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) VALUES ( ?, ?)"; - $formData = array( $title, $entry ); - $entryStatement = $this->makeStatement( $entrySQL, $formData ); - } - - public function getAllEntries () { - $sql = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->makeStatement($sql); - return $statement; - } - - - public function getEntry( $id ){ - $sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?"; - $data = array($id); - $statement = $this->makeStatement( $sql, $data); - $model = $statement->fetchObject(); - return $model; - } - - public function updateEntry ( $id, $title, $entry) { - $sql = "UPDATE blog_entry - SET title = ?, - entry_text = ? - WHERE entry_id = ?"; - $data = array( $title, $entry, $id ); - $statement = $this->makeStatement( $sql, $data) ; - return $statement; - } - - public function deleteEntry ( $id ) { - $sql = "DELETE FROM blog_entry WHERE entry_id = ?"; - $data = array( $id ); - $statement = $this->makeStatement( $sql, $data ); - } - - public function makeStatement( $sql, $data = NULL) { - $statement = $this->db->prepare( $sql ); - try{ - $statement->execute( $data ); - } catch (Exception $e) { - $exceptionMessage = "<p>You tried to run this sql: $sql <p> - <p>Exception: $e</p>"; - trigger_error($exceptionMessage); - } - return $statement; - } - -} - -?> diff --git a/coursework-blog/step-8/views/admin/admin-navigation.php b/coursework-blog/step-8/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-8/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-8/views/admin/editor-html.php b/coursework-blog/step-8/views/admin/editor-html.php deleted file mode 100644 index bf7c295..0000000 --- a/coursework-blog/step-8/views/admin/editor-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <input type='hidden' name='id' value='$entryData->entry_id' /> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' value='$entryData->title' required /> - - <label>Entry</label> - <textarea name='entry'>$entryData->entry_text</textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='delete' /> - <input type='submit' name='action' value='save' /> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-8/views/admin/entries-html.php b/coursework-blog/step-8/views/admin/entries-html.php deleted file mode 100644 index 2097a76..0000000 --- a/coursework-blog/step-8/views/admin/entries-html.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -if ( isset( $allEntries ) === false ) { -trigger_error('views/admin/entries-html.php needs $allEntries'); -} - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-8/views/entry-html.php b/coursework-blog/step-8/views/entry-html.php deleted file mode 100644 index 44c629f..0000000 --- a/coursework-blog/step-8/views/entry-html.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -//check if required data is available -$entryDataFound = isset( $entryData ); -if ( $entryDataFound === false ) { - trigger_error('views/entry-html.php needs an $entryData object'); -} -//properties available in $entry: entry_id, title, entry_text, date_created - -echo "<article> - <h1>$entryData->title</h1> - <div class='date'>$entryData->date_created</div> - $entryData->entry_text -</article>"; diff --git a/coursework-blog/step-8/views/footer.php b/coursework-blog/step-8/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-8/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-8/views/header.php b/coursework-blog/step-8/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-8/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-8/views/list-entries-html.php b/coursework-blog/step-8/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-8/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/coursework-blog/step-9/admin.php b/coursework-blog/step-9/admin.php deleted file mode 100644 index 91f6afd..0000000 --- a/coursework-blog/step-9/admin.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; - -include_once "views/header.php"; -include_once "views/admin/admin-navigation.php"; - -$navigation = isset( $_GET['page'] ); -if ( $navigation ) { - //prepare to load corresponding controller - $contrl = $_GET['page']; -} else { - //or prepare to load default controller - $contrl = "entries"; -} -//load the controller -include_once "controllers/admin/$contrl.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-9/controllers/admin/editor.php b/coursework-blog/step-9/controllers/admin/editor.php deleted file mode 100644 index 92618e6..0000000 --- a/coursework-blog/step-9/controllers/admin/editor.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - -//was editor form submitted? -$editorSubmitted = isset( $_POST['action'] ); -if ( $editorSubmitted ) { - $buttonClicked = $_POST['action']; - $id = $_POST['id']; - $save = ($buttonClicked === 'save'); - $insertNewEntry = ( $save and $id === '0' ); - $updateEntry = ( $save and $insertNewEntry === false ); - $deleteEntry = ($buttonClicked === 'delete'); - - $title = $_POST['title']; - $entry = $_POST['entry']; - - if ( $insertNewEntry ) { - $savedEntryId = $entryTable->saveEntry( $title, $entry ); - } else if ( $updateEntry ){ - $entryTable->updateEntry( $id, $title, $entry ); - $savedEntryId = $id; - } else if ( $deleteEntry ) { - $entryTable->deleteEntry( $id ); - } -} - -$entryRequested = isset( $_GET['id'] ); -$entrySaved = isset( $savedEntryId ); - -if ( $entryRequested ) { - $id = $_GET['id']; - $entryData = $entryTable->getEntry( $id ); - $entryData->entry_id = $id; - $entryData->message = ""; -} else if ( $entrySaved ) { - $entryData = $entryTable->getEntry( $savedEntryId ); - $entryData->message = "Entry was saved"; -} else { - $entryData = new StdClass(); - $entryData->entry_id = 0; - $entryData->title = ""; - $entryData->entry_text = ""; - $entryData->message = ""; -} - - -include_once "views/admin/editor-html.php"; - -?> diff --git a/coursework-blog/step-9/controllers/admin/entries.php b/coursework-blog/step-9/controllers/admin/entries.php deleted file mode 100644 index adf7103..0000000 --- a/coursework-blog/step-9/controllers/admin/entries.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); -$allEntries = $entryTable->getAllEntries(); - -include_once "views/admin/entries-html.php"; - - -?> diff --git a/coursework-blog/step-9/controllers/blog.php b/coursework-blog/step-9/controllers/blog.php deleted file mode 100644 index 51823f9..0000000 --- a/coursework-blog/step-9/controllers/blog.php +++ /dev/null @@ -1,16 +0,0 @@ -<? -include_once "models/Blog_Entry_Table.class.php"; -$entryTable = new Blog_Entry_Table( $db ); - - -$entryClicked = isset( $_GET['id'] ); -if ($entryClicked ) { - $entryId = $_GET['id']; - $entryData = $entryTable->getEntry( $entryId ); -// print_r($entryData); - include_once "views/entry-html.php"; -} else { - $entries = $entryTable->getallentries(); - include_once "views/list-entries-html.php"; -} -?> diff --git a/coursework-blog/step-9/coursework-blog.sql b/coursework-blog/step-9/coursework-blog.sql deleted file mode 100644 index 61ba3ff..0000000 --- a/coursework-blog/step-9/coursework-blog.sql +++ /dev/null @@ -1,8 +0,0 @@ --- this will create a table for blog entries -CREATE TABLE blog_entry ( - entry_id INT NOT NULL AUTO_INCREMENT, - title VARCHAR( 150 ), - entry_text TEXT, - date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ( entry_id ) -) diff --git a/coursework-blog/step-9/css/blog.css b/coursework-blog/step-9/css/blog.css deleted file mode 100644 index c1b6d06..0000000 --- a/coursework-blog/step-9/css/blog.css +++ /dev/null @@ -1,24 +0,0 @@ -/* code listing for blog/css/blog.css */ -form#editor{ - width: 300px; - margin:0px; - padding:0px; -} - -form#editor label, form#editor input[type='text']{ - display:block; -} - -form#editor #editor-buttons{ - border:none; - text-align:right; -} - -form#editor textarea, form#editor input[type='text']{ - width:90%; - margin-bottom:2em; -} - -form#editor textarea{ - height:10em; -} diff --git a/coursework-blog/step-9/index.php b/coursework-blog/step-9/index.php deleted file mode 100644 index d15e461..0000000 --- a/coursework-blog/step-9/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -include_once "../../../coursework_blog_config.php"; -$db = new PDO( $dbInfo, $dbUser, $dbPassword ); -$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); - -$title = "PHP/MySQL blog demo"; -$css="css/blog.css"; -$embeddedStyle = ""; -include_once "views/header.php"; - -include_once "controllers/blog.php"; - -include_once "views/footer.php"; - -?> - diff --git a/coursework-blog/step-9/models/Blog_Entry_Table.class.php b/coursework-blog/step-9/models/Blog_Entry_Table.class.php deleted file mode 100644 index 8da1860..0000000 --- a/coursework-blog/step-9/models/Blog_Entry_Table.class.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -class Blog_Entry_Table { - private $db; - - - public function __construct ( $db ) { - $this->db = $db; - } - - public function saveEntry ( $title, $entry ) { - $entrySQL = "INSERT INTO blog_entry ( title, entry_text ) VALUES ( ?, ?)"; - $formData = array( $title, $entry ); - $entryStatement = $this->makeStatement( $entrySQL, $formData ); - return $this->db->lastInsertId(); - } - - public function getAllEntries () { - $sql = "SELECT entry_id, title, SUBSTRING(entry_text, 1, 150) AS intro FROM blog_entry"; - $statement = $this->makeStatement($sql); - return $statement; - } - - - public function getEntry( $id ){ - $sql = "SELECT entry_id, title, entry_text, date_created FROM blog_entry WHERE entry_id = ?"; - $data = array($id); - $statement = $this->makeStatement( $sql, $data); - $model = $statement->fetchObject(); - return $model; - } - - public function updateEntry ( $id, $title, $entry) { - $sql = "UPDATE blog_entry - SET title = ?, - entry_text = ? - WHERE entry_id = ?"; - $data = array( $title, $entry, $id ); - $statement = $this->makeStatement( $sql, $data) ; - return $statement; - } - - public function deleteEntry ( $id ) { - $sql = "DELETE FROM blog_entry WHERE entry_id = ?"; - $data = array( $id ); - $statement = $this->makeStatement( $sql, $data ); - } - - public function makeStatement( $sql, $data = NULL) { - $statement = $this->db->prepare( $sql ); - try{ - $statement->execute( $data ); - } catch (Exception $e) { - $exceptionMessage = "<p>You tried to run this sql: $sql <p> - <p>Exception: $e</p>"; - trigger_error($exceptionMessage); - } - return $statement; - } - -} - -?> diff --git a/coursework-blog/step-9/views/admin/admin-navigation.php b/coursework-blog/step-9/views/admin/admin-navigation.php deleted file mode 100644 index c58b361..0000000 --- a/coursework-blog/step-9/views/admin/admin-navigation.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -$out = " -<nav id='admin-navigation'> - <a href='admin.php?page=entries'>All entries</a> - <a href='admin.php?page=editor'>Editor</a> -</nav>"; - -echo $out; - -?> diff --git a/coursework-blog/step-9/views/admin/editor-html.php b/coursework-blog/step-9/views/admin/editor-html.php deleted file mode 100644 index e614941..0000000 --- a/coursework-blog/step-9/views/admin/editor-html.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -$out = " -<form method='post' action='admin.php?page=editor' id='editor'> - <input type='hidden' name='id' value='$entryData->entry_id' /> - <fieldset> - <legend>New Entry Submission</legend> - <label>Title</label> - <input type='text' name='title' maxlength='150' value='$entryData->title' required /> - - <label>Entry</label> - <textarea name='entry'>$entryData->entry_text</textarea> - - <fieldset id='editor-buttons'> - <input type='submit' name='action' value='delete' /> - <input type='submit' name='action' value='save' /> - <p id='editor-message'>$entryData->message</p> - </fieldset> - </fieldset> -</form> -"; - -echo $out; - -?> diff --git a/coursework-blog/step-9/views/admin/entries-html.php b/coursework-blog/step-9/views/admin/entries-html.php deleted file mode 100644 index 2097a76..0000000 --- a/coursework-blog/step-9/views/admin/entries-html.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -if ( isset( $allEntries ) === false ) { -trigger_error('views/admin/entries-html.php needs $allEntries'); -} - -$entriesAsHTML = "<ul>"; -while ( $entry = $allEntries->fetchObject() ) { - $href = "admin.php?page=editor&id=$entry->entry_id"; - $entriesAsHTML .= "<li><a href='$href'>$entry->title</a></li>"; -} - -$entriesAsHTML .= "</ul>"; -echo $entriesAsHTML; - -?> diff --git a/coursework-blog/step-9/views/entry-html.php b/coursework-blog/step-9/views/entry-html.php deleted file mode 100644 index 44c629f..0000000 --- a/coursework-blog/step-9/views/entry-html.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -//check if required data is available -$entryDataFound = isset( $entryData ); -if ( $entryDataFound === false ) { - trigger_error('views/entry-html.php needs an $entryData object'); -} -//properties available in $entry: entry_id, title, entry_text, date_created - -echo "<article> - <h1>$entryData->title</h1> - <div class='date'>$entryData->date_created</div> - $entryData->entry_text -</article>"; diff --git a/coursework-blog/step-9/views/footer.php b/coursework-blog/step-9/views/footer.php deleted file mode 100644 index e7373f5..0000000 --- a/coursework-blog/step-9/views/footer.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$out = " -</body> -</html> -"; - -echo $out; -?> diff --git a/coursework-blog/step-9/views/header.php b/coursework-blog/step-9/views/header.php deleted file mode 100644 index 4c5a94f..0000000 --- a/coursework-blog/step-9/views/header.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -$out = "<!DOCTYPE html> -<html> - <head> - <title>$title</title> - <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> - <link rel='stylesheet' type='text/css' href='$css'> - <link rel='stylesheet' type='text/css' href='$embeddedStyle'> - </head>"; - -echo $out; -?> diff --git a/coursework-blog/step-9/views/list-entries-html.php b/coursework-blog/step-9/views/list-entries-html.php deleted file mode 100644 index f568bc8..0000000 --- a/coursework-blog/step-9/views/list-entries-html.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -$entriesFound = isset( $entries ); -if ( $entriesFound === false ) { - trigger_error( 'views/list-entries-html.php needs $entries' ); -} - -$entriesHTML = "<ul id='blog-entries'>"; - -while ( $entry = $entries->fetchObject() ) { - $href = "index.php?page=blog&id=$entry->entry_id"; - //create an <li> for each of the entries - $entriesHTML .= "<li> - <h2>$entry->title</h2> - <div>$entry->intro - <p><a href='$href'>Read more</a></p> - </div> - </li>"; -} -$entriesHTML .= "</ul>"; - -echo $entriesHTML; - -?> diff --git a/week-1/test_app/README.txt b/week-1/test_app/README.txt deleted file mode 100644 index f3d37bc..0000000 --- a/week-1/test_app/README.txt +++ /dev/null @@ -1,21 +0,0 @@ -********************************* -* A TEST APPLICATION * -********************************* - -Description ------------ -This is a test PHP application. You can upload use it to test your LAMP stack. You can also browse the directory structure to get an idea of how PHP web applications are commonly structured. You can also read this README file to find out the sorts of things that should be included in a README file! - -Author & Contact ----------------- -Sorrel Harriet s.harriet@gold.ac.uk - -Installation Instructions -------------------------- -Upload the application to your web root folder. No further actions needed! - -Configuration Instructions --------------------------- -There is nothing to configure. - - diff --git a/week-1/test_app/includes/functions.php b/week-1/test_app/includes/functions.php deleted file mode 100644 index 74d6c1c..0000000 --- a/week-1/test_app/includes/functions.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php - -# Write some functions here... - -?> - diff --git a/week-1/test_app/index.php b/week-1/test_app/index.php deleted file mode 100755 index 6eada61..0000000 --- a/week-1/test_app/index.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -// Code to detect whether index.php has been requested without query string -// If no page parameter detected... -if (!isset($_GET['page'])) { - $id = 'home'; // display home page -} else { - $id = $_GET['page']; // else requested page -} - -$content = ''; - -// Switch statement to decide content of page will go here. -// Regardless of which "view" is displayed, the variable $content will -switch ($id) { - case 'home' : - include 'views/home.php'; - break; - case 'menu' : - include 'views/page_2.php'; - break; - default : - include 'views/404.php'; -} -?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title>Test Application</title> - </head> - <body> - <ul> - <li><a href="index.php">Home</a></li> - <li><a href="index.php?page=page_2">Page 2</a></li> - </ul> - - <?php - // Display content for requested view. - echo $content; - ?> - - </body> -</html> diff --git a/week-1/test_app/views/404.php b/week-1/test_app/views/404.php deleted file mode 100755 index e6d29ff..0000000 --- a/week-1/test_app/views/404.php +++ /dev/null @@ -1,4 +0,0 @@ -<?php -$content .= '<h1>Sorry, page can not be found</h1>'; -?> - diff --git a/week-1/test_app/views/home.php b/week-1/test_app/views/home.php deleted file mode 100644 index f811619..0000000 --- a/week-1/test_app/views/home.php +++ /dev/null @@ -1,4 +0,0 @@ -<?php -$content .= '<h1>Hello world!</h1>'; -$content .= '<p>If you\'re reading this, it means you have successfully launched the <b>test app</b>.</p>'; -?> \ No newline at end of file diff --git a/week-1/test_app/views/page_2.php b/week-1/test_app/views/page_2.php deleted file mode 100755 index 6a9716b..0000000 --- a/week-1/test_app/views/page_2.php +++ /dev/null @@ -1,4 +0,0 @@ -<?php -$content = '<h1>Welcome to page 2!</h1>'; -?> - diff --git a/week-12/README.txt b/week-12/README.txt deleted file mode 100644 index db41256..0000000 --- a/week-12/README.txt +++ /dev/null @@ -1,27 +0,0 @@ -********************************* -* RECORD STORE APPLICATION * -********************************* - -Description ------------ -This is a demo record store application. You can use it to help you complete lab 8. It is You can also read this README file to find out the sorts of things that should be included in a README file! - -Author & Contact ----------------- -Sorrel Harriet s.harriet@gold.ac.uk - -Installation Instructions -------------------------- -+ Check you have a LAMP stack installed with PHP>5 and MySQL>5 -+ Upload the application to your web root folder. -+ Run the record-store.sql file on your database. -+ Run the dummy_data.sql file to insert some data. - -Configuration Instructions --------------------------- -Modify the includes/db_connect.php script with your MySQL database credentials. - -Live Demo ---------- -A demo version of this app is deployed at the following URL: -http://doc.gold.ac.uk/~sharr003/data-network-web/lab-exercises/week-8/record-store-app/ diff --git a/week-12/includes/db_connect.php b/week-12/includes/db_connect.php deleted file mode 100644 index 53c5fb9..0000000 --- a/week-12/includes/db_connect.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/* Open a new connection to the MySQL server */ - -/* connect to the database */ -$link = mysqli_connect( - 'localhost', - 'recordstoreuser', - 'recordstorepwd', - 'recordstore' -); - -/* check connection succeeded */ -if (mysqli_connect_errno()) { - echo "Failed to connect to MySQL: " . mysqli_connect_error(); -} - -?> diff --git a/week-12/index.php b/week-12/index.php deleted file mode 100644 index 153d06c..0000000 --- a/week-12/index.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -// connect to the database -require('includes/db_connect.php'); - -// define a function to sanitise user input (this would ideally be in includes folder) -function clean_input($data) { - $data = trim($data); // strips unnecessary characters from beginning/end - $data = stripslashes($data); // remove backslashes - $data = htmlspecialchars($data); // replace special characters with HTML entities - return $data; -} - -// include the header HTML -include('templates/header.html'); - -// include the navigation HTML -include('templates/navigation.html'); - -// get the page id from the URL -// if no parameter detected... -if (!isset($_GET['page'])) { - $id = 'home'; // display home page -} else { - $id = $_GET['page']; // else requested page -} - -// use switch to determine which view to serve based on $id -switch ($id) { -case 'home' : - include 'views/home.php'; - break; -case 'record' : - include 'views/record.php'; - break; -case 'artist' : - include 'views/artist.php'; - break; -case 'orders' : - include 'views/orders.php'; - break; -case 'order' : - include 'views/order.php'; - break; -case 'add-record' : - include 'views/add-record.php'; - break; -case 'search' : - include 'views/search.php'; - break; -default : - include 'views/404.php'; -} - -// close the connection to the database -mysqli_close($link); - -// include the footer HTML -include('templates/footer.html'); - -?> diff --git a/week-12/sql/dummy_data.sql b/week-12/sql/dummy_data.sql deleted file mode 100644 index 7d05801..0000000 --- a/week-12/sql/dummy_data.sql +++ /dev/null @@ -1,67 +0,0 @@ -/* Note that, because foreign key values are being -inserted manually, tables must be recreated before running -this code in order to reset AUTO_INCREMENT */ - -/* Statement to insert some records in the artist table */ -INSERT INTO artist (id, first_name, last_name) -VALUES -(NULL, 'Bob', 'Marley'), -(NULL, 'Peter', 'Tosh'), -(NULL, 'Burning', 'Spear'), -(NULL, 'Alton', 'Ellis'), -(NULL, 'Gregory', 'Issacs'), -(NULL, 'Desmond', 'Dekker'); - -INSERT INTO record (ean, title, artist_id, genre, year, price) -VALUES -('00562056', 'Soul Rebel', 1, 'Reggae', 1970, 25.99 ), -('50264967', 'Catch A Fire', 1, 'Reggae', 1973, 25.99 ), -('00748396', 'Natty Dread', 1, 'Reggae', 1974, 20.99 ), -('00495739', 'Babylon By Bus', 1, 'Reggae', 1978, 24.99 ), -('00738432', 'Legalize It', 2, 'Reggae', 1976, 22.99 ), -('50847583', 'Bush Doctor', 2, 'Reggae', 1978, 20.99 ), -('30748743', 'Marcus Garvey', 3, 'Reggae', 1975, 24.99 ), -('50856384', 'Night Nurse', 5, 'Reggae', 1982, 17.99 ), -('50264972', 'Mr Issacs', 5, 'Reggae', 1982, 9.99 ), -('00649573', 'Black and Dekker', 6, 'Reggae', 1980, 19.99 ), -('00625485', 'Sunday Coming', 4, 'Reggae', 1970, 15.99 ); - -INSERT INTO customer (id, first_name, last_name, email_address, address_1, address_2, postcode) -VALUES -(NULL, 'John', 'Smith', 'john@smith.com', '1 Fake Street', 'London', 'SE3 5RD'), -(NULL, 'Sukie', 'Bapswent', 's.baps@gmail.com', '64 The Terrace', 'Whitby', 'YO65 3TR'), -(NULL, 'John', 'Thumb', 'jthumb@gmail.com', '25 Fantasy Grove', 'Brighton', 'BR2 6LV'); - -INSERT INTO transaction (id, customer_id, delivery_method, dt_date) -VALUES -(NULL, 1, 2, '2015-07-01 14:34:58'), -(NULL, 1, 2, '2015-04-01 11:22:35'), -(NULL, 3, 1, '2015-04-01 19:47:03'), -(NULL, 2, 1, '2015-05-11 22:01:19'); - -INSERT INTO orderline (id, transaction_id, record_ean, quantity) -VALUES -(NULL, 1, '00562056', 1), -(NULL, 1, '00495739', 1), -(NULL, 2, '00649573', 2), -(NULL, 2, '00495739', 1), -(NULL, 3, '00738432', 2), -(NULL, 3, '00562056', 1), -(NULL, 3, '50856384', 3), -(NULL, 3, '00495739', 1), -(NULL, 4, '00625485', 1), -(NULL, 4, '00562056', 2); - -INSERT INTO inventory (stock, record_ean) -VALUES -(25, '00562056'), -(18, '50264967'), -(15, '00748396'), -(20, '00495739'), -(10, '00738432'), -(7, '50847583'), -(3, '30748743'), -(34, '50856384'), -(22, '50264972'), -(15, '00649573'), -(12, '00625485'); diff --git a/week-12/sql/practice_queries.sql b/week-12/sql/practice_queries.sql deleted file mode 100644 index ebb0dff..0000000 --- a/week-12/sql/practice_queries.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* Simple query -Fetch first_name and last_name columns from artist table */ -SELECT first_name, last_name FROM artist; - -/* Query with filters -Fetches titles from record table where year is 1973 and genre is Reggae */ -SELECT title FROM record -WHERE year = 1973 -AND genre = "Reggae"; \ No newline at end of file diff --git a/week-12/sql/record-store.sql b/week-12/sql/record-store.sql deleted file mode 100644 index 9717088..0000000 --- a/week-12/sql/record-store.sql +++ /dev/null @@ -1,71 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS inventory, orderline, transaction, customer, record, artist; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -) ENGINE=InnoDB; - -/* Define table for storing records (products) */ -CREATE TABLE record ( - ean CHAR(8) NOT NULL, - title VARCHAR(50) NOT NULL, - artist_id INT, - genre VARCHAR(50), - year YEAR(4), - price DECIMAL(10, 2) unsigned NOT NULL, - PRIMARY KEY (ean), - FOREIGN KEY (artist_id) - REFERENCES artist (id) - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for storing customers */ -CREATE TABLE customer ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50) NOT NULL, - last_name VARCHAR(50) NOT NULL, - email_address VARCHAR(50) NOT NULL, - address_1 VARCHAR(50) NOT NULL, - address_2 VARCHAR(50), - postcode VARCHAR(10) NOT NULL, - PRIMARY KEY (id) -) ENGINE=InnoDB; - -/* Define table for storing orders */ -CREATE TABLE transaction ( - id INT AUTO_INCREMENT, - customer_id INT NOT NULL, - delivery_method INT, - dt_date DATETIME, - PRIMARY KEY (id), - FOREIGN KEY (customer_id) - REFERENCES customer(id) -) ENGINE=InnoDB; - -/* Define table for storing orderlines */ -CREATE TABLE orderline ( - id INT AUTO_INCREMENT, - transaction_id INT, - record_ean CHAR(8), - quantity INT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (transaction_id) - REFERENCES transaction(id), - FOREIGN KEY (record_ean) - REFERENCES record(ean) - ON UPDATE CASCADE - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for inventory */ -CREATE TABLE inventory ( - stock INT unsigned DEFAULT 0, - record_ean CHAR(8), - PRIMARY KEY (stock, record_ean), - FOREIGN KEY (record_ean) - REFERENCES record (ean) -) ENGINE=InnoDB; diff --git a/week-12/sql/recordstore-dump.sql b/week-12/sql/recordstore-dump.sql deleted file mode 100644 index f9dc7c8..0000000 --- a/week-12/sql/recordstore-dump.sql +++ /dev/null @@ -1,196 +0,0 @@ --- MySQL dump 10.13 Distrib 5.6.26, for Linux (x86_64) --- --- Host: localhost Database: recordstore --- ------------------------------------------------------ --- Server version 5.6.26 - -/*!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 utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `artist` --- - -DROP TABLE IF EXISTS `artist`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `artist` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_name` varchar(50) DEFAULT NULL, - `last_name` varchar(50) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `artist` --- - -LOCK TABLES `artist` WRITE; -/*!40000 ALTER TABLE `artist` DISABLE KEYS */; -INSERT INTO `artist` VALUES (1,'Bob','Marley'),(2,'Peter','Tosh'),(3,'Burning','Spear'),(4,'Alton','Ellis'),(5,'Gregory','Issacs'),(6,'Desmond','Dekker'); -/*!40000 ALTER TABLE `artist` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `customer` --- - -DROP TABLE IF EXISTS `customer`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `customer` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_name` varchar(50) NOT NULL, - `last_name` varchar(50) NOT NULL, - `email_address` varchar(50) NOT NULL, - `address_1` varchar(50) NOT NULL, - `address_2` varchar(50) DEFAULT NULL, - `postcode` varchar(10) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `customer` --- - -LOCK TABLES `customer` WRITE; -/*!40000 ALTER TABLE `customer` DISABLE KEYS */; -INSERT INTO `customer` VALUES (1,'John','Smith','john@smith.com','1 Fake Street','London','SE3 5RD'),(2,'Sukie','Bapswent','s.baps@gmail.com','64 The Terrace','Whitby','YO65 3TR'),(3,'John','Thumb','jthumb@gmail.com','25 Fantasy Grove','Brighton','BR2 6LV'); -/*!40000 ALTER TABLE `customer` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `inventory` --- - -DROP TABLE IF EXISTS `inventory`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `inventory` ( - `stock` int(10) unsigned NOT NULL DEFAULT '0', - `record_ean` char(8) NOT NULL DEFAULT '', - PRIMARY KEY (`stock`,`record_ean`), - KEY `record_ean` (`record_ean`), - CONSTRAINT `inventory_ibfk_1` FOREIGN KEY (`record_ean`) REFERENCES `record` (`ean`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `inventory` --- - -LOCK TABLES `inventory` WRITE; -/*!40000 ALTER TABLE `inventory` DISABLE KEYS */; -INSERT INTO `inventory` VALUES (20,'00495739'),(25,'00562056'),(12,'00625485'),(15,'00649573'),(10,'00738432'),(15,'00748396'),(1,'1010010'),(5,'12121212'),(2,'131313'),(3,'30748743'),(18,'50264967'),(22,'50264972'),(7,'50847583'),(34,'50856384'); -/*!40000 ALTER TABLE `inventory` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `orderline` --- - -DROP TABLE IF EXISTS `orderline`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `orderline` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `transaction_id` int(11) DEFAULT NULL, - `record_ean` char(8) DEFAULT NULL, - `quantity` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `transaction_id` (`transaction_id`), - KEY `record_ean` (`record_ean`), - CONSTRAINT `orderline_ibfk_1` FOREIGN KEY (`transaction_id`) REFERENCES `transaction` (`id`), - CONSTRAINT `orderline_ibfk_2` FOREIGN KEY (`record_ean`) REFERENCES `record` (`ean`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `orderline` --- - -LOCK TABLES `orderline` WRITE; -/*!40000 ALTER TABLE `orderline` DISABLE KEYS */; -INSERT INTO `orderline` VALUES (1,1,'00562056',1),(2,1,'00495739',1),(3,2,'00649573',2),(4,2,'00495739',1),(5,3,'00738432',2),(6,3,'00562056',1),(7,3,'50856384',3),(8,3,'00495739',1),(9,4,'00625485',1),(10,4,'00562056',2); -/*!40000 ALTER TABLE `orderline` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `record` --- - -DROP TABLE IF EXISTS `record`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `record` ( - `ean` char(8) NOT NULL, - `title` varchar(50) NOT NULL, - `artist_id` int(11) DEFAULT NULL, - `genre` varchar(50) DEFAULT NULL, - `year` year(4) DEFAULT NULL, - `price` decimal(10,2) unsigned NOT NULL, - `image` varchar(64) DEFAULT NULL, - PRIMARY KEY (`ean`), - KEY `artist_id` (`artist_id`), - CONSTRAINT `record_ibfk_1` FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `record` --- - -LOCK TABLES `record` WRITE; -/*!40000 ALTER TABLE `record` DISABLE KEYS */; -INSERT INTO `record` VALUES ('00495739','Babylon By Bus',1,'Reggae',1978,24.99,NULL),('00562056','Soul Rebel',1,'Reggae',1970,25.99,NULL),('00625485','Sunday Coming',4,'Reggae',1970,15.99,NULL),('00649573','Black and Dekker',6,'Reggae',1980,19.99,NULL),('00738432','Legalize It',2,'Reggae',1976,22.99,NULL),('00748396','Natty Dread',1,'Reggae',1974,20.99,NULL),('1010010','A test',6,'testy',2000,20.00,'uploads/2009-a32-08-05-adorno-b.jpg'),('12121212','Dek Stop',6,'2 tone',1978,10.99,NULL),('131313','blahblah',4,'hip hop',2011,9.99,NULL),('30748743','Marcus Garvey',3,'Reggae',1975,24.99,NULL),('50264967','Catch A Fire',1,'Reggae',1973,25.99,NULL),('50264972','Mr Issacs',5,'Reggae',1982,9.99,NULL),('50847583','Bush Doctor',2,'Reggae',1978,20.99,NULL),('50856384','Night Nurse',5,'Reggae',1982,17.99,NULL); -/*!40000 ALTER TABLE `record` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `transaction` --- - -DROP TABLE IF EXISTS `transaction`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `transaction` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) NOT NULL, - `delivery_method` int(11) DEFAULT NULL, - `dt_date` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `customer_id` (`customer_id`), - CONSTRAINT `transaction_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `transaction` --- - -LOCK TABLES `transaction` WRITE; -/*!40000 ALTER TABLE `transaction` DISABLE KEYS */; -INSERT INTO `transaction` VALUES (1,1,2,'2015-07-01 14:34:58'),(2,1,2,'2015-04-01 11:22:35'),(3,3,1,'2015-04-01 19:47:03'),(4,2,1,'2015-05-11 22:01:19'); -/*!40000 ALTER TABLE `transaction` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!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 */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2016-01-19 18:54:19 diff --git a/week-12/templates/footer.html b/week-12/templates/footer.html deleted file mode 100644 index 2ab5c0d..0000000 --- a/week-12/templates/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - </body> -</html> diff --git a/week-12/templates/header.html b/week-12/templates/header.html deleted file mode 100644 index 373b26f..0000000 --- a/week-12/templates/header.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>Record Store</title> - </head> - <body> \ No newline at end of file diff --git a/week-12/templates/navigation.html b/week-12/templates/navigation.html deleted file mode 100644 index 61de714..0000000 --- a/week-12/templates/navigation.html +++ /dev/null @@ -1,9 +0,0 @@ -<nav> - <ul> - <li><a href="?page=home" title="home">Home</a></li> - <li><a href="?page=record" title="records">Records</a></li> - <li><a href="?page=orders" title="orders">Orders</a></li> - <li><a href="?page=add-record" title="add record">Add record</a></li> - <li><a href="?page=search" title="search">Search</a></li> - </ul> -</nav> diff --git a/week-12/uploads/2009-a32-08-05-adorno-b.jpg b/week-12/uploads/2009-a32-08-05-adorno-b.jpg deleted file mode 100644 index 4e896284f0a353698a1567dbd60fe9084352102b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35380 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�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 CN0P(< diff --git a/week-12/uploads/avatar 1.jpg b/week-12/uploads/avatar 1.jpg deleted file mode 100644 index 0f72ed7d3df1b440ca9e8128ce3bf9b495fac37e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13273 zcmb`ubx>T-wl=&+7+eN-cS4Zh?(V^ZyE{RHyGw#Q1VXUj5*&g%37%jfgh0?>!QSC_ z?tRa>-yd()S9RA+^{l;mb@$U!yPsZr&%@Hg27sd^rzi)2zyJV3e1M000LltHY@uH% zN=ut+XsOF7s>lK$L=O5-03irJz}dyiLrY$YTHnBs8hIIj0Av6GKo3xvTY9=Z`uu+c zQTD&(V&Sn30GMZgOj)i(ztx@U)cQ*O{XP~hi1}#ye+Z71wWlQlrVPTz&jQgnLhnWB z_!in)(g^)C0H9!4Ia^r)0O|(99%K8D51QShkL`c>IC(qU0{~j!qutrs+!LXvAar^Q zM>j8o-t=hq_*dDHfAs$->t$_;s1I!oVaIssZH;IP?QvY9eY_saqCfT@-_p(FQIA0A z{FZj+2p{xLg#P4T_z@ZaP<cKMprWiaAD18>A3HZY7qx|xxuqkur=_{mW3B(&@;F!j zs*}D50I(6*TBa?%JzoCH27UZN0?+_#03RR$C;>Wv8DIyv0e(OjkN{)>B|sg}1`Gfb zz!I<noB<EO2M7d0fhZszNCDmeIY1#$22=vIKm*VUbOL?A5HJqR0AGMrU<23z_JL#I z0=NNzK*%6W5FUsGL<M31v4OZj0w6JvEJy{U1u_7cfowr8Aa770C>#_IN(1G9ib0j2 zdQdy44>Ssz1ucU%L3^N6&|feFi~+_6Q-B%49AE*kBv=`&4K@bbg5AOX;0SOMI15|? zt_HV&`@rMiFW?REKKL90K+qwC5E=+OL;xZUQHK~pY#<(xAV?e}15yI1g>*oMA@h(8 z$N}UU3WMT7siEvpVW<LB2Wkm*hXz3tpgGWY&=%+*bRN11J%-*RVIq+uu^|Z|DI)13 z*&_KMMImJ%l_NDHeM0(zw1ad3gTV-4OfY_!0?YvB01JR6!17^ruwK|KY#VltjEqcz z%!VwAtd4As?1dbKoQ+(K+=D!ayn}p&f{sFk!i^$_Vu<2`5{8n2@*brdWe#N*<pvc8 zl>t=<RUOp|)ekipwG6cbbsBXC^#%=&#)Kw{rj6!+7K)aIR*UutZ4K=V9UYw(T@YOp z-5xyzJq!H<`Uv_a`ZWeF1}la%h7pE0MiNE^MlZ%P#u+9iCL^W<rXi*mW)fy4<^bk5 z%quKBtfyFtSXNlUSh-j&SaVp1*r?bH*pk>L*#6iV*p1lJ*atYMIE*;bIOaG(IJr3O zIEy&va6C8{TpjKVPk_INkHUZABI7dR%Hmq#M&Op>4&ZL%LGbACr132A!tu)RKH=@) z!|<8#74aSL<MC_or|^#na0z$_bP0S3atXQ!HV7evjD(7WPK3#X4TKAXe~BoFB#Eqv zVu@;r=7=td$%rM0t%>7^>xjP)|0SU&ktJ~?NhN6|`AP~UWhK=l^&u@F{X}{|hEFC; zW=R%D)<CvG4kl+M*CG!fFD0KKKc}Fikf(5?$fg*eIG`k?l%RB=d`;O+xkrUZB}QdW z^_r@O>K8QuwIsC@br$s?^)U@OjRK7~O)<?B%?&LRtqyG%Z5{1bIy5=~Ivcvzbp3S4 z^i=e!^nvtM^eYUg3<3;x44DkW43~^djCzdGjIE46nTVMbnf#fmnAVsvnZ=pinM;^I zv%pvcSR7gMS!P(lth}stthubyY+yD%HhZ>ww%I30PXwR1JSlmy$d17-$^MePihc7b z;Zv2TVNYA19&*rg7;>a?40GIb@^U(HmT|6f;c_W)g>iLoopQ5sTXN@ee}0DfOzv6m zv$kg^JZwDHJOw;Uym-8-ywSY<ymx&3d>(wYe0%)#{AT=l{EGtk0vZAd0waP*f>MIP zf}MibLVQAALJdMk!tBD1!taHDiZF>-i<F6Mi_(gkix!J+h*67~i4}=$h|`Fhi<gLR zNzh4HNt8?MO0q~gNLEW8N^wegNHt4cN()K9lJ1p($jHmY$xO-O%Ie7G$bOTfm9v$r zk~@~?l@E~bRX|cuR!CJ?RHRU}RIF4yR^nHBr8KCFq5NDqM|n$yRmDT4Llvy5q?)d} zrpBP=qSmSos4J?ctAEvC(s0-Ks0q{5(9G5Rp~a;Ys5Sf?@44yo_s=i1rL>c^S9O?m zymk6@v2~4fD|IjRWc1SXHuO34U+Iq<kQ&$<v>75B>Kc|Cp1+WN@#e*j5wB5{(Sk9P zv9Ix{38{&bNtY?Mskv#R8IqZv*?Y5Fb9M6)^K%PDi#&^COKHnY%Y7>etJhY0)}q#F z*1I;MHfc6LZAER<ZTIZN?K12R?4|8<>`xpN910yS9n~Ex93PzYoa&rWoXwouU2t6- zT?Sn#U430=-Pqis+&0{W+~2q#dnkL9dxAWTJ=?tS5gW{eH?w!7_vTBnm$@&md~|&p zec`??z7u||ezAVL{&N0r1E2wx0sVnAfuVt$uOwd;2Z4etg8GB$f+K==LgYi<g`$Nz zhE9fYhNXr53D*nnh@glFiP(;mkF1Kqit>nBj24bAjDg13$4tdOi_MO`kF$y!i|35b zh`&v+Oc+b#O3X@pNU}+qO6E&0NP(req%5S0r@l*rr}?LCr>my7yrzB~_xjHp(>J3T zJQ;<VXqn!b8(At@ZQ1nMDcQF<b~#^irE=@?$n#?JF7vJO=L#eWY6~d};|u>5*%vJp z%NMtlFqUML!b)G3{wUKe8-6SBwz8bGJih#{!lh#4oz}a-O8&~q_vG)BtH4#>ReRM& z)iX6RHEp%*wZ(OWb@3m758fYs)tl8XG$=RpHwrY?HZe5iHRCnMwSZduT8>-oS~uDZ z+Gg98+WR|%JDNW}{aDdS)0x{v(3RYc)*aFP(Bt28-s{$T&}ZAX-EZ2zI-o!Bc~En3 z>XY)Pks-OEfnmwvo)OWJ&QYP!_A!C6)^Wb^mI>a8=1Jbk<|)3ZmTCU!wi&^hj#-h} z?m6+fzImDXq0fq+$G@n3nO)FXSXwk%+*q<&`nl}1e6sR#<z_Wx4QVazE6&%9Z{*)f z)>+o;HuyHWHf1&^ww`aTZd-2efA{=;yA$yP^GC)m)o$fa?w_4|a(gqsUi{kGciX=? zi24oxop;E5*mNXuG;yqdymR7l@^G4PMsim1hv!fKxyJdo3+IcQ%eX6&t9RD|*TaAH z{_fuR+#=s*-Lc$t+$-O&Jvcu+{0BFAil8Ob|K=q!);8wePF~cHghkrb$<^C~`nj9A zr8PA>^&^S-7lHU+OaIMNEV2QhH4*@bSN?57G^6parvAm-{?Y$~U;Ymm;D48c5CQ<? z8G^l*{oCeR0ssQ%2z!dBy)E@)Nog%@>i-xAb}efgYY%G|L|1j~t$plWY!Ur;v9kBF zcXgq*cX?!Q{~o6Q(enSo#lLa>n=^Y^`yzNH0;j8+pNGAzofoyDi<h;Bi}@oWbEki1 z$Kw&Br>lpTy|?odYHm(WK>+ZydB*(@BoKxSg66G1Je)BC0P<@9xJ!O`xG8>kxI>Hu zWEB8<y&qNqX#fcVg+d`nhy)1<35JY;g5WC1*y!k}7;tP{TsSryjz>sNgojT`0EZLP z5R+0+P*G9g5z*4qQqq%CQc*ru0zwo;h9P62pkPtr!|^Hqf6GHZ07n6ufF=k)3xMDt zFdXzS2#_Nt5e#`ekNjUjg2F%$WH1UMmlQ!Tf&ZBc0z;7?u>WV?3V;DYoFCv|I3hhL zf|88UV`skD-uc60!uHWrzDoW_fenS6E9Js;-S{T2_^auf?B_=Q0Uh9(M+_k0h||ET z+4fe2*)69bQ9HNE8*hK!z1(8U--~KX2QL@=8vY2+kX5H^g)}|7la1XLvU}A!&-vYo z>`r%y(bxF%+oYCqd$7JWW(mqS*}A9;*n36PHd(B_iMJ|&D1y%~QOLEvM-=3PVGhi1 zjV;y@s(!6ltW~b`VKp&+y6;iG?jJ0#{|fXbo_@NHJtm$N0Svc8rSO?iWwqCJhN-gE z*%f!045g~xQ2gE=U#!{tgO@?!J#&Y-cX@i%it=1#KRzE4DJS-7fKbsHo{_e&Tv<D= z%Hy8u-V%yCY*!_={Cy+tdA2j8wq9PxllH6Q;9GNA{EJXn{-`6*IOCcvsrgbSxs9pW zi7Qh>M^gnuq3<k)nZoGA%kymft{t@{(hD?86bI=<vW-wtvlh#kQOH35=bR_#R_Q%v z^_3S+CCk5Mb>8N9IkE&wua^g~2)jy!fFA%4I+tp8GW!U4mTFk~XGOJ|-ALjoq(t0~ ztPrCR#K1(dinN&wOuvUnc6s=C(4Uwm#ukyxlZ4X~#ja5!J)Yf=Fc(x4hazK^F(&Xt zrH;*&YjB04NsT-3gkCF*AP$fSd1@gwWbov_?<<cM2x7Hx;s78hV(mbo$p5w2Adf2v zz=6YX@$d<#X*mgLxOnL3xu5Y$N=ryRtN<v8H3>ojFIYt+<<FjVh&>r-)?Loc`TjH3 zn;+Secltz&N41sDx9#*vLAz-C1K=(CU2%4UU{dMC((IGNMSZ=wjL`wDWs&Sl+-l{x zf_JBdU(p<|?<#-A(vQ`>j&0QO47BjHWfbI_U03i*6pYwm$U(77`F7H?T<}rx0dN+3 z-^*H+m1vSi+haXvk4`%FBy@zIGdgl7jd@2Zd8tWTn(2tux#HgFu71k+Z_<x*uhaFz zU$DJDZi54SLI=Bal9mTA-WLb2i?=#AY6`X+)q1#8+fwVX-=DS(lPjcc7b^B1(n=RB zW=`ARcr1n2&&W75{XTc?mX}@6*AmY3Zd0E;9>*(Y6!?y*GvoAnQ<jsA_gLvIcFqoY zyF*^9!5t&(QPFeyk2@Lro!z*mBi2PG7m1SrZj}tXF)tO9cUp|I{ce{s-G3!fqR&LU zJRIlf+7xe^6Bh;-%K4iTL{LO$EdDWh0QhlxRq$-(JPpli3sw9E+rJL0yn5|5kpA9< z;x3Vq$(2SdTZDtU|Gua>m!{rw+&dwGAL~*p2p>y0a%c@1V<0Gy^~sfn-*KB?dL*P# zz=G}Tah8X;55XR{l-)}jh?0C-t3prIE1k)7vpwA8<kosrQ*U0b#a7g?<_=F0rE`zw zq1L7?6C0IOG$YnA7*9&u`{{;EDY!y<f4`G(+|MB=pWZyl{^X~4Qo3*2E#4E_S@1}i zxGh$D8T7qtctNZA;<O`bnZj7c05^OfO{J3`=^Tfx3X}F?4Y%gNjxLVfIM0ruP^_ZW zb88G~{xaFQgjevy<8_>2^+%WU8uF4D%La!|IW}cn6BJ#Pv02uJu8?$68Ea0)IvKLR zY^hfA2UbU<&!Wm9=t(%JmQ{I)jun?I<SGDn?>l17_aI8zMTiKWn6HuXLW`JoDO5uq zhsb*Am$p?*sEz!)nE1`+>&@n?l>J#cxnvTq1x^0_aq4LJv~Kxm@#>d1Y560Vc+|Y3 z)$Ppu@`)qA>AUn%X1;f-#0*(F(v~g_)pzT6S8N7Js~1mj)@#{+!V<PD*PpVIlLkll zXKUI9;C}lN^Tck@B7tr{M+u7-MbqMg7AG0f9Oh^SK)mTk+@&0Bc|PVdO3WniO>r=3 zNKcN(Los>QHLc<VZ;6QM1=*jOU!T$6Qlwc9+pWpo4n6>B4yUCaS)ypuX5^ENUyd9} z(?*5qhH>DZh@`WX9Eot*mEQA`aMO@{gB05`ONAATuAF4al4KzeC?0SHFy@MI!+f1E zl-f|Fbo+w%O1g;Oq~LUwnb_#{nG*x`uPO$>?H?o}9)NVjU4a=6fFKYMGSdIue?R~j zf<(;)hvE=$KGO`vrRA28()j0YfY`6ZL0_Mo^z-`3)c`|P@t>Az*^w=ZRxArQ{dAH) zy^anTcV%tN@LMm|E@(}XwSCg?X5l!DNP8o&nldCGnmDc-$wxvFQklz>+SxuJ18+Ko ziAM;AQ~4l(F#H1q3`6W&|0M_@P&f@I1Q&;z>zRZkEw}kUC=eT`IB4TC%3JOQPS#w+ z5JAQJuj;j^<r{9RjwLJ1F4xbYN6P2At=dmnsk}Dwzf`u!+(`U(i2ka&n_adW+C)1H za?907+F}OBmi=f;!<i72+%{#lBDUWOM!?X(0l*+cFa{YF9U1+fK|x#ra40Sfmn04z zt){tqDiS_59Vd5aecv-4DG#r(*Tu7Q$Mn(`Y3U7{1iV_$JtImQ`{z$2EW=9&w*Tuc z3KIu!suR%H&{^v!8|9h?>jd*zJOG9qJ*JacJqz(ii)`&}DPkg~{>=l5H+DgHSWG~2 z%k@cWo$i_8B_DRhu&(Gt+<IwJLe5DRZo}&2QB2Kh?y?C#fWPxKK4yQ_<TCwY=I*cW z3MwKtw|si^iz#=^EV%Un_;D^U<(1mPuL^mx<2q@WO}4Ao7JsqWR$(0wQ*|P4P{*09 z>OpVj@9;%<)9rVR38R>aQ{~$~Jz^!P?gEyCuOf|vl6pRM1Qx&^fW@;1VAbE_W#hgs zg%KIsR5O<TLNyh?9%#I!<dcthhrXY?^ib2&0{aIb=SajpN3b5AiKJiDMo7EZ_*_9p z=O`T~_3h}3z4D5CyG@(Gqbj+Dv-IDT%8)z6-od`V>-Hl2wVYwSXloVD@K)UX{@1=? zso&(`8vW_Wak!?;8FaKeOoa^%#=8C2vcBo#<V}1_j=a^bHqYCx$q6ppcW+zk@;8{Z zqJJ#>_5sOFn>W6g6-o`lmZ%1CyW?$gr@GXLBB?K`-KsHS{MZ%Vojfma{xd6jmgw3x zH|mHwq<b}B`z2_aF2oG~UYjH6jk&3CgzhRDiDrAGu`p`M#0EuaMfeO``@A`w{B45! zES|-NzWtXP>%<!Bvr-|U^CVOnC>!VZ^tMCM=5KA)S%GG^%dX;Y{f1Mbci{Ku%B0`M zS-^LJf+j0Y8`P<*GM;;HIhoYr7`vT)MC%%n_Z>!=Ma`CyRjC7?cT?)GY{{LWw6y+M z{31c3_1y^lm%}MTspjZ?s>mI|xS5r7>fhn5drI8i7u}^@pY{nmm!he*j=f47m4IV^ zHdr<9k;Tiy=|249n`-R5pp<VtNpTn*Nm$Py^zKJqY2w~L7VYlAX};48pKhOskI|hk z2=8zQoxBw#=P&ggvXt5nDs5;N!PP}~?ee(|BH5C+Lg$l3Yqe^pjMx8*tmCNiwk2<j z4Zq_=Jwx_K_rNbod@APTMg61Kqc=mT#GKTI=Z8h!iyalNSdH?3`@5DM)3dwq=L{FC zu}AbGEc(-G?0)=O`<Cn~Yu`%=$?%=B8(seFkIA;f<{m%=O#J%o%w5#Zl%?hF3l60) zndS~t5GAU#&1`Qsk$bwHaU{;&^`lVL^<w|JmH*SwU6skR_NAqsP8x!8BDFmGn>R-~ ze-UfYrREz+`|0+};ILXZhn{uywUWx{$e0zF$le1``>zUqJt-XRCob8N$}{NB7qsI^ z+4QXn`AtdP^5Uq)1Ua!<nuYYUkt2lml&ac(fRAz&o4AXnC-J@xcw5`{0`Fwx0^3+^ z<_8yyEj6V)+_|8woh!*ockH%;0oIRIWLh!rFJkJ&B-JrIVi}b5oXT1H)1{J+8J|1d z@n=ItcWVZV_xmXAOm2Mh@3h_dPm|2Yyoq&|m+Q*Y(diql9r;=5$rEq*{8@?y7^!*O znNKu+%x{tp8~<^i{z~qj?c13eC0H{*@6f*mv$l>I>dTl6NbC~Qr6tg(N{IDJ;XRt| zXp42{AXRwsS3Aqrw>%st3U3?KQ|jC@8;u>G1`C~VA{&BCcz?Ec&UqenIJlW>qmTkR zH{Gw8*pJ2VG?3F0>e%OA&kApH!!V?_Br3cs?7w+M&d!$08lSGB<U91`G`(|wx*@NB z8jC7!jG!dD(Xlp@KtzEHBhA*@I*3VJtt)^P?k8RMr+&ayE=Sjoejw$e=a!GBX5@!9 zK8fW5g>ojQpV#X{*~d#xWWDIDB1s!viFK_d6~kHEIZ_@86%Ok@2IpwRwR^G{lEfkj z&pg)M7BVRRq#pkg(QX*E9`CB=?Wr((R~*exRB5!T(7l3861A-t-_w?{aJ&6QDiDt+ zBb|FFi%$w9{LJ}nCg!?tytQLFNwrhp+SE!gsqXCpgGcap(xlm-Dcoh*se5wa49w9M z^X}CvdZ88W2J(+i)x@h6N(R*V`NT$eF|B{uG!hr%9)PndW%5@>)(^nEUThcntLQ^b zy;jq}wfh~*l9asPT)K{H*YVw7q6apo)Z`P#Gt*t2-8EIrG@YVE7iwu4Y_Y3yPs@ba z_s+Fvg+|(4mNHxW$OxQ2p0u>h)WD~t*_5UoDLdK+Ih=Ze8ijv|liZapCMc}t?D>bI zgNJabD0gt|UNZmLU)~_J0LUhZZwkttJ+gcF^7*ffrP5F$Q;ArQRaw@e)q>*U@c3Bb z*qa7NN<WaEofN8M9_e*hie+<rtNQV2eaGYO*QJr`Jj2bG_<<?~kMZWE`ZGPh3eF)S zVH=lp3C*oHiuJ3;C$V^yDQiPqn0^H-=#b3W*-2F~I&A#(kxy&+visizT$j-<lgKWl zVva=E<E>|j4C%0;8sU{AEj=KVBi@!1cvHrmh8;0yHtKy>&EAKeh71+Y>cfvPW!eHa z*4`IU#E0B<3FgyxRKpS*>>Cyo-Q*Lm3Z~#t%Y;FJj^W=T{cX#6lU!HwK2nJTk;~eR zFC_SL5S;nbvk~!12K)f^^4uXcPjts;q*%VY<BcK{1N%G#_^gQo{TUV_7Y(<XS4{K0 zgHJ7;^KMDX96d32-{+_dW4m$7yJ-C>D2NNJp3HB=9r}K3xMnpx5kp2;S|I(T+U3xv z5Q0ep{5%xGnzldXleQ<{QR~qEY@n^LnWl$QYR`iO=N<|cW=&oC=+Kv=+g!(HlB32- z@I8`*a6NgmZ_vrO^1`1*)5+S?+SD2Fa~>*wI;`c1jdWccgZXj#7Msq}f{y6xF4g9K z4br50qe0wtKKVTgURNWfZ0D9gi^>_#+{DDeM9H?~TWKs0-!--QtDnd2#Q7plzZ<jt zAeVs&%Ypj|U-L-O-CAs!*_$+@v2pcNiWG((0II4J|EKz+Y|bxNHL(IdYne`@yee1+ z8>pVj@Sf)k48Km29oZ8qq>FtK&rO$H9bD1-^ngHa&XL2jPrr4`!0Wm+_<fS>4qx@^ z(pk>7N*rzT*}AeWmIO8n@tsucV7uio6LWqkXZ3^=lC6r$lg`agPr~$*f}dr;98`Eb zVr}!om{qG4cSz?)E+-sw(=%kr6u!FD1UQPQ)pq`Jl~XKJm~pn@Blxs2vn8$)kafLo zjhEnZ)ze3pBIdg4e_3W)WpW<h5D|`%Ns*t+oH4*Kby8eX6NL+Q@treWl#+~6PMR8< z{C2#)g=SBL3fQc8U^;Tkk`}mitLB4ZSEuZzUd*JPO^p9IsmbNgyW@Byxi|<e2?m28 zP(&o<AEFC_(*RtOn&vp}p{d37$JCsCo3j%CedHCVIiIt*3r|5)?est1cpEV{DRM6$ z01|LJh?*JPBf~u3^{o-N>Cd<cimRLQ<Y&B$hlxLruH;ILisvQ2Ywz7>6QqBm$gGgp z^FftCj8k=rall1&7fXVrxA#(Ma`V(YKJ>y@e|<}R2pUwl$YT3a{1O~gZV{uB;7Dko z2u&+KBxP&ruPL=7g`?CZk#VKpJtt<!#NgvIO;2Q~rkA}Ql2#YsiKcB$l_h3055K(Y zFaC|p`0G>)wBbmZni$VWtf$bn-AEwkfdQ>~&RVYuLl#Ca>=lHCwP_2w;alg`en(#O z8~AJE*6fPCx-00R+ZW>3F%VKydHIWTCO$h%Y#CW2+wmeVuMtxsfoF#;oHN1dt&+AB zWSl*hFz_pGl9dl}-%1mtD#_`>C=y=NcM$B7FFqG#oW&#z+^HF6k7oQGlbRPb|Kg|x z5BhSFTtyjj*gzLF$#oJ^i*C{}^(;tpl2w$fi{~bZv-(&P6Frd=jexi=D^Z1mp}xFr z04NAc%f6N<gw*XlMFGiby<85ZUc9rKu_mncdbMVrzML#z$R9NVEJe8U<S>m@(Apft z(`kH?<>l7XWMZVvYaEBK1ngIv57ma33ts`ZR`o@J-_^UR?Bq>nZ%neQhDXeNEve2( z>Z37RlYp3G3A5L+?13M`qE1^2ug}uZj*65VbvmoiN4lTLj4kTO-&>0bnC78#F~yLr z8@>B;ZIjpZ!B?=a@mLXMb5r5arDOy3DyYew7h8NHDrH_nxi&lgmq(z@*-olZCxuWW zo(ppP%>$4{(0CRV|AD#X<Mji;t@Mk6?6AQS32bLM=OPmGXLA$oHte1E(p(r%G4=Ir z$0r&o9{R>vvNU{oTgy3aCfieo7wn?`leZ|v*&M4PQHp&DZ#Iu;^l<6q>eF76XPjXl zEuxOfe5u=|vSb`zzTzD0>skBbQ53~3kw3#=zl$3+E#Rt{vZg&e{e8&Y>n#bYiF)Dp zC)!D_RC2i68U|@4ND>K=(LzZsN5~ePTWK(VI@0Mc{oP|EJO){Lrw_oPf5?8!R<PT8 z#Ad8^s!8Y%1-QtkKJ|eQlXA>B1>zwJ8uZ+N$9RM=iW$6wRxF?&uELw9AG!W^$}d=a zdDQ&y0l=7ECHd|T1g#%&jJqA88u+DVDC`Y1%6_@@htc%KQB-7Z6LnaYhecIP7l@+E zDX`+@g~*%HQp&H+4%30<Y@~V^yO9^ZzfsU79nQAho=;}!>`}^E;U6+7KemXmOGLG` z{{D8L|4aZb($LjQJRVkxnKCKDx3#B1DLM9uLDp<gs`FhsDbw;<oI<=Z>g==I3g5L2 zex$Q0^=B?mxxt3ZeaO#^HVOEC-k_h2s_w`*V<<tkj)gygW46p+-#EDakie_x*2aUs zo@8$Cb59#AuaBcY6d9HSvVK<Yq+`^)jvPagLnBK4(_=Pf+lN`Cb>%!T=V-bBHhTI) zDvuxb**9NT=ZNVoH&uGI_$F*C2iC)P+Gfnmf)Tu2t>F{HE1LcJ`(0K7yHcK4U;Yr7 zkQAHQ^U8#3lWeiUuQ%gF4p%z|?^p(^n1(FcuOz7-dw?f^5!S4)&~>R3w)r|sf=p=d zEOLXU8vc%Bo{9+`M&C>e{`9R1&yGn1{V#jK03A#NkaX=S&#KHH9Eu)enw#YG4~jsd z^z{CYBQC-hIxmox-GzERC@6LG063=C=_-c*p1Pq%!^G>Z=PPm8C?;m%{ib3w`1(df zJ^{kkNEAc7vO3()vV+sdO-722x+CC*g%(4rkPtAOm)r338A|{wb~!5-qq+2cYRx=K z3npJT-4x~9$hQg*dJZ$}cd|_B??-NreNq1Okfuf2QR-snan867QAa0)ef^2gE}s38 zpyZ-=C|w)%>&N|AE<3+3dXx7;+;V|Kym%IYpNMtuQ$zHh7HhW&=&rC~g>Ecx^n5)D z`S}2te89m$N)~bT-p2je>-lns8SR7FDsOo0Ysls&s~jENlJO2}eIMTh4~2}tx+Y~B z99Z~*x#CUfarUcY?pz0+VW!eB%(`v?Vij6y>br`weXbNDc@8HN-P6YKo;zg6=pw1( zZ!?q}1zZyPVO_{7Rbv<EX>`8Y0m|wvq?ODD{2GEqWl-ed6YofdCw_KR8Q7574;bkm z!*QboCa>8n{_u5UL|!yGy>V3|ILd3@lyRM-Oil@srz+RY>JTjrnK6^EJ=Jgm%l8F- z50+sA9SL4BT#e|F_@X@XROU3Fk}2^k4*1|LaB?wdK}#n|L3z3n*$Koh4w8z2V#A11 zY-8(ZS%s25TsL#PKgPXl|3u(_P8|Frd7GcZ{`t7!;-4@XFh)(DllnW~Fa86ad7tH2 zTSQJo12%8z{cv7{<1Sp?n)%BPgjCOx>+Hx(`h(R(UOfQeF=^i4hVPRL_ZD$~yzCcS z+6QovHGh?Isco-LvEwADx!}}wpz&!Gd%0jGCBsk&2ZNTLYjS60@7&_u%l{NV?&ae2 zq58@3XJYTUeq*8S;(}ZI_gdg`lo33_kMrp=_+<lMS>~(lO#0eUl$ZHd`k1c=H^^1K zNnU;a1QP@p3?V?%8H~QHD5O>8+&6!tGDX5}<-|P%D6+dxQ=wN<89RL=ctPxaXcpF5 zJs*N0W>f=Y^z@qI4sT$J_M9_rqV*~uuTmH&7fSkM7mWU3g14Q%5X2oG%}|-?(cOHD zPgSO#cTC6>zn25bPajydywk8qSym0$4j2|Cv1js_-=%wuoBikW6`a!#LA#qD=ch%^ zj&L!vN}{JlP7mQ23pvr)BBzC073ha=?nF-4^}FWs<7GQH4eNAlsYVC*PT5Z{quyd1 z@U?aF3v#CVnu<8sF$k%%H%^P#O%qH{eL0&J`BlG8)S8D-{N9KlQp6WQW*FfJG6Nv} zN2Ck{z;UQ)xZE{oIVH^zajD|tlYgkpW4sP0fll9M#^mdg-+Fu}*$1B}){cD+zL8n- zJ9AAu?K#xN%)nqX<?)7~XyO-^Pe^*kzlWLF1SY>Tw=?RxekEDfT&{at-VxJ-=bvn& z_f{3j@J}KJgX1WlT6M{>O+JH}+|Hh#E2brHl=BCV_fltq6ssGqY%pgVjRF0H1v-PD z#}5DkGyNlG5ES@#bPs`<1`*ej<U|m#zFG6)<9`r8#`bU$NWV%SbF{80RpvkYdlSx~ z7?72%KRxKM-=>G5GsS4_M=k9zTxdGT+>eT$JlIY|`9W8$SUFa1i)HtO;Inlc&B|Z3 z-o3CG<A#=E{e&_;>nB-Zy%!1k!)}@so#V00Jnfbocu|?9S^257Tzc%ki2U;Rvp)2d zPQ8hd7sy_A<|ncIG9Ea(MvSX7l)&?RN;Wv-8h4|LF+}&g1jA$IgHr$s{6F34#NN z*x<jYBqw!oec$ZnvBbY70Ffz<^S2l9>3>1a6CJ8ep+6MpL0+qgmLDa-<LFr8d{IYJ zPGIPzz{g4v`lgt;=44g<!2I3m&p-jwm{ByLn&-l$I+glz*HtD(7kN)+wfYml7T)1P zuG`V|REZA&0}{(h(AwZrrB$S|@bB~6NP4XAaAbA;PTVqdJ4{2)E(Z_8m0G(i3jl%; zBRj02-rJnu;0MIJkH6pEi%qYuqsZhxolZ;+u1*QDDZlFMRqlP$y4aIIv8fS*pP@nh zvgt5(3Po@mHWzBfdU@4EcBxz>+C%By_b#fX>fUXPM)V!|{W471F0h;A(666>lBH+( z{yf7F4b50Yx?{jC;gZ!;u_kzgvhvqP;=%6C0vgTCoWbs$AU%riY@lbhSbHTd7dY9X zi$^<!i%!ZePMESuC$9{(i!4Hfy|Nw^gtfl%+30;R))p!?!=<no+F!9OV<OjTC3{|* z30ApIk$}}+@gYK}QzSiIqo>ZbaH6>k4!^q4JR`7T0PT;VG)&)G1gNiKbkV#++x(bb zzk7b@H^kP`^-S@kY>Rz}-xuANdq+=-x}6za34Ecpb4oGTAy{Fq6vBd*A^gnH5NVV< z$2Sg&kH34&i3~`#?@fq}FyiR8@_rr0<7t9e-L@655Yl6Z_uQ<e$Yau3<boGP!v_Zf zvgKaPONs;@Tn(%}rEQwI%9OpHMC+516mqtS-Od|wJ34E``;g95!s&>wH)E5-H}Nyh zyf>;>m{}lPF=I)p3%Xn$6W5!8^PbL5>T^S}Krmp-e_mY3SaP$mlcxIs5Z6S4X16+f zvE$HdzC%Y9>3;sPS<5%x(0A;Jo^mZ6+<;~J7^j<ds;LAXHdU~7{p9)#oSC08E(cNh z$@g4OO?_SObk@k4B!ra~!zIfG-722T(%{R|GD~F$Epl~a6uA>8GQmsz3@`-14E@kA z`rwAlzkA?Yq{%47P=NV~`R|)HwDcd@3bAM813YqL2Slo_E2o=aoq5Bv;K&C+bxKk2 zqIps6^4bH6#HSt-aKqEug^{6sz(h2#_-0NqLp6R;e-+PNoJ0$$j1B&_ys*``uibTw z_Fd{rfgfm`Ur-!Ynxi-wU<6S*jIq7~KdG<VKa@+UTA&xuqYTazb!@7jB0>N!a86<* zQ<n(P2#abKDhMg=m*{E?A%5L9?@EjRJ^;zTV>K`8GVcy260LZeH$ZIN;$n>YeNUrD zgt0%~3|TBgP*G;vex{~y@Sl)I{p|TECieFw&h8MwXYU>&lvCR2sJvyWq*sCfT278s zwAs85i%XNlpvCi%*sFn+Z7>-TRJ%A%6UEvaPl^L+6K5&B@oxx_%qsN_W9cOoA6f)$ z(39$kG|~C{lh0uX-73ttAj)<4QQh!i7%k}q<kW(X^P{zXL+T>`XeR9q$*Npt4L^!Q z3vg^<Oj*E*(%B}k_aq8a%6Bg30if*0`|0$`9D_GNhtwfV@TK4ioSC}Y+#p3YMUy&S zLmm)QnT>ChDiT(xda?UARES@Tr}e1wQmin-J)D~2_xdW9pFpNdW&8^PQInc6Fkz=- z@WGv>&TF|=yx=2}&+oh#i}r`_+s2&^Tz`?QMr>ju$e-^<-0zfQ)A}6rX1e`7mXkR1 za=MRSW%J|>P!u$!Wp3`Upb97jO1*1E+O%=*<Eq8Trmj`Fu+xQQX3};Cwe;?f!zuB- ztH>&JMrj1*>`CZ$7PLL?<hSbyTIg2NiWKx!UU?p+Cqk?B>Q{jqZ=Q`-2<IS&(tyJf zXYT4dBu>sxtwRrF1wrzZcNopTKAUkU7Map5IOS2>YdkHsAc_=xTBrxaDjC8k7*E@f zsw5#DqJDd2f8Ecvq4l|Lcc#d4EpH_LG8-+qhYgB`o0S-p7&J@FDsX@2Plnkkgv8Qt z#Vw<TqR&W>W&>Z{qZmQo_GM6L09Ibw=C%#5Hy>Cd8&IQn$!e3{*K*d>!1URsBDRdV zLtVAr27FbHGBk|a<7b4{S>zDE=a!(|$cuF*GgeJVJqo%+<CkTY3nz$m42e<dW#_{d zLjACSc-IJ2*~vx!bTysaAn8zJ+R1o4>m6S2^W(F8<Au~OLk`>#K-LsN5iL^qaq{LI zbKJq8;_8c$1^|dNlbjNZ{Oz(ea*s?@<+d-dqJe`Wk-|L&0)1ruA}^_9SxIQqI?GFB zHrvwvtBog{D=m`92Uzl&0^vI@cdKw>=(SUK*~M1&%Nf3(n{5TXhNXvT((k_ekOBwk z*ZI96^UJ~q!3?mLb7YoecSl$=wAaFH@U)pm7CzvwVVUbwrG4_{B0qTFY-`Aw0831B znpUcB1}dOW`Lml#m!Tbdn_Ampn!PADs*}pL^DRF<?o$CYAk3uC&}+S)3j*5e5wgTW z8l1H#sMiaqc<IF<>PqN~pnLab6e98HbstVFWCrRDx}J3MaR0BQ7@^&H3q?^OZxF8* z3bt$6-z9v6rFwzPGQmd<gvan$W*UwmuA<pzX&Ex15=hpH?(77lZ@D<vjHqd=t~F9M zBBuCXvCgQCPGa9Nva6f2FD9K#2*ObQLc0!GuHC=KbeENq6n7jq79vh=K(DNh7nPvX z6C-W*P?uk_!o^pA49zdi*Tq$ph-IJIe+PX5wGx!=#JH%JVdBBo)>yws8L?4k)?ALl zqHe^SqfZPj<_Mn0sRB5Z;f)f!2FmMZ0ubt?++x)R*S4qnmTIY!UE0()B?U3zT?{r8 zaxg*UQypgorN|7O!MNSd*Z7p>>WxqOp^{iP!mmC+F>IirY`jL$ULAdyNT;@b`R%Uc zttAt+Zdy^eJt*Q^w)9F<bGQU~C=5px4GP)#D>8IZN!nkVa#tDwmBJjwHHc|3hMz^b zZA&^I=mmo&$}n}K?rwl<us!E&GUpF|83ua%qMIU}Z0`glQh@Z!WF4K~kl&yOe8sEK zilDd|<d!_m<pT#d_|^gFy3yUvH#4_C!ZD8B3{+>~l@Z0}Kdwl{-_Zy{>DJ;H><*WH zX7@ku0v}vVEFfXKfzV_8ivypcXS^`m2#vJUr+@JU<Xk4Hng@gyi4cDr4J%lAUPJc& zJgmA;W|^oT69c4AVb~+_Q3YUsiu?eyH(!_&XN$l83Q&)^t$_FDwXncN0e#_rh%H#- zD0{?VYhEuRF~q4O=V@!AX~=UOM?v7XOS&(*bzF+rv^e>2AVUP)*q&`BA(*(Fq0kQ) z9bdDlILTl*P_-Ut1`k#eV5VNRhJqeD_PeFwg65W4$u|YvQa=$B5Bf#gXY4gm-&rn| zM#%=4jE8jq#~hC)<vcdpV)Ivo74v3Tox#VL@u4MVOBM;5c$=r_B_9aU#@@fL`{SL# zvLBtNI(v6?^(vE-3B}mWck+3Qe_tO3N?|gU@iY?6RBsOod%7>Y%~2u6Z@!;1ML)s@ zj039=F?_2>ChC7m5Q3+!)Nw;u=vwnEN*!?N>-xoq%k>Rsc*g(8gm+OqqE96T4jWwF zuB&PqKDK1?(+x*eD%sSqD)}JvO{OAJAvft4=HnkWkp4KZeBXw74<>~blS_+omrc8s zL||ks=yzhhKOP6iq~rSp(*2#>^ln0d<Fe|aVRJH=aii%eZ_$l#l0pFqY~<q=!kqm2 z-^XlTTuBNg+5`-6ynaS0wgclx3H}&3comuVWweE$U`psDla*c*Qc(=x58PSN<K=7+ zI5X8Bel$%F@T^3|m75pSpsVjorB{gHD^i7^?Yk(x@$GY7`SY_;mnDDbf^i|pKsulE ybE_%xJ}*v6xG1wx;lQz(NLn~S=NlcReLp&*arcZIOf+BB?}7J-1H|^j^8W#fYjAe} diff --git a/week-12/uploads/avatar 2 06_mask-2 square.jpg b/week-12/uploads/avatar 2 06_mask-2 square.jpg deleted file mode 100644 index b0046e2dc12b34a2a3bc046d4726b2a26602c5bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56863 zcma&N1yEc;(=NO?1SbIkizQeH?rtHt1$PK6zWCxABoI6}!CeE3yW8Rpi@Up9ke|11 z)vbH$zF*b<oH|oe({uXR^h|e8_siVN8URmDN>&PhfPesyc|8CxivS4#GSYwWS|Xz& zzn*9)$jB&Y=%}b@sHo^~&@o<t{^kwVfACsjV`E|A{|E2>H~zx}0T~4a9St4#%^Tcz zI5;@}oA&>^^3nmoM@Q5})I~zT2O#1jAmJmt^Z>{K2ml0>|2*#h1_B}yG72ghI>swm z4iA8UgouoUf{Kicgo=Xn+7s|f#z!Iez>X@eg7)^Ku_O9BjxYW()T-H?gq$XoG)@yl z5&^O6XS8aNoO9y9DhxU<P;S>NFVfd*k^Zkc0shymUTLiO|6z=X1VBJW0w5xw0A6c| z_(&g+3E0KoepE3=;c$HC|AmlKHKsG$Dd1%RfQ9thA0G)HAPV?*|H}0L0P?$c4Zjy_ z43>V2K}Pd@@T4r_%)_bjnlw`z>IQQ{G=lkRB31m<>xv6*zibq#v*RD+O=B*`(odfr zpZzq$xw|A1|ET6nh|zoWO_RoI9(nimr4iSt(mIh>_RtxI{T=Yc-O))pmytubk=Vph z`)SOoFeZ@0oy5dRehZCry|z$)ee2*o&dFu@15*w|GzVS$19DbA0%FIB|976RL}<=j z0YKaGRHfkBtN@@r*L=Pu`hNjc7SGKLa#r5T0~PNGiVXTI+fU*WIiP2%(B*KPT;n_J zFp3%D=?hq?<oHdAVDWO<-_V=VvM_OQ>1Qal{|pxm!*6j*f%qH*YLhJK7Be2YJ=$7R z?=J_R2V3{vZcm7nwj*a1DPRzZ8+z?mijn-5`|M}>F7a|Jpp?r$=Z({$arQv~*~V0H zdkVTHVGv?K+UR_tI-VIbk#B~vq=K~jKPzJ&K<yyd;jeCsTv%xP#sRf|w;tbfryhk+ z)m?#p^5%7sAE_}GN=4%}&LSt!{0YN=@9qzr$50bL;F%}k!i`<^7lq!RU<-3(m&qY- zZ^rv_o0k2%2&;xtd@qy(t2O#~vABoW+6=PHMWL2q=x8EI&t0jZDD3Nw4F)j5Yh&FH ztNj9!nJE2FC8B~vaF3!h+sd}xMSkP_1;CJDZqwh;=Zc!rM9kl0s4Y{!a7fldxzR+Q zF3KE9Pqa4UREP7}$<D9$F7m@DeYSq%-TeA0T#GUxSfdsEm%H(jwA}WjDev)ETTn-i zCtfC?)BstV3NHW;Pi7f8i|W7O2UEZ|JUl${h22<xB~ZW72o?WQnVa*xoS-TNE_35a za7oS?R|E2~vr-9W|K&FtL7qWLO(Jod8bZrY?DINru>1PMHPgu3xh8pXKeUeS7sM7J zaK$5R@T%n5di-s&T)0FMSSp&RU6bqzw7w@qjQ_%aScSn;+vp^QjPN~AoOst1KW;=U z0FIpybZF})E+5{A!lv82U=Mx)$SgfD5Lq))<%P+G{XwD%&7W*Ini#*&>)W2z+&)}( z;48FDAk-;7(^lYGo1dw&wtZrRufG7uXD>Xw+ssduc%bBkKTkN4G}IS$XlO^^$=kPv zQDmM6LT!dd+a;;L4$Q$p-?^|+RmDUVla%+RIAgWpLy@!fy<GP?V6)vTT?LD?!ZsCs z?dd2i2pu?A1W5i|Dj4xhD({@R$%&!xQNOd`hOYaBTNVaAmQS}(1E~p$ohd$(jZ*(B zH6(d_8{0eY9#E3m#~Hu_A#;k({@k9;x+ytY7yqb&4FQr%yWR%B0Jy?+R=$G$B%|~R zy&*{#`wk+^(C&rhgZ;5yq}qh~adLiE(bR4j!=o?`D?N)K6#Av}JO#@HK}CWsCTh85 zL7Dmi`Zg|viPat)ol3T=7^hEODtVlJjmg|sQlt7=OdJK7>Nku3$p0_^!m|vJ1D)|U z?Q~sKDwSNXD-H_6)zo`2vEumHBZ(nt61r%A1U{XfMZyG)`Wp0E*e1BIr*vNc!J-&# zrWuCe_2J!P{LRx&7arQiPc@T{uKa@X*<l&KFX&EaT+X$9OY13-Fm7EsGw-q5@dJ7B zXGd7%S{#3;>br@T*}}3Jtv1&0V0Jbwqw@DLCOE9lu>eOaiuW>J)#!`nm%A?f?#W}% zpT{_3eO>3&&JCPncnZRr1i~ziDEfBV7Gl>lwR-xVnXIDI(<~@BO9MZZ<bnJ@?$GlI zto$I1GTPkTwEOEf;K$ycy`lfPf(xU^iSpLzj{ITX@xr|&*_S-cSCixgpqOh4?tmzE zM+em`=}lWUJ_|Ip69bdJxuJ*3V|z~$O5~#GS<h>xD-Q$dt4vF!I97A2eBy&ozN7=y znXeV;t*c{R0Fv*J26*5HrFrGGH{(Uu#7Mm%DMhjT4DWuQSY=^<qMMyTyd_pdHCcD~ zA#|nsiEh;Z;lPvOm$8X^BpsnNt*v+ZG=89)CChq|<)s!3m@uuyRKV%7`6%AY-6H>i zGep(6GPU<BFVo|R&`Dbe?5uJl&S&9FD4LP!)QCE=hn<H#y@xWO!&}*Q<ng(5Dvf>H zVt{tZ$~>*^LhhC*U3>QQx~a9VACxw9sG$)$mP&<?W#yQy5j(vM@-&v`x(L8vLAwN& znTrlKn$-!?q|9^T@&C{eR&%OiAu$6>eEkWFOZEoKMsM5uj4+rf8gP!v1)vjG&gfkX zd0LQx3Gl0QpqxB3k4EAnUrcXag`wuuILbm-epM0SId|u+o|<86eLUY)&6fPT9jR)0 z(JzPA+}AqWUEu>saI+xLTcUdW&I1K*o4ex8ozB+It(IpcjKuSS#oiIer@2<I5cl9z z%3PZ=M_UCR+pjc$wUZ_%BknB+L!tJ<DF?`?g4?})Ilt|U(@?!?X)yuzI3AwbFjevY zvB>@(Rg_QY#H9Cjzf`FG5f?JT7(^N=K5Vv#VtVcE+3FZ}NThVT&q>n@X8tB>|JKas zEtu&78`&NeEV}fT5C2?=R;RC;eY#33D5Y7Sg&+L_*zbY*1@^!wyL)$bheV#aHp493 z-I`>ObUB{!+O(X#xSkK8S9$GZzPI<rGa$~y-3--z+hUw%zwPaPm%J{enIS>*lu*a_ z7yw>=ijUX}vVxboN-ux{9lZz~YDwC;J*41m{~kV%W$7nFy`o<hVZ2ht-V-{B&Q)Xu z+lxf?S8D$hw-%;0W>gy7G-7$gtCvf;wySEpf$whZKEP;cMDlaMC+BW4*F@UBKlN5# z04#AB8y*ZlxHLvVZQ7I@p|EUv(CY{HBPM%je_mcPRMPf_N_M!%CJ{Yih@!UUoc`?V zc>#R85K0Oh+1Tz~-Msf&644aOyl%y@t)F+2uQyUV$TrCr46RVime@q58~KFCt!F)# zJ-zY3sE}|h`?EV~o;fsCRU)<FU%|#XNto5=PP!gm)A81ngB+~H@hl6m5f?UA=c1C- z`jjAB)DHb4yhVy~%eBah!Lxo7l0vUWE^uLr^-2y)q09P`L{HVZCNr~`haK*hqnfL& zd1&3ArMBFz^YcyE!V@(8;xRRS_94m-uasluy|*LpH~V7Bq{q_9ZgS~J$f?T6?AXa# z?7EwG<cy0kt>(%Cd~~0T)CIU|QkKEaw^g7G{M4Mxaorjg;b1sJ*$tv@iD(|ThB`*< z(v|4_4B;}T=6)u((<Du`g(QCF^LE7Z`df~=zEI{eh2>QFwT8vZl&uC&a{0rPx*{`V zKj<!<gekPAe#c64h;m)XqrWF3^ZPh!n_Ve?<bt1C?Sk$fYG18prbTwx`a`LKT&i&D z5+zY-PB8&muzJ0PcOtFDz~4W^c7*$PzP#UH-I436$>8D?pzx<VGvtF?4_4MxSR$Bp zs5v@i^Is*@c)grDcS8Wzv(P0!a(P4_%~g)~!P$uQRZ^I)?;b@;VY_J!_7|&$-7bOd zXo#We=vzO2_&fag?+A#MdqbIj#JxWwNj>C#8y(?7@clj3j~OnrGN^fZgrGSa_Gpk` zLHNXZi(dM&$Fo)fdq(x)&}T-kCi5>aHxE-tMqk=2&r(KV%7c)5&6%j$dD3i#f*NPF zMKjbq4jy~ZWfkn<+>=R!jndiO<J7kLM~_Ko-L*5LJb$+fgIY`|4ofXbBa*$;3*a-i zIV^lUHEsz#FzZMEEFtS1%U*Yvd<%R546AO|RrBY4T}Xy9X%Jv~-&YG7G5)nDx8j7! zSDGZ837mipSM05tk9TrT7=vJp1qb02kTg^<(%_du(xJF$jkf$=E7K1hwdHgCDa*@h zPAk(hndC~8VGS@!&s(<$Uenxermr?T*G;gvFtgi@xr=Sq<A<wq;*A%8PeQWYryZUe z|C7s#<v6{Vz4b=Soku9nx=-cZgDCOPA4Rk4Ij#V=rb|c9%mmArSH1XScMdwUJzK!y zI_P#nA*XvSA#;eAobYMmGsmFRUwC?)BL?<wyG73&-h8p<<avB2W%rX`(ccHx8x$$} zS*Z^SWmQd=H&w;JdecSM^25!V8%a}N`FwwN)^gLfozt`XFo}duoVECY>xmNv_QOYl zCdNA!i1<fc{@zlULJMJ$mt<+F5jr#gv>L=+ppI>M%@(Y*F02GiK1IKcb?92pI4V0) zuhe0xpN1D9!_2Bi`ENEdmK9{#jRItrF_kDEj2Y}-O#OvNjl(=2_5o`cf;&{Kqt~?H zt-2dBU`6(r2X@S9F-vg@C6(}|@un{NR`UYTq?z9MM%wpG&z;NHnHUrx0}eDOO{eU= zmOP#!yix)L17@)y5Rp<A*}4XcIzbCtb{kHea*u}J`&asxUe5Y%<WP)Fj;Yz&^${;p zCSAqe+J^d^c2@E+Aay3$E|DHoqT5ltYe`%-?8_z{W>|&W*;NE^Wm(%>x}O!;zmfLn zx58=x+ioFI-e|3jlcYvkIIQg8FD!Cs5dGE$)^ssa<~HBm{;+1_yp@yS(&}0CB`ZJ< z9Z4@M9{IlkF<`&}Wp$!~?6d?|_!zeaozGhoq1$l2A*whM^nvn(I`)}2L#iY3fpDs` z(}OWHGtqIg@p|(ue>|H!CdID6_T&&tRpZI@>Z#*FTW)j|h{hXEPdnuLRBmovP5q04 z+@<Nb&zf%&H79SWNmvQ44E8h<_RPs(pe4zhx3$-WY{p0Qb&*qp=sV3gvFVxWpv&4U zXUgsvNaKwEq)0%7VHS;zdFOhXt0iMzhV~Lxx>M#nE53^3zM;`%wf0^_1_}uLA-z66 z8dV$8l(Y-v(&jbntGF6t2gf%PN@l_G&itY3vngJ-ZMnt2g@}kT=a#J^7n72R4J363 z=YUGP?{}knfuk8L^1x`%NA>miIKSj;7SxTx4g6-*o-`Z=#dRD}L9~?ncF~^ewyDiM zZ&B72>nGP`St4rr3&ugu!6y{~^&bJepBNx^5=~U`$b?i>A(%OJwz4L+6s1a`CC~kn z5n(HX`yszHIzv>)^f&`Q2Jp)0yACg-9f&>TJ;7y@W^FH-?HE|NBega)5YM<zOl?K) zQ=5+zlV<N)3>#p>9%*g!+^61A$cyKcMf5R-e^a7AE|-8Zsj<XbtH~)&69=ctXR3WT zKHyhIMsw<K*t=xb9m;Yeo}uL0rFt-EE?>bMy_SFTm+>~X$5QL=`$Q1%QaLn7nS4<v zM3mY_S!1)2)<{el3&V;<$R6d7X=-E7kXNl8jf`R;YVUfQZKB<G5(my(xGxEO21S*M zng#dGlj<Ug3j{}p8u>tv;2Is;@;@&H)m*&JDVA%w@op!6?}V70>!k<m4q-P{Zs~WY zGtwe7p<+$=H&AO7@LOAj@bKJR+n}5~;-H9-UXYriS^}$6slDN;BhmZY$K*mJ|CDvF zqK4TY(u`1IgDbOV+)aZq(=kHZG3twqM4#mY94(HcAK+8&LMwC6>5qapHn^O{hU&52 zo}rG519B!=Ym%WVa(_`{a)M~|f&YU71<0D-bkC<l3)a}EtwI%7m|_ZgHb0oS9%lqa z4lxjpG0+|E2*?dafbgLkVW-%dG;kRpIEMU@xe+d2dt;=$aX!o*bNRRg7dnnqqE=ZM zoTz?3WOz#xtCV-r%EWiv?BU(0SX<pk!+gcxw!jkMa-NWy&NMX@pg&PBX>&de;)p95 z3rMAALP<E`xJlUCH=wFU;92=+VBwm^ZUf50f7AnD*OL}a97g>!b5mKAnlB?3(A}rE z8oh@1#$lQDZH$m=dssG!@aO9~^U|}dShJcRwK6653)CxFXGFEz{MCDRjGUwk6T_8E z)GmXiD^NE%;QHjwXSaIKs^#C)mObI0VXYbY@F0MXxw_=`s7w9^2-s*wJ>M#<8S0%k z=EiP~VZ=AA4&`E%6PbzPT6Z`$>3d;^Ri&@BROXmNK=;euelgwd)$q-;hgHfHCs6y? zb|dN`np_?--Z!Z_vF(yK643E`WWv>fSMv-Rsp^BIe-){?{nv#i4`tgl$wx*MGbGAH zodt7uN>05y<94^eD}!fB$~q+@YF2$ib}|BSdF6L`jg?$(lf0?@jf_VX=_1M^h6l%j z$-1{YAYEnup1aU}vx$;!MiO>0xWV(s%hpC8^h)(+3no<q%;qYm#$lgdz9~K^33Oa5 zv;Wp9LV94@NaM`h8p}G6=0YNwam6FpJ)vS5E%_&_{>~y1Vh_eAt_GbIe^5fV>Pg8T z7qzCeLQpo)NwcqzpDVY)fn+3f+eb5ks*hNx=23H*P?yz9A5%&ddy$o={-P*c@@<nq zfIcZnsw&1z`(v4NxgNOSXQb_N?x`*7S&8l<Ih#r3Q3=P_arAK+`=W=vM$Y!eRXSc` zt1gYcR6Nku*%El_>D}c}A`X+No!zeg=P2w2LNjC-4PUs-FDK^l`ddTROc=-c^`r1A znqYKH^L@0P6>sIky!TF~EFs>Tu&Q~htt>s(ghFY{cb59WS#44km+d#=iCM1>lK&T~ za=0Ilo5@{-QOUbwxJ10Avg6b%{I<UQTYC6S>=pt$&U|$8AWP}pcKQBoqV9cYKhXFY z)bL=_mI-%z7O`i#n%uIo#6{z*Z;!oVzq@p*njQc^WD((YZDE%bQ;_My1FQYz^DTtH zf(J$?XIRvt*TWECj+}eHs+_!TOyv)j@fs>w-D*yOoH3X^M=*IYtK$4qTtOlWe+S~E zHx;0?eZUK5)U`A`2(;Cg>>wAKy=1O}5r%x7M4Cf-2tIjR>(rMc1I>ChKA7!)F3o`C z@m=%t@LLnkpWofYF*Eg#ldhK<O65T?Gx-<mJm*qK<H&P{ow$~G)8Qhbx=WQ)(9X{* zvyD&+3@+Zw3Gl%5V)(-G+!?u5*ZDph{5Qivip)qQwb|ASAb$OiqnC8qvtZm*9Q@vM zT;T1t%O!51CU(b__$Ooo6dZoZX`Ht;N;7<Z)e#@--}ULJ&^L9jERb5|2l3xx*;G~L z$1Fw4|I!#@5UGJhZQYmR-t=t_jsrT}y-~x*xaNZ5W28K4nk+CgFZPOAAEQD$U#+ru zi~5DlsPy-L()fSK<I`}=6^JvZDCT-aX_52n6t4KOQ)d6Cmo@oubFa^0S=XJ$oG9L# z0Sx3+Z)!bE@QlLP3jl0Hsyw<XcVo6Ni?*PNCJ|~}G2QpjuzVLgrASV_6C$gJHD(F! zaNr?sO^g|cuWH4B(i|~~RlXtAuy2?A7^?^^Odt1#EoLyNsP)CXTJTjATm0pSon?*G zhkg@YFMv%)4-q>zxXPFe7SuTwST~P=mYMPp!8YxkS*}@~RY1kVF}sUBj9m+tgjO|z zNR$e&Y}4e)jxqfwjGey1>fZfkt8W2UH8gGM`yN~zgQv*5sSrjRc<E-J5~d%r%WWb~ zb^!io8K9i5P1gm(-+=GKzDW6fw_0%qrPfDOE&P#m$FsX$p9bxYb!HZ}>?`;?J%FAJ zaT@wn3#A;-)aL0n8f7zITbXuG(nwzbzxEye!hB+N#vr8jc+{UB=n`)#qt%pw8I(3l z39T_4wKfa)oB;8q@V#Q)Vdoh*|FNU9U29Y%0MN)^acH-~bPFUSweVW9OJX}f-0LQB zaJo=5t9O2w+ixiR$*$F|CBT=zZ@%2V-04A<yvPB2@bvcZE4R<l<#w%~&TKUL5DkOt zH@^TTYt6F3MGN1IaRdr_s;J<Bwv9z|E&p9mzd6JA0(YYLdKk_}ryMbKpHGCC%W@(| zMabsG{SIADUjWg4%I!&!yW1-%SmHYc&}P%XX7j?~%zv0m-Nb>3M!{t9liWGd)|fT* zRL$pi>q8VX6^Mrd+mTDylV$Ys`R6quA%OL2fqUB1cc2*qg39QLtfcT32m<7|t-weF zBjx5UjXJ_xSVnW9z0Mih{<93LvGPuz_j9wAz1(Io1Owb#R{P*lsyBsk?E%HHf{?G@ zmo;2z!Wce6`bIaVorqdm0A0>gDRu;AWkue9hjlS<?EXZ-_X-!NHRPAzTm(~)c4k#m zeGvJLO%Q*6RwU~F0o;k*)Le&D41feFFD1*BHMOxUF(Qlbf^ZRt4ZCV>!hAHzW=EI3 z4u2KqmxI~~GJ1RK8-;#6l>1H91H(NA*sEFBkJALhIZ3*#4xx9^mZpKZeTN$@<*XB1 z*FGVULl0?QcBJA{cBN=vWgSqyeA5>_2t<SucU$?JUSr|FyS*|e4`q83KuI*cmt$7K zF=tRh5Wz;x^<9GWIYzn&tt1^i6IWo@ESJRlpBo)qbA-#CYyXT^c3$U;500=K=gUXw z`OF}8>tJ;e-GaKLvvrGeH1;Ul;|<F|iJey5N8H!pDEjaMc-S3!%uMh#i+BM%>u_ZZ zrKfR-Y*dBm6jfU|Jb$3hha5>6-%&IEymHDvYoOQOT)lxl`^7+SQeOa1I-LL59Z=j& zozypu@qbV|*WP#Qk2~=X<JF58U1F9PVTK#g6n8&{#Id?+U*YsMv#v+=7wsEiU2BKn zNh?@^KmY4mumYysr=pt7@`WRMCs975B$WwpzP^I}>I<NI!FWT6{ls?3WNH`SXQD~s zK0gSjWW@yXl`>e^S(<?t{1_;&wDoNsdD4<shqZgy1q9xBe74R5gCg_hVqW!P4L-;1 z^yvhCCs4#PH2E&3F!V0C{TEF$@)WMC#S36|0*v{<T6x|e%+_br<UJO%^=}cH5Q6!B zVD+tyPRhn(t2Z1f7|qCNpw+-WF3qTICs_^IYUCKwu!@-MRRmVQuW?oE*9GNl>ZX)9 zQRvQUJJFl9v5#ad90j3q!%sz2T@@LkrcnX*@dR!{akefhj7~K~SRKH`C_`&z$$d2v zo;<x4H@YL;(rN=+NH67j!`sv^LQfi77S@SF@%&KoxdX{*eKl6O<=+h_I~Ri1e+y?2 zfr6Y|M6*xoPkM40^W*@2I|$f}IG+}5Zj2~P#_Yp=PykvqvU<;tl)ga+`@T}b&&D=r z8zX0={K+TX_;y|mwb5XNH@Wp|7Z#5emm$Lf$YI;#z48ra922k83m~dA4Myg7c+jNv z$0{d2oa8;+XMwnDcUIHSzH&2hll7_}dqT^02Eh#R+yA?$<KeOV2*3&0V?UsKccv)V z_C9diO`f}6{DOyEe*tddzARBKi1#<8IB{twVF782c*@=V>i*TA_Wbk$z<gKkTxB6b zFBDfu<w|LGEL-^VxXv_ImdKpXAjndvYn60}2S`ivsN-^u9XWF|sArvHC<|t~r7R}i zDXlG^QHwhMlX7N`+B-V;Gs<zIx1<Fw@<jsatL<HQ{ln+6@NFtM{(6v^J+JrI7eG#W ztaDkpsVdKH`?EH$<->h3$g^}ud*!gfj6#?9Ad)4~ERpU<*HTnlP=be`nOz$z58sGr zi`1DZY9BG>+vuGujjDgnHG@{N$!%;M=hVsGn&bF0dIpt4R>NJKL=npfZRwirf%E3( z+$&6N#FzVK3A3r|T4F5N5Z|}iNWbk$8m9PH{m7LN_ewvl0=F9OS*o{}j`?JhRA$at zIMupGeNgn|&+fNakRKK4Q!YdY96)3L3gLxo_rzfbD;at0HiAndjwO*bKiu<K#yz1a zEjpWte|<y`K;}0SCS;Hx@qB!4Cp=8DvF+6R@=;c_IF@H=R{EqU&O*-6b6;8&#}zmB zcBTDPT-8=4Atw4KkNbNa&6wKx&|!||^pVqRgNF0X@WczVZwG}0He_5|c0`HF>l815 z!7bIaEWSO-k*1<)wRz^)-g=V2pC^RQUL1Oiwk9(BzOpZXd(EwwPp#E@*(&XOX$cOZ z%I`-#_*DmP<;+|owlnBjyC2J$p9hNl@{}J!KZN5&(@HFJDs?oZdrunaHKdj6DB70& zT`%zr=HUxec47vK;H@%V>VdXy7g=@a+G+@e_{6bi;`GEMLq+79DXjGG9dCwz*5Y@} zWhTo~M1tJfQ^pv1;AC7WzjUaj-I;bo1tpw^ZJagx%HsD6Q_`b<hj6vFqUMp$UeYu7 zaodMCHzwqTc(ZPociIy+%2e$wbe8_S5Bl3$SA%45hD$jtP|KTtJ{i946FKCoh0P?u zurfWw_<5_)M3*D7fBL7okKReHM<xG!TT6^?+nuqqB6~}S;VgPPRL-lOgO}}*x82>f zVXLggd93z9mBJv|NIp2u1YNxud}wOi^yeZetvS7Z2F!?Q-Jj=ZAKEChQ$2chxYm8I z$`D9{L(}4nDZ~K>U-U0+3=?z)tFgVk8=)UOwL47NZccbkPu^sCe|${~<WLnG(*8Av zJCViubL<KF<P%H|qQB}_*BAS55Jv&n{cxRfCfg-fZ;J~&Zwdy=l9T1(KkG5To<jPU zL@@b0=>ZBOzpA91ah6y0pe5(#dER4xZeAzNP3*{#-(BL^=Kipp>zj*$nz?C&IO?A% ztQMu4JVPuC^VBqN<9~29ECoPY8KORWv&YU7o7MNJkg!N9iGc^s8vb55gQn#dyx@3~ za~;z-zSd2uTNq{U&+ty92ZYs*>flNGjSp8Uo|?+0NoaQn?ZQHdv9^rEkR=2wOKLHL zrob761YVzvNz*$BcB}e7&W3$8U6d4E1PZ`0)XYY%KeUP%PZ#B9nOCWX>9PTPP3PT@ z#e_ue8M^G(SPNtW@ua@fHyj*dce;RZY2G5W%+WdHgjJ=<KWD8uO8ZSdr&}!%+X>4r zfL6Bi&;8xQ>_l}dADLZ^hH=0O?ga)=;r7JZ>RngRI(-&1+AuSzo$??hb>J_$<IfDO zrBPB9W)vTN%`h@GZec0ZbPCd4KKLm+(y}HKH|jTXRf{~E@-CW5mc?dePHyvZJb!mB z2MyW=nRxQ}g73m2kuvFiuJN~GR9S!I*e`j+j_TmTCgpz8<Trk!&O`ilM}Pxjy=ebO zkGxcyhO-&vFEiEze3fHwMuN291GT(VRP70rQ_^ymeB8~4g!&R?A`+zSg7|Sb${7F0 zkl<bud%1VTz~6-YpxQFptkky$H4Aja@}|GnvvEEySjWga=kfGZ_AI&A63xrYn(5;w zJ)jWT3M(b~EX5v`&30PYHA$DWZAkH1IDDY*Wcfwn&m=s><?)=auX%Wu7x?z%m^n9b zK@0x5_T-#@EiRcD5$I)|v-RiTeYf8C3Gh<tva#KR74MyPWcpTb*~(*LqBU1aWFo$T zqwmMAirLq3#LJs2WK?x|Uv<^}`FJCCo>EoP?l{W^P<7{XS`P<t6Bf(-cSrk=AAuR0 za>hDc4I^wk923J6F97BjfGMm*L~Om7;*m&up2d}mlWlIL)5kt!$s3l=4bJZ}&Rjt% z1XSJtu#Z~76hcFe=|(dBrf%-0-<SOt0)4|S={yv<`$#gxhn)g=CnTH0$h(JDy4EH} zU|^adHAQo##EQPo(yB#9WsStT6-ATUWL}t{HziUk*pf^0+M<@$|CBXxd1bim=8dVO zuD1nu3c&cz2C5F*r}@rt$_sWQyOzB!@F;2qV8_hsIwPe|K4}`pEm!p8=$UQ(9h;Az zOS2Jg5d9qPoH9@lIUFB5g!oRcmVQ=JBFMRCQS;)^B{J1T(JE9?Ua%v8C$U4w17<M2 zSQOe?Ut_TL9g;^CiT0!^GW0M~UC>LZOzim9KW6cF<&+gycbKBl%Hvnylg3q|f-3v5 z?QLxU7<?)huKX*>YCyGTIH4DxnaH&yk(kcZx!!@rjXBO!&8DBBJ6H?BxTrlAS}_QI zfBC1$s9-SZGwnHcn#=ZH>;iL(;3q2@gei@WuZuQ|+q@wr%@)raN#V`V%G#EhKlxDG zBlOFv@<dbiZszjp!8fL0v9|qMJ3)|8-GfhJW{~&y=?*xizmtcP?&dVlw3gb}#o7@j zZ;&ca)gozrq~IwKQmy9Q=pA<0I}$s=UOOB2jf<k>I(plop9M&pcD$g@tqw}}&o4vn zx6O$L$)yTK`fc>)It$FJZvAoYx3d7^y+1!E&~Q!jE%q=s9;XZ+G4lMpY4EO%D7A%L z!|rQ}wvEb;$33atNeP@KhVEec$W`_1@QW{=oA$%;OtgZWeRq8SGWGo+T=d$^3o3RL zjlsPn&BGY~uk|gaw(>Km<_SLf0*Kj#Q<korH3%l0Vi8&XdxDQBM`x+${WoptKW*Z~ z=<El^gzqlY1n*TV&zr~C>Q90m?z*vZpNS(ue1aLI4+6zm5awo3OlSK)F(buw3m?#~ zU;oC+)Z7@k<fwU!1?CZPd(^6M;<j_c&%(&qnj`|0Q<sE?*#T2410ZM9`n(5tL?=n* z>u(NM^li#ubZS)=@wRmVg<66b*WM&1Ti!ZQL48}ne$=9U`7CX5OB4|nHigg&fYUoM zy{i6Bn}BPZ8Cl8&+qGcOg!i$$$x?SiS6^m6l3ZQK>IFbFfV{(lBg)X=pvJC6OTa%2 z2oB+Rdbiid95Rs6bxa0Jimg$*7&%?pVMArFl0uRoRgNBBwqVZ~sh|3sk==+JIx2K& z1scZ*&4>vGmd-CyOSG+<HSG^YaUi9mgWew|S;Mci7uq;zuh&Aj1bU8Kb#!NC`hp$c z%U#EU4b~dF)@FKqCY;rrxIxFhKb7JWQjx#vG}?{xN~M~@l#V(sTz^XS&v(l8Ev#A1 zfNbTNY6I85L+W(QB+r3M2!rDj`DH^X1ydh0-F|Z=wsptZ4k%YS7XilQI}lg#Rh*<^ zKY~)=RXvv<UjR+e%KZAy)HMN!8ixdtwjsQ!YYnAkfY5k)6#M)K?!0m}51+XfumN|5 zD;>(c181I!i`U3kAE?K1n^2o^HYcJv?JvuHgOwTwO^KQ|nVIBqfBcZs_wWeIX)(z9 z+kH8}H2nA(rYGug7H+j}z<0qu_GV&uylZZY)l5R1$l<KnplfkumLmP8$IWvRDb-@- z9${Iy)G%oyeb^P;Sif99?oqPM62BB49oNDSA*wl%s=rhbVKuF`#7ah7Y>7F`$W~Mm zFd#r+po&QQGa?~W=))m#jmwN}pUGvFSW`9%@`tS2`IppD14}v*VwG&EoetLlCs39Y z{gO}?5;6xgVqmjTG~WVSX`<1y5vk)q{e(V3w?zn_?|VARO>3Eq{H04iL)b8q*;$)C z?}5>Q7TkTwut8uJlQ*Yx`hN&0KtKRw)#-VK-zjx`WZYJocGx}JwT39K*|Ko-&2&CV zwxLDqcPx8};L?>2zZ!?Z=L#OAf`zGgTn@V<KAI%97irClUJ}%wi;*Zq@qdKlgbO|J zoh&Sr7y}`wOW`Lq-ON>6z5dKn=KBrX1G*cIJ3WpovidBpKoq{2BM|=>FW5HTT3^b< zJF&hFVx1e^vsj_?>{d0laf<-|KD?`^iU8cpx%u9pKY)(ioQ4wqOTl{HFn%lU-f?;9 zlAJK1?+OMUS&gr04Y+ajH@q1$C?N=CLSP~qKFT7BJ1F&3Y~`f(0Ev&RAac>mdoY0w z`O9a!S4>IB^B)y2zO`x9K@O^_o9AM(_ZlHh<)cDw?;|-#080>IyQ;}Xy*eK}uo!WL z;LkRG2FJ1<9ETbk<W(@ES<=^txe^7x;PvI^+(Zu60zDcYB*z(!B8v(BF&gqOqtktZ zJi!MQ15C-u=);naP_uMHlcI{Zzj;}OPqLl+XNgc-BJ!+pO6qd+6+!3-S*ZRMz@h|O zne1U>lr5}OD?6i<$M{lTZlxmb^tC)ocCPsu)=Bz|m}`+zZ@WM2B_ADH^B~9P`a1TJ z3GzH}p~^*E`Bdgw!uGE5Se13$DIabXN3{#DdB{a;u6TAkw*mJe)%1K>TMyXQMJq;r zp&>I<-rAL1!(K*zsF*g7_cysZ^ZQG+Q1OP>pFFH;KwDhaO`?Vo<pjyxZiCM_Z>Icd z9ALZGhr?)xV^W<Nb@Z!CI$Yiz0m2*W&jVx|FlA%^fa(<3TYh6;*ALp2TF-4y2><}! z9q0BAPc*Det|d8{CWTl;i87nU=J^eO@9;+=x1aSrUaK6naoRfHh5s9lz&3tLtdw_g zF4B;qX0aSSFN1#fhCY-m^T03*-R3PY1u1*{qD^c#jIWeN6n%g+-I?i0fzQ%|Ri3cs zHTS7wubqdL?v(rf+Zp{!ajND2BWULTuA+PrGFkwJpt#|Fb7bbyf_7R<Z#WmGcKy4@ zhD%2$l`CBInNjcuY#3gDnWs22`wm$3`gxr}$yzhD<vj{yE)NUDcYX`lTxTXW4EFR$ zc5z)A?k{0j<m5&%j+}Ac=H(fmg(ZwaQZ4JITv`$v&)aIt`DGl5KBV}M80qRU)t}3o z+Jw*slCF<|i)s~I|Mr7ObR{x|Jax3@YZvC(-69)CFUt+ZN>_44rU!3p*ZMJmenAk8 zxI8;w4Pps5Hv;QrN(iVt<X^Fp`@Fzi{yAH9^Q+5**NxF5BQ#-w@4P*}r^8i1x5K;r zOYza<Mt>BW&6Hz)&Af$EWM$u6Z$c+@6=ch+J|tvn6-6|&`nG<Hwfr!XthKaIH!L^V zTwtN2xT>=6W;o9wKHRR546JZuZ<%8MCuhvQ%MJ=6mi{ui2BZSdxj+nA><=pI<uwM* zDkd%Rcv)72Q-ldEXdYvH<I_5$EWxR*@m5S{s9+->O``BF@e9vSrT<uZ)-7aQ=WyI~ zW^xQR>rYFf>t(8D2>L&Mhpfy78_d@Y0vbid3P5goi>6keGTalBXN9B8QFjxkg2|$b z27OuS2yjYn`2{kSD{EtUbSl{!k<k1jCw|}r{>!U-GApP(j;SYVblr{JPr&wbK!D(6 z7nTLAXu2I@ujg`UVgvV!HN$2KfAk+;Tz^(Op6p<WQm6v<xirn1bgj&@D~%uS0v;Rd zszyf&G@V@#W^qt7H>Rx9wCxahFE7<6&x0O{f`T!evCjiXHzf<9dRnaO{@><ERNR09 zMucH4D`_`6&fTSX?1DmeBnCxwg+{bi@w%I!_v>SH+qd-kdD^93?3LKrl~%tKE65+G z^^=m1|8Q=EMnU?0>nwqPufYl~BDJ+n9XE4niOXdxhdSKX3gxBg#RM4GKWO&Gg{IBY zA}hNWn+06RaJvXw^b8qDv78mCW)zgZk@&p&kW|kfGd~-@01U^XH~)FxJy>9N6|<G_ zIXt{yB&5Mc<Xd2d?ueLqk9urp=t2Fk=r|Rg+GjMJ{hbL=e*X_@k{ItNT9i+0j-+q& zmBMmy%A(tHib1&<yw;fd+=_eNK0WT_MhNGUzS!T$PsaSblvz|sO?-Qd3WjFRJx+Lp z#^?jgNYpPX*Q+^HcNQKl+a<5=oD_0*`1#6tcT$fS-<wPIZJJ{SbQc`@X%`&XSQl^p zX`DCdVx3XlHi;vj&BzI4RCWd6>>fZlq};hDjZZnagtHc<7E@Zs^4T7Wx^~>fEoWa{ zz_LqLu~XsU;#d_lA%Z#O6L>rQYaB6-SsXx0qnv6%LGcJNvh(+lKUogbeDUD6c-2m> zu~W=tV0z0}ZNdJ}=H)<(#9zRTYN>gF&#RFI$5Z5&h+<$HKklQ(3ujqh_7pwpW9m~A z+x#TqA=}DC*47R-J_G1NuR==ct|tjP4Kb!s%JNV+L>?U()mmn&?5(3+(FRfLSh7k? zy`)qJ;JX7c@i~ik9HR)!6<5vTr-dcBaH`y6&H2Dx8BrWdt6h%4n~jsdJ1xF6UiY5{ z1Wex#w23jhB*J3=e7u@30H($M`y4G@kbA6VgSNZ<<mzL|VqPQ8r{ZVsUsGq1)Whs@ zXGgl(nLvgGP9ogPg`rZ)#pqhKPY22U8=)2A?}I<3kdQImQG=YZF_UJGo#o*Acy_i` z3mP2XWjgd6&o0SkcI3DxD~R#mH<uOZfnuA!4=LIIse^c4=?&)!<zgQVqg$QhNa{KK zjwz5zo2{^JZ%QH(%w=|W{z2qaML!cyGq}dHSI{H7aA}AXSTEFZp>t5P1g>l;c>7IC zW^tVc$Oq9iX1OYG1=~`yy9bJS1zzA{o<huK9LkkFbS_M|H1OF+|CD*TFbNQb<S**Q zk<2X<3SaCD^ZO?=J}`P3PdftX&BeTOoEu2O+H=hHA~a`*O}zyBhVZ9loT=`A63ISs zBpY1yrqpm3$jon8KFX5U7hUK-rd5+%FTytU3+)1f_=pKN{>stGz&qupR>m|;kf`^j z?jx@ZDdTp=jG%6?^I8#+=#Dco(U2mYkoB64_wS`lMChASmpt!T(S*v~T#hz_`kWU_ zSl$t0|4$<GA4wA53JgES^{+VL?HVDJ@M_va^N>(q#xz`((Dx*O1{>BAleejr=J(!d z5x9~^h*=$c^r}Xx4V_X-C$8<@vf6^&Ro%?@>JB7ZjLOn?CyBL1hs2RpPVIP{4UsMy z-&G8g(DsvSHf{`&U9EoEvrhJEl^u^fs=S_3_Q_EYWo+)GvphCOWZt+|anc2q*3oK` z4RCCINA@;r3cu7-XtEgK>9eKzfj4(Fn~5RHuD-Ic8GZciQ;QqK&Y*bjjXEgm;hU8c zqCxG|UV&juhQMCJQDKDJm?iysgtw8TLaDEaNJ?W#kpC=7(}|x;!j{$kB86NmGsK7M zgOl07Vj-D;1`xWz%+jtT8=Bb8c#Oj`OuEbE-LYLiy;mP+Q$9bfavQV_&f}SB^m^TJ zAoQA^$|Sd4oNx%{dK69$XXyXg&4;|${j3NVG1PiD2A`jK0Ys*!Dya1JZP)3Lc`Meb z`AJl*vL0?y8t_c#mtoTwEHZsss36);9Ll84dHmkkEh&F)*;nND>SM&m>V=(mrP<d^ zvd+r*j0LU(ON`dt|2Ci!bjXk9JmE9h$Q2045zh)|{nC{`E+`ZeDOqy=XO^cW+?nh> z8eB+L1en=~{zyU&UF&fQ5Von^9%}V_vvH8Qf%Cl*V7Z>Z>@udMo7~rhFqAr@AZa|U z)OV+Ow=s4BE2OyRw6f~XONW`C%odLh(@g~PGNm@U)8%BbbqfO88dKd+21NU1@7(;> zb#q?;g_o!eq@8K$(ylh5lJ?JqqJb{}G`c3Je<i7T>x97PA1F72T2ho-j_u}Y_jmkO z!_!mBUw1f4h}BXTxyx6ZPP>!H+PodNdlTQ*A#Jm#S5p{*EqKajc*^EoEJxkY%#??~ z?~~($RQitswkVMlpG)<9OU*aOw#xEMb4Uz9jVnEe6E6BSyJ=p<xBaB@8xS(-AWMn% zs=-}y;_&=NM)@}S;Pm+Cya+!D0n)uc7OnUGi=TEX#s*_%x;OQ%o7bO#F!%E8-|N$p z0~E*UBSV;aha(=o%727iug=cByo|7J_<yeVsBd1RJmh|-!od#B1790b@+LuAh3#00 zl%dLDJUuoYNKDAzG0nh|Wld`<%X0%F90q44e}j)+Q$A$GKmC^kp8wT^f`VgLPt=|n zi^EtWGFCCl->pa%q_#n|6I{flPZ8u_@+YA$X9PC5B;B37i@f2aVuB6f5M&nqYCMW- zIc1wv+`BcmwtfEeU^01*VAgyS;>@(N0$$j>tfycx#67Y9RC$SSQ!)KMy)_kjtGBr| z{KsNrzqN3qXq74~k9$-gq*~gjc-y6HE5+==m7_h{_y?MREGYu7Ro#=_yG`@>QT1km zT+36Fl#ZpjxpeiV81_2u%gq|cx>K6e^dH0;jr%qZ%~p(j8CgqHh@@yi2|Dp*qKbvj z^g`tvZE7^-cYT>T5jBfA-0P}44H!7!NCf>q7J9=jTI=9`$9Q6?3#1f&|J??Pu;j&r zDgC^u(vCX|f(?=gcW24z;|d=YwB_X0p_v}fy|P62wcTX1xY;|msut4F2p?~|o`V_| z@18oI%sr%ALnGEC+rvU%3a;{tIJB$+?5I!Qqj>fcB5a@kEjyTv*zYtuuE$iFaf#`) z)Q}@~GnLx7ZyFhO&uLP@c-(<*_S9lH?M1rh_ay6XwfsUh94QXkFf8>o)ld+mushQ@ zWrYsuIecmTVwY9xu<ycK@8^;ZXh95nSb_^2wZ&W-?A#CbC*SV>pqbBN<7CJ$f=S+V z@vZFGJW5uuAVlz-^n$FQ?C10pqi`s3Q_hKfWC@M=`;S3)g%A+fGgg{*qLbUTK&{{a z9feltT?HGyBG4F+3Yf*TB=TA=;LP{vmhAtyh)@+y{C#?GE(MsTQ>X?`E#1Uz<%(%) zC+Yjp#Wp0OBjnU}i~qVI%DoG{D!sS>!J_NW()h}CJYi+u(*)%MChPcePtDveON{cO z-8ej1)3+~JnSIc3quJ8yRQb=FX`%N{(S)s<9Ddjr4U%yyOS^8aqJQtACl3|-v{(<p zES4UF7m`;sk<>@xnx}I1n0He+^%%hg9F#zs&?lFwMI60wrn>@-j?G6BCOWx@&!fx~ z0vyhkI}+_?NAAyt&n;1Y1Vat$7761>u4XYI)bn)FBDp13`APMurHllH1kSd?%L}vN zTnKIr>F8Iw{RKutKgx4TVyj%mI=Z@3c(*y&Rx^UMOD`-AqZZHBkM{W>l{k}p0X(xZ z3}-C@e%sA>9-Mske=4h1-VXJ&P$*w`HbuKdcP=e9b+@K|?zEZ9BnV;8G7pPIM7duS z9NZjw4Az*64vlb2W1VY9cX--OK?+kR`8s`}9?OKLdDL)m(a7;w2MZxH{E5x<O^Ui8 z^tTj`sV%l`E8^~JY(F!I_AkJ2Fv0z=4v{=`1i9W!<yF*aUIQ%uN8pJGydxE%S=R@K zeTt-DP@-UUl^f!bqR8%5sKd>?8>+xEiS=OQGZEL36L)i3<j8N{PqOeKx^tS#-|TA% zC+KGXi|Q!<ORX&<zYdZ2nJi?8;WZy-DnvvjQ6KoKMw1jpwl0l$`+g*Y*NYzT7-)OE zz1SY>eMYZzKiMVt>Sfl>zSW8)l&0_D-pKg@Cb2|j3ef{=|EPWP@MUiy3^C}z!Znxv ztpoA8K+=F7Z03tf4bG(5<rJAmWE`(z`KHbCJK0V>s3`_h(p;+Z3U?sxz%_2>+2DOQ zoF2@qFmOe+iv595NJ{?l*VdaWk+BB4!m!UMUw50jKDuqnOv-ruDYoQ!(j<G;aNtvu z3lG$|-Fs(yB-mWc!F0IYAkz2C{J&Rxl)1Mo5_JrYSA&v!BP>E4^l=hqk`qk1;<K!{ zM*CqDk#)NRW`_kAW`^Kj|0EpJ8Hc&vRnIJJwmQ7C<$27pRZd8-bBAdPk!TOCk6BU> z_Lk@=3MuC~hjd&r(tstOZJIr<)EkG+p0FxCduhE19qK$ifUguY(->>G)Vaf&N0j83 zCL?F&40;Zg^l~DfzL3cSIxVt#h73-ILe{XeTpa5Nwrz;?3jnrtdS#eNndJ8OUo>@Q zcgj<{{*d-vK6A!Lc)cu%eaM6-gdzTLv%kUf+BcHl=8!B`3u%T)S)S$NXZY7ew9%F8 z!kiYEqtZ=3hfclwR6+uc6*zW-B)4RPf;{I}s_Zw4HNPx^Cce{hqT+<|HfcMI!PR)Z zlg2g!*2V&INm>8$5%0vi*X%ZB?lwMKW!K=()+---(tl34)A&}m>xr$DE7>WypFb}P zd20zyP2VX8?^V3flExGq$mcCC`i*nGYkOPuy0K23abbERWXB)OycC<L%`w~hb2LwT zDbkhHegL9e-cprl?c<%j0I#t{q2t!;zB3f&dRG(e>{O2yxN<<_ZCX3#oyA}IL$a!_ zZ=q!A30xf>0E$?J|Cqg*`KjK2pW35+q=xqB^rj`xLwjX42YM*=TwWUd&+8ZobBG0@ zr>t*p(Lz>QeM&7M(BWz8dp*aO6^r(Ws`aj?hX<r;R;wt2P13~g$wv|)4FO+($Zz|F zC$p}@)V%mEK)2f?wo!*6aj+qrQ&_#sodu3fc9~!ZHm1&f+PjmD?YfnA9AJdI=xXxA z0jj?d`tV+VyJzPmCHJ9wn^9RDYqVf0Z1v&E14YXnhP4(_`@pq#c!@UPH8*-KDoVlQ zs=R1$Yp#z;#I5q^Mqqo^B)yQx)P}L_7do<oc;?rC?*aP9{%|Wq3B2?bo{6b!saljm zxTtYLO3E@4y7~J8xPpFK!lbNX$mf?FpjsUvoXlG0La$N$8wx-&l~b{_4rS4hltCxW zvJS}mALk9^cdca()j#`gR!xb9B%&kGD5Pd5P}|>iR7BXNO>VyTCafUO{o~(#P@spF zY4Y^r#w(0RLRp>%NS(F;SCiA8ZF)?0uBsXB+-ZPStx&=HA1Q%hda<Ce5>A|qzr(d@ zzslv>=cj7q*n}tFc-CXaElnfh7P<qU607^C1YwMW=e{I;4iEEek6-AgG}Yo(x&;-q zF2EULZWGR+p*pwFcg|yBAIaUfjL(;}E1ViG51JguZ1~yso3jYMo^2ehk4)<^hhFN* z*9)b(=rj7yo=dT!Vk5~Akj*%;={*XHFnds>YqV?4T4nB^v{iRH$T4BQ2?$Gwj7m)S zfm$ygIDAc?nR0$Px}BIFM=njjplqe>hqTU8S|oh)fr=?N&-gsaiT*cI`g7PHogf!S zM}_vQJH49cWyimux3Rh@1#pvcVp}dZTUt(@>YBUuA+O7-%j(@{iUKnCO$vUa-be9Y z1FOov<lw8_*i`sZ<36|tjkne}l_ncl_Pm~tQpFdQox_gtsWHRh;0a!1#$#5K=XpmV z!;<={XX;`?WDW%hK(T8Sd!5*4hR)ezIHxotOAB*l?}(sJ*?VMyWi-|gQ@5Ix@prY_ z`y@o>crr`mEYM(%WrmFFdirRM$!2ViM5bC@Q-^D^C*tBwQ2eN3OD6s7I`|K+6-wuP z%AuuqQgQj!dHv$sxAC3K+!DdZ_^XBCpW#vVkUI`D4((Oyl*NYEY*CGf6vd%JqzLsU z9FcYTSnAm9V-{g~XUsyDGn)NXMb`C-#`Q7~s@Jmx*nS2Aipn|9KVftf5>M6;YP8M= zrO8xMAzcKH4%u8LgX&tmo#2ok>vwLrzls=ikuQFj$G`-aPCS-}S&5SbGwqGYe5fl6 zB1~!cc7z^0JXv`~%STyumQE>Vn=#h)-3TJ{M&!j+XiQf+Pa;PwiO}Rz^UBy^-ZA$Q zku%&AJfEn7Kjk56bz`SsMFAR5D*4OpH2I|~eH%#-VlDU!M(t7{7f3hy{I<F^^E8E} zQ6;ff42Rm{QBr)pG<IZ*_Ce8#<z>O=$LUeKXd7}O^dPpsX5%U*(SCPAGQ5oeB?eV; zDF2FAvrIQTlzVg$7@-t;d8g+|u<5ojgSHKAUus-);hf>!h%PMP`x1Ub3<r>vwaj?K zl1@jA%VKY4y~eJG5b4w0V>FZuIfjVux9(2bVq;@XbxXi3nDi3rxFZDV#tM_(_$`?v z7;eElC-WMbWGF0|RJ-9pV&;5#e@C0@_LL4IBP0JQN#0>&hhsU;4WITn9C7zmy4b2~ z^&>9l)dH5)?Lxfv8e0v3`<`n@*#^JVgQ!$KNtm#H3Y8(&cnhZbPg1cd!T+?I{n{Q7 zFe!&ou@ex>P3>rla1ii&#EqxE`y4Z??ru5d8F+yGGi1@P5+kp#{cR^(iy?h?*o3$? ztfu<$tHN*Xa0p4;X#4-i*n3Ac{e9b_C@3NVBGLn>w6D^ncMuVfuJjUmC!zO_q985w zUZvLnp#?%wT7b|yB(%_buL9nj^Ui(eyzzeb+_V1L*`JJ&jFCN7)|zY1xzp3&x*_Ko zGuaF>YByeCK-1jloRtz2F9pV2d~#v$BXZ~CJzP2AYL~3%uzV_T9L_}Xg$#splzJ*t zGp#PpqX60K&ZY}so(UsHko~qovPVS>d|ndz1Iv~U7QUHkI@NPqhcZm(tz2f(NHGZp zd<JWs4*0_;4ljim3;yDHpd#~WT~X>o(0PP%6_PjHzN>3Omk<{J4~7i!Ynti;0?2kS z721A`8~D%riCFNad*d&rceU-i3>a3{y5Z4hFwDEEUO|mKvnNCn9Ka5KAr?V$)Y}>( zS5}t1_$*`O6t8T;hZ1*tAU1t!rQ!kfy9d7jGQme1Ph7rx$P|<mRhkxcVvmg91e>O` z2pz^xXM7*+p43fYLboqpn>^?-4dR`e8c&(g<Bntu6t;g;VeTy+3|3$TOO^K>b(^!O z%4*VzR&dMJk1U=WBcGhXTH1h)dU~rrGkzcXdvUIN8ACN%{5|x5>Ysu_dk!~<wKc2t zT-}3%T&q@;5A?0{pSH;-SBrHSejeG*m++H9W_ZTwe^v-znrx6<V+B78s|7<mH5&fn zVW*5%wolWy7W&wus|Yag=rd;ZQJc^=sxwR8>FrPRDs#&^-!LdfC>Y|)DU*)EV~-rY z04c&LQK!%Yx*#6ij&0NtKJx-l#s_a7yJ8yDeC%?tGK-UTjs0Uu8gXG9#IjdRxmAp9 z;p6ms(B&*@=^;Q<$T^{wmA4jZy+(>!O`x~XPlhEOrr6!}X5~9)13+*`J$UECqG(6} z154oEk1jfVWi&1K0r)}h02Qr;aj3)?u2|+tu{Y;!8bYKmVMmV9A`*63yGbaaN}=nl z1vvGDmc=$cmvBwgZ-gtW6KjTVfhy)J{gapgA`6EB#W_Mk4O?a`#RbrQ4lY%19e<!l zM7${e;@SQ)|J|I_KedNuY_rTWy$HgE|Deie`Eu@dp2o%F%H6Clh$vYd9mF%jWMe#1 zCNdt95w@a9D-uTVqzEe1R8r)8L+d46eGe+7Jlgr%=KQE7n;zL$)$Lm!fd9tMvLNl} z=)gF|mx+ftslHs*Lo3#qvwfAE&HxQf)A40kMxUH6rx?f+e@Xa+uH^VQCBf~|sk;=C zr3VV#NpR48&{0yh{5072XC3C1XJnrBXW?e{xkn9?_1bU$NqiBDg9iTF(D?fPv9jC+ z>>eKR{KK%wL0NAQwSYQU@JT@m%b2jZ-1ohdoZX_&$AJvrl_RkNaSuuFY7VP^je=5U z>~5z^Lk*CQ+`3b#k_1`;BO34UO^a>ZDClbqew)It_~z%l52u|N&qI)E^c|t$P!~$l zXIj7+FP9Mi;yaF8N;lN!Y3wqhaotha;6{_Gyz5=dGs(e-4dlGA{MM}jV!NfHcHY-V zZEmXJ{RkZ=w`+A|l2Li#3u{Ed!>%<_`t?nTn*`f&wBMU0wyw<@u^z%{wXs*>dsE5$ zSH7)(@iNwCK`ags-ZL*7|5xW&5zC@i;!P`lu9=;`miEZR4K?aJRAI;9RNe7I;*B+| z*s+nQM4R;4n^ltUzhVW%5<5I0>JYXf9U)Ptldxa~V4<JhP=4qQl#UksYvUOohU(Vc zxB(H9(|>Dz#EjT|9Tyq0INo+AGboMW^7b97U9Bi{#ZD12QQ$cYf2wV)uek#7fZUOn zuPZ@hK9r#j-#bIX_Hjx|EIPvJ&Gt*EBkT8ZT}{Q*2~C(^R%D^oP@C@O@Tdew;qWr? z1V!--*M7K4RYNi<Z2j2!2s%uB;H27VZ**XG1&eolP(gz6FeYQvF_OGf2?9-2+x_XS z!18A$`(K`~tu$L{BeR9Y?${!~w4pfp##JUeR8>fX81GrQfyjqTBsohn<Lf%mjAZC` z*k8QIo<B)+#J|W=k<8)$j!W8gH1ORBC7++HX@0h^j$zQDHG}W2tio>tomSwa9G&n= zPohZ8wixP;Vh^g9_-B5Wj!lG|4Z?)3kC#y-;>B)3p-|Ilej~0X{8R1O!W%JYF==IS zcd42|nJ7VZ%O;}%w?h7}-h(YxlP7V<I94x$xQBUpf27)Ajy-1SMv=TQ(9JB~B{RU_ z@H|Ft(?yp(?i-5CX&?YLGk1>3p&(9G=L7IX2cp2xY?b(x1~xK!)2hnwd_`F{27cnO zAdf1+2Bmh2fS-%WIad8!BYbD7#ftqIy7F4H`Txkue~KNoVoS26)cM#hp!E3PjdK2# zvC4nl3v+xbvvK}Gmmdjfd}LvejC0S3YYNNy-d1Kafjzt<$OmU?ep5)^4<ASozDppy zu2L|m?@rjX9rjY+eAw#7EsatWyJDX^VGy9Pe#M;7sjAYu!ZgXtC5_<}tx{L$&W1bv zsrtH)|H1RYs9>eXV0}MzhKoD;%7EpmB2_~({Z%=}SJyG-tFvBBrtd#Rb^*@`RJqQZ zUc^kQ@fW2IEn0bcb-r7Rt)}p6_+zzMm%0arjc>L+>ohNni?R70CoKMvPH=eb8hR%o z$Y>(X++N_Rmp=W>$U&{2FRS{uoboLDay;II-bwq1_#vz)K%Og1QJ&>Or&$O7Y@Ok^ zSl|v04oule_~#_o1b={HzE&WC*=W=cZpFE^3=FKPna$o6%6_`@@w$jl*yBm<Zrw8S zLRS)OXHU1uZ#+bb2MI-S#DFZ0DpuY|V@0?=e6U715~k9zL=Loa-eJOQQZr$P2-`A7 zChhO)T%2)@3HZZaK{%dT6xz{Wl7IRXxk4zF7wU`*we+;EEr*1hO}d>dkE_#juX^~i zM=C}vPY8~}+Z4^gmO(%hT+iC@DX@Hf1DJHWcw;;nB6&LDqO@Vn^+F`6ijAB0ZYWAJ zp4@FY;Zu_bbj}b__=RKB8a{PDh+L3A(juiwrO)QauPyxj&T@5i-p!_(o`Jf>#mY94 zbMz8MEa8Xqon&V|*n@I)#N1rm(k~r9KWXYJ<_E<XDyO&8<d1K*^gcG}m}5a%#j2UX z0|<i3BpnM-R3Fy<+^(cTQjfPLA~ipENRS!c8^rw&N4z@}m3!fQ%ec0A`4`V3Bjc7Y z@Jmg1lv{Y~s+3`qdy9&7emYX5JnZtVBIHOC^!A342E$&F1a)KPiThcwMzHV8aXdVi z&G1KJt_n?D1Fx}toBp`JMYk<ev(HG8@KW#ODQ2IqnLl}-x>jkqX|R<OzMJ7E0l$0H z-&>t_Bqn5@@N}lcvgC)Ba>nOm&gqwfFFWRSq5_<z_A+caIR&;>e?E?VD)XW1)d!rs z_kR$Lueti=oA>_Yd{A)W-z%=4<3@T*wtUtOQ;ry9Rnba>yK4v$s%>O65BmWhq!Upy zDy7-Hx?FK>_Q~R@3nM(Q=@6u`CYSj!Vy+z<6du|@0r<=tU&}wsJ$C=2quHR-@94%^ zQN`~LB5xcwBHrdLC&H7_lRw*G2g8kNRx!@ezfTKD&2Z8XrIld@oy&zBIzMZ(6Y<C0 z<$6T6kZh1^Kcj3rT+fHU_~(jo4%vo9K>)---jEomXAc*ga9<ViR(7z7bw!s|e()`} zI6V@U7)Rfz%0k5izvT05*XPig|6%{~<~4I+D3UoOMDBavU4~Dk$oh86w5F4H=gYWQ z`3`~)v0E>hb*`SZ>Q8w4*fe9(_(WpW-_^kP#NGVmeu#-E)9ehb*v`!Zd}sC%-ql;l z7w&89D_hQB$ur8g=?!V(5n=(^M(YQx(@1P!;Z}+?`<5#F0-OC8PhZk<m1wb|Fg<v@ zgcyT_xC{o75lgAtPp<H%sE3Y;|F%I%wem6ODm?iEObc*&?ZnI%djEHA1NW$#;uYw* z>Z0P45vpe_R8N|O8U-y|LbLPKp6xwUQj9KfNlt!PHzOol8&Q#t@LY=?CcE4eNf*t} z&-TxS3%?#=dbDx9Upgo(R2*&D*RVTR9_EapB2opqOmuBMIfb=Nk|gfV=m$}vll-Tp z_YeWXq_A|a=Qn1bwu3hqvB^t<QIm})!urd}e+;>$7Ggrov1L>Z7c4+{APR(RYGh4^ zeu;5Vk<Yp|d8aPeod~O2SWn-cQ|dR>r}gsWNvtC@z#?T)Wm}z`b_={XtF8L3$*AR$ ze|DDq<!Zw%#s#<=zH}JL2uaH!*OZNiqg~)q?0yVsJxlNyQeA7Iv$>uA_#VU-tYgL6 zjHQjLzHse;k(}l->*XpP_d#BkQ&H*}dN0Q&kTe}k5%RO7I4+d&gu2x1;qAl_XBfXP zf-OjyM>B*;@AxKLF)6_RPgjpk4X3EOX2$!#9erUS<;rcH*~E=ZXHurL))Y!rQ)xwl z=fOa1{a)hR&}4+h?;7Knm`;A&I3$I*@t40YDOqQx4Cj3a-9L5%fxEp=DnYnmznfru z+j})<`M-E?j;?O}y0c>ZLXurA8aZw}VPQ0d-6{!Bya-aQx^e{KwJt`a4}1N>Ju2`T zPzj6mw^o6OLn#T7s&Ca&Ea3}J)FK||IR#P7+60!D`TOiA<vg0YvnSX16#Sv^|4Rb; zm#+wn2%dd$YnXpb_T;>5Pn~KPQA^~a#!%|OM2@9=lH0ir=;_@&`HRQ92Wor~knFRu zgG;$Lz`#FuIa&V7bA${ohZUtO+%L+zEeeVVglv-EPs4xEFb4y^^jxqI$2P&{Jrt!R zb87r;$dR;ipN(Gl8*kfHZ}JJ&jEyxNCBxXF>Bu~>4o$`f1le(`Cuqm^uu<}fzj#Dl zuWO#VHivp%M7Qn_%vPOq7>QmnFH~R6&ZqF}Ri^V!i3)<+P$>yPIxDs6oO`HX3+w_7 zG}oDgUsF+)`D*sujbRl(!`y$$KNVQ*>FlcSepB1!93}g(%f34OGD@$A@j_GQ{d#g} z>$g~sd8k8XhcE#T&+9;OrzvJ8K(NF!bOzP-N9K%o6W9O1$YgfW&-`p?Ko2liM8#k) z?zrJs%fUMVgkjEAQH!b`JAYu8w|KjLwKwWyg<%X>&qp<cb#yACU2CBfb+FT*xLIEy zke{~sxFv>tZigwx9z;tF6n3lkYh*cNRCcQG=&7i15FiaWwQWOGI(N)L7VM&2?q!z_ zM`aF)zG8M(OEC&iOGyp17=-83IkHA7glV)3&^VpEyIN;9OxpDZ>H>t0TkiB-$KQPY zL^lHN%sr!84?3`#wO(*i7IbY!M0CBJel8$4ypEr9X|Z?2#oM!j1kS3>TRx37kVB{C z2D{q|;eek$uJJszw4<71c>umjG@RQh9cn^Roa|ZKF+ROq*;NwerTu>C(s=mC>XFl_ zf%-gyghY0uNk5dTd$!A8obtl}Y328<d0E9lH)qlaFDV^;3-2bLi=(cig?kduG|j!= zJ%Q$?)eB5gAyO~T>Ty!6(3R9toDoeVKeD)T`9%M0%z2o)yGsP@5qrlV%QSEPJf+_} z)sZ-e>yBd3|3GhE^48H|D^sxB_5IQFuz%RP+>ig_wSn@Vl&44ton>;+MwHg<R8zS& zc&i}XR6IPlXe9(yz#cC|i{E_&idtB0H8u$E=yn0vLyjKOOHoFC8po!}y}L0G>;3+L zeVDllnh~97tm34*B`l8I`E{8wQw#$HDoifNnFFQ82Uj5xZY<Pdmu4kGwwrkR#sDXz zyp&qdP5KS{Oi*q5<C20dmrNU~JW%?UUG~ebuVo*Jvbcej)w&T+%SDQWK^tpmfotW* zzp4iq84rkytRzeyt`qXZs;xk7z)PH_M2I-w@wG#1)s*t{Ppt={rqPW_$l|hgCa;gE zplcs#DlK6Oo=UKfxu+S)FTY42+M0T9+IW$Pp~LA;L{yY@>xjt#F1~5!ylcQ5uLrX3 z1nu*9;`N!v4P(9n59xH6*5QsdLjmnZi`b^Z;RGfe-p|`zO3%jg+SJzirQ)J2d&EIp z#Xw-wK6Ss<qSMcX{8NjWgGl<W+sNe!M{f_E2b_t|>WkJY=#W8$)5f%p5(_E;pv_Nw zb)>;$u%s7?WBnQ>;Q!r|zH1lw*Lc%c{uf5~H>uw>KNxv`|1qQLt|y#&Gyhl$rw~2E zLuM^F=a8k~O?jPlXXJF%nFj4PuWTUt)t9G#bBi2Y`8xs9-WqH?GZJq3<)~&u#rw1C z7H?M9AX+>?d?x8pL=4H$*a}7?<b^{mQ;%ESngiiv05v0Bj|5b?C42HmYdm2%3FgRR zYkaq%b0<aY3^G`g=E4mqgxC?(yIaaI8#u10GY03ppqA#*N^o2r_}YBG<F_DZ?&90g z-8HL0sb<#kbtqag{t!C49Teld&&o*L<@|N%STAz9B*wYVH6wn!w!&Wski@@|=D*c) zEO?3TJsdXOe^ZhnB;9@KPtG@s4jXSPlJWBw9ng{1s73Z<{Ha@HuZqd@<2rZSJ%ROQ z{4hOL>$(gUAcBWIe^pe%7%N}}c7V@yd#H&<LXNFcJX?LDEUDX(u1iLh7%%Rftv(Z- z(_&?fiTaQ(u+ZVbj$;<(QBUdal6T{e8O-UCM9<VLv@O{9Iy+_7W2N*AD$<hw!#m1M zi#u`0M1yav(@(;h`hd%!etgt0j0t>E6~2lZr)K|7NGLic;Wd2J_Q{R<<KDrA@kQ&l z-AQJG=ls^>*aR$@md&j*jb;K)-Y7llZU)&&pAYnG@6dwvUmZOTW{~vH?K%egg+`JB zr!t$|J4yHFD@AH$t-T=E^y}4t6atT}B%1v!tevAp`jVjstv|VuoT?E)Y@Y>1x{TSX zTBHP5B4S#d$WqfYpa=G8m_F^Bc{4I~HVqR<e{8r`{Gq)(s&UujY@+7lBR?lqjRPX_ z$Q@TvQW?I>9-H#%>12ykQm&568l<xbs<v9z<b$GVcB;FO)XTmpWA!xbKvi7;S=cIi zO077|J2{26@b0CI;EK~%+aEXHEOb^$VP-{;^_K8ybwe(zqixK~=qah6vG*;bhc3Ug z89n^&01-rG)A`;qxNXgiFVq~(A$e;CSJNy2>3dBDU9SRhGoiRyw+&?J320!~CY+#+ zE%})b6vxFDeN!&Dz(FW-LN%&xkB)rS(3~DYI5FAV`x;B_xAua<@txbLCNGMkq`}~9 z;q+ucJ@O?oJoM{cM+TPkRgW&IRZAG_{^bH^C*o|))rWCjK^i#AK<@5~5&06(!lFm) z&H<e_9OvXagSDCL*$^dAbsT{i(<Kf9#9bcC6B;dC$uc(xP3<LU7hiEo;?%9j0yq!O zlwye-X{NgcVvW96F(i&J`L`YbzGjHfE<TF&8f0yLMkG|-7P&0R1hP!M2$bqMC+`rc zBJPAY*FNto%3YqjDz)ld%@+PJn>nR4E%x*eHNM{sbD%wj|MSKbt#XR4Q!Q<|480+) zrqxC~FxCH;b;y5iJ`nm3389SR`@nQy&MOMVK<7VhI(_=+2W)^pmc<>|ULg1Af+B0> zIv6g>a{$Fik4b@S`H&onyce-5o7|Y6L(ZH`^J*e!b0_3XK!T>$@`zF&l>Z9{w-im6 zgI&MRw(h7(BU`qbo4)w2e38`F0f99rF!(RtLb;En>xR%;sdpsxZ;s`vjyEQX65PYI zIGL?a{ow3iV9y^8W6{LFc%{hCr|Ni~X<v_`#a}b0B?4vX`6rjvobiIREceGPK-_?8 z_#`v{v99#XuOYHM_UaBr2g_Thihnn;#)DZb{Pnn`NnX5|#7&m#R+ZQ;TGQ`x!d#?4 zz$J~v+l~&i*~})$XMin7e8?>*@l(-trW+!`jQFf>7BA9F9nFjO&+T$BrF6-Lq-BkV z0R{G_MO%8VU$<6<u5|2V8AiE0P=TquF?ka6H8VPk9-t7`>u$Ul-N}peSoO(7G<yLh zJCYKZy5gz@|KdHW=4Q_|R5`jnx#C3}tkeKV9=P8pV&KRZ8rc1v;aZ<)!qyX%AAPx~ z&~aZR5|3Q4;)#V*{<~Ees()@VpP38(y5{8|H{G34n6~0@{jHu`C)aCkM5ZsbHL*`X zjCTI#GzjR2Tb2_ZRekh?8Z>c8bVzX7K9J|PRYB4$yRe6#@`HIm<z%D8_g@5+0@+gP z#u%mt7Pb8shcVBCLa}rlNFHzE54(=Tb`q6?c01auJ!SzbKH<w9I!#p;6-SpUUJ>u5 zi%UMcbc?te9810FuwLHo>=Kb3WVK+iO{{4n3^}@pzB-+$;_o}M%E)SMC+=<M@_PaR zbzYK^Dg4mXR(QbRW@yuLne*CqU^-CNwWVF9CWkR`70H9*mf|dhzWO<d*Ci0eI}K8Z zTQBtyXy5!JCLtYFZqbW>i|x`QH7+-qK=R!3p~Bk>_a46EOSTFGe<_$9k{%N+ZWD~g zx_>^>q?LbDqZH$5XV;IOT|KRyH+I3fiIk<O>mz)97Rg=cU7AvR5!2)286B)HN9`w6 zRiKdWTM4hLD*E1I$>yHZ-i`v2@3}3_%HBU5b(-&#u7*((g6ygjBlSmNLW3@5)MC+c z4Z!m=BYu~aOs8P;Ctd$+Z<Y+o+HK1gg6<(o*UZ4VYcHZ@g~UoW)>Fc?8wnZG{zxET zfk;17T-8t5bEHP<?=Q;80jL)g2{Gtr8y#)o9k#G0W$h8t&)shmTS;8K%TY(6c&N{B z>AsTgMVn6WFFB<1q2J-z;^7HYKR%y7U5$(Vos|1Z`~M0Y{6}B%fWY3p{-!Em#3u*f zNjY0(3zSvv1{i*&+ci$Bh!7>HvLLqL<{X-eb4F)fmt8B*n=mRv@|Q_xZ`1#%EkoFm zH5L3}42HkYD77ifl0=k03`L~di0)b}Tdg|2b4V3*TSGc{1Xffj?Q#%zmHJ6{)&Q0A z^o@S-S--cZF<5_u8PUh$=bd|7*Z8y~`-x#3eP}vng2@pmLrOG~)p^a&Mew*jUzb6Q z6y(t7o`yC&a2TZcHss{KJK!u$d|ekUbE<DR=YGmfyO$AFt#4M;T{a)F)HKKHp$_>O z7aeI?-wWu#ac(Z?)E1^?=hVm{nrYP)YIL(icdCfe{OSoy&!Tx<$q5sH71WPzW!FA? z7xHulGLHZAx-78Za{HE+Z6PSir6iWt<;nYp{E1+1zaLwPz`F=Z7#qzkR16Wdo+y6F zB|h|Cp>22xBr!{0-(I%6bcEyU4x@&*$H&IBw6su0p9K<hCisuaEM345yv>2i@if@E zcXfv<$cZDNx3N+C`<UjaB8^)RjegAsAv>{nbt4^MOL}t_@9BB=<d%rk%LfELR?ZP` z`Fp0lA&$PsI++P8*()Fq_3leQ=E<%)rpQ0`DJ10%QNOz<tfIZ)gm<h=xfKob94V32 z8$$cu)yIvSl_JC*Iu_k&;o_{~AEN8S@1HYhU0<J%8CoPG?RVZrAS~|<9#xC15r`{S z78yplb|7Vl>Fltj1@KT$uWuAT1L_&y?YW<8GHms@G!oQ?W38+Ka!ll-!fl=Qv!xLA zo3uysVNPXjqRjNph;}+-D(n?+X$;BAA+C{JF(AL3i2pjJEqwB8!&V_y7uI+yy|Q8x zVd_5l#NXq|vzkV{k5bLiN!AnrwfzgyTX~+8_;%m<Ux&G?X`sC<w$%!_Ar%u@ulXkz z=5(FE3j(Tgh~xdG6zC=ETxn+1E;#9Nw&IL{c82Eazj&;JVTKqhBolcD8Xy-R8bcO< zuXxM?w}-c1+c4g>at8IU?JR;97_i)|1<1MUWo4sp>HhKZbekqm^4IM^V5R<`=qY8Z zJ9!o1qU&1f404~6l2}D2Vj6ebEeAp4D(XlG8B^c!@hajH$7V~*Met{}cDKv5xhilo zd7Vv}4f1#o`M<M$I0eKRNuaBq3<B^%>kF6|&vA(0(CKatJt<YP2t4^wL8H%SwF8oh zr6nKAjjN0nwP8lj)34K1=+C_-s8R2@?MWQ)(*N@R%sc&0Lh6g$Zv>QjFADDwkh?#Z zY$GI|!_MOdr&u0jq-R<0Yu?8?<J|yG@I%uc0l`5ZXM%@~>XiGA2sj_cCI=Z~;Y5(b zkkwakaBdvN*szR1M^}+?yYb_Vaie0=oZO53+}xU#bl1JfY%iNYgPK!z9uDP}S1=6H zY=L;2Fm}C^&N%H!FkSM*yN&ww`H47q&*AzukHhV=z5>6kmafaNA2pm*`FQ2!!(m!f z&Goxuc9E*T+(J8UrOJ73e9nq@=IwHeav@Y`ME|i<+{Rm`Bklp0cu~IohMI9+D3@45 zQ!Dz^P^E~!3MEn4&z}`;mI|~ke(J{@!G;mZupenyS-@OC>`X19O9O<sl-<<D-M)@H zdl;(=8LU>RKN0@s?tt}qqt^o$P#9oho$Ojek#(^3q$_xj^}QRHJYHkqgI4g(j|1Qp zhMxSXq(^HjtEQqJMuCfA49g9>cS0v-Ov{4lQo=hyWq!VSM^mcoPqA-B5Ayx;T0`bX z8`X`@$LTG%sw<#n-TZ?_T3c%l-y9k`%PP+z_7|axgpRDF_reBVky$L0Jgb>Sw5s># z`A&2DY{Lplv$`vzEMG}e_89r^^?@KFlaj?7D{<I6#!hco=9sy2^W&2CXJ6Z-@zF0X zm5l}Q80GAurxi1kjoU=#93`=8MDE_YcJ5*1xmIb)UG5b;eKeOwpME34_?~0LohsZ8 zh`DZXc1<gd`Q;t(c(zH?q>0M}#$Pvw5(4xmoMJI@d|Q21cbtFm+Hs=ZH~*}J|AvzA z+}}S$sF$JrtiYyP-48Wn(-{|n6V6o~#9@L1an(k{B({s<`=ge(5}GlrsKTO2zC29~ zU~qlITYtmK6-6&0AtW4@@@)Q>XYoF4U<Cn1KP+)OfzwlMQd6m`6BV01j}h^9alR`* zZDj2>g3pUHJ}AsDEfz_$wx21C&uR5sZZc?*7M5r|J(bXJG0Fz{@Q8^=^?z9Z@5FWg zS-Rrw2LD^}Dnm*wBO7X+e8sdI(jl%<egIE4WBRSui#>I73ff1&+44!%QGG5CQ$(wH zS~K@tck)hMAnZI^iu}~BH4o=11tNWI%U_wX4o@PDbmnw);-T4m%5zv`qfS#%7bO*E zb^ncL^843|lt7)PP<agE?q$jK^OgXv)>D)dmC`#8c@m9T1HJ^6_5MZaM@_dH%Iuv} z^8A<B_=i@G)Or^=NrU^}aX$=P3vPHRNJHV`M1iHnb~v{$pAOQtV!gb+UAz9_I$UZz zP_pWS@T+7J)(*YIPKVc|cS`aeiSu%q+O9tA_5{|fWGrBG&_;nTL&ujYBEEjVz2$t; z%W(Kq9{bzdSnZ0Zb{Y$_C<16GvUWbg0~4`qmP2&pTCK_$M7_QbaF@`N!*;Q2ZpRk1 zDp~t>1bTHOeQkHj`pJeiEOA*Z`_JYF9~2PNr;z7u_ROsg(;7zc+^8AvU8E!!xm++% ze@Jd}ZN6NP2_piZr>OiopqRl<t*?(fOg8jIviZ-72Qrn%r{7bj7;vzyr3)m#uGsyN z)lg5-v`bR<qc12eqa=%YGK@uLdAB%yPaOHOp_Q@*RfiF?tq~(ywMdf`4G^VrGcxZW zi{DC9ZITpUSnx5Ly&#E5(Hap`VJnF@5@O;l5<UTaY&v;S3bQgA&yfU`6)a2W%Tk!< zW9Ozd>eeBmE1@o1uBhAoDGQnfL&w&jTh3nZ!L_V&z75{uu650KNb<jUuj+chsCdQF z?`Rsa2*T#7XO;0q4k0Y8)6%OBUo$HrmLa+aDw`ba*+-)zy;Jw4smg!-5({nkZNr`1 zZzk@p#juyoz`@W^Nf#ifKW|jixjzpf_H4ciACHAC4HuUpljq%l=VpV{P42;DH9&*g z(aAtb;#wS{`&CNwa8P_<aU>AcebWA?e)}?KdzZ&$d3w-if0DIW^6E9^`sdvCQG$^5 zTpY_l>%V0h{O^YvM=l#Kw-cXFOaK$%@R;Yd6#>f^W4JDZcocWpg9$WH6~5j3<6As2 zW+$$&(J0jlQP~7#5DnjC@ecHSw)n02eAeT}sxAFZ86n|)X7^}u5wYKf&BJIFqPPE) zS-2!sS%hDyp5xrs7;Y61n$k}MgPYS!fB6q2uX3kBKATK*ll-jw@-vAloBS}?!AVf6 zhN)El?bugYeAxoeg{Sptij-+a&0zj8`a~^kGDOIJCY>)~yXi_I2PemIq&2{#hqL_X ze)@F0QC@yDkxa1reE-$~B6dAGsLYHpIH2eo9h!*SuI<+u>qUxu_FFhyIC#;Po^j22 zEAGS}r68Nsim_ZL?D`1X?R+S@CWHX+W)7lUmqAdBNTI70Dv&QPyu-}Xicq=or~}F9 zU+e3BNfSZ)!F4<h8yFqy{ZW$gLc2=o=kJxS*K_pt_Q_uY_fnz<#0=TjPxP#^lIVIW znjv5*JDh~0z@joBY}RB>M@Vm&jI$T_^-<i0{TqD((K8L~5W}#Umfaou(!zc1?=Krn zN8G~f9r_HchgJ-(i(x8*FT5=E!bm}2akGHpo@8GMDGg;T_5B3~YPoIR+p#l{zP8La z+-UVh3wk-QpUp@B1vpr*ABhn23JNLsN+_@>6|K2PooZQRfHW!`qfT+P;B>k(Ep_d= zb+<rT&O5%1C`&NYRQ5cUxZBCN7-+sMOx5-I7AhFV6U-p{v8}C~(O_#i-QB_89KtTz zsSuqt0QI*-*K%!bWs)#?bUuFv-aouu&>i-XJf5yvQGA<n<vuvs3{^gxt(QYu-G5l} z2KMFUI~+xxc$Q%P{^qL-8IAk@eLOZ^LQ}vV1OJ$)$`|;&WD;_r0$dMxk(ap5^_qOT z5S(rjZsf^3Z*gK=V_R^FTUC*!2eEbPt<#)PXR9&N2T+%WMIxgYrxQ|=lF~0HheMib znhNH)!41VjH_3PLfALffxHUwtE2z4g?nUnj<7I5-6g7yV>8>l@{0!ams5L%cFS00X zn2;ul8+&T7K{2tJ90XD?dx)?3(zf~@(oyydcx7X_t+So*sG#E~zoMP}&>)@R8F1Fs zkj`ag&OBbxvL*X9Ly6s_JO$0zt=5AW_Yni-a29*+e6+USoaR`^Wf#OIIt8PT^T>B| zHGDHMBSHBtIfW2nI(Mh+G=7(MS08O<Le_^bn_I&p^zx2_i+9B=Mf$Yb`AX(a-Vyq+ zbGNR?sFDw39GVX7;KNj1$xss)&x!IwGKhJ?e-D0BPP9j_O}LNR6b$yE8#>C@_~h~S zgKH~D+fo|J0hengbXyxgbdU?7UoRLuCS4p?+|knxz*FIYSHfJ58j42ZQG7_XKsQdZ zxWSj*&3aty;2G^_gNu5~Ne9&AXV--pTl}J8T73N@eTF{w`aPP5)|}n@_%v=_))EV> z31hfwRvScN9ZH=Up@y$t^zJ~)BvaCO!-&U|lUvhTwOivHtYtf^37<|0MhU%elxvyr z)3!Erd|hqbbI+6!k$7G<d%Kn0umAcN=LpGfq9*;7rYn=s!k<}P6%Lt8vQ^1llvy1C z?n59k-|0s>qvDT?e->xKl+}=edvx?ovni-6ppVL408=z7y7NxVGxkBVUM$>;qjs+R z{#}@sG27IK0^-}}S}er>5PS^&ii5UeAHg2|4^E}5-0)&?S)@Xo=a)GSG;=lhJ~&vK zRn^c7j=}#^rQ3BR+3u+>-Fs}!ppZGL6%Jrwm-sT|R=eZuQ<a~Jg0z#LT)6`G>T4sL zUf}-}r{_?HqvpWLLiUeHox~&Ull(YTH3{g~$b>Pk0ydV*%Zj5RFYfsnBL}5;nx`MV zatn8+T7SQWk`(Nu_chbj(H!qN@8Oraqx_w%vyhz(FvzN>&`z@?5NNrX78>uPo<1BZ zia4LZ+mj8Sc$LiI6)ImxJhLsMmcR^>W9EE^_G8eMr^V>GV%u?SJL_Qj0EeGOddEoC zD4Y5Mc<;fZ$!5%L3b0?~inrmk&a!`GJude4uAc+w8>Krbzomlrg%xTv@W9^{GY%+1 zfHzs+ew?<x_sv?g@x_UO2W6U{7+9R57#!_hV9kbh)tj}0xEhHA#LB3vA4=e@6gBI+ zxSDzHB&8YK0mhi)D$_cb@!zK^!_KiTkCSN&z|o|3Ol+Zd<p^59RZsTMv=6S&=-wgR z?B9>8fxNW%>@YayZKyS%>mCSFE^&l$H*=r)9p1x?GM`n1>swF{X7>dWDYi!U(wEz% z@2Y}RL=_Av%IGa+$)#QxyldNj-UG`yteeeG`ToH;L73CWaBRb{6fIewYt+4ZslYXO zOO-V=(O>&djaby1qBmtW7d}A1PV`+Qw;I4LtA1r2_Zc%HhT*R-zs4$qlj0)P(5}R5 z5><3ZCR=BW(h}?Gkfg>bRAjL~fafqzyH3xiMD9^DITeiM9qybxdbRm#>R+F?dooIo zV>Q0!{u{?Pk@Ce?aLBhk*+?=HQ&I=fzj$37P5{nzW~w3o=m>NqnSGI$rc*}1wtn_I zp#z3Yv5OWPllcIqCudvBZh`w~u;dWv&%iH|3inAbf1jDYhV|DU9af!R*b6p~qYGVo zlv0LS>sjiKwT*8~CnmgHdN=2|<%5%gIwh=+ZP!w%36)KciP(0Y>}R==&OIJblSj^X zEvNNNx1Q2LNmZJ?T+GmloLJC2vZbxi#lpy|455TU@^bUgZBmVu`#PEbNS41PL6_=A zacL~gs-=?`MR2J2S&#K_(qRpY)|^5z61cSbE_svd;`cvrxxjRMRC~&lio%Iye*}py zI)WMj`H-W@D&MHKLBCp82AzeGOfMxS&LWMCYEThK4?QWj@7`lkh8}}IiUhk_%`d#F zjM@_Q?Q5`Pdrv=)5PwJa)cp^~+w^P9sMd6kf#J&s&8s!~7@;xi1-Xci2NCm|R4+D5 zo#Tq;`csHH&k$cG&UCv~5at84{Ac2>21p@<9%NKx&Et!Z{^V_FJPWC3uDCLB!l{8p zh(r_poY4A%RR)C)cWJ9^6CI>f+GmZ~s|@Fp-a<7r%~oMQkZ|5Yr?ya@on`^dJq;|o z)43r7MR^I~9auT=_8WA$(c;(g8y@S<zAYELm)^4LL!70PS~KjD^Lyq`wTe+ZtzuCM z){f3;0?H#CvPk%I>DUUQ9uOhl+tV7l>-_*qhk4p2HmEzZ>?PE^pcJWX`-K9R%>D=Q z>C+OAOKbOEyvF^!A}PDQb{au|()GIysxkRj)iV^>+v#HLAd+25UA!Q5Hh2bqpvr`7 zdG*)=zPZIXg7Vj;G7>dX73EFfDC=|Ua&WXr+;d2(;X^9(X;VK#&)~OS82G(f87K9P zMWIX$ube!nxuf3ByPciElt_Xt<aQ->8TG|+v&^C|Ct~mS2+LN6*-f4&sQ7m=IDjew zGS(pCHsb(DEgg7Ic)bw`ov|vGd4JPJ6)Qgk8kS})I!AKVc1!X)d3QW$B=pN;Z%Exw z7ZRJ|J`>Vpo1MSY)6@=R4)GWBFruI|XfpNxIW*|Q<7eXBjMHW0jKJ4OvUTbQFU>&U zmA`n;rU7+BEAhkrOKN^uPUcQdWn*5RNF6c2o7_jcV?=Cg1txL@x}3gXeGxv;&CgPj zv2MFd*8x9kuY^#qlp}`jv)-E80O2^-H?bR`A3sX0O3$i8n|0JC|4cmi8C^Z8IsF=~ zZdc!A^|FV}5P9NmV8*pKoZL`nPSp=24&xnEO)pp1z9d5E$^E!g8dL3|-D)ZHeozx; z?basE8lA32;gBh63|8|4??*&e9nOw-UC5^Jt)sXEr<yHg2|bwSnfc}E6CvfCwX;Qn z`jB`{8evQ5y~_GsF4#0N9QxT@?+Y11f=kS|{FQ)*Q(Sj<`a@_Y@Fv4lT!5RjJv^UR zXJ;9it?shBNa@MmxocT0Fku6K>F;#K$TYsXbBwe9J;G$q*rDI*>H9#h1SwyQeE5Nb zk^T)odM5neNStx+dCi8|{hDy()Yfig_{N0(JS|dDzel8Y&Ba3h(`E3(Y2M2qs~zXr zVrrggVL6?#^SThX+Hj);j+-rHLRG;F`LS_lg}kjE^lg)CPaw^iCbc*M1SPrz`YSg+ z!IfU)<YUk9eZma76*P+cHMNdkuX=>0bBc1-H!@9&YBOVq2plT^;#p;1d(<}`BHjvZ zSRu1{q5Sowk64oJiN-gZpy;iXkFuF~?9$vR1{U_54&P!NzI|z(xy&StxGT>Gr0Te9 zbDAF9Ly)Ga|G1sp)#>jktq2xKc*$aaziuw2szO+qN|SY;0gCuux0;mIZFUwzN@B{e z@v;|M;b7*XSCX~w!jGSh7Vf_05^!)7Ro2fMV&nqLK}v;&_rROmcy&=O77f)x&0EMn zW|@wqZ^XwFv%Ch>a!gqH4AzGlRG)D1xJ4Qhb|2@cvpN}s`x*wwX3ndollJX==2Nlh zkU7HXWk+r&#SK7r<xjX-XQM0q+|M`^Ijw>`CZcwQ=eN5;v-aX9b{~FTCu)wgo<6HB zG}{|eB#;Mku1sN)A>d;05BB}Vq?DSG7RTCh75Dk&BsI5PJXF)kYE9pG^w#M3gr;VL zP@nUdfXj9h-|zgl%Jlg>Jgq}tEZ!pYqea~o6om-Z@wnD>RvIJ<s9N`^XgwsAa`LmP zj#|3_4b=V3H4t#owS8giOv@b3)sh(KUf33+x@)b-AjNv`P7lPeYUFVuy;cE}io7u~ z^uzZwk-9Md{OZ4N4F2QkW1qz5qJ=|EYj?SKy;3;m1|sGafLVMU#eqf!qpk-|T(Wrt zG7|L(Y_bi9ID0tLzvbQqCW~D^&g(VUow`dXg)PRg(V7>P6;T;0kmsze>Z%N@;VArC zb9o!F+^YNP@2eJ!D&PKyFK#vK-_6Y+_rpLyoHcg_D(;io5_L1gbz4DlNi}s*oDi1K ztSg3k;FZ|h>mnWApN-O_Q?ss%&@ArJ-l0o{7n4W@e5;l{NC2PxYJ9q9Cv)B8??Id= zZXIK*Hk1+~WK!XMM3+12O!M(bAge8$zx=v8e7k@P6!`^jq06?}xj&G`s{VeS>qcmt zEBAxCc{{;cWv3Ev&rhz1b#~2D1DB13azI}0A3S}YZ~J>O^Pb8L!qIj^pp%E<yo7$3 zB**iLxCEsu8n;X6{8uZ!*2(}2$GK9X7-rx!!Zna$&2ptlX?+#RApE?xS?}Z{7C6sG z5;p4TxwfsARySnkXXHF>JT&0mn3v(0iO8@{5qj9Bi0Ng9T(Npad&L6!hg5sc4FNpQ zj}i+PmP6xvfwBZ$R(_a6u=*M`9izRMOIGtu;OnUQ>-|f*sAUYb6uWq>mQKsBj)RE3 z5sWLak;{lV9<8rS;?vJBnCq?9vr|qF$<$HSHPG9{>{!7k+#WYnf}_fO8|0T{oZZ|> zXP5+)$vLkv8UwS&m|-zDv0zxg7;oiF=DUSGn2?T$3BOMOl@KduWwG~>NEiuckd^YA zfVzl?X8B+1VKMK)bx3;3X4j<J6wx8;0*tM$O2cU<S0LRi%R!W>0Op`<oC$lQG1!_? zbIrIOQC9dX3}qe8vs|m&7nCr3VK0?&<4G6u+3_o?$M@)y@W1E7|3udRe=BCbho(4! z4H4`Sjy>~HSVsAvFwwx_ILJW{oS126gyVuGiQ1So?DbCl#q&&>?o3gsjp4T=d$~so zoF{ECx(wnrq^Gm%av(H35rP{I?j^;2(bTd^I&fy|8N|(;XEB!MUOjK+2D4n3{HNNc zI4s9@oobH6R-?({3;QR`(~M=`%@A)l@u;3P2$?(X_=2pW2OC84KDu+ejG>J_H%thA zFNE0q5|Wgd*zeNkaM1o9RM#S@FRT1AjHcMhN0s>zUh-m)_OAEbkll(8?Sgn?vRv29 z+5?%wE-W}6xt#L;5wo(1ab%1XeF#oYlbIZ-zl)tCGP2WWVX;^5k(zq!a$6hJe`P)^ z6S=Gbr`b+FJOURDz#?zT-&!eX6aU2{eXV!wLG=Qcb7NjZF*m96uvu{yN7+O)w)Mv? zwYBI<keJ(SI&?3eKU7C9=m*mu*y0&)t3ynYQtgj??q?4nh3KntU`<ZqwaK!U_q>2r z>#g!5+iL2m9eUKan<8gSJDt`(=kL;43;xWb(!QTUt0YP6N#!?b-YG`&T#Wn`6=t54 z@AZjBlr?Z^Bl%ZO^LCn5j_-KRsq@Og_5{4rZ9(#Oy{JL}-d)Fw&i68cui(b=kf7#4 zb*S>=<SKfkUlXpC_RsxIwdeD2(9B7ulz8Ccy#FsAnZlII(f;(PHo@5FsM)=r9X|+% z43}?ogFiB(tcneNnr|Eb=$o++FRW~*{DTCD0Y&LZzl9tTSGph~X5u$zt+(mqqs2=~ zdpN9=m*Ey6GCQ{u0mkMCQtsE>vd{}MnsxP0ItIp`6)P2PZf~EhZvvGdc~TY4^^>Z@ zFIgMM=Ik4i`B9XjKs9TV&dTt4p)^R*tiS||Xf|he&(gihVOG(N>51jAdh{lgxRa#= z?i&&B{ipQZ!1=zTZpT$-_Dymdq6axmC_n#B+=tsnDVOvAQe1xJ{3Js)OJM({jEH(Y z_=^(@!BeMRU*Fx3UWD_q6IMjadrw?F=>5XJ#;D&14^pZ3>l=fHfcnoC>q>AE0Z2f_ z5@F~C9mGgs6LB~=Yy<Y*Rzxsv2rXd*W&%=h{59C{Ly7SoVm!A<yw+)jZIjMyGaA^S zv!ZxLNt$PU=jE$XJKLit3)cPo1F1Tet|@Qpf@Myc*N55VMJiL^%~SV6wrlF4X`E)U zz~rrxQMExX9H9TAT|KFxaXT~(F7;~nP4k-++$A2g5*7)Hn5607s4a`ger(#&lsdy9 zP%{UsB?J9hnRV)D+WKXht0e^|!UM!mhos|fy^)BhCBDG5Sidb@LG%p|G2t_e!TT*Y za7oAV31rS9ykS?2x^6)T>6Vn6Iqf_V;t-v}<}ajc42bWMNMwBR!fj=9*|~hnZ0{b` z3+|U?e#(L7UIuEMW&Er0+`N~akR<(1FEfv%4N|2c{lby{s|RaYQxaK4;Ucc}w65~n z+;n{=J}ssW7Q@?!>Z6()B-c7l1nO%blGhZSOKN$42YMsooD(h5<c7L(=!*6F{IKrP zFgtn9=KDne5RSfrdeK%TQ~fDq27(GbHLxBvCqPDZ9MwqwZ1eKQ)rqrBlBbsRS;6wQ zkP9QrI4daBJ9XJl$=#t1XO@oy2#Q~?4NEjNN!nZ^HP$~W#ydS9qhNuwp7{*^sW@Cn z8D{EesGmBNLS{$&vEtnvn!1FntS_3#IV@J}?nPXk+&AWT7luJ~c`9AHD?Jp&L)y!# z5bAO+O<nXEU%}&}2Cm9S{8T`ndw4U3&OX_t+_P3JCKkOfqaDs>h%3E{C6XK5D=pN0 zn8O{;@5$?{vJHyw55xV<y%F{-4yFIxSQ_t13L2YSF)@!5mSdd_(HH|Xu|puRZq&bc z!zoaegSr7x8m<)kue{Lz%btwVeWFLK_wL~?IOQ!X#g;`V`OL6H$S1e46W1?AQXzUz zWKNjuvr;FV&kSoM#HbZJkGGL{z)irOU$J3|ERJ-SvaB50YhTI|eI>(Y&OIjdf;%lM zi?7l$+D{p(8a#HVG#+2R`8#Q_AApmtmD|NjQst%nGQch!G)KYqf^<4wXCKlBG*-ig z--PSCUr>utjFeS2fbgQMUFxq0lwc!A*lN$EGC$5=i9c4|Rhvkuc>^sb4FRY9r+ePA zG{t3Mw`tvLeGKw8%Si+=B=SSyU7HVrVdppM?4AmdYt9~EJCVrm`EEs!yc}^NuJo7S z?wd%i++&VSPNc|@^D64`$*v|*WydP0>=n=V1u89pXCp%@&h!$2R^8s#f_uv-{*06r zqMAOgF6zvf?+qNBaAw89+r4BA73^dCvuD#uU=hEugdDv+&gD#*--G+LDE~?>p%*^T z^3F@wySD9<w?uTV-Y9f_y2muC&ql=0;N)~xV~H}#+y7JjKE8ZPees#mvy~&1Pi47= zG(7e<KLP*3LG)lvwV{f+4_A#Z%-(iO5=$u1rb;tfnan6}46np4yY{(#7XeS{0F+v1 z(~(BGAr90jNY=K=`BkgZ9md*4#m@kpdv%=mDxz#DVXO15F2j1w=aF~@+@3Fv^=8qA zZ_4Ww5*v_Z3l<h^EKm}U&_cUQ8w;b)pQZ_U=g5cSfU`ExtW1%;^7O)U0&y0|=xFp0 zJ%`cFIGvdl985tR-Kcq;@O(ik?MRE3Bm>K=xk}k?%!`USZ*Z=I$Ib)jD;r<^;ZUh8 zGwT-E7V*O`?cRBrmur#9HhSPW2$%x4+$A_TFC}lC3gLelTYAp>Nu%1z_MxH>>&-Ok z#0_{n@0aPXNrU;GA@iT3&Huv+cXa=scoA7j#UA=P-=Duuk$BGFT*TVWZd>#_+k$A% z{EyGNFoV12TzO?43(gmyCoMw?`?#698LFz{80m4+AlxYeq5Ui<=)f5(#;#xK++Z$d zvbNpOdO^Me#S|K`e&AEg3VzaP>(s%pS_#qd1O?ROM|TJ3Ko)qkp%-)9oFyi<!B=0j z3c54i9|L9UH_Iz4+0vE^<kgM77M+cus=v(7E>eHc|8BtWJPL&!a>zI?(4E@*fGa?V z6uIDbB$K}}*@W?9R>_hpXDT&mXDLXBuoV|<2Pgki)Qxdgv?ce$!O|!OhKv(ZvjCp3 zwSjfm^;HaiSBsbT4M+7DJ;&Uk9?;<Ue7;ILu@O~vCe0VfXtM2b+cHj36cP5!;<bT! zQqS6eSU?kZ5HpvDl%&ZsBPVvJFNev@5gN2b?muHDi>^6Es*WL!cG6RPSsh6eu7D(} zCX~$sH01L-=HlGGX|7D{vfR=#-m)*3i@w5bsQ+LkOXyO85a$N3&);<X)L>;}<d}m2 zH#|2Ons|E+<RHtlJ#g!O5&F6Z7Pc>Y-7sxrEX|E0bwpseT=gh9Q(OIcb2>rqdZ$R} z*ZrrNq<pN#M?0sV7?&%`Jq17K^`<2)@X)vVle(~v&ck`v_H+K?99=DKbssY-1CI(e z)GF=_D!@4B#>;3teWc_-tu<%n6CVLcLqAs`^$C?8hmx`cp~7z);~vAA^PbDr>Gnlh zvMkmY4#|`i)kUQ7@=Q&S(*!V;T`ZtXKnlaA<M+W$C8TfpT8vsT-p?+P&^8JFC&hw- z>dtO6D40mP0AlUx9g`-^X4O|-ljQVT_?x#<&iB$;dXq)nkJ8<$iTC|e7gU(snvZTE z{!M(o0AOI;WEiI*F2DYJ5PZ82#!=7Xnu-2P2L6ASt+Dc^Us7Kf;bq{!2!f}8ujSu} zbH9GlP*<IZv?}T{xL6$S`#9plLud-rR>7%}ovlgsS1KTb*^)v-!i;h%{lAZMn4DiO zXIeKt0k8Xtd48R)hunYr7cY!goL&!TSB3^O6sb#RCsmN-Y<M5>7D8<svY(APO8Zr= z+nG&NBlGn)T$&B*y61!yJ?DO%t(WLrXTGhz2)@5u*fI(0{@D1BzuJQ~Hj??F{_-AH zm0f?Ulm?5m;#BRq(X!;cJn9Dddl@z%O-{Gk>sl}!Ep6V(_XFQPT&gamA$pdI=@Svj z{U}aeRCzfA2^pgh&Ae(?#Q_P7pCVELZE7;`egCq}|1Tb}5!8L$-lGm5RA8V4(!@|s zc#(nQy6(CE(yt^H8Xwj!=3#FzF|a`HgjOA18$K=yee*`o;z1njt)rC11T?Dn{HPG2 z9d33wbgy5=wuw1zyDC&^1Hw%~)tMhrK|Ej8U@dNlNYlmC2Z4A!E<Gg3$DUx%P47jI z06p}N^$$COxYfho_H#3rq-y7M7ToAz#*@2j1^-lvI92GTa5k2#I>VQ9%hOfF*o50e z0XR)_3b)=yAA^LRRf_hg{P7@3ByzwDIPQne=dzg4+WPHWiweiMYL>UwrhUH3bV_~T z^NI^rxxsmrz8_q1jM7!Mh;Fnkzmu({mzsN6wx$CYR1dVllfZLin6x=CT<#pF@|3(% zjtud%qfZLe7vsf7ZA)<H$x~B3N*@8TdVT*AlD1vbl5$v|KuwMFlbLa{i5-<wet!dc z+C_8qx+~`SX~ljYZT6CEwxbk9-uiJ<6}3))=jDywae$Sl_Fld)DT3rz&E50P){Z=H zY`071%XM0VX>lIk^QUyj=ylKL$SUp=U>m|I`rDO>t?6xrrv=3DQkd4X-m}rW$Nc&4 z|Hao^2F2BO+oBLG2@b*C2^t9QB*ER?oyMKu5Zv9}T^kyAcZWtB5AF`{>G$q^Z{0fe z?frCBYxSR1Yp(UoF^4>bb=ic-L_eXkNY5q@4V$5=s`N1!dL(4`f2WC_OpdWv)Rs>6 zQeO?IcMi_J+@t*m#<=juxo`Vh(vhUcLCWVw1lTls<Rp|{_{e{0oBz2wMB(Au5ETP6 z$+h5DF({h&?&n>;v<~<l&wcDlm7}sk{0Bx=$Ld-X0iK*htadNV^8)LBYgOapuCv25 z)|D6<QH+Y%*7Q%s!zN(Lq|<gEtBIFg`5EDFovRyG8<O^Wzkv>mKWc97;oVq6^yS3~ z4Fx>wVC@R7$87Az^X(b^{v_LjHXdGKx9();zENOnd0mxyHYf(`CuNz5#W@q2;+2z@ zEh==tvXxAG>YSW}?m*2^XCON9lzXdjC(+DgKF5a~RHNj$tcN9L=a?)1kg$?%cn}%+ z#CWFQ(Mb@aIpSQSz#@YjBS)(ayjFft24QDV)gStX7vB$5g_m&cFa5C5nLywZKT$WJ zA?mfHBwnIR9%~+_;sVC24jpC99j55!1g>{1n$~TuPZ3BucuO;c;7LiaB*SM$Zppma zG-suYu@aA$&gha1H66sZR(dA3ldPRxeY-<F5LmA49Y32NxEAo!J{Npu2zxo;tqBp` zj^k%^CGJS|e!gya-UC1`D)~oqgyADQj%HXpTZ^Y;=56h`)snv%EyPwhH?W<dmYUsp zJxtoAtSawwW%0P`l9&#++TwF1-+P~L)R;Hp?vFBW4Qo`Aezro>ipjIbc2Udn>MS@| zfp+P{m-8gI6nzKdC314?t!3eVgeFNb>-lkHz6|p=rL>*T^*^`hHoN^@FGG#lYqtZC z&2Q@1KW7Xp$%*a2PS~!`rn!!(J<%2lI0GvJVk?sSDXgeh+RY}jnr#=O|2EkQ;*v-n zx0QMg%J|}I+TeR)?=_t7S6)?(Ni`SLG*@DHyQH6+dx-!LHCN=$iTP~WA1@bQtp>-l z6ShujpPy=h@*L%rJK(gszfLMfD8BeJglGVsbQq-lN!M*?{>8PhO5(dvP*4ASD3Krd zLEm^(l9?~PO2z<SipE7zC^}tmb<%B{tS%U}V;`QpSfb8Ot6YaGL12TKpgm&@kP9)X z9#uMXk<CUzb4wn2#fFN56~gLKSR9xT1b=Q3Tr;J1AkB@f>?@_Pcg3DAuT@4lq)3Fi z1&4kQ`+JVRE*{HF<6?7gO-w@EW?%Vv&Z4`@Y3E(2Yw`3Sn5Ip%Gj4c0;a*UZ>n-<r zso^Vc`2k_tVbmj3wT}kf2N&oKa}G__F6$8G=+t$!aMf+4mJEvttKRD(48KP($yWLk zd6vzoRM1e{R4@?!&lL*goDnE~Y#{&WpI4O3#;4<3C@(#x8z)M+DFwu7(nJ^gB+X1O zHp{Pk!dX0^zXsbz2T(}jdd8BVjm*hJwPUTIJGsFIr$%^KgnMc4VEfNYf};c^6e8Me zLii${jp1X1=%<J_LQwDO855bk_%GK7cRACN($u*o-2Aa#`>_kA^Tw`rBKl=uoE}?C zcy*nV_2qP3o`r)v5>aaN^Gf>HjYG7>7w7E`*%I*ZkYkLNac}jzU))J;Q}JXtfMjEr z{%8*83P`!-2i2fvo<YztMJ2kCot9Wo`n1nyTV4~6;p_(XA9`i>Yz@t;$1Fo);Cop6 zu}Y0>O39mW_M?f_wW;Y7yNL2NMD;z2ftbq^nqIuyHX_4OVtD|V&<WcCt%bo%eTg`c zw}xV19ht8W?4<3(H2=k)jKbp*L>x_qz9{IW&`udrP>`T5Ioui>hKb!vIr-XUq^%RZ zuENWn-Bv{fv=K&eD6Y0(-4{48^t;tD>=a_9)VyvL5W25vY|{2tHl*^f%M){ku-Ma~ zMe=5~vI_W!+YpN>g)ba<MRilOghx?b2XDmSv37^z(Vf1Y)kkDkS$Vkm;cTR>C(r&Z zI~W(dA0Nlo%fedD#9d2GSR>|h-p_dQj)5Dj-Dk*PQ(|Iix0ABu0<9|VHa8x_QBwzg zf|FAd)FZtX8xmPN=HL(Zb~N%-{JKTKTSdq*;R!SukLu*(dE(Q~hzr<=e5hIA>^=rL z=Z2jQ)zu^NPMF%_nh3EAef^yEt^7^yc0qzS;7+Z9gRP0<Mtb_#SyM*CG?CcOpg&c3 zBZuc77{@E6N>|%oD}Sas#bk0d==VL>4eS@aS!undw)XF#xwq!#2`AnPAKqZK)_}=T zf#O-)I_ilHe~PkJZ7zxDcgM$%0!y0O_RpsJp;x^fDnNA8^&*%1qiYu2aEHq31Ln^G zZ@MsH^g-l|(dhMO>#*JBw(@YW01uYH&wfyIvAjTr29smAZ?~e?=d<OIc5BGI&JP51 zY{mUp;$Ho2J(R<P=q&+x&=};%PQ#qnwm*loRuekmT%RN*OWyE%1RrY+ZWq*I+p1Di zseQ01VhS)thThcj{w=KkYw40l{z3kO>5!oak|Po&KP~xbsT>`$K7-IoS@7WlowdFI z+7g%yW8G@>2iU_NXpeJ6hj`B$Wvt7n_$>V#o>!34M)|AmCojddxcC$oDqZrDcZ*UB zd@9`mY#C)iN{z$_;p=c${DBOQ;3TaCzq0cO`-9f@dp9{YnsUJb)%le@#}QAqP~}Ni z;KG_U)N0i{?Y7DH7-3Qn{yfG5hGwFud<>Q@&tWThxqN5;h4T&c1lnu&@^-~h1J*$n zl)6f+a%QEl1?;@CY?dPJm;u?LoWNmu&*aw@j|=2oV%~63G7O`OzAL0UNfSq_2yqe? zYAd!>KS|zXu5Q<GC6s#e6ugI|XZO%dg&*8xs$h<WRgx@oJN5H9)PG<aI*R}5(sCn# zcptjjFoeRZE4elAs3m29&LYk3RxQkG1x(ed^Ssr9YyM~p{9dp}h4fK&C)&>qe`N^Q zrw%ST7-fy0{6{3??@{=Xoz>@p)nqY&G3-M_0Tx*Iu^XJ~POfJ~71@1XSBP&MY0cwJ zj#N(`HNaeti0C0*ZX?er{IrRof(6?y)U_IeSC?bw8ycB=H|yp(lYJmu?6AQ{oEfvI z4?16FLqo6)k)4riH4-NHo-ZA<(sgVae2HviP~0%tg4$W5yS~%&h8QSHFQXJk-K<;f zX9=XV43a<T82gUfYh6t{na*{_jLE$$zoyo|Fgfr3Eg?8-#KP@Q*ly(7JH{p96Ra3W zlqMA=C7T@8V5D5xwNCuD@;Ew!80goq-_h2|M;F^&J;1|klk|S2MP3+&G8>4xE{Hgu z$)aPIo#t`v{`%Dx#!Gj|mzeo+a|bTAc+ss}&NQhieNJ{LMHGXQ+}CU|Dz$`btA;z= zFh>_1HzNLwQ+ZaEoeM^k)dNYs2oV}CGBPC3PY1nYI_<|sT@lk(BAQUt{OM(Cx*8|? z1iLDUhkJ~cVt|>$SKH92WY#pq4J<jM4*c#-ZAQ1lhj~zbr8l$;3&}DFziK0fgUe57 zAsEcvFj_!io_dIPyuyHUc?@qzXV&3A;nvBaI(>)$(Msj-cCdGcTEm+yIH`&psw^zR zI%3lqvbEdxCqRtT%-GL)J>hDcvhoWqki>)DejTxny<Dr!J(LykKAmpkYr=`}>v*-T z->J>A%Fj2-&tBzB@(iQx62o^cx@fB@wytWaiOUt0`08ccZ%%C#1p<c!zvi${ZB=&= z3_fxbIUEoSdf@!DcBoR%;Y%ak(4D(-XI~4P&$rt>Zf9$c<!3&dMG7+HJuN9vv!xD3 zrO|LzEh5i^mNWE`_kY#-zaIkwF))-e6B-yKRF%UbDB)#ASF!w;DJ$YI*=-Se+utzl z)ml+Us8k%7O1_@%@ry$U^@X;h-2YT$x)~=Whz#9&Tn+dgT9T>B%eoU@?VlLLdDIYT z1Q~O_3P*@rRni~R1eV~PBxuTOA+5mO>9V(9ztvYUM^s=v#b_Dham`?HQyo_~$?s%X zKb5Dmw#hN!U^TWUwo$Z%KnD2!fk^{atQ<PFYcL5Go?V!uU=!{V8^G+^u&2*%uka6W z-l=?83f+U96(@%EQ{L{>8D(KX=3l;ifg^=<5QW!GLqHqfDvN|+9S91X#Ugk3*Kwkn z-I{NoLZdy92u`2dJH1flVZYZZghiV$3savp?<V{m7O)|X7Na%_sX=ZIfB(u{js|rI z#y$qB@e?ue!BGedrRV^pbxN4c32z8ka-NB+sB|jUt)AnjWyHeFnk84xFLs^7aJxkk zKkIN4GKmM)l=o3-|FpMghBfz*ULz{@<Tn}akCT>Vm!oPpdF^jlUIw4V9_yN?vt9a< zu$;1^8J*JrVu;LASyD559%VXMN*V*^29EITNcj^JbCnv4wrfbkt0!f$mlu2Yc-<hq zf6gcWfjJvYP0Y?nl^Z#|2rcqR;5oM1r#!>xsC!z8-2gm$*jGUZGA&&C^3JukwGw^x zMmI?F#+r$SMz|NW6Q`RR@GM!TxlnFR?N-$N%r4Z^mXwP0t55j})d*xi`;VXLow`LN zOHP|MQiyR<qRNC^hB3+Bhc~^>RBqa<v-yxpzYGf0!btwC@9xoE8l(j$WB`-GxnC+q zYM=m9u^Qex6lA8xcyGtG#=PFL%M2rCMUoTS<Sg*-<l*f5$J1ehBnc8X!7xH=kD@Z? z4oaTEafwBRW}e-q<7F#ubNpm=!e6e6^NX6=cpr|sUt-qD#10L(WahmEd^)_s9ct)% zDoT3Uq6DMMlY*qlv*%y>*?A7k3hgqG12z1j_hm~~ogW|eTm*C7oI|f%YJJ(h)aHi} zP*g=B{XqAa;b2+dpK#H9%K3FSC!o(5qt~(46l>h|tupc-m{o5XG`7&WPtk}t5lx~h z*rp&<n=`b@%;cU8?=EjG{Vkc$cvg+eW5L|cL=Ow}?I(tIQ^;rSF2<B*6$Mn)*yM#< z*~_6B6EE#;JNaJQ5E9<Ty{>8Z?f1cUCg>g+CzoLR{7X^ql~v)nSyd^!kax^pFJlfq zx_X>ir>TW=tIM%t7ShKZ0inWAI}C*03TWxY$*MqGY_`F^WmE?)u7f`2w$6CcRf)sl zrr}1B(=LVk{-A;ceVDS;ww#n72DEtmG3g^noV<LT!|HAQ2cX@(VflAbsZ@n@(?}Ko z5~{DQ+m?Q|KvjKpO>^@S-zw@r%%d<@cSE&!^9%P10BG+p2=JmC+(<~p@&?7CXFeKN z!M*+>Jg3I>l3*%!y)v6m%tRHsiOyT+msk;;de3)o(OKq(c(&{PSgEi(E{}+yhVIX) zT>gU{Lg43*BEQsl)#5B8ewY3dl*73DL8XnsB`Qj}mm@tIX*R_d{UJ?_l*L++NJlSD zJC&Xc!$fDtc@&1TP<cl_!>;tVys$wMN&D_2H=$ebpsqrY2$*Mxh68J$kC|H4|Ho>Y zcy7df+sQ=Z^_|&Un`fd|GY99aX@!R~mHi0*nI6>FrCutv0km6M?WS`&J(OK}xu}7C z*=a_t=|dx0KsN9xY*DrcC3`I<AZh}(`9VjXOCxoeZcAvI_|uSJmYYTBr8|Lwf}k6T z3V&Hav16R53{y;emGiwL%^=u`u{Oq<_xm{b?1am?Q5OqIfu>k3JZxr8qnCxqK!HRJ z$MDr!3t<%ixKmvq6TC__(~Lz_m5RC?N$3tK;Vv(Xb5EQTcXu;*h=01)hU7dK#<-&* zu|3vclBc3L+tYA%D0RFm%@=eu8~l~wT53-1V0LUD*Ck}ln=d<VUT-V{$k|bRaavFl zS;FM-{mM}{-W(}tm$4RIU7DQOqD<A*d}7wc0lMuJ!_|P>IP7L`|F)alpDQ<^IR51N zp8M&g<`rs2?7XgieWWikL8?;*MNcY@V)zL>oEg#%IIEdmGT5P<(O8ME;}K@yM5S&U zPHo|C!1@+)kXYo$J%N-J6PMk+^ZKY{z1;wU=vRq&WWB$+Rc3QPXyQIN@t4wkr@kY> z;pF{tjg%?$%wi{dr+o!s^z+}2t$20+##?Rb@7dPtbbZZlLE3I-_3hDt&)|1_{^B*) z#AGEE(s;$NKy^))>zy1ry2+~;JqKGDM0l#UjO-86_te~k!|B}EPjA31Ei<>f7($3O z3t=IKGTOZ-XIZ63M*`0|lK3rh|K4FoYIpxke~jcNzCD1fqO{?dy0A3)s>`y_JBkbv zRUgV5x^P+!T=oj#+OM{B?lR^Sv(~|2UI?-a6GO8EwWyf}bWw(tH;Nub0CmOuA+HJn z#>9e=eXDg<%AdYgq}jfPXK3r%7lXZjPB83qbIhXv4dU0`d+}pGIJ$B7K4ywm^d9F* z&Rskt<$a=r^5~bb)BX5sSy|Wgt1{0<aX}K>1f>ULm;3xafyJY?R;}CT6g3buD(FAa zvIdoc)I~MNf;x;E5XXG@TLf^rNqx$5_+wX57`k$?3JM3l>XOJAz^laz-wgA^fqnho zs@ik(j{gF2n{x|j8TN2A!hVJQPhR_Q4WEB}U<kyJ3q%M+2&Mk<aTb-?|GeTVrQFz^ zTiLp>{e^Z?l}~s~P<70$`ChPk(iXAE-hs2FLfh>s*2-=cnsslx8biZL9nc{W!vWEx zHeDUOiIk!zdM9Fa;*G1{-&=6GG_v*8Ph;ndirJ;vxezjTW8r>XAKQNTP1vraAiX5H z{IME?a%lmXL|9Mt9g}A5j%w8cH87}-<@1-*#)_{7D&NnH|57LS4&2ev>nA;4U!QlT zsjMKji17X{2e;|ka3S4&W)UwVhcScuIm(r-`hWrqgV$anC;1#})&!~VnsoSkn26OQ z+3$$AC141r!2B@LyQuH9H4Ts|jlH7#u&B5YP9puR1(t1O8x}xc-nEdqg{DNB_<bC+ z9X2kB$<QuU<<V+}{j;*U9?I$0ogn8+tW^}zAbTG5YwiMuSH~;Ud%$3Z`RXn=nSK1( zy+e2v>B~;lMY%&ug!##q8vh1VJ`3Z&duyB0{gk$QHSA$0-})Bj2+wg)1Da$1Sm@Fa z#FYL@rNhBK*76!P++CJ~Gj{UZlSZGjUrGAdT}6#gQeX3MXvM35(8lS&gX<1i)^8m0 z3Jv3(^Q8F)<{X+1u2+fxdF005iHEG1(3ECR!tj|7Cc(aIB>bz^rHj6h_cgdmm)TT? z+VB@G+|z~ac^Q=lUjQ@XTA`l88QaM8P+})r4A3M|_^Rdftk;q3qcJi2oTH?k9OitN zYc}RBKYH86&JB-qjBW>ut{0SeQ+}84txyoBid>(8zusqR($&t=;paX~vYYtUZGY$6 z_FId*;@eOU{}ZRPr_-|7_&8%@D3re{+j|s^icA|rd@~9u4ew@iORpXE^iIF1g&ggM zHoAsh5?NOus0%#^1h~zL+stqi#B%md9_nz$%GU@JbuQbZ3b1k34b7|+;F=IJ^&p*h zjBmN0)GB*Fb|>k-P8|g?d={zWUa9<S0}EP}#nP3wRBBz6)C5#~LOpar=9&U^J|HQ2 zC#mJ;3atxpqY;7K@M7l0QXk*(`43M~#Tc`e`IjjSg#tWZuO&)*-N_i`z2=shc<Z?V z$Dh{YS~K&b4L!K2kLNb?x0|*uTsC7ng_Q-9KnX&0r!pZM)G;ZwpKVsm^i9$pny%Zw z3ct0m{cboH$kBDp_DVzueWoXm{CAMZ@c&I@{{L^F?Di2{QF_Xez!6Kz5elqK$~LC( znID9Tr#+S|igV%eqRznH=B4`eCp61w;qRR#?b7y^ouz6oNgEI74)5NK$ao!gOiKlB zcT=a;Wc#|r>GpKxgHdT6>f#52yZ+6JaN;Q~211oI%gjWgUNBZBB;T*k%#oqqxO%ra zO>au4*l4*(r_O<w;F5R&O;dRf{&x!J;iK(NiOA%$zjEZqSk;uOG|GP>5NPs_Ip{L# zdIstLTI5wk<oowLZXRxeHL-nEFQk0E+$x8$Av{sHAa6OG@2lq-<_EmYfEFE8weQz$ zP`>=7obBN&UX-zBD)!u@feMY3O_j&R2E+*QnFB-UB=OE^{Mr6ng0PZ<m6$l@Pktyw zVi{wn4Rn*5A1z@c^=7Eg+bBV5TJsB*`v*oP!uRn}0zdyB7&1i!`l-MAh<_r@?^K6e z?wp`m!cJtaJHK&1de!L@O2XS|XrOk2JP*%&oJ5%^H%Y>}vr|;`K=s)I05BtVB07Xt z0=_qfrZ?IF4IVt~$5^5~;m%Fs%jzkFR=N}A4pVbc7x84(FBLzVnr`fPr1{#n^w&(D zl{+<dzh=`9J2ds}D)qgyw4rN(p6yjX5@9I)9Dh7JB||;XD7({h|D`q`isMqnQZE^t zK6O*Qn(emlHt)W5%|gKDVj%+vIm9+3AZlmi$!ptjmZj|s+un&;ulNa)Cfzj`9q=Wc zjP0z(k7`f5Qqi;<IoL&bEd)Bb4|T;bk$*5)xI|pX{Tk4t-n!@uU0E&en$hAE!Uw#; z#!z2TN9W<<UA?i#1Y5#6kpnnUpg-55qt#N=A+7<VxG_iTb6Gc+$%Fk&tRXl=xKW>~ z*raBK?QkE-fx57SaR$;2JoLo&w7qlS(ryTc68ET)^Wy$jMpIx`8H0!@@r<@tzl<my z8<!>FdyZsvoA=Wh0GzGy!OeRe4lzNJCn%Em`Sb4*t96x-RQZ=2vs8e<h}N}P+28Gc zpKk8GIA9-JdLL7(ov0A<#jzBP=QTgq5a%y}gcIJi#7dtZ&C!jP2;y|iLZ~tX8PM?L zvQ=zfstYVGwtrx_0L&g&8yW(@$a`Vf0y~l*qZLm(1DE2!TvoP?fu)t2hs2XLE29zm zYV!QAAW?eqBbK1(GdMgB(63vL8lavGOroC7C%#;j>J;x(rCMC!)~B1bMMlG&oU>?$ zDA7ml<E2o{vI7l7mD1Wr&j+N|egc2A8~#1OPo|&QH4t$!mES4dYLC)x<NZ8Ru|rGq zzsT${(NOUa!L{n%9(a|-(A1G5hgZ@H>EklXG!qZ>vg9~!yIRUI);GYP_RU-Z6P{`0 zhGxr+K}{JF;+W+vij%P^)y=lGcDHwq6EEH!yDvQZa8@3%Xl3PCz#&@opJhm|<E0U! zUNv@BHa<ouSJT+$!Dk6{fKBo3OVK0o(4$7jU8cX=?+e#GQ=ftxxaK<dIKV@F8>;($ zwyuvJCv-h(IB{J+dM*X{*UbrQzca7g)ef7iYO?Ig3M(S(>T2OnW^ot{PCYwmI~=<| znPs<-_>$#kA;dJ~FRt@jxUYC~EEcF-K5(XAH>?G2o^HPVxb3XY?$EtV)9+^41;BL+ zMc}_{h*c#?!2=qi!%@3lDqiTMK<eU2c&JIeKcEbvhEH|C2+A&j`}?{+5BM7#j}-mf zu>hx=PF8fNh?fjaRwO~TZ-0u$LG$!gEE@m)E*i#PyfmK3$4#x#^!X)d1s%h)A2g5R z65XNpC0Rb`08!j@^4^e4Y-@MFgY%U~AiOHq8kPB=#R!KUs$Ki>AIIbWbuku&Upo$5 z@nBEUKPUQwr-*@}tP5Mex%@&tP*WC|LBMcKZK}F(=8`Bw0b6Y%HaR*2H+Ae@-ekRA z<SXws33j6byOSAbDR2y?S$h4ww3ZMY!l$>|+8EMYBO{K6y`YkT=4_<`fAghv94+LC z=q)$4GTk<e|I88rIfu<^X>@wgTvB;V1J}8%%NilxyaYo4geG?G%WbGL5CtH#;4dV* zwe=<=!#BGQOKMB+P5t`zAl?xdDqRjt)wKKbd@VFvZ0aqlslT)J%D}$SV};eN>_(;* z%lh0d;0b!P0Hdy6t<aQvnOFsVojT!pJcs$P=c9oKIl3r~-+on5@n7cZ3jF*#A`H!P z&{=SYD<vD<&4%QT!LhB~`7pU=sJ&T#0aW*(c|mCGq|`NKP9zJF5uYgN&5xopYOa*Y z(V~ha5N_cNlLm-plwU7&@23=Bc!fjD(*C^AwYu$z_};Cbd2>8+weJB|S$}1{_SNRw z=q~4MDq@BMWP3vAIa>YI?+h$hd(~2-vaB)-k#~j3h;Y*ylJ+bzxn1r%1(OxrI>mo~ z=jA&GzbNL!6hg^q70;(=$|m@}^g6omCWgoj**&YCtJi8a3FkapyVGS3?-aN-_7U1% zJVAc1Et;@L(nSrm&cC;el1|Ha`K;4&H)pwcofQa>Sl#;2+|Fm1Cw?>Ta$fP8bugX_ zje?&*g%K5G?q;E=`GApn=IBN!TxEf(p+Vxg`Rju0@vb@HJ~XjaIKN?a*uuI|dp#+l zF;<NbL*KT*%G8`|`KVYG&QBHFIM7E?rFcf({Lf7B6xz&bsbp<}U<bW<W-y2w3&pXd zV4%V{#gJu*uY_m75Q>M@t<5^!$mhg{`*xvcXrx-@JHQ8Zo>f5puCmJhm^lpL9WWQh zBNs2c0MIuuCLYHc#ZdSlS*MjCKD4m#{^8Bf+TbF-p=ilVw%;`X_m4ckVZ?}oIF~^V zP<CazuA`T$D)eejM6OGo`Jd3j{{j$;2cp})eBtblFqmk0A#a0<>lRuip=nsvZEHH@ zPa11FO<UW<1ahnAcs!A~JE7S6CLV}PLX3Ev1J?W(e}3b{vS??#>k;#uUp)GHO_<Qs zIJ{DRwB*M^ZQ#xg1=MIBjmGR8B&O|~aKM$R_@bm~US4iAv~+f>2e{(L&MBDGzzEQ- znm}1Hscl0Z4JzTFziG4j3k9!@;y<eo+OINVP|i<|9z)dk_qYzbD%4aJp{)*s=+9=+ zo9?Di;(0fB1bKdrAKK4R0xA%WIX{Nq{traL&jb#7$E}`#?xDxm>tRN=7^<pN+@V8P zeJUMB1CF8%{{s*JiMELdoo3pklHm{<jZFo{-wN-0<5V@$0@?m~l0RKrv|^Mc%J`eJ zgh^zlFoaHH1%Bdf727<-cJ!5Qo97$vH)2=+MPTG0-aTJ2A8|ngnA^C(G;|D&Ly6~; ziEX&OZu{e@8q>-WfB)h6O(QyagLR0>zq9`vi%}iCeNFDeL3Ko8SGGIS4*u3><Df4+ z6+Yv5#c}TFe&LM*&2I~5t5-a_0@YXgQ&qm<Uffr%WTX&c(Ls*-m!d`2ZxVVTiO{a$ zSKo5;%Sxi#6VBS7`KfECC1pPa7c0=RukDeWy0hvE4*hp%&MEX@!Dy1l?G$~YbHT_H z)d>6&%XPNqk8VYhYV!JBp@!+m=jEg46Jy!=qyNo9q-PZ`?XE8|&>(5P!8~DghfS(1 z<9ohokOcdBLpEM!Y2`yRGLR-zd}UvF(ZqgHP{MhY8=n;Ej4Bw^-r=HXlsw~gY1M44 zRZTo8Bq3%e)L@pwKh$kN9-lC@O357|LP9_m-^22di&s1Temjd*W>XNZ2#t!f`+p5L zG5+IH4nq1;RoZXK$R?dN^qGgcER`Pbe8<Sk{|;8{*d}qUbk7~|R-krYIGol^u=uTS ztR;;8Yqi}$1R07gU1m&;P-P@ji~gTusaGB(B*_Q3azPw1bw^*_q9-SMLE$>z$-Og) zrY!6b1AJd(0ym0S!82+<)KZ_U{zD3cs9VOuNYeZMOxCs16J{C#)jBbF6dQ+MLk;vR zOiRFm9(0OP7oMxfkqzANk4ey43$-bTzm#ZErxTR06kzlpg>pHG1f7xYx@4gZQV)y1 zR!2@K`aduLs2=Ag1RdVhRk3q&UG^WCD#fjPnOOPAyJ1<897Ci~Uf1pkKWH4zZ;Mg9 zuNAw+?!P~w9W8oWNDd2%t+Me>7~PM}Fk4vXjI3eKH4zc}-;l4}DwxPLB?o2{d?kbn zbDVT{Qs3Qcr2gGDJKX0jptP*SEuK<;%I%2U$V#_W(Ujph2dtfBGMkQ&z=De&w*xsP z&`EzCN0~*=9?H>>Rh_RNDDcKwT8t)Os(%o<v5I9qZ!221HIRP6+2#C_UFe91>K?=6 z_B~iEtc_Ifj`7;yj6(ZrV*})!UiMPlyv3sIe$yOaceB6#u`M2<!VoP&RP|E>47Vsb z@^PS~JqJp)sJx!-_$UIJ6_Vb@!U|%H;WdSr0_5@mSZav#MKf9h;7uXDdf65!GYE2# zZHE$tA0AhPBuFfp1NW!qP7)K53VX+egai_}1y+Z@ErzH-!>xITm5O8eZ*`%hHMKq; zlhCoJ0Ov4ZdYT=PkFc4R(nIO-aH9cUcQij4<ajI<$(YAQzVAft{QNrV!7%rR1Bq3F zba!HZSWD0!;8cvMU7?I2{onGc|Ka7c=W*aFk}|RFdqx4%{GPCF*U~|69UsfYH|f;* z9giEq3qo)7acWI(3;Ia8_GO}+Y9nM8nWb!9V!zki51;T|Tr<!Ime!kakC=UbX~r7R zj8^k8ZzvP5ApsA+agT9y>DhQE*&<h=LIE#K^M_cL#X_!0%L4_9MSZ!<_-DD(?3LH- zoJ)X5DjvL}JB|d(Vtk^JoXF5-4sPy*=#<~2olHAvNfyDH-IgR<&De}PoYL6QpM81; z%LeE!Nyw6!cUZr}pZg{6F>=iwsi<a09%ILby&>m!g`1k9aZ*)|&{bSkjg_+~wY44y zIW^(9{ng9I<;fnsEb?=X#BhohA?eV^T7V3xhHf19wU*h)u{C8+I^*Ww$e_KBKjy&T zTez`tlAMMHW5~0*F4i3D4Thhp1QeF20$omU{^1-#MxU~;NPe@p96A4X-!^0oxWh~c zzsns;C6N;`As?50iH3~|X3HLa)JjFjD+fqDxZ|Q!H_Avd$dqto(aDO$M>|mNrEN{m z{@_^7LTH+fdMN(Gue<YbR2?gx*&((ya8&*mGBOrn47dJnYU|oGrlOGF8S{-vTxf}n zNxz%PWg!i(wU=>o=%G<ny8qFHjasV{Pl7Z{NUWt6@}O&>8@L_&$qL?f0(*Ma?gpsg zw7#ONqky|FD>tKQ+m@X#u5w&mhe|aoR$${Bfg=|n0{8Fn6=VuXDmcy<CrZW*Dlmy` zL>*G`4Nx&&lx3TkC$2`1K4VJYhSA=J7&E!U+wleqtEVbVvs!IgXk4Pv2opMF^M`&| z?&ehE_^HcY@Y9Jycq}d#oi-Z{deX;s<&>gRkC#r=miY9GkQ`Z}8O|VX{dBz2IfOHt zo-ci~w=eNYc(Jgz=n#3w-1(ZZi8EY*ucO8dX-lZzX2(m3^dAmfl0<E2S7|ueow6F- zb3C^bx`K4^LhM*Fx-vuRGj!z(krOxS$=u?kDU*&_gbZy&9OlKE8d~kR@#N>7|A8^g z1O02K^S>=+?-_t&lzI?czjeL0c7D@}D+>F<q5@qnG3JLu&@;!EC$1>R4PVjw{9#~r z!PS)DkZUc)O7YKZDeQ1cLdlvHD%;T&-8T)?v9*?b3vI{Zi|Fd)IE+yaK&uUxYUf5` znZ#D-B!PW(kjp|gj2x{--HV``jvm<E@=+dtOoa{&qK3JnE2@aP8<In5fUPTe1x@sY z6JG+PDxk6W>gHB51xFJQvJY_pU|?W)5jr!gC?A#o<dKIGA#ZM)iL`8Dd?#tetbUKM z=DMDOj{mo7CdkhnKZh)vK<(>3mpZVLI`OP?{0>gu8{+eLWYOr3je3!~FWjBt^iEpw zQMvS{8Hjc19}PaYzZ(&7zjZ)PWzo@lyfTSiINO2p8#tBQJljXDsUHtKr>?o{oyW6$ z?CPGowBI>G0!1wi0aBd-ogIr#gIJ4pk>BA=Y5G|-;Cv)zWp!LVo2t#K@d4hoev8^f zRU_q*r<-S8#Rd1z!Sovj9L`(xFo;JSmTN~P%s}ykf=TC0Cv<XQ!?31vYt3Er_^AQ7 z7uv-*)=I=Rm&<?`S}3ies?4Y<$|MB*M>^&?L&akLF}Hd(UoF)<)e`Dz_?)s}l+5{M zUfkJ#Rd+ldIL-vIr>u=pr-ZOBx4QY9DGX&XnG_7~xe126vP5{bskgkoG@(!IY_|;O zv^HK{)z-B0o_Pg%NfrSv`G$rKi0rw@6t`DbM^dtLW;}ye*;98XrbC(Z9@lk)7J}XI zl+-em^zxc0PJ{C5l&!?>l&#dRBiDTt=c;y=LCXcvv_BvmiGI|mKcYX9w`Yf~_JQ>{ znhbYV#1Pp+)gT_(-vQsoM)VXkq`plI_gz_V_PCya_6kOeb{E%fB3sUT>Pg2OFTDGH zR(cTOc;cIx4<-1eBv^b`G9)CRo8sUL1YMBTI-XpaUBudx*<u#a8a|{K0k+)PPaPL) zZK}5hXEblxO1jyqGLK)qkQ%xP{2EB=wv!Tu=#L!xX+Loonwe{5n1^yU@#<j*$%IpJ z6$1v7YwQ_GHm2jB4RFTo^wI)Fg$y%eOUB*d_1dW0ptnQ%{}LbkhiCFka&x=}SW$7i zg5k7l(QA$72dn8GkaldN4VR3ufUN9eyEA|kTi(XEp##xJdOG2lkH^A(I+dq&iaLQ* zilT4puKUbvkZ3G_ulXBX2kO$Af2Q;<5s`!s<46!=WY&DSr4<Vqpi<Ud>89oHVS|Rb z^1aupE2lb*^a@X8xGtOaV{d%~9kQsr!ndIW$UK|g<D>+lmR(l>@r?9`kJPBrpQ&9l z^z7wW!n(;=UPN9b75bAGNpkKzw!C-7O$X{fo*pRUA*aBN_7JU~wtDi~ZnACdUQT*x z3_eZ@{#ryEc&z=xiPHe;yghTIPW5%q&R%Hw0lF&%h(C`>4!euOX(A3>JQvVP!zT)B zu{tj;zv0-<8t?r)Ab)OoP?wF0=MVh@Ycg>jdE{d=&^!%WYV0nTq0l7<K*CUKW{jzD zjw8_JSQI0Wt?~*{A35YNRSjYwZ2kFade&G~WGcmz(1WV*3*%T*AE9@0uh7a^?#EDT z1LrvmIyTav88=DAP+~_^Iu%X-K2*}B_DQdFkiH1WX@d%=_Py05YfI7)4VYI~TKXC8 zU`P3Eee@3u#&<Tr4Y!g7DzoDa(btsmxm1!jpV$>)`y0oiSqDENiSsNoBKG;I9U>e> zTYrH3(9f>O+5SYwy_?H-lOqb|!Mm|f@Mkt{TJ}_-OBK`4$E>sR@kMy$bI-7H9}|bx z$YzB;BipQ@O3EmLdQS6_KU5}3=W&SYh-XwR=95pXeGnBGeml+QYU)txOJgP2c3tNm zaEYqvy~1y=NYm#OB%U9g<ZHTS0NQ+SID2Yb<2GGcHhtB7#jT%PfB>Uh#W5p!QVB;^ z3nQOC`Om4p>wqjl*BPCiIRXcchxKYu^M?Mg`SEpQ)$fC9D2Ga$ecO-Ip^gr)a5A3B z?EOq;8NQirU%~fe;M~s*ZL&$PQX(U((K8%PDI<{ACD`|~J)WkVKTdk=w>QpxyZSlH z1}Rw`ujf&VU*Z3kte&7zgb(}zLPv~(e0c*IZo~3_i{`l4E<EjW@b7@{VLpGKXx20= zo$qs@hK_>?Ag{^_!THbr8?)>YNe_;g2lr9uH;j=?)itY82?8e_Hh=te-=WTdn52FU z)%q|fOIFmH2hr{E%QMbujn}p(`cv5{qzhiM{dIg9?o#~=!jG|7V+i19%MPU>bPB4T zs3)A+!RXE<;#S|~<3&z>iWr{VDDjbuB?%&5T+YBA?jxo)-MgeP3}rj{Fy@ihAT~VU z`DPgp+A?VIm7rHMhC)FD6_-YN+P%Lxd%!e7C8<Lv6PD$fsnzLjup6CZn)UBf;Q+A} zF=ZhtWMVSLLU1L7hAyI{{M^mr&~a(nJ@N=IxAWoYw}whBWQb4ecvEJN)%jK4kvf}~ zvb}O=XA?`fO+E3&6p6PQKH76b{cq7cO;OvV;jFq%MKn`Z^f@o%FV+^+4DoMVB5QVN zM=Xt>sROpSkE#)6zPX2Nbt0~P#rk$1i+awxzj?&c94C?Q7n-Or5LgmGRP`pg=XVtN zVr|5N)Nu~x)8DGFR5Xizh!a4Hre<izcj^fIC4yU?WH>dHji%>&EdHIgyePH1BpGS} zg{)P7hllq|`@+K__A8m16dnd%FZ1^_D>iEdluN;qGiQ4Mkw02H7O-DXUE`C<t$V;@ zPHe=Zbr3;Om6>kBub~Aw-0p~3i~62Zsn*rsJR2QCx-10HZo9c#tWmH?C-vW?1}67a z@n{A#OD-faLKW$n`N<!%%;cFL!c{ktEz6q~o6cCEI4us5{%#8%nA?0^7_5OJ*RLyz zYbm!OqlQm<CC4wE$|Mnwi$}y`scJ@RpbZ&y@U^{<U!BHsvl_T|c)(J51p8f{{-Axw z(fi7ELAfV6)AbzK+R!&#Ih@+DZgh!9vb&LfMZ=BhurJ}P^vU^;JaxZ-`_=qp*~Boc z*X9{5M1fTL+VR}&jqP-}$p)@z3b%B}1{D(Rd47D9b22WcC`7->OSCy`%!ypm(NPa- z*J(OJ9SfGZ{Z-NSKeQnKe*Mt_Uh`DZ`wa@iXTI>9_F1D)Dv@D3%4`Hfig*qp1iE9P z)Yo|{GFRE_1;Ajem#@KyOa=kYDv`K)^eJLy4QppR>mr;4;sNyy4aVpn@!{qlJIlHp z9Zn`)RL?L1W9b`ntSa_%(8#ZvDWcwN=(rYV;cba~u$Cuj$^qeh&;Hy7=^vP1O}T1o zF?=yh4I4gqUW^QZ2i#79S?f>a+Rq!Z_{n!1w_h4H)TCFe{;vEr%YNpJwrq90CZ1cR zG;RL-1Uy3m7yDUus3<Wh^AUfJ<zyj}T*fr#SnpgqctOJ1zqW81J#*aUfy%#XKl3{C ztTbU)KUaKzj{7MW$+RcYaHGdqHDiZFqutDH(-CVH6!XJ%tb}_hU6yI=Q=(!q@?;fk z>(6Gzube8c37U+eW{YYH!qW{(zZoJLE>~&Y<n^s_OkYm7d0RKSf@Nh*`zbuyi@0x; zQ@m|UQ)FZ)#@w5a7{0`<`0H(4JBo&!ej{KXIEXt_eU4&?(2f9PZf=>$F)WWOLm<hi z?yO?pi0#V=RP$|%LJj&{SE0UKCnLYh8Wsc(>sS`ASYUP#KV>~feXj0f5>Erg8R32q zL7S799(8rN22>m#LhfT{_^dO2gEbkB_Ac@>z8y=MJY_EaX4_R4yQm)R{@&K{<A>r` z_^<E<yV{Kf?Pm3gjHnF-bGDjr84(>Ba)H75c44WX!1m@H{NPxW$^MmBTu-!jvM_O^ zPUUG^YLhk_;*Bg0fh1kGE`oIyC<LE+@DGf&Ub17Xx#mfoJe5CJ`p}~rM{iC>1#Pqe zGN*|?(G_P;{GyY^;{1FT=y2U@x&hC8qsCBIiWSHBi_^9Mj*2WrSxL=wE(R)$$k8@m z3r+vPa9j)L>@fSXosh3Avrjvw-6SrY2|)MmZ7D`=*4OfXg?)YkKQfO~Q5iXp00=*M zWr<i?5++CyqK;8K$(<2_y*n%J<HL6@TenW{zZ@FzAhev9n>wU8!Sao~PSR!m)L^CA zaEG|Y<nU7acjkR(9V``f%`hIZ^Nw+=9?yFz5C83MB$&(HG_~O29DEpXW2BI_xC>32 z{3#8$xlF1R4#Nz(+Vbls)dh0CcI$jCjE-xd*QAX0XRAkrb3)en+cImnKj=pllOD(4 zQPEe`rppjs4~vxWB5vY}&uxx#R+8A3h>^g6H^Pl6YxClR3(b_~>+p6@yotpvbh$`q zE8iHz4!>%b=p0;IoAkW;yUOg;xY)bN$3TChBY!nE(a@})LXe?wka?%163I?nB}9_U zD7Nj~%{K1SF^fC^SE6#aDvJ}6GNic`+&4mR9vpn;=v#P{Q{j~#JV}rafm6mAlxsHL zu~86KwZhXT6g%^>a*<(A`v$Uh*~8W$5*KCkc5FUlG|&$o@2tAw+!E8`pjFhCwL_?n z?y3OKEX%sX4y?tig0;bM#A}jk^i|gYXt3hs$Po?`xbpTcX}>zAffbgE9d*suPmC}; zy&Z)%X|{{7!b)%_c0airyLRM>nWk~a?G5e}nIIAObQlF&SRjcdA;AA4;k&tS<l=7o z;LeTfIAFeMj|m}kMa!PHF!T6F91VgTLz8q_b$cENM@&>TBIKA+Gp7P8s;oXKuV=s^ zi~CD#+dx@<Wq2*Rsq+A>r3Wwz7I6^KMh+km1et;1fI($KqQ?91NfhosQPuv-t0C}H z!)JXLqI1rV0&w7QpyO({xhuXM**6PZM<MU;$Wa(Fln$?+)3?q1&2PH6o*UvF9`~>P zrf;)08Who%08{>y7W<mEoXY6AMy9h?K)9prY1P+KauN~4#%@e-$ch0Q2@=QoZF=qa zt=~#xL)fE?e-Sj#2ManC1ydV&NwOKuVy&djxJ{kTd4@v8vFs9PZtLBp3vwo+Gk~d0 z$zV^By&~>sa;(7h*l{nS70sAGr>ec%n+s4DVh8e18k1gsjrzfm<@hK=YMtT--7Z=8 z$K2dEzc*j^D|I@xXk)BtRrZggfUiUGY(Z&oxoX2yrTlJ(Y10T<cIP@@Ra{-H45g4p z)x2%Z=0fhMqa&*IrAGn%QV6|WmIlv7J6~q8Na(v0(lI-I)eRz*5c$8?&T1Q1kFk-( zvR|cetlMnc)E-Z7Ad$KhfvMb1+J2KBqX}%!$*L=;z88S5b^&RhNJJYVIeZI+NGVG! zU&TjeC*WL3fazRK>r$be)%G5mLM_^|6>GNJ!<M=|L@LRz87Ii)V7G~s?#&S0v(!9z zdLSR*5I#4g$Bskm6krasj!GDH4t`1p-nUT|M@3DD)V0oJ|ET_z>Eiu0T+L`68&}Gz z_}!KNTpMzvp5{s@%kTT=g<mFQvPU5oEme@aGXdW({Y%!GU68q_-fvxXtDPqmEx|tl z&ULr%<0ZTnJ@6ksM2d+PjG<PJL)0Q{nLepU^en2Eu)v@lHv{7pVa1o?>EmJHaYHQ? znJ~CSXpjE4^XoG*C%Xg+mdy7xVz#C>jcy2vT}^j#+|pK}?<`5B9C+BuBj#J50xD$E zjVRz-g66Sg4&1u^jr1k4-&pJS_L>RvqFBo0p?lBHckHPL)wvU9GzSnx4{;6i9%7Aa zcad(gCnah2il4dKTh)DV(B&kxoi9EqqhrMNoE91x9QZJC{7PQ))O~WVX?N%>mR3(# zkNzupL1|1vd?24B{!00-Wg`Kx38VJx3=E!_v$zri7F@w+-OCx)yRX#+i{;jYLL?Gu zo`HgCb8<!wF68TeTZ>jPB#o^a!|%&H6F|@%E^6*8GXh4E#K^ef&L?3R*6%qNboDz@ zJP)s3yaV80wS4$NqhsF7{5smDY_T+blMdW4r(q~nRueBofPx@PS3N1-uZ5lWLghvJ zOP!m|M(KM^r_Mw^9SLGCv5;BupC#GVEb~g~^7E8OC4Jf_9iyCG>g+vl(zcwu-#}C9 zv+~zmh)XZ4qLc^LHu+Z&a_;9n;p1xT;$9^JtAAkn3PyyhwqA;H`nIo1@JJ1A;{4iz zi_N%lxZ_AdJj6?>&i!=CAEVicLXGC);5jjZy3~OKK5%xmj_dMC;{lMp1MGHgDrSMa z_Y`D7LhW~46EeuZ4OEj;$UiVoSQ%nrU5wI9hpiLBnM(h_e4ADA0cQXDj^h9?NqAzZ zJMUE6WTuwB#_!E%aAOyBI~3O%1VQz9lu#}xZt0U`ZzQiL4z10o4o_8R^hvr3PY>JC zl-Wojj8Grb<Uq7`V&_{!W#P~djn(%{k2%;<3)zQ3B?3Jkw>RG;fA|o`cUlnPPj1Pn z7;Nj<5-x@Z(_QeV09;lc8KB-gmzO6EHPeJ&{cr@o0slWpVgGv&egKvBU(pzt3YaML zdHw?vEfu2raScx9kZn(JJGjsjnFXJ<GudfPpV`apH6V@yBsocd9bIHQrH9%-6kOaE zNko)5>SR536iKZMM;lOZ0NxkKbj+voLt9^LiZxp@WloUFAnXxv<8l*O199EM$9Gk< zZ_L?Gb}RTK@IynH$r=TO!-<DU8Fr402ClSI>*|Jave)P9Yw%D^bbaiP+8)YFp}u9e zL@eWnFxVqR0q+sU6<PQDZOzr(xEuW9c}LZ3WzFBV7_;Oa_?h=itmjSl#KyXk!0WN( z0xOBeVo6e~UAaVFDzNWhwGkVIwt3U*4_p^_`rN`Vofp_$^iSFq*n&SZv}OGd2qZsj zxN36NSC<ztySw~t-{1;67KmkSpjtHMfkWs=yvIAvR7)ggUCi5qKQW8$1SS^u$`An) zp!5EOS_U6A_5|{mX4;&PzfSV0nF=Y8iFQAhzbun%FPUACC3i-rJLTd?WAYQu=UBFa zw3<{BeA`Hv`M3{bO2tD%8)ObrTXL9eb<xpvXn22Zaf+=XjbNye;p_sp+E`1x9or$6 z%RV;Jgt9X|_m3;YyGO#!6;>rRC4sqIhBM<QdCM1V)r>kyKjkU|9R2Qyf;Fe=<uCxw zz{xJ~`<NQx4D8IvY+=^fdl;98i4IXODbbnFX+dn|TdEoQ&WauY=_jqdc>Q=wAWz5W z3)QJ)j?B+2R!8SMy?eLoGkso?vRUzPXg=NsR)ToZ7o2Z_oP=cs+qjF0b9uZ4*NhF7 zdPT_pj*|mf0@1?YRIyDl(3=0Vi|hZ>z91_%Y~O8kvT&`6Jnc5yn{AG@|G?24aBK|W z=~E<T)24m@5@R^u?XMMMugqj$y`ax()tu&}_2{iMq(8Bd=TOa|#^x1@kt(&Gfr4vA zTOJ&6PO%>YfC~x@dkl`rs1np;Uwd>F4EN$R>5z$4S-uaIe8mes+KaKyqAhQ&sHgns z5e54ST6giPy{x=4;hIi3DLuMlJch^Y$0mSB1?YT{<3=$Nf$bK-^Q(#>9E-`x?>kTF zA64G}1iomCv3C^mVt6TCa6yI9TE10((3nM}ZPy#K`D-&YSz9aSQ>gTFmq0;+Beo&j zOKg6J)w(V4eTKoRfY++9xb$Mv?{=-=>ZyCPa|>5$kc?%A)0UthINd}D&jLg@Q&n&e zyz2TUyEIC=WJI%kryL#QEEnFc=UAE$5vfHU=#98{tp*TcX}$;69^_R9R0D6c)CUGz z@X)czj?Sg$XsbZ2CFe7_|Ehox0sCE{8Mb1cQZt&E6D5oK;rTl~nnA$x5}K@)YBS3& z=Hzen0K^<?4cl~S8H50v9Pfn)T9VBok8F@ib+qkI8A&8VH?8B|s`5rX69~NCmoase zR7()|$C8R+KWYgFqQeGMAj)L=ndxM=1h?52AI?*t`mrx}Nl*uSztWe}2oV<ID+16n z%O(<8`g?7&_S_Qq;pT0*;2LKIgSD+XJgn}xP=<vw55xUh)R}p5QOs6NR@ZKfQ8F1> z6zks;3eyFK$v?mp{(oFw+U;_z>6eyf+W?34BtN!LfCQTvydG{D5(x+9WSR5~@1W8< zhBh0-kGiCkh-;cKsuPZ4`@pt9rfQg|<~=p1dd!So!+L!Nv7|@Wt}!L`4Qz=%)iVV( zL`G{@b#SG<6_+I!%iJ3}>)bJS(eLwafzG_Ea*xy)#}2gt3E8nA85#V8F&R<6a<k>c zarb1eR~1dkr=5<p<D$uO=Nh70tpW888FF4`h;oQ3LQyEsSsO~)RuT{Qj^pJseKnie zYP#4vqvq;QF}Y@CNnl8NoXMoXkACqnq~Lr^yF%2(%O>!H!~R~?_^Rp7><0<*oQfCf zoxIK(dqL^nITK;^X$sM2W1_$}Y;D2xOOr41@Z)T#*KZ4>O%vJb1X=;Ao&LrcoCD}6 ze>mR8HjQ&FJVPL9z6`wx2tJIrjXBitK@Td&Uf=5FaR$C-okrV&h2$%8QdnE4bQCyD zA9_OJcIaGnQ`Zy}33m{m?HUQkLfCqMA$!)|@!G>ShW;=t{HtH8lM&S=si)&7fnc}K z7!Okej-HPukq%M5^e<y>Q()^O=J$iL2cM%`mPJ=bJq_V_?#NphWc0{ye8B!p`NCWM zqIQqxIo05rN-@J#Rb4bi76h^SXAq9IYJp++|2ALx@83j4rK~@DHR~o|%;n8+!u|T8 zM9=><FslUoRZJ!Mi}J3KnFq4~5^rJRl)>CqTW)WRcI{Nxy5$hj08a|p$0deV;NJ`l z{s(<7zcc-Nl3m6_8?n;PG&l<+>)#cFjGy_1C9o6{k^!__yn%<?NBK5RbC7Z*$sOCZ z=?p7w>d)ZiRL&Y3+c5!wi;CZsc1!D{C9~7M>yx3goJC^wlFZ2inRncul|z+(38VMl z{!$xO>YMqv^%^mHrw;abAP{9~rPjGs;{aK0Qw$by$s8k&Q1al<p^4~CWJe&mD^R!c z=Q~f3SKm(9U(2NZ4wN|0ZW^pF8N9MK`9F=FS5y=KzQsccAc&}x2%$-lUZqJWMmhq5 z6zQmd^xg>wL_h>W2O&t876_Qo5d?uyLQ#5CdNWE1(nP=;&pr3$-v3$a{vKy$t(i6R zFf;qR_x?DG5T0_F??<#YwQJQu&P#eZ0tZc;sQqq>Kd5{V+Jx;!IUx5PlU3&E1Y0a& zl8(&c{2!aXr{2rjev+n6ow&}s4k<>LaYA!yo-MetgwxG5um>l}zFe-oFf}1!7T5Xx zee|c4ewuF|_jp`8vD&MrV$ckZa3l<j;}(8Da?7m(OqwNZgFGgI`nn>t2~W|c)!P3r zSTh+JAkq-}Zj_Qkr9y~r7AP-greWoWZ!>a#&0!L6;7KfBANqQ3yoXNyl<Z8`fgtYK zt*p)GB_;HZJSQA0)NUsi5Gpuiigw?*C@u!rh?%b>cKdc-B6AVgM~#2$o_})|HZ#el zVeT;Omj7|tTMolkO#c1NFh$XLakikeHR0|7)X=-3GlVyrgav#RpKt!%U@A7M=n6$d zagC74?W-2qi<$UbnC8T5*#+{Y`=N)lzVKDbR_m8CJDLNA*FBe)$uF2qa0DY4y(SW% z?WbUd^7@Wn<d<T6wsab}_BHa7JA5r65vjmgA#xnI%-zfY>L$ch_ext)_m6TM0{m$G z8xnd2T^W*YWg)(L7;8`1mXt>8+$g{ENlw9{vUEK;{D;uk?fAXNN9*J$Ij$310GGyi zH^lds+3AOaz#5hE-<gC5$t+<8jiwF4bCWg+@FQ%zxGXAxKayvr#u@dwz40#9*8fxn z{X^#!AeTF#kc6-O_aQ(&0z8dWjjro2G<4;KzZ`rcY6HzQmpH6~!WTx$(wbTY)JZR; zSj!zg=sf$qy<>JeNovXwbKDX(aA0d-zUb7{cY#?R1C#Gl%*h2@Fm5n?)%`GIV81Bf zKbYWllMSFKG?)8S8=swTqrJ8EWPK0vW1Cq<QdpY$Sv6u}Y#$cWeReP^BgK&ohR^b< zlKc|91J@qKYNlpbhxK+1)T06oC0?sxD5IH4&HnRT(fd5BhbCi>DK2cFzmir6r)O{7 zY{FuD0*qkWY_^nJQ_Xb2Z<Nv|DuAUpjONNOhUlp5)A<N&X}<$YJErl*#}KL!KY;uO z^z*FnMZ8*~d*C`+Mc}GA{UM8Ay>WdYY>=#l487@a?^7EqSJoRR(9|i<qm@{NFfTFW zJ<l8C-i!QFY|nDu?6dEOI)W*yJbY>cu<#`Yo6KUFk+-kSqI@lbz#`h^eJw{^h8x7^ zj7+_=s1h+QBCv^R`?d0Uaz`BT{q#lESTdV%dp)7*VKWWD=5B=oMRB}`F;{k|uz>5w zR<Yz!wzq<e<@^9`sJtLZkPlo4{|_E1=w0$H7AS?W10#$(#gn9M0MAmOfpJ2LbcK<7 z=%Sm;GGaR1)OXQ54O+pw@pykkW&61S!N~RQM!biBhY{E+VBU9XBQP5A3b1deLUok< zakC4e-h(`5Z}2>B=6nv)Jog-5)1e*?X-gYgm}arUtuP1si6B3MmB*?Ral^bqTshNY zeFKk#KxmT_+nd^Sp2FF?8~0i7)E*kWb*W9WuI)d{8W?ONRqRwy9ID+#4RU*Q&;OMB z*nM$+)&4_TtPY2$!^fL{0Kwya5&J)i%pjF0H5u<Wc8?HTUQ+K2vB^DgFQn?IyRI4% zVx2@`QG)|-8IRb?Vouf^vf`{$TfpHHBd4GQHo%vV_l|61gYMp`#6CK`aphl-idw!A zfyYyFJF0u|sus^w&jPh0;~%rPg!l!n9+ir`Yoi}=PkC&_MLZOR1kL)t%4PJm4iuwn zO72|@7%WJ2nBuZCG6~fAv1K1py>!M}U7kd;oAy&aw%tupRV#Z-c(1CKY#?-65FwEi zUg84b>^{k*bF!}~-%*~kTlF?<**Chkw<(*W7a1Ib==vE_CVg<wTxRAaQOlZ0l{n7c zv(MEmlGm6+ZWa|Jx6KwiLnorKl4{aFAQ2EX0d_f0chn2Gt-UlwZXJkcIKB0`o!vZf z8!RpFxtRi(E>ImcNKo{WJT-$#z|53ao<X=lJP<VBm``7M`)`%yOocv<WjM`X^utSE zy)sjCn@@oqOkd~I@gt!szuE`n8V3FV%D38Sh{T07`m}2J`gNL59wu9+jB)Lg?mWA} zswXC6zqM01YLHg0NaE-7hdn)u!<uO+8iz(jci;#<zs^gAR4ZG2g4a-&z|qWwf4|xO z*Mh_EL^E@jEpgj!QO*MSaX>0>nZPI@bQ&<PHVovSn>!Vu^&}g$pn5EU$^%=81Lrb@ z9ZlC+3{leLqHj&6qBe?AEO0MJaytE87+FJ;elq9wD)!M)dUxs@p~U34y`^u03ApG{ zNY55$&_sIH;1xZ&@5>tpt!FC0KJOoDl&H#L+?G>GMOmPQ%Q`FUoecTrC&!N-i(Zea zJN%vL9R!pxEgy&Fq!(~aYvhPZ6lQn**RtQwcMMF%G73=yS^d%%g54V!`azHP?JvJx zGna<uO(T|Mc$hUg#r@3lC@kS+@ZDEU4ZA+RSv}txmv?}@!7H_2gM)ywKPg;X?b{)i z8ciYN8eu;8O7~DE&f$h^6GMGmm`?PvSkC#RGPpDiv)}%{K0AT!({0D`Wb*vO0-f2~ zD~1zP5a5frY<lD=ZHueRB7O&dbTu@gDs=g$PG0L5UeI#VrAiM?t}eSy;g9cna-n=X ziQ7wISY53u_s0CXy@bRXr1;o7+8o%%Q~jzMabQosg%IDo)eQJxaoEyP^>W#@wXf)> z){aT>FC$oE&LlhSt}q(x22$2N--GM5&aG+;3?jx$z_r~y%KLexqmegvh8KoPZduXO zfC&#|afxV;FO;cG*}SP>>&i*>lL{pkkYj51sa5I3mTgRuH*3X)_uBZf3d#ZODjZrV zYS}rpqmx2U)o3=Mmv~}B=7O{+j^Ek6t=hw8RY;jsb-$8L&nk=x-o%ziatg5@W*UqR z#Y=y0+dr-7^;*f<lnVbj19C7v3W;j%U`HgagsD@A+II;R{<7~7;L05h@)_1j9v%qs zs+*akkEuN*@%XR{cgCt&sQoV&-Hkm{_l4To#wQ4aEdbYLpxk!hOeVOg`cu^0m<XOZ zFe58L5HRXM2lxxUf&Wu>0ID_^Q_b{I)9F;`>V5R@TQMyha)CGYsgmQ*8Fhb)AIF}D zO?-RccuVVgnfg$q?K+FVtlG@a{lx)jd+F<-mtxfkDEviyf6*0QC`u4(1<~ID{4~C1 zoH;T%r4nyiIpmSyYD60gb7eA8;k!IV;`H5Zk_0vebp|ObhlcL!Bfo@1xa6hmy>{`= z!D!p)Ak-Ij*q`OSSfJ1xO1b9pbpAf$s8hk^fhLCZ0*<hlIflA&@LqbJ<(XLa4m16r zl#)~uEPLL4>$yVzW+BL0>5V*z1(hBf5n2n%ip?RFNr_CT`+ks&V9j?Bwc&j4DqLBJ z*nJ!_vRZl|SY8D@AG~z)R9=k`S9f1CtO;hzeg_a=>A%!_wierbRU5>!nwInI_eu7t z6IHKwn_7%ys3#|rMEARpYF%r3<@==U2tQS#Kc8;Gv&HyXwnF76+kOr**<=5Hvt zJ0>;kHGiw>e&*+EgPhslt30wuhZ<{{otm{K4a1P;4)IyeD{QkZCE~Etjljy%TwQDb zWj-uuyjy$Lf#lLqz7f9d29iaS=8JfqVGMC52PZ?Gvv+J9H<)YpQYAkKGb~@%6aA7d z!02@ZOP?{Jmy4R*d*u3-LQ-aSjEsJRhJlbex8IB7el;~^=_-SACp5{*@-#EsMvm89 zvT*asa3xZgH>KAC{B@aaM-02t=v9_WGVhy{@mb!=HLtf_&=tM6D(nE;|4<=`xXUwb zT!bwxE3HheDYzEs<ZOv^!AUHnH(nIH+@n#~R1?$t#CLBx)qTxVVx_%9u(iP2=j=7> zQF~CNa_&h7!h&L{E9qJ^o}#oz>Q*~iDm|?0j*{1BXVHc>h<!n7U*g2+Z^k-<p5O;{ z@qsF@l6s_qg8u+snF3(tmOW6`v71}UW+$ss1f?H!Ey|K|>&^prOe)R#F~Xnky%T)P zEQ86hx~EoCRb-kF*Tl~(6@caqur&QVX*tG!Po0_as^LBIOW;Bhlk9&lrZz@59^p6b zMzq-CCn-E8akw2))}On*ON<9o{I?iD7g$@&GhD&bi?;{MyujAq%a4bmoZqyf7zvg= zc2?>L>WJFnY&7yoKY;2><AK#mX`XByUM&F`2Dt_!4|Sz&H;``IMf_GIl_?-Bt$I#? z91gR-$D_TZ{B`K@=$D8eBCo|cl|Hme4vN|-6G2!Iy}r!&-Y%2blN6QnN&YY~G@|gw zsCe)I*JP^i`pT+`B4%@7z4;is>um0))AhESm_4JUvVFTKr~52T3QeM<w_sN=qj$VJ zY~2!%Jo<te2YtjjdUy~8;1`smi~T*;s;2qXE}rtMnW*y0QgWffENVm!-}Qz+0GN5W zNtIj6kB(@f?M-AAW4BcAl6!aQlbp}#qWk7<ACPl{o<ei^pTgfFE7Z3LmV{}9^{<)U zFX7aa0anIkB%P}4^~-mCE0fI>ZiR5`D9mh<S4iPRvmYRV0z0xJQJ(+sXy7isTwBt$ z)qA5Qa(o4Zw={^ss(I`VKRVPbXWI5-s&X6V<j?`Zh!Ydf!p$3}{2fT>E?YMSH+D^l zo|#@rH6rqtYvgF^#C6Nw{f0&o9mHkVe1eF~A(Nb7u{s}O2>u=2YjaESGH+ya2N%r# zWAn2Q#R3Hs*kjQ@fOFr<X3GTsgB|uGqit2NAHAR8o;C+j$KoL$%rX>%kUtm#J>WtN zSlIDihK-YePczS7Wg}$H)Oz<PpA2Ct%DO7S+Q*Pw*tp1W+kQ>*83aOt3x66yhKqH! zBaWOp6P=eYxXK;XBti-4yRzb3IU_KSBTHN5J2lUby|i9MOSQxW9Ep9l%7mkyZa_~_ z)ege_MQlQe`{tQVzV#0UxpRf|A6lC9khO|jq7TxrsYWOIC{{GE&7C9yGb^(t$Q~EH zBaQn07E}D^$_kPS-kzfW8Ol#dZm9p6lmq)-8NV*q=!w4ZjqR)MoEc!FxLD({@OHQ` zKydE6Z_@*YNxcfZ?4%gCLjBC4)vCFLrQ*N~bDMCgoUo~^+N3YT;r`y~*-_zB@&f9w z_tuEdZ^A{Vz3DmRt*6Dm-XQKaQ701HBxQeD+p3B*nzm&&DtS_{Y;)GgU85^?2tBdj zMXGdG*O<3Dv7aeicB@x1D1m6m_&SY_Amy~hHnW-aut=*hgD=46{PAq#Haa@=K({ZP zP9;}jYIt*!q;EV&8zqHmWKWV%sLn>(>_cW@XvNE^^FPdMPje~>UA@E|*%eDK9~|NG zf#Y`Skf=TTru44|F(q!9)^+$2eTuzAEy;R=iIW<tw;}GBgMPCw)K@d!^YNFCy#Lhg zb6{zpTw;nT>?FDhwG(LO1ia)Mu*tt{Y0jC;ITEZxw-=X!H`&J>2V^vFUTkOV_5A^? zbhb)mDiE|vmf4@+)EgR}X$6q&P;6tTS6b{v#+xG&s%}^;XllMNY8?khFeAE@?^CS2 zvdfyL_SOBCGk@H~Ai;SW)EuZZTLQee*3c53mGeaO+n~Y^|BQxIT{g0b{k0aqF0@!8 z(JjC{a2_V3rpp1Vx{Vhac&`06o{m~0IFFZmD>iMWa|$nq5T|-kM4M}?(OXaEks(%U zhUNQ<sUR6F6TXs>Q6flo#{aWulv3{fYa<y5N(ye%(2)MYa1b+`+&r>zV(ji(RsHEV zn|f@_L5k>AwM>subLJ9}`_<Yu3O1My>nxE4g_Pcud9;{YV$yBKw-x!Pd2)2QN*?~p z8NLcxWJ)cF2F35F%>y(B?=kSmJ3s^KEjpxViB}e}%7vQFehcBoh0P}jHj8bSeJ~i} zrN&V`89J>B_2jBRso+a|hWfQtf`n(5$5ai2?1z0i{1pjIrxCi(i;HGfZJdI5Rx>k3 zM9u^bK{+#@DR7sX<=FxrO<u?pOeV&?XBCs*iE3$&Gd<AQNUV6zlO%t66#R=mV+dk= z2=Net3B*ffVjxl*x*f%y9_=6}86rg6gWGs(WWSZ|3QatOMf0{_YdtP+q*a%lN<ka2 zFrRDTLg*Gn`!m&#;-1O+ubQ50In(7li}D+go=o(uNlIyJ>TSL~HQjYE&@knpR!pmd z&8x#`jo|~eD`YjQv}^EHyy7SgZ5qm1N|G=EBF$HC{>R56NZLh`Fev>0`z>|->Xm*W zY~CwpENupv9F#;Yo|&d&mj1@#5oH{MyTk8tM>SK~%}9=Xuyu%f2wi5xIT<Cupw;5s zq2e0uQw94LcL6F7SQBHd^=J`n*4X4_-^1NhQP9fF7~)Yi;*D9Nyhi7BY$TbhvF6a% zb#UAi_&E&T5O=QIpB(co(2si7(wg<R>GWQM7}DZK$E;SpGFC54nNC)eti;Eyj9A{N z9Y{yU-6%<IB{U_Xht<ngmV5D@vvE?Ean~#_T9d{PTu5LnSwO#$z~v!`e$7VBFp(Qp zUrVc%;Eltzb=1$Zs0qx9cJ4FY=|y574wD7Fr&)~$6QT({R!1bZre(6hY$QNb&O+7< zo@aPfKLzkN*Kzk&KPmVZ{qH;Uj~?T{#41Xr!m584{6lY2W-t||zzs=?DwKu{*b<}? zPt@&8p#uh&+BXB+n3U+~nTv(B_$q84vrhTj0z_lf>9}K~oP_l3A<LYlZnT9v)i2U6 wIdd?Z**yla0d+O?9-BL3(I6ywDUgmv7)tHWl&>xF*XI1MQ~$%Yss5S$FA{h_y#N3J diff --git a/week-12/uploads/je-participe.gif b/week-12/uploads/je-participe.gif deleted file mode 100644 index 91e7b890942debafe2718187d3f0f785b09d25ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16732 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 DyMd(* diff --git a/week-12/uploads/think of this as a window.jpg b/week-12/uploads/think of this as a window.jpg deleted file mode 100644 index 6974a3771579395769a65c117e46e5887a83f285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68496 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 P)4}w^{{V#)PzV3nVG(}B diff --git a/week-12/views/404.php b/week-12/views/404.php deleted file mode 100644 index 7ae2fe7..0000000 --- a/week-12/views/404.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Page not found</h1>"; -$content .= "<p>Sorry, the page you requested could not be found.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-12/views/add-record-insecure.php b/week-12/views/add-record-insecure.php deleted file mode 100644 index 841a507..0000000 --- a/week-12/views/add-record-insecure.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -$action = $_SERVER["PHP_SELF"]."?page=add-record"; - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' method='POST'> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = $_POST["ean"]; - $title = $_POST["title"]; - $artist_id = $_POST["artist_id"]; - $genre = $_POST["genre"]; - $year = $_POST["year"]; - $price = $_POST["price"]; - - // define the insertion query - $sql = "INSERT INTO record (ean, title, artist_id, genre, year, price) - VALUES ('$ean', '$title', '$artist_id', '$genre', '$year', '$price')"; - - // run the query to insert the data - $result = mysqli_query($link, $sql); - - // check if the query went ok - if ($result === false) { - echo mysqli_error($link); - } else { - $content .= "Record successfully added to database."; - } -} - -// ------- END form processing code... ------- - -// output the html -echo($content); - -?> diff --git a/week-12/views/add-record.php b/week-12/views/add-record.php deleted file mode 100644 index bf9bf31..0000000 --- a/week-12/views/add-record.php +++ /dev/null @@ -1,175 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -// -> htmlspecialchars() is used to replace special characters with HTML entities */ -$action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=add-record"); - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' enctype='multipart/form-data' method='POST'> -<input type='hidden' name='MAX_FILE_SIZE' value='1000000' /> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <fieldset> - <label for='price'>Stock:</label> - <input type='text' name='stock' placeholder='0' /> - </fieldset> -<label>image <input type='file' id='image' name='image' /></label><br /> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = $stock = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = mysqli_real_escape_string($link, clean_input($_POST["ean"])); - $title = mysqli_real_escape_string($link, clean_input($_POST["title"])); - $artist_id = mysqli_real_escape_string($link, clean_input($_POST["artist_id"])); - $genre = mysqli_real_escape_string($link, clean_input($_POST["genre"])); - $year = mysqli_real_escape_string($link, clean_input($_POST["year"])); - $price = mysqli_real_escape_string($link, clean_input($_POST["price"])); - $stock = mysqli_real_escape_string($link, clean_input($_POST["stock"])); - - // handle the image upload - $uploadOk = 1; - - $target_dir = "uploads/"; - - // Check if image file is a actual image or fake image - $check = getimagesize($_FILES["image"]["tmp_name"]); - if($check !== false) { - $uploadOk = 1; - } else { - echo "File is not an image."; - $uploadOk = 0; - } - - // Check file size - if ($_FILES["image"]["size"] > 1000000) { - echo "Sorry, your file is too large."; - $uploadOk = 0; - } - - $target_file = $target_dir . basename($_FILES["image"]["name"]); - $image = $target_file; - - // Check if file already exists - if (file_exists($target_file)) { - echo "Sorry, file already exists."; - $uploadOk = 0; - } - - $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); - - // Allow certain file formats - if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" - && $imageFileType != "gif" ) { - echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; - $uploadOk = 0; - } - - // Check if $uploadOk is set to 0 by an error - if ($uploadOk == 0) { - echo "Sorry, your file was not uploaded."; - - // if everything is ok, try to upload file - } else { - if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) { - echo "The file ". basename( $_FILES["image"]["name"]). " has been uploaded."; - - - // turn autocommit off - mysqli_autocommit($link, FALSE); - - // start a transaction - mysqli_query($link, 'START TRANSACTION'); - - // define the insertion query to add a new record in record table - $query1 = sprintf("INSERT INTO record (ean, title, artist_id, genre, year, price, image) - VALUES ('%s', '%s', %d, '%s', %d, %f, '%s')", $ean, $title, $artist_id, $genre, $year, $price, $image); - - // define the insertion query to add a new record in inventory table - $query2 = sprintf("INSERT INTO inventory (stock, record_ean) - VALUES (%d, '%s')", $stock, $ean); - - // check if either of the queries failed (returned false) - if (!mysqli_query($link, $query1) or !mysqli_query($link, $query2)) { - echo mysqli_error($link); - mysqli_rollback($link); // if so, rollback transaction - } else { - mysqli_commit($link); // else, commit transaction -// $content .= "Record successfully added to database."; - } - - - } else { - echo "Sorry, there was an error uploading your file."; - } - } - // end of image upload - - - - } - - // ------- END form processing code... ------- - - // output the html - echo($content); - -?> diff --git a/week-12/views/artist.php b/week-12/views/artist.php deleted file mode 100644 index ea371d7..0000000 --- a/week-12/views/artist.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -// check if id parameter was not set in query string -if (!isset($_GET['id'])) { - - // define $content with suitable message - $content = "<h1>I don't know which artist you're looking for...</h1>"; - -} else { // id was set, so carry on... - - // define $artist_id variable and assign value of id parameter - $artist_id = $_GET['id']; - - // fetch record titles for artist with id matching $artist_id - $sql = "SELECT r.title, r.year, r.price, a.first_name, a.last_name - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - WHERE a.id=".$artist_id." - ORDER BY year ASC"; - - $result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - - // define a row counter - $i = 0; - - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - - // do this if we are on first row - if ($i == 0) { - - // initialise $content string, assigning it a page header - $content = "<h1>".$row['first_name']." ".$row['last_name']." Records</h1>"; - // append $content string with table definition - $content .= "<table border='1'><tbody>"; - - } - - // append table rows to $content string - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['year']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "</tr>"; - - // increment the row counter - $i++; - - } - - // append $content string with closing table tags - $content .= "</tbody></table>"; - - // free result set - mysqli_free_result($result); - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-12/views/home.php b/week-12/views/home.php deleted file mode 100644 index dc1ed44..0000000 --- a/week-12/views/home.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Welcome to Goldsmith's Record Store</h1>"; -$content .= "<p>Follow the links above to browse the store.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-12/views/order.php b/week-12/views/order.php deleted file mode 100644 index 0f81c63..0000000 --- a/week-12/views/order.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -// check the order_id parameter has been set in the URL -if (isset($_GET['order_id'])) -{ - $order_id = $_GET['order_id']; -} else { - $order_id = -1; // if not, set to an implausible value -} - -// fetch order details associated with current order id -$sql = "SELECT r.ean, r.title, ol.quantity, ol.transaction_id, r.price - FROM record r - INNER JOIN orderline ol - ON ol.record_ean=r.ean - WHERE ol.transaction_id=".$order_id; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - - // Find the number of rows returned - $num_rows = mysqli_num_rows($result); - - // Check it's not 0 - if ($num_rows == 0) { - $content = "<h1>Order not found</h1>"; - } else { - // create variable for content HTML - $content = "<h1>Order ".$order_id."</h1>"; - $content .= "<table border='1'>"; - $content .= "<thead><tr> - <th>EAN</th> - <th>Title</th> - <th>Quantity</th> - <th>Price</th> - <th>Total</th> - </tr></thead>"; - $content .= "<tbody>"; - // initialise total order price to 0 - $total = 0.00; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $subtotal = $row['quantity'] * $row['price']; - $total = $total + $subtotal; - $content .= "<tr>"; - $content .= "<td>".$row['ean']."</td>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['quantity']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "<td>£".$subtotal."</td>"; - $content .= "</tr>"; - } - $content .= "<tr><td colspan=4><b>TOTAL</b><td><b>£".$total."</b></td></tr>"; - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-12/views/orders.php b/week-12/views/orders.php deleted file mode 100644 index d122891..0000000 --- a/week-12/views/orders.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -// initialise string variable for content HTML -$content = "<h1>Orders</h1>"; - -// fetch all transactions (orders) and group by customer id -$sql = "SELECT id, customer_id FROM transaction - ORDER BY customer_id"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) -{ - echo mysqli_error($link); -} else { - $num_rows = mysqli_num_rows($result); - if ($num_rows > 0) - { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Order ID</th><th>Customer ID</th></tr></thead>"; - $content .= "<tbody>"; - // fetch each row in result set as an associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td><a href=\"?page=order&order_id=".$row['id']."\">".$row['id']."</a></td>"; - $content .= "<td>".$row['customer_id']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - } else { - $content .= "<p>There are no orders to display.</p>"; - } - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-12/views/record.php b/week-12/views/record.php deleted file mode 100644 index 06ffa5e..0000000 --- a/week-12/views/record.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Records</h1>"; -$content .= "<p>You are now viewing all records in the database.</p>"; - -// fetch records as a result set -$sql = "SELECT r.title, r.ean, a.first_name, a.last_name, r.genre, r.price, r.image, i.stock, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - INNER JOIN inventory i - ON r.ean=i.record_ean - ORDER BY r.title, r.price DESC"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Title</th><th>Artist</th><th>Genre</th><th>Price</th><th>Stock</th></tr></thead>"; - $content .= "<tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "<td>".$row['stock']."</td>"; - $content .= "<td><img src='".$row['image']."' style='height: 100px;' /></td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-12/views/search.php b/week-12/views/search.php deleted file mode 100644 index 3f78082..0000000 --- a/week-12/views/search.php +++ /dev/null @@ -1,90 +0,0 @@ -<? -$content = "<h1>Search</h1>"; - -// define a variable with path to this script which will process form -$action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=search"); - -// define the search form -$form_html = "<form method='post' action='". $action ."'> - <label for='usersearch'>search the record store</label><br /> - <input type='text' id='usersearch' name='usersearch' /><br /> - <input type='submit' name='submit' value='Submit' /> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - -// $sort = clean_input($_GET['sort']); - $user_search = clean_input($_POST['usersearch']); - $clean_search = str_replace(',',' ',$user_search); - $search_words = explode(' ',$clean_search); - $final_search_words = array(); - if (count($search_words > 0)){ - foreach ($search_words as $word) { - if (!empty($word)) { - $final_search_words[] = $word; - } - } - } - foreach ($final_search_words as $word) { - $where_list[] = "r.title like '%$word%'"; - } - $where_clause = implode(' OR ', $where_list); - -echo "where clause = " . $where_clause."<br />"; - - // Query to get the results - $sql = "SELECT r.title, r.ean, a.first_name, a.last_name, r.genre, r.price, r.image, i.stock, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - INNER JOIN inventory i - ON r.ean=i.record_ean - WHERE $where_clause - ORDER BY r.title, r.price DESC"; -//echo $sql."<br />"; - - // Start generating the table of results - echo '<table border="0" cellpadding="2">'; - - // Generate the search result headings - echo '<tr class="heading">'; - echo '<td>Job Title</td><td>Description</td><td>State</td><td>Date Posted</td>'; - echo '</tr>'; - - -$result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Title</th><th>Artist</th><th>Genre</th><th>Price</th><th>Stock</th></tr></thead>"; - $content .= "<tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "<td>".$row['stock']."</td>"; - $content .= "<td><img src='".$row['image']."' style='height: 100px;' /></td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/README.txt b/week-13/README.txt deleted file mode 100644 index 3ec4f7e..0000000 --- a/week-13/README.txt +++ /dev/null @@ -1,29 +0,0 @@ -********************************* -* RECORD STORE APPLICATION * -********************************* - -## this recordstore has been hacked for term 2 - -Description ------------ -This is a demo record store application. You can use it to help you complete lab 8. It is You can also read this README file to find out the sorts of things that should be included in a README file! - -Author & Contact ----------------- -Sorrel Harriet s.harriet@gold.ac.uk - -Installation Instructions -------------------------- -+ Check you have a LAMP stack installed with PHP>5 and MySQL>5 -+ Upload the application to your web root folder. -+ Run the record-store.sql file on your database. -+ Run the dummy_data.sql file to insert some data. - -Configuration Instructions --------------------------- -Modify the includes/db_connect.php script with your MySQL database credentials. - -Live Demo ---------- -A demo version of this app is deployed at the following URL: -http://doc.gold.ac.uk/~sharr003/data-network-web/lab-exercises/week-8/record-store-app/ diff --git a/week-13/admin/index.php b/week-13/admin/index.php deleted file mode 100644 index 4b5707c..0000000 --- a/week-13/admin/index.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -// connect to the database -require('../includes/db_connect.php'); -require('../includes/functions.php'); - -session_start(); -if (!is_logged_in()) { - header('Location: http://localhost/term2labs-dan/week-13/admin/views/login.php'); -} - -// define a function to sanitise user input (this would ideally be in includes folder) -function clean_input($data) { - $data = trim($data); // strips unnecessary characters from beginning/end - $data = stripslashes($data); // remove backslashes - $data = htmlspecialchars($data); // replace special characters with HTML entities - return $data; -} - -// include the header HTML -include('../templates/header.html'); - -// include the navigation HTML -include('views/navigation.html'); - -// get the page id from the URL -// if no parameter detected... -if (!isset($_GET['page'])) { - $id = 'home'; // display home page -} else { - $id = $_GET['page']; // else requested page -} - -// use switch to determine which view to serve based on $id -switch ($id) { -case 'home' : - include 'views/home.php'; - break; -case 'record' : - include 'views/record.php'; - break; -case 'artist' : - include 'views/artist.php'; - break; -case 'orders' : - include 'views/orders.php'; - break; -case 'order' : - include 'views/order.php'; - break; -case 'add-record' : - include 'views/add-record.php'; - break; -case 'search' : - include 'views/search.php'; - break; -case 'logout' : - include 'views/logout.php'; - break; -default : - include 'views/404.php'; -} - -// close the connection to the database -mysqli_close($link); - -// include the footer HTML -include('../templates/footer.html'); - -?> diff --git a/week-13/admin/views/404.php b/week-13/admin/views/404.php deleted file mode 100644 index 7ae2fe7..0000000 --- a/week-13/admin/views/404.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Page not found</h1>"; -$content .= "<p>Sorry, the page you requested could not be found.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-13/admin/views/add-record.php b/week-13/admin/views/add-record.php deleted file mode 100644 index 8ba12cf..0000000 --- a/week-13/admin/views/add-record.php +++ /dev/null @@ -1,175 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -// -> htmlspecialchars() is used to replace special characters with HTML entities */ -$action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=add-record"); - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' enctype='multipart/form-data' method='POST'> -<input type='hidden' name='MAX_FILE_SIZE' value='1000000' /> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <fieldset> - <label for='price'>Stock:</label> - <input type='text' name='stock' placeholder='0' /> - </fieldset> -<label>image <input type='file' id='image' name='image' /></label><br /> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = $stock = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = mysqli_real_escape_string($link, clean_input($_POST["ean"])); - $title = mysqli_real_escape_string($link, clean_input($_POST["title"])); - $artist_id = mysqli_real_escape_string($link, clean_input($_POST["artist_id"])); - $genre = mysqli_real_escape_string($link, clean_input($_POST["genre"])); - $year = mysqli_real_escape_string($link, clean_input($_POST["year"])); - $price = mysqli_real_escape_string($link, clean_input($_POST["price"])); - $stock = mysqli_real_escape_string($link, clean_input($_POST["stock"])); - - // handle the image upload - $uploadOk = 1; - - $target_dir = "../uploads/"; - $image_dir = "uploads/"; - - // Check if image file is a actual image or fake image - $check = getimagesize($_FILES["image"]["tmp_name"]); - if($check !== false) { - // echo "File is an image - " . $check["mime"] . "."; - $uploadOk = 1; - } else { - echo "File is not an image."; - $uploadOk = 0; - } - - // Check file size - if ($_FILES["image"]["size"] > 1000000) { - echo "Sorry, your file is too large."; - $uploadOk = 0; - } - - $target_file = $target_dir . basename($_FILES["image"]["name"]); - $image = $image_dir . basename($_FILES["image"]["name"]); - - // Check if file already exists - if (file_exists($target_file)) { - echo "Sorry, file already exists."; - $uploadOk = 0; - } - - $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); - - // Allow certain file formats - if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" - && $imageFileType != "gif" ) { - echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; - $uploadOk = 0; - } - - // Check if $uploadOk is set to 0 by an error - if ($uploadOk == 0) { - echo "Sorry, your file was not uploaded."; - - // if everything is ok, try to upload file - } else { - if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) { - echo "The file ". basename( $_FILES["image"]["name"]). " has been uploaded."; - } else { - echo "Sorry, there was an error uploading your file."; - } - } - // end of image upload - - // turn autocommit off - mysqli_autocommit($link, FALSE); - - // start a transaction - mysqli_query($link, 'START TRANSACTION'); - - // define the insertion query to add a new record in record table - $query1 = sprintf("INSERT INTO record (ean, title, artist_id, genre, year, price, image) - VALUES ('%s', '%s', %d, '%s', %d, %f, '%s')", $ean, $title, $artist_id, $genre, $year, $price, $image); - - // define the insertion query to add a new record in inventory table - $query2 = sprintf("INSERT INTO inventory (stock, record_ean) - VALUES (%d, '%s')", $stock, $ean); - - // check if either of the queries failed (returned false) - if (!mysqli_query($link, $query1) or !mysqli_query($link, $query2)) { - echo mysqli_error($link); - mysqli_rollback($link); // if so, rollback transaction - } else { - mysqli_commit($link); // else, commit transaction - $content .= "Record successfully added to database."; - } - - - - } - - // ------- END form processing code... ------- - - // output the html - echo($content); - -?> diff --git a/week-13/admin/views/artist.php b/week-13/admin/views/artist.php deleted file mode 100644 index ea371d7..0000000 --- a/week-13/admin/views/artist.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -// check if id parameter was not set in query string -if (!isset($_GET['id'])) { - - // define $content with suitable message - $content = "<h1>I don't know which artist you're looking for...</h1>"; - -} else { // id was set, so carry on... - - // define $artist_id variable and assign value of id parameter - $artist_id = $_GET['id']; - - // fetch record titles for artist with id matching $artist_id - $sql = "SELECT r.title, r.year, r.price, a.first_name, a.last_name - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - WHERE a.id=".$artist_id." - ORDER BY year ASC"; - - $result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - - // define a row counter - $i = 0; - - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - - // do this if we are on first row - if ($i == 0) { - - // initialise $content string, assigning it a page header - $content = "<h1>".$row['first_name']." ".$row['last_name']." Records</h1>"; - // append $content string with table definition - $content .= "<table border='1'><tbody>"; - - } - - // append table rows to $content string - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['year']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "</tr>"; - - // increment the row counter - $i++; - - } - - // append $content string with closing table tags - $content .= "</tbody></table>"; - - // free result set - mysqli_free_result($result); - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/admin/views/home.php b/week-13/admin/views/home.php deleted file mode 100644 index dc1ed44..0000000 --- a/week-13/admin/views/home.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Welcome to Goldsmith's Record Store</h1>"; -$content .= "<p>Follow the links above to browse the store.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-13/admin/views/login.php b/week-13/admin/views/login.php deleted file mode 100644 index f1cd3e3..0000000 --- a/week-13/admin/views/login.php +++ /dev/null @@ -1,51 +0,0 @@ -<? -session_start(); -require_once '../../includes/db_connect.php'; -function printform(){ - print "<form action='login.php' method='POST'> - <p><label>username <input type='text' name='username'></label><p> - <p><label>password <input type='password' name='password'></label><p> - <p><input type='submit' name='submit' value='login'><p>"; -} - -$message=""; - -if ($_SERVER['REQUEST_METHOD'] == 'POST'){ - - $username = mysqli_real_escape_string($link, trim(strip_tags($_POST['username']))); - $password = mysqli_real_escape_string($link, trim(strip_tags($_POST['password']))); - - - if ((!empty($username)) && (!empty($password))){ - - $q = "select * from users where name ='$username' and password = SHA('$password')"; - $r = mysqli_query($link, $q); - if (mysqli_affected_rows($link) == 1){ - $row = mysqli_fetch_array($r); - $_SESSION['username'] = $username; - $_SESSION['user_id'] = $row['user_id']; - header('Location: http://localhost/term2labs-dan/week-13/admin/index.php'); - } else { - $message = $message."Login unsuccessful: please try again </br>"; - } - } - if (empty($username)) { - $message = $message."Please include a username </br>"; - } - if (empty($password)) { - $message = $message."Please include a password </br>"; - } - -} - -require_once '../../templates/header.html'; - -//if (!empty($message)){ - print "<p class='error'>".$message."</p>"; -//} -printform(); - - - -require_once '../../templates/footer.html'; -?> diff --git a/week-13/admin/views/logout.php b/week-13/admin/views/logout.php deleted file mode 100644 index d606c37..0000000 --- a/week-13/admin/views/logout.php +++ /dev/null @@ -1,7 +0,0 @@ -<? -session_start(); - -session_destroy(); -header('Location: http://localhost/term2labs-dan/week-13/index.php'); -?> - diff --git a/week-13/admin/views/navigation.html b/week-13/admin/views/navigation.html deleted file mode 100644 index 2990306..0000000 --- a/week-13/admin/views/navigation.html +++ /dev/null @@ -1,10 +0,0 @@ -<nav> - <ul> - <li><a href="?page=home" title="home">Home</a></li> - <li><a href="?page=record" title="records">Records</a></li> - <li><a href="?page=search" title="search">Search</a></li> - <li><a href="?page=orders" title="orders">Orders</a></li> - <li><a href="?page=add-record" title="add record">Add record</a></li> - <li><a href="?page=logout" title="logout">Logout</a></li> - </ul> -</nav> diff --git a/week-13/admin/views/order.php b/week-13/admin/views/order.php deleted file mode 100644 index 0f81c63..0000000 --- a/week-13/admin/views/order.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -// check the order_id parameter has been set in the URL -if (isset($_GET['order_id'])) -{ - $order_id = $_GET['order_id']; -} else { - $order_id = -1; // if not, set to an implausible value -} - -// fetch order details associated with current order id -$sql = "SELECT r.ean, r.title, ol.quantity, ol.transaction_id, r.price - FROM record r - INNER JOIN orderline ol - ON ol.record_ean=r.ean - WHERE ol.transaction_id=".$order_id; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - - // Find the number of rows returned - $num_rows = mysqli_num_rows($result); - - // Check it's not 0 - if ($num_rows == 0) { - $content = "<h1>Order not found</h1>"; - } else { - // create variable for content HTML - $content = "<h1>Order ".$order_id."</h1>"; - $content .= "<table border='1'>"; - $content .= "<thead><tr> - <th>EAN</th> - <th>Title</th> - <th>Quantity</th> - <th>Price</th> - <th>Total</th> - </tr></thead>"; - $content .= "<tbody>"; - // initialise total order price to 0 - $total = 0.00; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $subtotal = $row['quantity'] * $row['price']; - $total = $total + $subtotal; - $content .= "<tr>"; - $content .= "<td>".$row['ean']."</td>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['quantity']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "<td>£".$subtotal."</td>"; - $content .= "</tr>"; - } - $content .= "<tr><td colspan=4><b>TOTAL</b><td><b>£".$total."</b></td></tr>"; - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/admin/views/orders.php b/week-13/admin/views/orders.php deleted file mode 100644 index d122891..0000000 --- a/week-13/admin/views/orders.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -// initialise string variable for content HTML -$content = "<h1>Orders</h1>"; - -// fetch all transactions (orders) and group by customer id -$sql = "SELECT id, customer_id FROM transaction - ORDER BY customer_id"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) -{ - echo mysqli_error($link); -} else { - $num_rows = mysqli_num_rows($result); - if ($num_rows > 0) - { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Order ID</th><th>Customer ID</th></tr></thead>"; - $content .= "<tbody>"; - // fetch each row in result set as an associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td><a href=\"?page=order&order_id=".$row['id']."\">".$row['id']."</a></td>"; - $content .= "<td>".$row['customer_id']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - } else { - $content .= "<p>There are no orders to display.</p>"; - } - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/admin/views/record.php b/week-13/admin/views/record.php deleted file mode 100644 index cdeaff2..0000000 --- a/week-13/admin/views/record.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Records</h1>"; -$content .= "<p>You are now viewing all records in the database.</p>"; - -// fetch records as a result set -$sql = "SELECT r.title, r.ean, a.first_name, a.last_name, r.genre, r.price, r.image, i.stock, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - INNER JOIN inventory i - ON r.ean=i.record_ean - ORDER BY r.title, r.price DESC"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Title</th><th>Artist</th><th>Genre</th><th>Price</th><th>Stock</th></tr></thead>"; - $content .= "<tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "<td>".$row['stock']."</td>"; - $content .= "<td><img src='../".$row['image']."' style='height: 100px;' /></td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/admin/views/search.php b/week-13/admin/views/search.php deleted file mode 100644 index 942e783..0000000 --- a/week-13/admin/views/search.php +++ /dev/null @@ -1,90 +0,0 @@ -<? -$content = "<h1>Search</h1>"; - -// define a variable with path to this script which will process form -$action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=search"); - -// define the search form -$form_html = "<form method='post' action='". $action ."'> - <label for='usersearch'>search the record store</label><br /> - <input type='text' id='usersearch' name='usersearch' /><br /> - <input type='submit' name='submit' value='Submit' /> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - -// $sort = clean_input($_GET['sort']); - $user_search = clean_input($_POST['usersearch']); - $clean_search = str_replace(',',' ',$user_search); - $search_words = explode(' ',$clean_search); - $final_search_words = array(); - if (count($search_words > 0)){ - foreach ($search_words as $word) { - if (!empty($word)) { - $final_search_words[] = $word; - } - } - } - foreach ($final_search_words as $word) { - $where_list[] = "r.title like '%$word%'"; - } - $where_clause = implode(' OR ', $where_list); - -echo "where clause = " . $where_clause."<br />"; - - // Query to get the results - $sql = "SELECT r.title, r.ean, a.first_name, a.last_name, r.genre, r.price, r.image, i.stock, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - INNER JOIN inventory i - ON r.ean=i.record_ean - WHERE $where_clause - ORDER BY r.title, r.price DESC"; -//echo $sql."<br />"; - - // Start generating the table of results - echo '<table border="0" cellpadding="2">'; - - // Generate the search result headings - echo '<tr class="heading">'; - echo '<td>Job Title</td><td>Description</td><td>State</td><td>Date Posted</td>'; - echo '</tr>'; - - -$result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Title</th><th>Artist</th><th>Genre</th><th>Price</th><th>Stock</th></tr></thead>"; - $content .= "<tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "<td>".$row['stock']."</td>"; - $content .= "<td><img src='../".$row['image']."' style='height: 100px;' /></td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/includes/db_connect.php b/week-13/includes/db_connect.php deleted file mode 100644 index 53c5fb9..0000000 --- a/week-13/includes/db_connect.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/* Open a new connection to the MySQL server */ - -/* connect to the database */ -$link = mysqli_connect( - 'localhost', - 'recordstoreuser', - 'recordstorepwd', - 'recordstore' -); - -/* check connection succeeded */ -if (mysqli_connect_errno()) { - echo "Failed to connect to MySQL: " . mysqli_connect_error(); -} - -?> diff --git a/week-13/includes/functions.php b/week-13/includes/functions.php deleted file mode 100644 index 9a4c18e..0000000 --- a/week-13/includes/functions.php +++ /dev/null @@ -1,60 +0,0 @@ -<? - -function is_logged_in(){ - if (isset($_SESSION['username'])){ -// print session_name()."<br />"; -// print $_COOKIE[session_name()]; - return true; - } -/* } else { - return false; - } -*/ -} - - -function build_query ($user_search, $sort) { - $clean_search = str_replace(',',' ',$user_search); - $search_words = explode(' ',$clean_search); - $final_search_words = array(); - if (count($search_words > 0)){ - foreach ($search_words as $word) { - if (!empty($word)) { - $final_search_words[] = $word; - } - } - } - $where_list = array(); - foreach ($final_search_words as $word) { - $where_list[] = "r.title like '%$word%'"; - $where_list[] = "a.first_name like '%$word%'"; - $where_list[] = "a.last_name like '%$word%'"; - } - $where_clause = implode(' OR ', $where_list); - -//echo "where clause = " . $where_clause."<br />"; - - // Query to get the results - $sql = "SELECT r.title, r.ean, a.first_name, a.last_name, r.genre, r.price, r.image, i.stock, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - INNER JOIN inventory i - ON r.ean=i.record_ean - WHERE $where_clause"; - -//add the sort to the search, if set - switch ($sort) { - case 1: - $sql .= " ORDER BY r.title"; - break; - case 2: - $sql .= " ORDER BY a.last_name"; - break; - default: - } - - return $sql; -} - -?> diff --git a/week-13/index.php b/week-13/index.php deleted file mode 100644 index baae4a2..0000000 --- a/week-13/index.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php - -//error_reporting(0); -error_reporting (E_ALL | E_STRICT); // Show all possible problems! - -// connect to the database -require('includes/db_connect.php'); -require('includes/functions.php'); - -// define a function to sanitise user input (this would ideally be in includes folder) -function clean_input($data) { - $data = trim($data); // strips unnecessary characters from beginning/end - $data = stripslashes($data); // remove backslashes - $data = htmlspecialchars($data); // replace special characters with HTML entities - return $data; -} - -// include the header HTML -include('templates/header.html'); - -// include the navigation HTML -include('templates/navigation.html'); - -// get the page id from the URL -// if no parameter detected... -if (!isset($_GET['page'])) { - $id = 'home'; // display home page -} else { - $id = $_GET['page']; // else requested page -} - -// use switch to determine which view to serve based on $id -switch ($id) { -case 'home' : - include 'views/home.php'; - break; -case 'record' : - include 'views/record.php'; - break; -case 'artist' : - include 'views/artist.php'; - break; -case 'orders' : - include 'views/orders.php'; - break; -case 'order' : - include 'views/order.php'; - break; -case 'add-record' : - include 'views/add-record.php'; - break; -case 'search' : - include 'views/search.php'; - break; -default : - include 'views/404.php'; -} - -// close the connection to the database -mysqli_close($link); - -// include the footer HTML -include('templates/footer.html'); - -?> diff --git a/week-13/sql/dummy_data.sql b/week-13/sql/dummy_data.sql deleted file mode 100644 index 7d05801..0000000 --- a/week-13/sql/dummy_data.sql +++ /dev/null @@ -1,67 +0,0 @@ -/* Note that, because foreign key values are being -inserted manually, tables must be recreated before running -this code in order to reset AUTO_INCREMENT */ - -/* Statement to insert some records in the artist table */ -INSERT INTO artist (id, first_name, last_name) -VALUES -(NULL, 'Bob', 'Marley'), -(NULL, 'Peter', 'Tosh'), -(NULL, 'Burning', 'Spear'), -(NULL, 'Alton', 'Ellis'), -(NULL, 'Gregory', 'Issacs'), -(NULL, 'Desmond', 'Dekker'); - -INSERT INTO record (ean, title, artist_id, genre, year, price) -VALUES -('00562056', 'Soul Rebel', 1, 'Reggae', 1970, 25.99 ), -('50264967', 'Catch A Fire', 1, 'Reggae', 1973, 25.99 ), -('00748396', 'Natty Dread', 1, 'Reggae', 1974, 20.99 ), -('00495739', 'Babylon By Bus', 1, 'Reggae', 1978, 24.99 ), -('00738432', 'Legalize It', 2, 'Reggae', 1976, 22.99 ), -('50847583', 'Bush Doctor', 2, 'Reggae', 1978, 20.99 ), -('30748743', 'Marcus Garvey', 3, 'Reggae', 1975, 24.99 ), -('50856384', 'Night Nurse', 5, 'Reggae', 1982, 17.99 ), -('50264972', 'Mr Issacs', 5, 'Reggae', 1982, 9.99 ), -('00649573', 'Black and Dekker', 6, 'Reggae', 1980, 19.99 ), -('00625485', 'Sunday Coming', 4, 'Reggae', 1970, 15.99 ); - -INSERT INTO customer (id, first_name, last_name, email_address, address_1, address_2, postcode) -VALUES -(NULL, 'John', 'Smith', 'john@smith.com', '1 Fake Street', 'London', 'SE3 5RD'), -(NULL, 'Sukie', 'Bapswent', 's.baps@gmail.com', '64 The Terrace', 'Whitby', 'YO65 3TR'), -(NULL, 'John', 'Thumb', 'jthumb@gmail.com', '25 Fantasy Grove', 'Brighton', 'BR2 6LV'); - -INSERT INTO transaction (id, customer_id, delivery_method, dt_date) -VALUES -(NULL, 1, 2, '2015-07-01 14:34:58'), -(NULL, 1, 2, '2015-04-01 11:22:35'), -(NULL, 3, 1, '2015-04-01 19:47:03'), -(NULL, 2, 1, '2015-05-11 22:01:19'); - -INSERT INTO orderline (id, transaction_id, record_ean, quantity) -VALUES -(NULL, 1, '00562056', 1), -(NULL, 1, '00495739', 1), -(NULL, 2, '00649573', 2), -(NULL, 2, '00495739', 1), -(NULL, 3, '00738432', 2), -(NULL, 3, '00562056', 1), -(NULL, 3, '50856384', 3), -(NULL, 3, '00495739', 1), -(NULL, 4, '00625485', 1), -(NULL, 4, '00562056', 2); - -INSERT INTO inventory (stock, record_ean) -VALUES -(25, '00562056'), -(18, '50264967'), -(15, '00748396'), -(20, '00495739'), -(10, '00738432'), -(7, '50847583'), -(3, '30748743'), -(34, '50856384'), -(22, '50264972'), -(15, '00649573'), -(12, '00625485'); diff --git a/week-13/sql/practice_queries.sql b/week-13/sql/practice_queries.sql deleted file mode 100644 index ebb0dff..0000000 --- a/week-13/sql/practice_queries.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* Simple query -Fetch first_name and last_name columns from artist table */ -SELECT first_name, last_name FROM artist; - -/* Query with filters -Fetches titles from record table where year is 1973 and genre is Reggae */ -SELECT title FROM record -WHERE year = 1973 -AND genre = "Reggae"; \ No newline at end of file diff --git a/week-13/sql/record-store.sql b/week-13/sql/record-store.sql deleted file mode 100644 index 9717088..0000000 --- a/week-13/sql/record-store.sql +++ /dev/null @@ -1,71 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS inventory, orderline, transaction, customer, record, artist; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -) ENGINE=InnoDB; - -/* Define table for storing records (products) */ -CREATE TABLE record ( - ean CHAR(8) NOT NULL, - title VARCHAR(50) NOT NULL, - artist_id INT, - genre VARCHAR(50), - year YEAR(4), - price DECIMAL(10, 2) unsigned NOT NULL, - PRIMARY KEY (ean), - FOREIGN KEY (artist_id) - REFERENCES artist (id) - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for storing customers */ -CREATE TABLE customer ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50) NOT NULL, - last_name VARCHAR(50) NOT NULL, - email_address VARCHAR(50) NOT NULL, - address_1 VARCHAR(50) NOT NULL, - address_2 VARCHAR(50), - postcode VARCHAR(10) NOT NULL, - PRIMARY KEY (id) -) ENGINE=InnoDB; - -/* Define table for storing orders */ -CREATE TABLE transaction ( - id INT AUTO_INCREMENT, - customer_id INT NOT NULL, - delivery_method INT, - dt_date DATETIME, - PRIMARY KEY (id), - FOREIGN KEY (customer_id) - REFERENCES customer(id) -) ENGINE=InnoDB; - -/* Define table for storing orderlines */ -CREATE TABLE orderline ( - id INT AUTO_INCREMENT, - transaction_id INT, - record_ean CHAR(8), - quantity INT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (transaction_id) - REFERENCES transaction(id), - FOREIGN KEY (record_ean) - REFERENCES record(ean) - ON UPDATE CASCADE - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for inventory */ -CREATE TABLE inventory ( - stock INT unsigned DEFAULT 0, - record_ean CHAR(8), - PRIMARY KEY (stock, record_ean), - FOREIGN KEY (record_ean) - REFERENCES record (ean) -) ENGINE=InnoDB; diff --git a/week-13/sql/recordstore-dump.sql b/week-13/sql/recordstore-dump.sql deleted file mode 100644 index f9dc7c8..0000000 --- a/week-13/sql/recordstore-dump.sql +++ /dev/null @@ -1,196 +0,0 @@ --- MySQL dump 10.13 Distrib 5.6.26, for Linux (x86_64) --- --- Host: localhost Database: recordstore --- ------------------------------------------------------ --- Server version 5.6.26 - -/*!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 utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `artist` --- - -DROP TABLE IF EXISTS `artist`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `artist` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_name` varchar(50) DEFAULT NULL, - `last_name` varchar(50) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `artist` --- - -LOCK TABLES `artist` WRITE; -/*!40000 ALTER TABLE `artist` DISABLE KEYS */; -INSERT INTO `artist` VALUES (1,'Bob','Marley'),(2,'Peter','Tosh'),(3,'Burning','Spear'),(4,'Alton','Ellis'),(5,'Gregory','Issacs'),(6,'Desmond','Dekker'); -/*!40000 ALTER TABLE `artist` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `customer` --- - -DROP TABLE IF EXISTS `customer`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `customer` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_name` varchar(50) NOT NULL, - `last_name` varchar(50) NOT NULL, - `email_address` varchar(50) NOT NULL, - `address_1` varchar(50) NOT NULL, - `address_2` varchar(50) DEFAULT NULL, - `postcode` varchar(10) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `customer` --- - -LOCK TABLES `customer` WRITE; -/*!40000 ALTER TABLE `customer` DISABLE KEYS */; -INSERT INTO `customer` VALUES (1,'John','Smith','john@smith.com','1 Fake Street','London','SE3 5RD'),(2,'Sukie','Bapswent','s.baps@gmail.com','64 The Terrace','Whitby','YO65 3TR'),(3,'John','Thumb','jthumb@gmail.com','25 Fantasy Grove','Brighton','BR2 6LV'); -/*!40000 ALTER TABLE `customer` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `inventory` --- - -DROP TABLE IF EXISTS `inventory`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `inventory` ( - `stock` int(10) unsigned NOT NULL DEFAULT '0', - `record_ean` char(8) NOT NULL DEFAULT '', - PRIMARY KEY (`stock`,`record_ean`), - KEY `record_ean` (`record_ean`), - CONSTRAINT `inventory_ibfk_1` FOREIGN KEY (`record_ean`) REFERENCES `record` (`ean`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `inventory` --- - -LOCK TABLES `inventory` WRITE; -/*!40000 ALTER TABLE `inventory` DISABLE KEYS */; -INSERT INTO `inventory` VALUES (20,'00495739'),(25,'00562056'),(12,'00625485'),(15,'00649573'),(10,'00738432'),(15,'00748396'),(1,'1010010'),(5,'12121212'),(2,'131313'),(3,'30748743'),(18,'50264967'),(22,'50264972'),(7,'50847583'),(34,'50856384'); -/*!40000 ALTER TABLE `inventory` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `orderline` --- - -DROP TABLE IF EXISTS `orderline`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `orderline` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `transaction_id` int(11) DEFAULT NULL, - `record_ean` char(8) DEFAULT NULL, - `quantity` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `transaction_id` (`transaction_id`), - KEY `record_ean` (`record_ean`), - CONSTRAINT `orderline_ibfk_1` FOREIGN KEY (`transaction_id`) REFERENCES `transaction` (`id`), - CONSTRAINT `orderline_ibfk_2` FOREIGN KEY (`record_ean`) REFERENCES `record` (`ean`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `orderline` --- - -LOCK TABLES `orderline` WRITE; -/*!40000 ALTER TABLE `orderline` DISABLE KEYS */; -INSERT INTO `orderline` VALUES (1,1,'00562056',1),(2,1,'00495739',1),(3,2,'00649573',2),(4,2,'00495739',1),(5,3,'00738432',2),(6,3,'00562056',1),(7,3,'50856384',3),(8,3,'00495739',1),(9,4,'00625485',1),(10,4,'00562056',2); -/*!40000 ALTER TABLE `orderline` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `record` --- - -DROP TABLE IF EXISTS `record`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `record` ( - `ean` char(8) NOT NULL, - `title` varchar(50) NOT NULL, - `artist_id` int(11) DEFAULT NULL, - `genre` varchar(50) DEFAULT NULL, - `year` year(4) DEFAULT NULL, - `price` decimal(10,2) unsigned NOT NULL, - `image` varchar(64) DEFAULT NULL, - PRIMARY KEY (`ean`), - KEY `artist_id` (`artist_id`), - CONSTRAINT `record_ibfk_1` FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `record` --- - -LOCK TABLES `record` WRITE; -/*!40000 ALTER TABLE `record` DISABLE KEYS */; -INSERT INTO `record` VALUES ('00495739','Babylon By Bus',1,'Reggae',1978,24.99,NULL),('00562056','Soul Rebel',1,'Reggae',1970,25.99,NULL),('00625485','Sunday Coming',4,'Reggae',1970,15.99,NULL),('00649573','Black and Dekker',6,'Reggae',1980,19.99,NULL),('00738432','Legalize It',2,'Reggae',1976,22.99,NULL),('00748396','Natty Dread',1,'Reggae',1974,20.99,NULL),('1010010','A test',6,'testy',2000,20.00,'uploads/2009-a32-08-05-adorno-b.jpg'),('12121212','Dek Stop',6,'2 tone',1978,10.99,NULL),('131313','blahblah',4,'hip hop',2011,9.99,NULL),('30748743','Marcus Garvey',3,'Reggae',1975,24.99,NULL),('50264967','Catch A Fire',1,'Reggae',1973,25.99,NULL),('50264972','Mr Issacs',5,'Reggae',1982,9.99,NULL),('50847583','Bush Doctor',2,'Reggae',1978,20.99,NULL),('50856384','Night Nurse',5,'Reggae',1982,17.99,NULL); -/*!40000 ALTER TABLE `record` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `transaction` --- - -DROP TABLE IF EXISTS `transaction`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `transaction` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) NOT NULL, - `delivery_method` int(11) DEFAULT NULL, - `dt_date` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `customer_id` (`customer_id`), - CONSTRAINT `transaction_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `transaction` --- - -LOCK TABLES `transaction` WRITE; -/*!40000 ALTER TABLE `transaction` DISABLE KEYS */; -INSERT INTO `transaction` VALUES (1,1,2,'2015-07-01 14:34:58'),(2,1,2,'2015-04-01 11:22:35'),(3,3,1,'2015-04-01 19:47:03'),(4,2,1,'2015-05-11 22:01:19'); -/*!40000 ALTER TABLE `transaction` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!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 */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2016-01-19 18:54:19 diff --git a/week-13/sql/recordstore-dump2.sql b/week-13/sql/recordstore-dump2.sql deleted file mode 100644 index f46498b..0000000 --- a/week-13/sql/recordstore-dump2.sql +++ /dev/null @@ -1,196 +0,0 @@ --- MySQL dump 10.13 Distrib 5.6.26, for Linux (x86_64) --- --- Host: localhost Database: recordstore --- ------------------------------------------------------ --- Server version 5.6.26 - -/*!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 utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `artist` --- - -DROP TABLE IF EXISTS `artist`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `artist` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_name` varchar(50) DEFAULT NULL, - `last_name` varchar(50) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `artist` --- - -LOCK TABLES `artist` WRITE; -/*!40000 ALTER TABLE `artist` DISABLE KEYS */; -INSERT INTO `artist` VALUES (1,'Bob','Marley'),(2,'Peter','Tosh'),(3,'Burning','Spear'),(4,'Alton','Ellis'),(5,'Gregory','Issacs'),(6,'Desmond','Dekker'); -/*!40000 ALTER TABLE `artist` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `customer` --- - -DROP TABLE IF EXISTS `customer`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `customer` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_name` varchar(50) NOT NULL, - `last_name` varchar(50) NOT NULL, - `email_address` varchar(50) NOT NULL, - `address_1` varchar(50) NOT NULL, - `address_2` varchar(50) DEFAULT NULL, - `postcode` varchar(10) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `customer` --- - -LOCK TABLES `customer` WRITE; -/*!40000 ALTER TABLE `customer` DISABLE KEYS */; -INSERT INTO `customer` VALUES (1,'John','Smith','john@smith.com','1 Fake Street','London','SE3 5RD'),(2,'Sukie','Bapswent','s.baps@gmail.com','64 The Terrace','Whitby','YO65 3TR'),(3,'John','Thumb','jthumb@gmail.com','25 Fantasy Grove','Brighton','BR2 6LV'); -/*!40000 ALTER TABLE `customer` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `inventory` --- - -DROP TABLE IF EXISTS `inventory`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `inventory` ( - `stock` int(10) unsigned NOT NULL DEFAULT '0', - `record_ean` char(8) NOT NULL DEFAULT '', - PRIMARY KEY (`stock`,`record_ean`), - KEY `record_ean` (`record_ean`), - CONSTRAINT `inventory_ibfk_1` FOREIGN KEY (`record_ean`) REFERENCES `record` (`ean`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `inventory` --- - -LOCK TABLES `inventory` WRITE; -/*!40000 ALTER TABLE `inventory` DISABLE KEYS */; -INSERT INTO `inventory` VALUES (20,'00495739'),(25,'00562056'),(12,'00625485'),(15,'00649573'),(10,'00738432'),(15,'00748396'),(1,'1000000'),(1,'1010010'),(5,'12121212'),(2,'131313'),(3,'30748743'),(18,'50264967'),(22,'50264972'),(7,'50847583'),(34,'50856384'),(2,'985'); -/*!40000 ALTER TABLE `inventory` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `orderline` --- - -DROP TABLE IF EXISTS `orderline`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `orderline` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `transaction_id` int(11) DEFAULT NULL, - `record_ean` char(8) DEFAULT NULL, - `quantity` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `transaction_id` (`transaction_id`), - KEY `record_ean` (`record_ean`), - CONSTRAINT `orderline_ibfk_1` FOREIGN KEY (`transaction_id`) REFERENCES `transaction` (`id`), - CONSTRAINT `orderline_ibfk_2` FOREIGN KEY (`record_ean`) REFERENCES `record` (`ean`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `orderline` --- - -LOCK TABLES `orderline` WRITE; -/*!40000 ALTER TABLE `orderline` DISABLE KEYS */; -INSERT INTO `orderline` VALUES (1,1,'00562056',1),(2,1,'00495739',1),(3,2,'00649573',2),(4,2,'00495739',1),(5,3,'00738432',2),(6,3,'00562056',1),(7,3,'50856384',3),(8,3,'00495739',1),(9,4,'00625485',1),(10,4,'00562056',2); -/*!40000 ALTER TABLE `orderline` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `record` --- - -DROP TABLE IF EXISTS `record`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `record` ( - `ean` char(8) NOT NULL, - `title` varchar(50) NOT NULL, - `artist_id` int(11) DEFAULT NULL, - `genre` varchar(50) DEFAULT NULL, - `year` year(4) DEFAULT NULL, - `price` decimal(10,2) unsigned NOT NULL, - `image` varchar(64) DEFAULT NULL, - PRIMARY KEY (`ean`), - KEY `artist_id` (`artist_id`), - CONSTRAINT `record_ibfk_1` FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `record` --- - -LOCK TABLES `record` WRITE; -/*!40000 ALTER TABLE `record` DISABLE KEYS */; -INSERT INTO `record` VALUES ('00495739','Babylon By Bus',1,'Reggae',1978,24.99,NULL),('00562056','Soul Rebel',1,'Reggae',1970,25.99,NULL),('00625485','Sunday Coming',4,'Reggae',1970,15.99,NULL),('00649573','Black and Dekker',6,'Reggae',1980,19.99,NULL),('00738432','Legalize It',2,'Reggae',1976,22.99,NULL),('00748396','Natty Dread',1,'Reggae',1974,20.99,NULL),('1000000','B test',5,'funk',2016,26.00,'uploads/avatar 1.jpg'),('1010010','A test',6,'testy',2000,20.00,'uploads/2009-a32-08-05-adorno-b.jpg'),('12121212','Dek Stop',6,'2 tone',1978,10.99,NULL),('131313','blahblah',4,'hip hop',2011,9.99,NULL),('30748743','Marcus Garvey',3,'Reggae',1975,24.99,NULL),('50264967','Catch A Fire',1,'Reggae',1973,25.99,NULL),('50264972','Mr Issacs',5,'Reggae',1982,9.99,NULL),('50847583','Bush Doctor',2,'Reggae',1978,20.99,NULL),('50856384','Night Nurse',5,'Reggae',1982,17.99,NULL),('985','test',6,'test',0000,22.00,'uploads/think of this as a window.jpg'); -/*!40000 ALTER TABLE `record` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `transaction` --- - -DROP TABLE IF EXISTS `transaction`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `transaction` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) NOT NULL, - `delivery_method` int(11) DEFAULT NULL, - `dt_date` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `customer_id` (`customer_id`), - CONSTRAINT `transaction_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `transaction` --- - -LOCK TABLES `transaction` WRITE; -/*!40000 ALTER TABLE `transaction` DISABLE KEYS */; -INSERT INTO `transaction` VALUES (1,1,2,'2015-07-01 14:34:58'),(2,1,2,'2015-04-01 11:22:35'),(3,3,1,'2015-04-01 19:47:03'),(4,2,1,'2015-05-11 22:01:19'); -/*!40000 ALTER TABLE `transaction` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!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 */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2016-01-26 16:55:43 diff --git a/week-13/sql/user-table.sql b/week-13/sql/user-table.sql deleted file mode 100644 index d0a426b..0000000 --- a/week-13/sql/user-table.sql +++ /dev/null @@ -1,25 +0,0 @@ --- --- Table structure for table `users` --- - -DROP TABLE IF EXISTS `users`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `users` ( - `user_id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) DEFAULT NULL, - `password` varchar(50) DEFAULT NULL, - PRIMARY KEY (`user_id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `users` --- - -LOCK TABLES `users` WRITE; -/*!40000 ALTER TABLE `users` DISABLE KEYS */; -INSERT INTO `users` VALUES (1,'alice','5f55cff83a8f2f274947745629d3ede299a05bfd'),(2,'bob','b639bbe4c65ae9ea79b4268701e8656a80c95b14'),(3,'cliff','0c0b7dce234a29cf42d72db5420d708ac9251a82'),(4,'dan','4376fd0454dbaf40ba385212c04c0d18319c572b'),(5,'eric','9b2b6e9f988f06e7807694b7903cd7832e154975'),(6,'fabio','782a7facdc65b96b3896f40e43f5b5ec04393b3e'); -/*!40000 ALTER TABLE `users` ENABLE KEYS */; -UNLOCK TABLES; - diff --git a/week-13/templates/footer.html b/week-13/templates/footer.html deleted file mode 100644 index 2ab5c0d..0000000 --- a/week-13/templates/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - </body> -</html> diff --git a/week-13/templates/header.html b/week-13/templates/header.html deleted file mode 100644 index fc56554..0000000 --- a/week-13/templates/header.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>Record Store</title> - </head> - <body> diff --git a/week-13/templates/navigation.html b/week-13/templates/navigation.html deleted file mode 100644 index 9f89599..0000000 --- a/week-13/templates/navigation.html +++ /dev/null @@ -1,7 +0,0 @@ -<nav> - <ul> - <li><a href="?page=home" title="home">Home</a></li> - <li><a href="?page=record" title="records">Records</a></li> - <li><a href="?page=search" title="search">Search</a></li> - </ul> -</nav> diff --git a/week-13/uploads/2009-a32-08-05-adorno-b.jpg b/week-13/uploads/2009-a32-08-05-adorno-b.jpg deleted file mode 100644 index 4e896284f0a353698a1567dbd60fe9084352102b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35380 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�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 CN0P(< diff --git a/week-13/uploads/avatar 1.jpg b/week-13/uploads/avatar 1.jpg deleted file mode 100644 index 0f72ed7d3df1b440ca9e8128ce3bf9b495fac37e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13273 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 diff --git a/week-13/uploads/je-participe.gif b/week-13/uploads/je-participe.gif deleted file mode 100644 index 91e7b890942debafe2718187d3f0f785b09d25ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16732 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 DyMd(* diff --git a/week-13/uploads/man-ray-iron-A.gif b/week-13/uploads/man-ray-iron-A.gif deleted file mode 100644 index 127305ad2f453616c0858c28a09f65dc7a57afcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5401 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 diff --git a/week-13/uploads/think of this as a window.jpg b/week-13/uploads/think of this as a window.jpg deleted file mode 100644 index 6974a3771579395769a65c117e46e5887a83f285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68496 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 P)4}w^{{V#)PzV3nVG(}B diff --git a/week-13/views/404.php b/week-13/views/404.php deleted file mode 100644 index 7ae2fe7..0000000 --- a/week-13/views/404.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Page not found</h1>"; -$content .= "<p>Sorry, the page you requested could not be found.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-13/views/add-record-insecure.php b/week-13/views/add-record-insecure.php deleted file mode 100644 index 841a507..0000000 --- a/week-13/views/add-record-insecure.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -$action = $_SERVER["PHP_SELF"]."?page=add-record"; - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' method='POST'> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = $_POST["ean"]; - $title = $_POST["title"]; - $artist_id = $_POST["artist_id"]; - $genre = $_POST["genre"]; - $year = $_POST["year"]; - $price = $_POST["price"]; - - // define the insertion query - $sql = "INSERT INTO record (ean, title, artist_id, genre, year, price) - VALUES ('$ean', '$title', '$artist_id', '$genre', '$year', '$price')"; - - // run the query to insert the data - $result = mysqli_query($link, $sql); - - // check if the query went ok - if ($result === false) { - echo mysqli_error($link); - } else { - $content .= "Record successfully added to database."; - } -} - -// ------- END form processing code... ------- - -// output the html -echo($content); - -?> diff --git a/week-13/views/add-record.php b/week-13/views/add-record.php deleted file mode 100644 index b8d556e..0000000 --- a/week-13/views/add-record.php +++ /dev/null @@ -1,174 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -// -> htmlspecialchars() is used to replace special characters with HTML entities */ -$action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=add-record"); - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' enctype='multipart/form-data' method='POST'> -<input type='hidden' name='MAX_FILE_SIZE' value='1000000' /> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <fieldset> - <label for='price'>Stock:</label> - <input type='text' name='stock' placeholder='0' /> - </fieldset> -<label>image <input type='file' id='image' name='image' /></label><br /> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = $stock = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = mysqli_real_escape_string($link, clean_input($_POST["ean"])); - $title = mysqli_real_escape_string($link, clean_input($_POST["title"])); - $artist_id = mysqli_real_escape_string($link, clean_input($_POST["artist_id"])); - $genre = mysqli_real_escape_string($link, clean_input($_POST["genre"])); - $year = mysqli_real_escape_string($link, clean_input($_POST["year"])); - $price = mysqli_real_escape_string($link, clean_input($_POST["price"])); - $stock = mysqli_real_escape_string($link, clean_input($_POST["stock"])); - - // handle the image upload - $uploadOk = 1; - - $target_dir = "uploads/"; - - // Check if image file is a actual image or fake image - $check = getimagesize($_FILES["image"]["tmp_name"]); - if($check !== false) { - // echo "File is an image - " . $check["mime"] . "."; - $uploadOk = 1; - } else { - echo "File is not an image."; - $uploadOk = 0; - } - - // Check file size - if ($_FILES["image"]["size"] > 1000000) { - echo "Sorry, your file is too large."; - $uploadOk = 0; - } - - $target_file = $target_dir . basename($_FILES["image"]["name"]); - $image = $target_file; - - // Check if file already exists - if (file_exists($target_file)) { - echo "Sorry, file already exists."; - $uploadOk = 0; - } - - $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); - - // Allow certain file formats - if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" - && $imageFileType != "gif" ) { - echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; - $uploadOk = 0; - } - - // Check if $uploadOk is set to 0 by an error - if ($uploadOk == 0) { - echo "Sorry, your file was not uploaded."; - - // if everything is ok, try to upload file - } else { - if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) { - echo "The file ". basename( $_FILES["image"]["name"]). " has been uploaded."; - } else { - echo "Sorry, there was an error uploading your file."; - } - } - // end of image upload - - // turn autocommit off - mysqli_autocommit($link, FALSE); - - // start a transaction - mysqli_query($link, 'START TRANSACTION'); - - // define the insertion query to add a new record in record table - $query1 = sprintf("INSERT INTO record (ean, title, artist_id, genre, year, price, image) - VALUES ('%s', '%s', %d, '%s', %d, %f, '%s')", $ean, $title, $artist_id, $genre, $year, $price, $image); - - // define the insertion query to add a new record in inventory table - $query2 = sprintf("INSERT INTO inventory (stock, record_ean) - VALUES (%d, '%s')", $stock, $ean); - - // check if either of the queries failed (returned false) - if (!mysqli_query($link, $query1) or !mysqli_query($link, $query2)) { - echo mysqli_error($link); - mysqli_rollback($link); // if so, rollback transaction - } else { - mysqli_commit($link); // else, commit transaction - $content .= "Record successfully added to database."; - } - - - - } - - // ------- END form processing code... ------- - - // output the html - echo($content); - -?> diff --git a/week-13/views/artist.php b/week-13/views/artist.php deleted file mode 100644 index ea371d7..0000000 --- a/week-13/views/artist.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -// check if id parameter was not set in query string -if (!isset($_GET['id'])) { - - // define $content with suitable message - $content = "<h1>I don't know which artist you're looking for...</h1>"; - -} else { // id was set, so carry on... - - // define $artist_id variable and assign value of id parameter - $artist_id = $_GET['id']; - - // fetch record titles for artist with id matching $artist_id - $sql = "SELECT r.title, r.year, r.price, a.first_name, a.last_name - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - WHERE a.id=".$artist_id." - ORDER BY year ASC"; - - $result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - - // define a row counter - $i = 0; - - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - - // do this if we are on first row - if ($i == 0) { - - // initialise $content string, assigning it a page header - $content = "<h1>".$row['first_name']." ".$row['last_name']." Records</h1>"; - // append $content string with table definition - $content .= "<table border='1'><tbody>"; - - } - - // append table rows to $content string - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['year']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "</tr>"; - - // increment the row counter - $i++; - - } - - // append $content string with closing table tags - $content .= "</tbody></table>"; - - // free result set - mysqli_free_result($result); - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/views/home.php b/week-13/views/home.php deleted file mode 100644 index dc1ed44..0000000 --- a/week-13/views/home.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Welcome to Goldsmith's Record Store</h1>"; -$content .= "<p>Follow the links above to browse the store.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-13/views/order.php b/week-13/views/order.php deleted file mode 100644 index 0f81c63..0000000 --- a/week-13/views/order.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -// check the order_id parameter has been set in the URL -if (isset($_GET['order_id'])) -{ - $order_id = $_GET['order_id']; -} else { - $order_id = -1; // if not, set to an implausible value -} - -// fetch order details associated with current order id -$sql = "SELECT r.ean, r.title, ol.quantity, ol.transaction_id, r.price - FROM record r - INNER JOIN orderline ol - ON ol.record_ean=r.ean - WHERE ol.transaction_id=".$order_id; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - - // Find the number of rows returned - $num_rows = mysqli_num_rows($result); - - // Check it's not 0 - if ($num_rows == 0) { - $content = "<h1>Order not found</h1>"; - } else { - // create variable for content HTML - $content = "<h1>Order ".$order_id."</h1>"; - $content .= "<table border='1'>"; - $content .= "<thead><tr> - <th>EAN</th> - <th>Title</th> - <th>Quantity</th> - <th>Price</th> - <th>Total</th> - </tr></thead>"; - $content .= "<tbody>"; - // initialise total order price to 0 - $total = 0.00; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $subtotal = $row['quantity'] * $row['price']; - $total = $total + $subtotal; - $content .= "<tr>"; - $content .= "<td>".$row['ean']."</td>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['quantity']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "<td>£".$subtotal."</td>"; - $content .= "</tr>"; - } - $content .= "<tr><td colspan=4><b>TOTAL</b><td><b>£".$total."</b></td></tr>"; - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/views/orders.php b/week-13/views/orders.php deleted file mode 100644 index d122891..0000000 --- a/week-13/views/orders.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -// initialise string variable for content HTML -$content = "<h1>Orders</h1>"; - -// fetch all transactions (orders) and group by customer id -$sql = "SELECT id, customer_id FROM transaction - ORDER BY customer_id"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) -{ - echo mysqli_error($link); -} else { - $num_rows = mysqli_num_rows($result); - if ($num_rows > 0) - { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Order ID</th><th>Customer ID</th></tr></thead>"; - $content .= "<tbody>"; - // fetch each row in result set as an associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td><a href=\"?page=order&order_id=".$row['id']."\">".$row['id']."</a></td>"; - $content .= "<td>".$row['customer_id']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - } else { - $content .= "<p>There are no orders to display.</p>"; - } - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/views/record.php b/week-13/views/record.php deleted file mode 100644 index 06ffa5e..0000000 --- a/week-13/views/record.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Records</h1>"; -$content .= "<p>You are now viewing all records in the database.</p>"; - -// fetch records as a result set -$sql = "SELECT r.title, r.ean, a.first_name, a.last_name, r.genre, r.price, r.image, i.stock, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - INNER JOIN inventory i - ON r.ean=i.record_ean - ORDER BY r.title, r.price DESC"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Title</th><th>Artist</th><th>Genre</th><th>Price</th><th>Stock</th></tr></thead>"; - $content .= "<tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "<td>".$row['stock']."</td>"; - $content .= "<td><img src='".$row['image']."' style='height: 100px;' /></td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-13/views/search.php b/week-13/views/search.php deleted file mode 100644 index 8e9482d..0000000 --- a/week-13/views/search.php +++ /dev/null @@ -1,131 +0,0 @@ -<? -$content = "<h1>Search</h1>"; - -// define a variable with path to this script which will process form -$action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=search"); - -// define the search form -// note: need ?page=search for index to route here -// note: a form wihout an action will submit to the document's address -$form_html = "<form method='get'> - <label for='usersearch'>search the record store</label><br /> - <input type='text' id='usersearch' name='usersearch' /><br /> - <input type='submit' name='page' value='search' /> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// check if there was a POST request -//if ($_SERVER["REQUEST_METHOD"] == "POST") { -if (!empty($_GET['usersearch'])) { - $sort =""; - -// make a build_query function for the search - $user_search = $_GET['usersearch']; - $user_search = clean_input($user_search); - if (!empty($_GET['sort'])) { - $sort = $_GET['sort']; - $sort = clean_input($sort); - } - $sql = build_query($user_search, $sort); - - //sort pagination - $cur_page = isset($_GET['pagenumber']) ? $_GET['pagenumber'] : 1 ; - $results_per_page = 3; - $skip = (($cur_page - 1) * $results_per_page); - - // Start generating the table of results - echo '<table border="0" cellpadding="2">'; - - // Generate the search result headings - echo '<tr class="heading">'; - echo '<td>Job Title</td><td>Description</td><td>State</td><td>Date Posted</td>'; - echo '</tr>'; - - -$result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - - // info needed for pagination - $total = mysqli_num_rows($result); - $num_pages = ceil($total / $results_per_page); - - // query again to get subset of results per page - $sql = $sql .= " LIMIT $skip, $results_per_page"; - $result = mysqli_query($link, $sql); - - $content .= "<table border='1'>"; - $content .= "<thead><tr><th><a href='?page=search&usersearch=$user_search&sort=1'>Title</a></th>"; - $content .= "<th><a href='?page=search&usersearch=$user_search&sort=2'>Artist</a></th><th>Genre</th><th>Price</th><th>Stock</th></tr></thead>"; - $content .= "<tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "<td>".$row['stock']."</td>"; - $content .= "<td><img src='".$row['image']."' style='height: 100px;' /></td>"; - $content .= "</tr>"; - - } - $content .= "</tbody></table>"; - - // This function builds navigational page links based on the current page and the number of pages - function generate_page_links($user_search, $sort, $cur_page, $num_pages) { - $page_links = ''; -/* - // If this page is not the first page, generate the "previous" link - if ($cur_page > 1) { - $page_links .= '<a href="' . $_SERVER['PHP_SELF'] . '?usersearch=' . $user_search . '&sort=' . $sort . '&page=' . ($cur_page - 1) . '"><-</a> '; - } - else { - $page_links .= '<- '; - } -*/ - // Loop through the pages generating the page number links - for ($i = 1; $i <= $num_pages; $i++) { - if ($cur_page == $i) { - $page_links .= ' ' . $i; - } - else { - $page_links .= ' <a href="' . $_SERVER['PHP_SELF'] . '?page=search&usersearch=' . $user_search . '&sort=' . $sort . '&pagenumber=' . $i . '"> ' . $i . '</a>'; - } - } -/* - // If this page is not the last page, generate the "next" link - if ($cur_page < $num_pages) { - $page_links .= ' <a href="' . $_SERVER['PHP_SELF'] . '?usersearch=' . $user_search . '&sort=' . $sort . '&page=' . ($cur_page + 1) . '">-></a>'; - } - else { - $page_links .= ' ->'; - } -*/ - return $page_links; - } - - - // Generate navigational page links if we have more than one page - if ($num_pages > 1) { - echo generate_page_links($user_search, $sort, $cur_page, $num_pages); - } - - - - // free result set - mysqli_free_result($result); - } - -} -// output the content HTML -echo $content; - -?> diff --git a/week-15/database-class/config.php b/week-15/database-class/config.php deleted file mode 100644 index 48e9bd4..0000000 --- a/week-15/database-class/config.php +++ /dev/null @@ -1,10 +0,0 @@ -<? - -// define constants for database conncetion -define('DATABASE_HOST', 'localhost'); -define('DATABASE_NAME', 'recordstore'); -define('DATABASE_USER', 'recordstoreuser'); -define('DATABASE_PASSWORD', 'recordstorepwd'); - - -?> diff --git a/week-15/database-class/database.class.php b/week-15/database-class/database.class.php deleted file mode 100644 index 8d96806..0000000 --- a/week-15/database-class/database.class.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -class Database -{ - private $connection; - private $hostname; - private $username; - private $password; - private $database; - - public function __construct() - { - $this->hostname = DATABASE_HOST; - $this->username = DATABASE_USER; - $this->password = DATABASE_PASSWORD; - $this->database = DATABASE_NAME; - } - - public function openConnection() - { - // Open database connection - $this->connection = mysqli_connect($this->hostname, $this->username, $this->password, $this->database) - or die(mysqli_error()); - - } - - public function closeConnection() - { - if (isset($this->connection)) { - // Close database connection - mysql_close($this->connection) - or die(mysql_error()); - } - } - - public function executeStatement($statement) - { - - // Execute database statement - $result = mysqli_query($this->connection, $statement) - or die(mysql_error()); - - - // Return result - return $result; - } - - public function executeSql($sql) - { - // Execute database statement - $result = $this->executeStatement($sql); - - // Check number of rows returned - if(mysqli_num_rows($result) == 1) - { - // Fetch one row from the result - $dataset = mysqli_fetch_object($result); - } - else - { - // Fetch multiple rows from the result - $dataset = array(); - while ($row = mysqli_fetch_object($result)) { - $dataset[] = $row; - } - } - - // Close database cursor - mysqli_free_result($result); - - // Return dataset - return $dataset; - } - - public function executeDml($dml) - { - // Execute database statement - $this->executeStatement($dml); - - // Return number of affected rows - return mysqli_affected_rows($this->connection); - } - - public function sanitizeInput($value) - { - // more here... - } -} diff --git a/week-15/database-class/index.php b/week-15/database-class/index.php deleted file mode 100644 index 2c2c09a..0000000 --- a/week-15/database-class/index.php +++ /dev/null @@ -1,19 +0,0 @@ -<? - -include 'config.php'; - -include 'database.class.php'; - -$db = new Database; -$db->openConnection(); - -$sql = 'select * from record'; -$rows = $db->executeSQL($sql); - -foreach($rows as $row) { - print $row->title; - print "<br />"; -} - - -?> diff --git a/week-15/image-upload/classes/Uploader.class.php b/week-15/image-upload/classes/Uploader.class.php deleted file mode 100644 index 8ffa7dd..0000000 --- a/week-15/image-upload/classes/Uploader.class.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -class Uploader { - private $filename; - private $fileData; - private $destination; - - - public function __construct( $key ) { - $this->filename = $_FILES[$key]['name']; - $this->fileData = $_FILES[$key]['tmp_name']; - } - - public function saveIn( $folder ) { - $this->destination = $folder; - } - - public function save(){ - $folderIsWritAble = is_writable( $this->destination ); - if( $folderIsWritAble ){ - $name = "$this->destination/$this->filename"; - $success = move_uploaded_file( $this->fileData, $name ); - } else { - trigger_error("cannot write to $this->destination"); - $success = false; - } - return $success; - } - -} diff --git a/week-15/image-upload/css/layout.css b/week-15/image-upload/css/layout.css deleted file mode 100644 index 3868846..0000000 --- a/week-15/image-upload/css/layout.css +++ /dev/null @@ -1,4 +0,0 @@ -/* code listing for css/layout.css */ -h1{color:red;} - - diff --git a/week-15/image-upload/css/navigation.css b/week-15/image-upload/css/navigation.css deleted file mode 100644 index f1a7798..0000000 --- a/week-15/image-upload/css/navigation.css +++ /dev/null @@ -1,15 +0,0 @@ -/* code listing for css/navigation.css*/ - -nav { -background-color: #CCCCDE; -padding-top: 10px; -} -nav a{ -display:inline-block; -text-decoration:none; -color: #000; -margin-left: 10px; -} -nav a:hover{text-decoration: underline;} - - diff --git a/week-15/image-upload/img/2009-a32-08-05-adorno-b.jpg b/week-15/image-upload/img/2009-a32-08-05-adorno-b.jpg deleted file mode 100644 index 4e896284f0a353698a1567dbd60fe9084352102b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35380 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�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 CN0P(< diff --git a/week-15/image-upload/index.php b/week-15/image-upload/index.php deleted file mode 100644 index b4ade32..0000000 --- a/week-15/image-upload/index.php +++ /dev/null @@ -1,21 +0,0 @@ -<? - -error_reporting( E_ALL ); -ini_set( "display_errors", 1 ); - -$title = "oo image upload"; - -include 'templates/header.php'; -include 'views/navigation.php'; - -$userClicked = isset($_GET['page']); -if ( $userClicked ) { - $fileToLoad = $_GET['page']; -} else { - $fileToLoad = "gallery"; -} - -include_once "views/$fileToLoad.php"; - -include "templates/footer.php"; -?> diff --git a/week-15/image-upload/templates/footer.php b/week-15/image-upload/templates/footer.php deleted file mode 100644 index c7daecf..0000000 --- a/week-15/image-upload/templates/footer.php +++ /dev/null @@ -1,9 +0,0 @@ -<? - -$out = " -</body> -</html>"; - -echo $out; - -?> diff --git a/week-15/image-upload/templates/header.php b/week-15/image-upload/templates/header.php deleted file mode 100644 index 390cd9f..0000000 --- a/week-15/image-upload/templates/header.php +++ /dev/null @@ -1,14 +0,0 @@ -<? - -$out = "<!DOCTYPE html> -<html> -<head> -<title>$title</title> -<link href='css/layout.css' rel='stylesheet' /> -<link href='css/navigation.css' rel='stylesheet' /> -</head> -<body>"; - -echo $out; - -?> diff --git a/week-15/image-upload/views/gallery.php b/week-15/image-upload/views/gallery.php deleted file mode 100644 index 5468198..0000000 --- a/week-15/image-upload/views/gallery.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - -return showImages(); - -function showImages(){ - $out = "<h1>Image Gallery</h1>"; - $out .= "<ul id='images'>"; - $folder = "img"; - $filesInFolder = new DirectoryIterator( $folder); - while ( $filesInFolder->valid() ) { - $file = $filesInFolder->current(); - $filename = $file->getFilename(); - $src = "$folder/$filename"; - $fileInfo = new Finfo( FILEINFO_MIME_TYPE ); - $mimeType = $fileInfo->file( $src ); - - if ( $mimeType === 'image/jpeg' ) { - $out .= "<li><img src='$src' /></li>"; - } - $filesInFolder->next(); - } - $out .= "</ul>"; - echo $out; - -} - -?> diff --git a/week-15/image-upload/views/navigation.php b/week-15/image-upload/views/navigation.php deleted file mode 100644 index 179b23e..0000000 --- a/week-15/image-upload/views/navigation.php +++ /dev/null @@ -1,4 +0,0 @@ -<nav> - <a href='index.php?page=gallery'>Gallery</a> - <a href='index.php?page=upload'>Upload new image</a> -</nav> diff --git a/week-15/image-upload/views/upload.php b/week-15/image-upload/views/upload.php deleted file mode 100644 index ce9a840..0000000 --- a/week-15/image-upload/views/upload.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -include_once "classes/Uploader.class.php"; -$content = ""; - -//$newImageSubmitted is TRUE if form was submitted, otherwise FALSE -$newImageSubmitted = isset( $_POST['new-image'] ); -if ( $newImageSubmitted ) { - $uploader = new Uploader( "image-data" ); - $uploader->saveIn("img"); - $fileUploaded = $uploader->save(); - if ( $fileUploaded ) { - $content .= "new file uploaded"; - } else { - $content .= "something went wrong"; - } -} - -$content .= "<h1>Upload new jpg images</h1> -<form method='post' action='index.php?page=upload' enctype='multipart/form-data' > - <label>Find a jpg image to upload</label> - <input type='file' name='image-data' accept='image/jpeg'/> - <input type='submit' value='upload' name='new-image' /> - </form>"; - -echo $content; - -?> - diff --git a/week-15/simple-classes/Rectangle.php b/week-15/simple-classes/Rectangle.php deleted file mode 100644 index ceee083..0000000 --- a/week-15/simple-classes/Rectangle.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php # Script 4.5 - Rectangle.php -/* This page defines the Rectangle class. - * The class contains two attributes: width and height. - * The class contains five methods: - * - __construct() - * - setSize() - * - getArea() - * - getPermeter() - * - isSquare() - */ - -class Rectangle { - - // Declare the attributes: - public $width = 0; - public $height = 0; - - // Constructor: - function __construct($w = 0, $h = 0) { - $this->width = $w; - $this->height = $h; - } - - // Method to set the dimensions: - function setSize($w = 0, $h = 0) { - $this->width = $w; - $this->height = $h; - } - - // Method to calculate and return the area: - function getArea() { - return ($this->width * $this->height); - } - - // Method to calculate and return the perimeter: - function getPerimeter() { - return ( ($this->width + $this->height) * 2 ); - } - - // Method to determine if the rectange - // is also a square. - function isSquare() { - if ($this->width == $this->height) { - return true; // Square - } else { - return false; // Not a square - } - - } - -} // End of Rectangle class. \ No newline at end of file diff --git a/week-15/simple-classes/Rectangle1.php b/week-15/simple-classes/Rectangle1.php deleted file mode 100644 index 57b2e4e..0000000 --- a/week-15/simple-classes/Rectangle1.php +++ /dev/null @@ -1,36 +0,0 @@ -<? - -class Rectangle { - - // Declare the attributes: - public $width = 0; - public $height = 0; - - // Method to set the dimensions: - function setSize($w = 0, $h = 0) { - $this->width = $w; - $this->height = $h; - } - - // Method to calculate and return the area: - function getArea() { - return ($this->width * $this->height); - } - - // Method to calculate and return the perimeter: - function getPerimeter() { - return ( ($this->width + $this->height) * 2 ); - } - - // Method to determine if the rectange - // is also a square. - function isSquare() { - if ($this->width == $this->height) { - return true; // Square - } else { - return false; // Not a square - } - - } - -} // End of Rectangle class. diff --git a/week-15/simple-classes/Rectangle2.php b/week-15/simple-classes/Rectangle2.php deleted file mode 100644 index 1cc3b26..0000000 --- a/week-15/simple-classes/Rectangle2.php +++ /dev/null @@ -1,42 +0,0 @@ -<? - -class Rectangle { - - // Declare the attributes: - public $width = 0; - public $height = 0; - - // Constructor: - function __construct($w = 0, $h = 0) { - $this->width = $w; - $this->height = $h; - } - - // Method to set the dimensions: - function setSize($w = 0, $h = 0) { - $this->width = $w; - $this->height = $h; - } - - // Method to calculate and return the area: - function getArea() { - return ($this->width * $this->height); - } - - // Method to calculate and return the perimeter: - function getPerimeter() { - return ( ($this->width + $this->height) * 2 ); - } - - // Method to determine if the rectange - // is also a square. - function isSquare() { - if ($this->width == $this->height) { - return true; // Square - } else { - return false; // Not a square - } - - } - -} // End of Rectangle class. diff --git a/week-15/simple-classes/cat.class.php b/week-15/simple-classes/cat.class.php deleted file mode 100644 index b848d2c..0000000 --- a/week-15/simple-classes/cat.class.php +++ /dev/null @@ -1,16 +0,0 @@ -<? -/* Cat class extends Pet. - * Cat overrides play(). - */ -class Cat extends Pet { - function play() { - - // Call the Pet::play() method: - parent::play(); - - echo "<p>$this->name is climbing.</p>"; - } -} // End of Cat class. - - -?> diff --git a/week-15/simple-classes/dog.class.php b/week-15/simple-classes/dog.class.php deleted file mode 100644 index 3cd9b09..0000000 --- a/week-15/simple-classes/dog.class.php +++ /dev/null @@ -1,17 +0,0 @@ -<? -/* Dog class extends Pet. - * Dog overrides play(). - */ -class Dog extends Pet { - function play() { - - // Call the Pet::play() method: - parent::play(); - - echo "<p>$this->name is fetching.</p>"; - } -} // End of Dog class. - - - -?> diff --git a/week-15/simple-classes/pet.class.php b/week-15/simple-classes/pet.class.php deleted file mode 100644 index 055c4be..0000000 --- a/week-15/simple-classes/pet.class.php +++ /dev/null @@ -1,19 +0,0 @@ -<? -class Pet { - public $name; - function __construct($pet_name) { - $this->name = $pet_name; - self::sleep(); - } - function eat() { - echo "<p>$this->name is eating.</p>"; - } - function sleep() { - echo "<p>$this->name is sleeping.</p>"; - } - function play() { - echo "<p>$this->name is playing.</p>"; - } -} // End of Pet class. -?> - diff --git a/week-15/simple-classes/pets1.php b/week-15/simple-classes/pets1.php deleted file mode 100644 index 97391f0..0000000 --- a/week-15/simple-classes/pets1.php +++ /dev/null @@ -1,65 +0,0 @@ -<? -class Pet { - - // Declare the attributes: - public $name; - - // Constructor assigns the pet's name: - function __construct($pet_name) { - $this->name = $pet_name; - } - - // Pets can eat: - function eat() { - echo "<p>$this->name is eating.</p>"; - } - - // Pets can sleep: - function sleep() { - echo "<p>$this->name is sleeping.</p>"; - } - -} // End of Pet class. - -/* Cat class extends Pet. - * Cat has additional method: climb(). - */ -class Cat extends Pet { - function climb() { - echo "<p>$this->name is climbing.</p>"; - } -} // End of Cat class. - -/* Dog class extends Pet. - * Dog has additional method: fetch(). - */ -class Dog extends Pet { - function fetch() { - echo "<p>$this->name is fetching.</p>"; - } -} // End of Dog class. - -# ***** END OF CLASSES ***** # - -// Create a dog: -$dog = new Dog('Rover'); - -// Create a cat: -$cat = new Cat('Whiskers'); - -// Feed them: -$dog->eat(); -$cat->eat(); - -// Nap time: -$dog->sleep(); -$cat->sleep(); - -// Do animal-specific thing: -$dog->fetch(); -$cat->climb(); - -// Delete the objects: -unset($dog, $cat); - -?> diff --git a/week-15/simple-classes/pets2.php b/week-15/simple-classes/pets2.php deleted file mode 100644 index 99157e6..0000000 --- a/week-15/simple-classes/pets2.php +++ /dev/null @@ -1,68 +0,0 @@ -<? -class Pet { - public $name; - function __construct($pet_name) { - $this->name = $pet_name; - } - function eat() { - echo "<p>$this->name is eating.</p>"; - } - function sleep() { - echo "<p>$this->name is sleeping.</p>"; - } - - // Pets can play: - function play() { - echo "<p>$this->name is playing.</p>"; - } - -} // End of Pet class. - -/* Cat class extends Pet. - * Cat overrides play(). - */ -class Cat extends Pet { - function play() { - echo "<p>$this->name is climbing.</p>"; - } -} // End of Cat class. - -/* Dog class extends Pet. - * Dog overrides play(). - */ -class Dog extends Pet { - function play() { - echo "<p>$this->name is fetching.</p>"; - } -} // End of Dog class. - -# ***** END OF CLASSES ***** # - -// Create a dog: -$dog = new Dog('Rover'); - -// Create a cat: -$cat = new Cat('Whiskers'); - -// Create an unknown type of pet: -$pet = new Pet('Rob'); - -// Feed them: -$dog->eat(); -$cat->eat(); -$pet->eat(); - -// Nap time: -$dog->sleep(); -$cat->sleep(); -$pet->sleep(); - -// Have them play: -$dog->play(); -$cat->play(); -$pet->play(); - -// Delete the objects: -unset($dog, $cat, $pet); - -?> diff --git a/week-15/simple-classes/pets3.php b/week-15/simple-classes/pets3.php deleted file mode 100644 index a00574b..0000000 --- a/week-15/simple-classes/pets3.php +++ /dev/null @@ -1,96 +0,0 @@ -<!doctype html> -<html lang="en"> -<head> - <meta charset="utf-8"> - <title>Pets</title> - <link rel="stylesheet" href="style.css"> -</head> -<body> -<?php # Script 5.5 - pets3.php -// This page defines and uses the Pet, Cat, and Dog classes. - -# ***** CLASSES ***** # - -/* Class Pet. - * The class contains one attribute: name. - * The class contains four methods: - * - __construct() - * - eat() - * - sleep() - * - play() - */ -class Pet { - public $name; - function __construct($pet_name) { - $this->name = $pet_name; - self::sleep(); - } - function eat() { - echo "<p>$this->name is eating.</p>"; - } - function sleep() { - echo "<p>$this->name is sleeping.</p>"; - } - function play() { - echo "<p>$this->name is playing.</p>"; - } -} // End of Pet class. - -/* Cat class extends Pet. - * Cat overrides play(). - */ -class Cat extends Pet { - function play() { - - // Call the Pet::play() method: - parent::play(); - - echo "<p>$this->name is climbing.</p>"; - } -} // End of Cat class. - -/* Dog class extends Pet. - * Dog overrides play(). - */ -class Dog extends Pet { - function play() { - - // Call the Pet::play() method: - parent::play(); - - echo "<p>$this->name is fetching.</p>"; - } -} // End of Dog class. - -# ***** END OF CLASSES ***** # - -// Create a dog: -$dog = new Dog('Satchel'); - -// Create a cat: -$cat = new Cat('Bucky'); - -// Create an unknown type of pet: -$pet = new Pet('Rob'); - -// Feed them: -$dog->eat(); -$cat->eat(); -$pet->eat(); - -// Nap time: -$dog->sleep(); -$cat->sleep(); -$pet->sleep(); - -// Have them play: -$dog->play(); -$cat->play(); -$pet->play(); - -// Delete the objects: -unset($dog, $cat, $pet); - -?> -</body> -</html> \ No newline at end of file diff --git a/week-15/simple-classes/pets4.php b/week-15/simple-classes/pets4.php deleted file mode 100644 index 9731d24..0000000 --- a/week-15/simple-classes/pets4.php +++ /dev/null @@ -1,47 +0,0 @@ -<!doctype html> -<html lang="en"> -<head> - <meta charset="utf-8"> - <title>Pets</title> - <link rel="stylesheet" href="style.css"> -</head> -<body> -<?php # Script 5.5 - pets3.php -// This page defines and uses the Pet, Cat, and Dog classes. - -spl_autoload_register(function ($class_name) { - $class_name = strtolower($class_name); - include $class_name . '.class.php'; -}); - - -// Create a dog: -$dog = new Dog('Satchel'); - -// Create a cat: -$cat = new Cat('Bucky'); - -// Create an unknown type of pet: -$pet = new Pet('Rob'); - -// Feed them: -$dog->eat(); -$cat->eat(); -$pet->eat(); - -// Nap time: -$dog->sleep(); -$cat->sleep(); -$pet->sleep(); - -// Have them play: -$dog->play(); -$cat->play(); -$pet->play(); - -// Delete the objects: -unset($dog, $cat, $pet); - -?> -</body> -</html> diff --git a/week-15/simple-classes/rectangle1.php b/week-15/simple-classes/rectangle1.php deleted file mode 100644 index b72ba69..0000000 --- a/week-15/simple-classes/rectangle1.php +++ /dev/null @@ -1,37 +0,0 @@ -<? - -// Include the class definition: -require('Rectangle1.php'); - -// Define the necessary variables: -$width = 42; -$height = 7; - -// Print a little introduction: -echo "<h2>With a width of $width and a height of $height...</h2>"; - -// Create a new object: -$r = new Rectangle(); - -// Assign the rectangle dimensions: -$r->setSize($width, $height); - -// Print the area: -echo '<p>The area of the rectangle is ' . $r->getArea() . '</p>'; - -// Print the perimeter: -echo '<p>The perimeter of the rectangle is ' . $r->getPerimeter() . '</p>'; - -// Is this a square? -echo '<p>This rectangle is '; -if ($r->isSquare()) { - echo 'also'; -} else { - echo 'not'; -} -echo ' a square.</p>'; - -// Delete the object: -unset($r); - -?> diff --git a/week-15/simple-classes/rectangle2.php b/week-15/simple-classes/rectangle2.php deleted file mode 100644 index 90bab31..0000000 --- a/week-15/simple-classes/rectangle2.php +++ /dev/null @@ -1,35 +0,0 @@ -<? - -// Include the class definition: -require('Rectangle2.php'); - -// Define the necessary variables: -$width = 160; -$height = 75; - -// Print a little introduction: -echo "<h2>With a width of $width and a height of $height...</h2>"; - -// Create a new object: -$r = new Rectangle($width, $height); - -// Print the area. -echo '<p>The area of the rectangle is ' . $r->getArea() . '</p>'; - -// Print the perimeter. -echo '<p>The perimeter of the rectangle is ' . $r->getPerimeter() . '</p>'; - -// Is this a square? -echo '<p>This rectangle is '; -if ($r->isSquare()) { - echo 'also'; -} else { - echo 'not'; -} -echo ' a square.</p>'; - -// Delete the object: -unset($r); - -?> - diff --git a/week-2/record-store-app/sql/dummy_data.sql b/week-2/record-store-app/sql/dummy_data.sql deleted file mode 100644 index 3db2806..0000000 --- a/week-2/record-store-app/sql/dummy_data.sql +++ /dev/null @@ -1,14 +0,0 @@ -/* Statement to insert some records in the artist table */ -INSERT INTO artist (id, first_name, last_name) -VALUES -(NULL, 'Bob', 'Marley'), -(NULL, 'Peter', 'Tosh'), -(NULL, 'Burning', 'Spear'), -(NULL, 'Alton', 'Ellis'), -(NULL, 'Gregory', 'Issacs') -(NULL, 'Desmond', 'Dekker'); - -INSERT INTO record (id, title, artist_id, genre, year, price) -VALUES -(NULL, 'Catch A Fire', NULL, 'Reggae', 1973, 20.99 ), -(NULL, 'Sunday Coming', NULL, 'Reggae', 1970, 15.99 ); diff --git a/week-2/record-store-app/sql/practice_queries.sql b/week-2/record-store-app/sql/practice_queries.sql deleted file mode 100644 index ebb0dff..0000000 --- a/week-2/record-store-app/sql/practice_queries.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* Simple query -Fetch first_name and last_name columns from artist table */ -SELECT first_name, last_name FROM artist; - -/* Query with filters -Fetches titles from record table where year is 1973 and genre is Reggae */ -SELECT title FROM record -WHERE year = 1973 -AND genre = "Reggae"; \ No newline at end of file diff --git a/week-2/record-store-app/sql/record-store.sql b/week-2/record-store-app/sql/record-store.sql deleted file mode 100644 index 670b774..0000000 --- a/week-2/record-store-app/sql/record-store.sql +++ /dev/null @@ -1,23 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS record, artist; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -); - -/* Define table for storing records (products) */ -CREATE TABLE record ( - id INT AUTO_INCREMENT, - title VARCHAR(50), - artist_id INT, - genre TINYTEXT, - year YEAR(4), - price DECIMAL(10, 2) unsigned, - PRIMARY KEY (id), - FOREIGN KEY (artist_id) - REFERENCES artist (id) -); diff --git a/week-3/record-store-app/artist.php b/week-3/record-store-app/artist.php deleted file mode 100644 index f50a022..0000000 --- a/week-3/record-store-app/artist.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -/* connect to the database */ -$link = mysqli_connect( - 'localhost', - 'YOUR_USERNAME', - 'YOUR_PASSWORD', - 'YOUR_DB_NAME' -); - -/* check connection succeeded */ -if (mysqli_connect_errno()) { - exit(mysqli_connect_error()); -} - -/* fetch a result set */ -$sql = "SELECT first_name, last_name FROM artist"; -$result = mysqli_query($link, $sql); - -/* check query returned a result */ -if ($result === false) { - echo mysqli_error($link); -} else { - /* fetch associative array */ - while ($row = mysqli_fetch_assoc($result)) { - echo($row['first_name']." (".$row['last_name'].") "); - } - /* free result set */ - mysqli_free_result($result); -} - -/* close the connection to the database */ -mysqli_close($link) - -?> \ No newline at end of file diff --git a/week-3/record-store-app/index.php b/week-3/record-store-app/index.php deleted file mode 100644 index 6ef98ce..0000000 --- a/week-3/record-store-app/index.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -/* connect to the database */ -$link = mysqli_connect( - 'localhost', - 'YOUR_USERNAME', - 'YOUR_PASSWORD', - 'YOUR_DB_NAME' -); - -/* check connection succeeded */ -if (mysqli_connect_errno()) { - exit(mysqli_connect_error()); -} - -/* fetch a result set */ -$sql = "SELECT title, genre FROM record"; -$result = mysqli_query($link, $sql); - -/* check query returned a result */ -if ($result === false) { - echo mysqli_error($link); -} else { - // $row_cnt = mysqli_num_rows($result); - // echo $row_cnt - /* fetch associative array */ - while ($row = mysqli_fetch_assoc($result)) { - echo($row['title']." (".$row['genre'].") "); - } - /* free result set */ - mysqli_free_result($result); -} - -/* close the connection to the database */ -mysqli_close($link) - -?> \ No newline at end of file diff --git a/week-3/record-store-app/sql/dummy_data.sql b/week-3/record-store-app/sql/dummy_data.sql deleted file mode 100644 index 3db2806..0000000 --- a/week-3/record-store-app/sql/dummy_data.sql +++ /dev/null @@ -1,14 +0,0 @@ -/* Statement to insert some records in the artist table */ -INSERT INTO artist (id, first_name, last_name) -VALUES -(NULL, 'Bob', 'Marley'), -(NULL, 'Peter', 'Tosh'), -(NULL, 'Burning', 'Spear'), -(NULL, 'Alton', 'Ellis'), -(NULL, 'Gregory', 'Issacs') -(NULL, 'Desmond', 'Dekker'); - -INSERT INTO record (id, title, artist_id, genre, year, price) -VALUES -(NULL, 'Catch A Fire', NULL, 'Reggae', 1973, 20.99 ), -(NULL, 'Sunday Coming', NULL, 'Reggae', 1970, 15.99 ); diff --git a/week-3/record-store-app/sql/practice_queries.sql b/week-3/record-store-app/sql/practice_queries.sql deleted file mode 100644 index ebb0dff..0000000 --- a/week-3/record-store-app/sql/practice_queries.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* Simple query -Fetch first_name and last_name columns from artist table */ -SELECT first_name, last_name FROM artist; - -/* Query with filters -Fetches titles from record table where year is 1973 and genre is Reggae */ -SELECT title FROM record -WHERE year = 1973 -AND genre = "Reggae"; \ No newline at end of file diff --git a/week-3/record-store-app/sql/record-store.sql b/week-3/record-store-app/sql/record-store.sql deleted file mode 100644 index 670b774..0000000 --- a/week-3/record-store-app/sql/record-store.sql +++ /dev/null @@ -1,23 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS record, artist; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -); - -/* Define table for storing records (products) */ -CREATE TABLE record ( - id INT AUTO_INCREMENT, - title VARCHAR(50), - artist_id INT, - genre TINYTEXT, - year YEAR(4), - price DECIMAL(10, 2) unsigned, - PRIMARY KEY (id), - FOREIGN KEY (artist_id) - REFERENCES artist (id) -); diff --git a/week-4/record-store-app/README.txt b/week-4/record-store-app/README.txt deleted file mode 100644 index eec341c..0000000 --- a/week-4/record-store-app/README.txt +++ /dev/null @@ -1,24 +0,0 @@ -********************************* -* RECORD STORE APPLICATION * -********************************* - -Description ------------ -This is a demo record store application. You can use it to help you complete lab 4. It is You can also read this README file to find out the sorts of things that should be included in a README file! - -Author & Contact ----------------- -Sorrel Harriet s.harriet@gold.ac.uk - -Installation Instructions -------------------------- -+ Check you have a LAMP stack installed with PHP>5 and MySQL>5 -+ Upload the application to your web root folder. -+ Run the record-store.sql file on your database. -+ Run the dummy_data.sql file to insert some data. - -Configuration Instructions --------------------------- -Modify the includes/db_connect.php script with your MySQL database credentials. - - diff --git a/week-4/record-store-app/includes/db_connect.php b/week-4/record-store-app/includes/db_connect.php deleted file mode 100644 index 8787faf..0000000 --- a/week-4/record-store-app/includes/db_connect.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/* Open a new connection to the MySQL server */ - -/* connect to the database */ -$link = mysqli_connect( - 'localhost', - 'YOUR_USERNAME', - 'YOUR_PASSWORD', - 'YOUR_DB_NAME' -); - -/* check connection succeeded */ -if (mysqli_connect_errno()) { - echo "Failed to connect to MySQL: " . mysqli_connect_error(); -} - -?> \ No newline at end of file diff --git a/week-4/record-store-app/index.php b/week-4/record-store-app/index.php deleted file mode 100644 index 6245c34..0000000 --- a/week-4/record-store-app/index.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -// connect to the database -require('includes/db_connect.php'); - -// include the header HTML -include('templates/header.html'); - -// include the navigation HTML -include('templates/navigation.html'); - -// get the page id from the URL -// if no parameter detected... -if (!isset($_GET['page'])) { - $id = 'home'; // display home page -} else { - $id = $_GET['page']; // else requested page -} - -// use switch to determine which view to serve based on $id -switch ($id) { -case 'home' : - include 'views/home.php'; - break; -case 'record' : - include 'views/record.php'; - break; -case 'artist' : - include 'views/artist.php'; - break; -default : - include 'views/404.php'; -} - -// close the connection to the database -mysqli_close($link); - -// include the footer HTML -include('templates/footer.html'); - -?> diff --git a/week-4/record-store-app/sql/dummy_data.sql b/week-4/record-store-app/sql/dummy_data.sql deleted file mode 100644 index 8b8d90f..0000000 --- a/week-4/record-store-app/sql/dummy_data.sql +++ /dev/null @@ -1,25 +0,0 @@ -/* Drop all existing records from these tables */ -DELETE FROM artist; -DELETE FROM record; - -/* Statement to insert some records in the artist table */ -INSERT INTO artist (id, first_name, last_name) -VALUES -(NULL, 'Bob', 'Marley'), -(NULL, 'Peter', 'Tosh'), -(NULL, 'Burning', 'Spear'), -(NULL, 'Alton', 'Ellis'), -(NULL, 'Gregory', 'Issacs'), -(NULL, 'Desmond', 'Dekker'); - -INSERT INTO record (id, title, artist_id, genre, year, price) -VALUES -(NULL, 'Soul Rebel', NULL, 'Reggae', 1970, 25.99 ), -(NULL, 'Catch A Fire', NULL, 'Reggae', 1973, 25.99 ), -(NULL, 'Natty Dread', NULL, 'Reggae', 1974, 20.99 ), -(NULL, 'Babylon By Bus', NULL, 'Reggae', 1978, 24.99 ), -(NULL, 'Night Nurse', NULL, 'Reggae', 1982, 17.99 ), -(NULL, 'Mr Issacs', NULL, 'Reggae', 1982, 9.99 ), -(NULL, 'Black and Dekker', NULL, 'Reggae', 1980, 19.99 ), -(NULL, 'Sunday Coming', NULL, 'Reggae', 1970, 15.99 ); - diff --git a/week-4/record-store-app/sql/practice_queries.sql b/week-4/record-store-app/sql/practice_queries.sql deleted file mode 100644 index ebb0dff..0000000 --- a/week-4/record-store-app/sql/practice_queries.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* Simple query -Fetch first_name and last_name columns from artist table */ -SELECT first_name, last_name FROM artist; - -/* Query with filters -Fetches titles from record table where year is 1973 and genre is Reggae */ -SELECT title FROM record -WHERE year = 1973 -AND genre = "Reggae"; \ No newline at end of file diff --git a/week-4/record-store-app/sql/record-store.sql b/week-4/record-store-app/sql/record-store.sql deleted file mode 100644 index c96ba60..0000000 --- a/week-4/record-store-app/sql/record-store.sql +++ /dev/null @@ -1,58 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS record, artist, customer, transaction, orderline; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -); - -/* Define table for storing records (products) */ -CREATE TABLE record ( - id INT AUTO_INCREMENT, - title VARCHAR(50) NOT NULL, - artist_id INT, - genre VARCHAR(50), - year YEAR(4), - price DECIMAL(10, 2) unsigned NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (artist_id) - REFERENCES artist (id) -); - -/* Define table for storing customers */ -CREATE TABLE customer ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50) NOT NULL, - last_name VARCHAR(50) NOT NULL, - email_address VARCHAR(50) NOT NULL, - address_1 VARCHAR(50) NOT NULL, - address_2 VARCHAR(50), - postcode VARCHAR(10) NOT NULL, - PRIMARY KEY (id) -); - -/* Define table for storing orders */ -CREATE TABLE transaction ( - id INT AUTO_INCREMENT, - customer_id INT NOT NULL, - delivery_method INT, - PRIMARY KEY (id), - FOREIGN KEY (customer_id) - REFERENCES customer(id) -); - -/* Define table for storing orderlines */ -CREATE TABLE orderline ( - id INT AUTO_INCREMENT, - transaction_id INT, - product_id INT, - quantity INT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (transaction_id) - REFERENCES transaction(id), - FOREIGN KEY (product_id) - REFERENCES record(id) -); diff --git a/week-4/record-store-app/templates/footer.html b/week-4/record-store-app/templates/footer.html deleted file mode 100644 index 2ab5c0d..0000000 --- a/week-4/record-store-app/templates/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - </body> -</html> diff --git a/week-4/record-store-app/templates/header.html b/week-4/record-store-app/templates/header.html deleted file mode 100644 index 373b26f..0000000 --- a/week-4/record-store-app/templates/header.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>Record Store</title> - </head> - <body> \ No newline at end of file diff --git a/week-4/record-store-app/templates/navigation.html b/week-4/record-store-app/templates/navigation.html deleted file mode 100644 index 1f88a9e..0000000 --- a/week-4/record-store-app/templates/navigation.html +++ /dev/null @@ -1,7 +0,0 @@ -<nav> - <ul> - <li><a href="?page=home" title="home">Home</a></li> - <li><a href="?page=record" title="records">Records</a></li> - <li><a href="?page=artist" title="artists">Artists</a></li> - </ul> -</nav> diff --git a/week-4/record-store-app/views/404.php b/week-4/record-store-app/views/404.php deleted file mode 100644 index 7ae2fe7..0000000 --- a/week-4/record-store-app/views/404.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Page not found</h1>"; -$content .= "<p>Sorry, the page you requested could not be found.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-4/record-store-app/views/artist.php b/week-4/record-store-app/views/artist.php deleted file mode 100644 index 73697e6..0000000 --- a/week-4/record-store-app/views/artist.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Artists</h1>"; - -// fetch records as a result set -$sql = "SELECT first_name, last_name FROM artist"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $content .= "<table border='1'><tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['first_name']."</td>"; - $content .= "<td>".$row['last_name']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-4/record-store-app/views/home.php b/week-4/record-store-app/views/home.php deleted file mode 100644 index dc1ed44..0000000 --- a/week-4/record-store-app/views/home.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Welcome to Goldsmith's Record Store</h1>"; -$content .= "<p>Follow the links above to browse the store.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-4/record-store-app/views/record.php b/week-4/record-store-app/views/record.php deleted file mode 100644 index e4ea6a3..0000000 --- a/week-4/record-store-app/views/record.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Records</h1>"; - -// fetch records as a result set -$sql = "SELECT title, genre, price FROM record"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $content .= "<table border='1'><tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-5/record-store-app/README.txt b/week-5/record-store-app/README.txt deleted file mode 100644 index b685e0d..0000000 --- a/week-5/record-store-app/README.txt +++ /dev/null @@ -1,22 +0,0 @@ -********************************* -* RECORD STORE APPLICATION * -********************************* - -Description ------------ -This is a demo record store application. You can use it to help you complete lab 5. It is You can also read this README file to find out the sorts of things that should be included in a README file! - -Author & Contact ----------------- -Sorrel Harriet s.harriet@gold.ac.uk - -Installation Instructions -------------------------- -+ Check you have a LAMP stack installed with PHP>5 and MySQL>5 -+ Upload the application to your web root folder. -+ Run the record-store.sql file on your database. -+ Run the dummy_data.sql file to insert some data. - -Configuration Instructions --------------------------- -Modify the includes/db_connect.php script with your MySQL database credentials. \ No newline at end of file diff --git a/week-5/record-store-app/includes/db_connect.php b/week-5/record-store-app/includes/db_connect.php deleted file mode 100644 index 8787faf..0000000 --- a/week-5/record-store-app/includes/db_connect.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/* Open a new connection to the MySQL server */ - -/* connect to the database */ -$link = mysqli_connect( - 'localhost', - 'YOUR_USERNAME', - 'YOUR_PASSWORD', - 'YOUR_DB_NAME' -); - -/* check connection succeeded */ -if (mysqli_connect_errno()) { - echo "Failed to connect to MySQL: " . mysqli_connect_error(); -} - -?> \ No newline at end of file diff --git a/week-5/record-store-app/index.php b/week-5/record-store-app/index.php deleted file mode 100644 index 9046287..0000000 --- a/week-5/record-store-app/index.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -// connect to the database -require('includes/db_connect.php'); - -// include the header HTML -include('templates/header.html'); - -// include the navigation HTML -include('templates/navigation.html'); - -// get the page id from the URL -// if no parameter detected... -if (!isset($_GET['page'])) { - $id = 'home'; // display home page -} else { - $id = $_GET['page']; // else requested page -} - -// use switch to determine which view to serve based on $id -switch ($id) { -case 'home' : - include 'views/home.php'; - break; -case 'record' : - include 'views/record.php'; - break; -case 'artist' : - include 'views/artist.php'; - break; -case 'orders' : - include 'views/orders.php'; - break; -case 'order' : - include 'views/order.php'; - break; -default : - include 'views/404.php'; -} - -// close the connection to the database -mysqli_close($link); - -// include the footer HTML -include('templates/footer.html'); - -?> diff --git a/week-5/record-store-app/sql/dummy_data.sql b/week-5/record-store-app/sql/dummy_data.sql deleted file mode 100644 index 9a8c9ea..0000000 --- a/week-5/record-store-app/sql/dummy_data.sql +++ /dev/null @@ -1,51 +0,0 @@ -/* Note that, because foreign key values are being -inserted manually, tables must be recreated before running -this code in order to reset AUTO_INCREMENT */ - -/* Statement to insert some records in the artist table */ -INSERT INTO artist (id, first_name, last_name) -VALUES -(NULL, 'Bob', 'Marley'), -(NULL, 'Peter', 'Tosh'), -(NULL, 'Burning', 'Spear'), -(NULL, 'Alton', 'Ellis'), -(NULL, 'Gregory', 'Issacs'), -(NULL, 'Desmond', 'Dekker'); - -INSERT INTO record (ean, title, artist_id, genre, year, price) -VALUES -('00562056', 'Soul Rebel', 1, 'Reggae', 1970, 25.99 ), -('50264967', 'Catch A Fire', 1, 'Reggae', 1973, 25.99 ), -('00748396', 'Natty Dread', 1, 'Reggae', 1974, 20.99 ), -('00495739', 'Babylon By Bus', 1, 'Reggae', 1978, 24.99 ), -('00738432', 'Legalize It', 2, 'Reggae', 1976, 22.99 ), -('50847583', 'Bush Doctor', 2, 'Reggae', 1978, 20.99 ), -('30748743', 'Marcus Garvey', 3, 'Reggae', 1975, 24.99 ), -('50856384', 'Night Nurse', 5, 'Reggae', 1982, 17.99 ), -('50264972', 'Mr Issacs', 5, 'Reggae', 1982, 9.99 ), -('00649573', 'Black and Dekker', 6, 'Reggae', 1980, 19.99 ), -('00625485', 'Sunday Coming', 4, 'Reggae', 1970, 15.99 ); - -INSERT INTO customer (id, first_name, last_name, email_address, address_1, address_2, postcode) -VALUES -(NULL, 'John', 'Smith', 'john@smith.com', '1 Fake Street', 'London', 'SE3 5RD'), -(NULL, 'Sukie', 'Bapswent', 's.baps@gmail.com', '64 The Terrace', 'Whitby', 'YO65 3TR'), -(NULL, 'John', 'Thumb', 'jthumb@gmail.com', '25 Fantasy Grove', 'Brighton', 'BR2 6LV'); - -INSERT INTO transaction (id, customer_id, delivery_method, dt_date) -VALUES -(NULL, 1, 2, '2015-07-01 14:34:58'), -(NULL, 1, 2, '2015-04-01 11:22:35'), -(NULL, 3, 1, '2015-04-01 19:47:03'), -(NULL, 2, 1, '2015-05-11 22:01:19'); - -INSERT INTO orderline (id, transaction_id, record_ean, quantity) -VALUES -(NULL, 1, '00562056', 1), -(NULL, 1, '00495739', 1), -(NULL, 2, '00649573', 2), -(NULL, 2, '00495739', 1), -(NULL, 3, '00738432', 2), -(NULL, 3, '00562056', 1), -(NULL, 3, '00625485', 1), -(NULL, 4, '00562056', 2); diff --git a/week-5/record-store-app/sql/practice_queries.sql b/week-5/record-store-app/sql/practice_queries.sql deleted file mode 100644 index ebb0dff..0000000 --- a/week-5/record-store-app/sql/practice_queries.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* Simple query -Fetch first_name and last_name columns from artist table */ -SELECT first_name, last_name FROM artist; - -/* Query with filters -Fetches titles from record table where year is 1973 and genre is Reggae */ -SELECT title FROM record -WHERE year = 1973 -AND genre = "Reggae"; \ No newline at end of file diff --git a/week-5/record-store-app/sql/record-store.sql b/week-5/record-store-app/sql/record-store.sql deleted file mode 100644 index 4017cc2..0000000 --- a/week-5/record-store-app/sql/record-store.sql +++ /dev/null @@ -1,62 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS orderline, transaction, customer, record, artist; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -) ENGINE=InnoDB; - -/* Define table for storing records (products) */ -CREATE TABLE record ( - ean VARCHAR(8), - title VARCHAR(50) NOT NULL, - artist_id INT, - genre VARCHAR(50), - year YEAR(4), - price DECIMAL(10, 2) unsigned NOT NULL, - PRIMARY KEY (ean), - FOREIGN KEY (artist_id) - REFERENCES artist (id) - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for storing customers */ -CREATE TABLE customer ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50) NOT NULL, - last_name VARCHAR(50) NOT NULL, - email_address VARCHAR(50) NOT NULL, - address_1 VARCHAR(50) NOT NULL, - address_2 VARCHAR(50), - postcode VARCHAR(10) NOT NULL, - PRIMARY KEY (id) -) ENGINE=InnoDB; - -/* Define table for storing orders */ -CREATE TABLE transaction ( - id INT AUTO_INCREMENT, - customer_id INT NOT NULL, - delivery_method INT, - dt_date DATETIME, - PRIMARY KEY (id), - FOREIGN KEY (customer_id) - REFERENCES customer(id) -) ENGINE=InnoDB; - -/* Define table for storing orderlines */ -CREATE TABLE orderline ( - id INT AUTO_INCREMENT, - transaction_id INT, - record_ean VARCHAR(8), - quantity INT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (transaction_id) - REFERENCES transaction(id), - FOREIGN KEY (record_ean) - REFERENCES record(ean) - ON UPDATE CASCADE - ON DELETE CASCADE -) ENGINE=InnoDB; diff --git a/week-5/record-store-app/templates/footer.html b/week-5/record-store-app/templates/footer.html deleted file mode 100644 index 2ab5c0d..0000000 --- a/week-5/record-store-app/templates/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - </body> -</html> diff --git a/week-5/record-store-app/templates/header.html b/week-5/record-store-app/templates/header.html deleted file mode 100644 index 373b26f..0000000 --- a/week-5/record-store-app/templates/header.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>Record Store</title> - </head> - <body> \ No newline at end of file diff --git a/week-5/record-store-app/templates/navigation.html b/week-5/record-store-app/templates/navigation.html deleted file mode 100644 index aadcc96..0000000 --- a/week-5/record-store-app/templates/navigation.html +++ /dev/null @@ -1,7 +0,0 @@ -<nav> - <ul> - <li><a href="?page=home" title="home">Home</a></li> - <li><a href="?page=record" title="records">Records</a></li> - <li><a href="?page=orders" title="orders">Orders</a></li> - </ul> -</nav> diff --git a/week-5/record-store-app/views/404.php b/week-5/record-store-app/views/404.php deleted file mode 100644 index 7ae2fe7..0000000 --- a/week-5/record-store-app/views/404.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Page not found</h1>"; -$content .= "<p>Sorry, the page you requested could not be found.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-5/record-store-app/views/artist.php b/week-5/record-store-app/views/artist.php deleted file mode 100644 index ea371d7..0000000 --- a/week-5/record-store-app/views/artist.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -// check if id parameter was not set in query string -if (!isset($_GET['id'])) { - - // define $content with suitable message - $content = "<h1>I don't know which artist you're looking for...</h1>"; - -} else { // id was set, so carry on... - - // define $artist_id variable and assign value of id parameter - $artist_id = $_GET['id']; - - // fetch record titles for artist with id matching $artist_id - $sql = "SELECT r.title, r.year, r.price, a.first_name, a.last_name - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - WHERE a.id=".$artist_id." - ORDER BY year ASC"; - - $result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - - // define a row counter - $i = 0; - - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - - // do this if we are on first row - if ($i == 0) { - - // initialise $content string, assigning it a page header - $content = "<h1>".$row['first_name']." ".$row['last_name']." Records</h1>"; - // append $content string with table definition - $content .= "<table border='1'><tbody>"; - - } - - // append table rows to $content string - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['year']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "</tr>"; - - // increment the row counter - $i++; - - } - - // append $content string with closing table tags - $content .= "</tbody></table>"; - - // free result set - mysqli_free_result($result); - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-5/record-store-app/views/home.php b/week-5/record-store-app/views/home.php deleted file mode 100644 index dc1ed44..0000000 --- a/week-5/record-store-app/views/home.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Welcome to Goldsmith's Record Store</h1>"; -$content .= "<p>Follow the links above to browse the store.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-5/record-store-app/views/order.php b/week-5/record-store-app/views/order.php deleted file mode 100644 index a1af92d..0000000 --- a/week-5/record-store-app/views/order.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php -/* ************************************************************** -* TASK 2: Create a view which: * -* - outputs the order details for an order based * -* on the value of the order_id parameter * -* - for each item in the order, the following * -* details should be displayed: * -* | EAN | TITLE | QUANTITY | PRICE | SUBTOTAL | * -* - the order total should also be displayed. * -****************************************************************/ - -// check the order_id parameter has been set in the URL -if (isset($_GET['order_id'])) -{ - $order_id = $_GET['order_id']; -} else { - $order_id = -1; // if not, set to an implausible value -} - -// fetch order details associated with current order id -$sql = "INSERT YOUR SQL QUERY HERE!"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - - // Find the number of rows returned - $num_rows = mysqli_num_rows($result); - - // Check it's not 0 - if ($num_rows == 0) { - $content = "<h1>Order not found</h1>"; - } else { - // create variable for content HTML - $content = "<h1>Order ".$order_id."</h1>"; - $content .= "<table border='1'>"; - $content .= "<thead><tr> - <th>EAN</th> - <th>Title</th> - <th>Quantity</th> - <th>Price</th> - <th>Total</th> - </tr></thead>"; - $content .= "<tbody>"; - // initialise total order price to 0 - $total = 0.00; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $subtotal = 0.00; // <-- CALCULATE SUBTOTAL! - $total = 0.00; // <-- KEEP RUNNING ORDER TOTAL! - $content .= "<tr>"; - $content .= "<td>".$row['ean']."</td>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['quantity']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "<td>£".$subtotal."</td>"; - $content .= "</tr>"; - } - $content .= "<tr><td colspan=4><b>TOTAL</b><td><b>£".$total."</b></td></tr>"; - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-5/record-store-app/views/order_example.php b/week-5/record-store-app/views/order_example.php deleted file mode 100644 index 0f81c63..0000000 --- a/week-5/record-store-app/views/order_example.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -// check the order_id parameter has been set in the URL -if (isset($_GET['order_id'])) -{ - $order_id = $_GET['order_id']; -} else { - $order_id = -1; // if not, set to an implausible value -} - -// fetch order details associated with current order id -$sql = "SELECT r.ean, r.title, ol.quantity, ol.transaction_id, r.price - FROM record r - INNER JOIN orderline ol - ON ol.record_ean=r.ean - WHERE ol.transaction_id=".$order_id; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - - // Find the number of rows returned - $num_rows = mysqli_num_rows($result); - - // Check it's not 0 - if ($num_rows == 0) { - $content = "<h1>Order not found</h1>"; - } else { - // create variable for content HTML - $content = "<h1>Order ".$order_id."</h1>"; - $content .= "<table border='1'>"; - $content .= "<thead><tr> - <th>EAN</th> - <th>Title</th> - <th>Quantity</th> - <th>Price</th> - <th>Total</th> - </tr></thead>"; - $content .= "<tbody>"; - // initialise total order price to 0 - $total = 0.00; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $subtotal = $row['quantity'] * $row['price']; - $total = $total + $subtotal; - $content .= "<tr>"; - $content .= "<td>".$row['ean']."</td>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['quantity']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "<td>£".$subtotal."</td>"; - $content .= "</tr>"; - } - $content .= "<tr><td colspan=4><b>TOTAL</b><td><b>£".$total."</b></td></tr>"; - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-5/record-store-app/views/orders.php b/week-5/record-store-app/views/orders.php deleted file mode 100644 index 5dd6ca5..0000000 --- a/week-5/record-store-app/views/orders.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php -/* ************************************************************** -* TASK 1: Create a view which: * -* - outputs a list of all transactions (orders) * -* - the orders should be grouped by customer ID * -* - each transaction links to an `order' view, setting a * -* parameter `order_id' in the URL query string * -****************************************************************/ - -// initialise string variable for content HTML -$content = "<h1>Orders</h1>"; - -// fetch all transactions (orders) and group by customer id -$sql = "INSERT YOUR SQL STATEMENT HERE!"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $num_rows = mysqli_num_rows($result); - if ($num_rows > 0) - { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Order ID</th><th>Customer ID</th></tr></thead>"; - $content .= "<tbody>"; - // fetch each row in result set as an associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - } else { - $content .= "<p>There are no orders to display.</p>"; - } - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-5/record-store-app/views/orders_example.php b/week-5/record-store-app/views/orders_example.php deleted file mode 100644 index d122891..0000000 --- a/week-5/record-store-app/views/orders_example.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -// initialise string variable for content HTML -$content = "<h1>Orders</h1>"; - -// fetch all transactions (orders) and group by customer id -$sql = "SELECT id, customer_id FROM transaction - ORDER BY customer_id"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) -{ - echo mysqli_error($link); -} else { - $num_rows = mysqli_num_rows($result); - if ($num_rows > 0) - { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Order ID</th><th>Customer ID</th></tr></thead>"; - $content .= "<tbody>"; - // fetch each row in result set as an associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td><a href=\"?page=order&order_id=".$row['id']."\">".$row['id']."</a></td>"; - $content .= "<td>".$row['customer_id']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - } else { - $content .= "<p>There are no orders to display.</p>"; - } - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-5/record-store-app/views/record.php b/week-5/record-store-app/views/record.php deleted file mode 100644 index 6c2c4f1..0000000 --- a/week-5/record-store-app/views/record.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Records</h1>"; - -// fetch records as a result set -$sql = "SELECT r.title, a.first_name, a.last_name, r.genre, r.price, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - ORDER BY r.title, r.price DESC"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $content .= "<table border='1'><tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-6/record-store-app/README.txt b/week-6/record-store-app/README.txt deleted file mode 100644 index b685e0d..0000000 --- a/week-6/record-store-app/README.txt +++ /dev/null @@ -1,22 +0,0 @@ -********************************* -* RECORD STORE APPLICATION * -********************************* - -Description ------------ -This is a demo record store application. You can use it to help you complete lab 5. It is You can also read this README file to find out the sorts of things that should be included in a README file! - -Author & Contact ----------------- -Sorrel Harriet s.harriet@gold.ac.uk - -Installation Instructions -------------------------- -+ Check you have a LAMP stack installed with PHP>5 and MySQL>5 -+ Upload the application to your web root folder. -+ Run the record-store.sql file on your database. -+ Run the dummy_data.sql file to insert some data. - -Configuration Instructions --------------------------- -Modify the includes/db_connect.php script with your MySQL database credentials. \ No newline at end of file diff --git a/week-6/record-store-app/includes/db_connect.php b/week-6/record-store-app/includes/db_connect.php deleted file mode 100644 index 8787faf..0000000 --- a/week-6/record-store-app/includes/db_connect.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/* Open a new connection to the MySQL server */ - -/* connect to the database */ -$link = mysqli_connect( - 'localhost', - 'YOUR_USERNAME', - 'YOUR_PASSWORD', - 'YOUR_DB_NAME' -); - -/* check connection succeeded */ -if (mysqli_connect_errno()) { - echo "Failed to connect to MySQL: " . mysqli_connect_error(); -} - -?> \ No newline at end of file diff --git a/week-6/record-store-app/index.php b/week-6/record-store-app/index.php deleted file mode 100644 index 2995f49..0000000 --- a/week-6/record-store-app/index.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -// connect to the database -require('includes/db_connect.php'); - -// include the header HTML -include('templates/header.html'); - -// include the navigation HTML -include('templates/navigation.html'); - -// get the page id from the URL -// if no parameter detected... -if (!isset($_GET['page'])) { - $id = 'home'; // display home page -} else { - $id = $_GET['page']; // else requested page -} - -// use switch to determine which view to serve based on $id -switch ($id) { -case 'home' : - include 'views/home.php'; - break; -case 'record' : - include 'views/record.php'; - break; -case 'artist' : - include 'views/artist.php'; - break; -case 'orders' : - include 'views/orders.php'; - break; -case 'order' : - include 'views/order.php'; - break; -case 'add-record' : - include 'views/add-record.php'; - break; -default : - include 'views/404.php'; -} - -// close the connection to the database -mysqli_close($link); - -// include the footer HTML -include('templates/footer.html'); - -?> \ No newline at end of file diff --git a/week-6/record-store-app/sql/dummy_data.sql b/week-6/record-store-app/sql/dummy_data.sql deleted file mode 100644 index 9a8c9ea..0000000 --- a/week-6/record-store-app/sql/dummy_data.sql +++ /dev/null @@ -1,51 +0,0 @@ -/* Note that, because foreign key values are being -inserted manually, tables must be recreated before running -this code in order to reset AUTO_INCREMENT */ - -/* Statement to insert some records in the artist table */ -INSERT INTO artist (id, first_name, last_name) -VALUES -(NULL, 'Bob', 'Marley'), -(NULL, 'Peter', 'Tosh'), -(NULL, 'Burning', 'Spear'), -(NULL, 'Alton', 'Ellis'), -(NULL, 'Gregory', 'Issacs'), -(NULL, 'Desmond', 'Dekker'); - -INSERT INTO record (ean, title, artist_id, genre, year, price) -VALUES -('00562056', 'Soul Rebel', 1, 'Reggae', 1970, 25.99 ), -('50264967', 'Catch A Fire', 1, 'Reggae', 1973, 25.99 ), -('00748396', 'Natty Dread', 1, 'Reggae', 1974, 20.99 ), -('00495739', 'Babylon By Bus', 1, 'Reggae', 1978, 24.99 ), -('00738432', 'Legalize It', 2, 'Reggae', 1976, 22.99 ), -('50847583', 'Bush Doctor', 2, 'Reggae', 1978, 20.99 ), -('30748743', 'Marcus Garvey', 3, 'Reggae', 1975, 24.99 ), -('50856384', 'Night Nurse', 5, 'Reggae', 1982, 17.99 ), -('50264972', 'Mr Issacs', 5, 'Reggae', 1982, 9.99 ), -('00649573', 'Black and Dekker', 6, 'Reggae', 1980, 19.99 ), -('00625485', 'Sunday Coming', 4, 'Reggae', 1970, 15.99 ); - -INSERT INTO customer (id, first_name, last_name, email_address, address_1, address_2, postcode) -VALUES -(NULL, 'John', 'Smith', 'john@smith.com', '1 Fake Street', 'London', 'SE3 5RD'), -(NULL, 'Sukie', 'Bapswent', 's.baps@gmail.com', '64 The Terrace', 'Whitby', 'YO65 3TR'), -(NULL, 'John', 'Thumb', 'jthumb@gmail.com', '25 Fantasy Grove', 'Brighton', 'BR2 6LV'); - -INSERT INTO transaction (id, customer_id, delivery_method, dt_date) -VALUES -(NULL, 1, 2, '2015-07-01 14:34:58'), -(NULL, 1, 2, '2015-04-01 11:22:35'), -(NULL, 3, 1, '2015-04-01 19:47:03'), -(NULL, 2, 1, '2015-05-11 22:01:19'); - -INSERT INTO orderline (id, transaction_id, record_ean, quantity) -VALUES -(NULL, 1, '00562056', 1), -(NULL, 1, '00495739', 1), -(NULL, 2, '00649573', 2), -(NULL, 2, '00495739', 1), -(NULL, 3, '00738432', 2), -(NULL, 3, '00562056', 1), -(NULL, 3, '00625485', 1), -(NULL, 4, '00562056', 2); diff --git a/week-6/record-store-app/sql/practice_queries.sql b/week-6/record-store-app/sql/practice_queries.sql deleted file mode 100644 index ebb0dff..0000000 --- a/week-6/record-store-app/sql/practice_queries.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* Simple query -Fetch first_name and last_name columns from artist table */ -SELECT first_name, last_name FROM artist; - -/* Query with filters -Fetches titles from record table where year is 1973 and genre is Reggae */ -SELECT title FROM record -WHERE year = 1973 -AND genre = "Reggae"; \ No newline at end of file diff --git a/week-6/record-store-app/sql/record-store.sql b/week-6/record-store-app/sql/record-store.sql deleted file mode 100644 index 7256daf..0000000 --- a/week-6/record-store-app/sql/record-store.sql +++ /dev/null @@ -1,62 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS orderline, transaction, customer, record, artist; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -) ENGINE=InnoDB; - -/* Define table for storing records (products) */ -CREATE TABLE record ( - ean CHAR(8) NOT NULL, - title VARCHAR(50) NOT NULL, - artist_id INT, - genre VARCHAR(50), - year YEAR(4), - price DECIMAL(10, 2) unsigned NOT NULL, - PRIMARY KEY (ean), - FOREIGN KEY (artist_id) - REFERENCES artist (id) - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for storing customers */ -CREATE TABLE customer ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50) NOT NULL, - last_name VARCHAR(50) NOT NULL, - email_address VARCHAR(50) NOT NULL, - address_1 VARCHAR(50) NOT NULL, - address_2 VARCHAR(50), - postcode VARCHAR(10) NOT NULL, - PRIMARY KEY (id) -) ENGINE=InnoDB; - -/* Define table for storing orders */ -CREATE TABLE transaction ( - id INT AUTO_INCREMENT, - customer_id INT NOT NULL, - delivery_method INT, - dt_date DATETIME, - PRIMARY KEY (id), - FOREIGN KEY (customer_id) - REFERENCES customer(id) -) ENGINE=InnoDB; - -/* Define table for storing orderlines */ -CREATE TABLE orderline ( - id INT AUTO_INCREMENT, - transaction_id INT, - record_ean CHAR(8), - quantity INT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (transaction_id) - REFERENCES transaction(id), - FOREIGN KEY (record_ean) - REFERENCES record(ean) - ON UPDATE CASCADE - ON DELETE CASCADE -) ENGINE=InnoDB; diff --git a/week-6/record-store-app/templates/footer.html b/week-6/record-store-app/templates/footer.html deleted file mode 100644 index 2ab5c0d..0000000 --- a/week-6/record-store-app/templates/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - </body> -</html> diff --git a/week-6/record-store-app/templates/header.html b/week-6/record-store-app/templates/header.html deleted file mode 100644 index 373b26f..0000000 --- a/week-6/record-store-app/templates/header.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>Record Store</title> - </head> - <body> \ No newline at end of file diff --git a/week-6/record-store-app/templates/navigation.html b/week-6/record-store-app/templates/navigation.html deleted file mode 100644 index bf4662e..0000000 --- a/week-6/record-store-app/templates/navigation.html +++ /dev/null @@ -1,8 +0,0 @@ -<nav> - <ul> - <li><a href="?page=home" title="home">Home</a></li> - <li><a href="?page=record" title="records">Records</a></li> - <li><a href="?page=orders" title="orders">Orders</a></li> - <li><a href="?page=add-record" title="add record">Add record</a></li> - </ul> -</nav> diff --git a/week-6/record-store-app/views/404.php b/week-6/record-store-app/views/404.php deleted file mode 100644 index 7ae2fe7..0000000 --- a/week-6/record-store-app/views/404.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Page not found</h1>"; -$content .= "<p>Sorry, the page you requested could not be found.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-6/record-store-app/views/add-record-insecure.php b/week-6/record-store-app/views/add-record-insecure.php deleted file mode 100644 index 841a507..0000000 --- a/week-6/record-store-app/views/add-record-insecure.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -$action = $_SERVER["PHP_SELF"]."?page=add-record"; - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' method='POST'> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = $_POST["ean"]; - $title = $_POST["title"]; - $artist_id = $_POST["artist_id"]; - $genre = $_POST["genre"]; - $year = $_POST["year"]; - $price = $_POST["price"]; - - // define the insertion query - $sql = "INSERT INTO record (ean, title, artist_id, genre, year, price) - VALUES ('$ean', '$title', '$artist_id', '$genre', '$year', '$price')"; - - // run the query to insert the data - $result = mysqli_query($link, $sql); - - // check if the query went ok - if ($result === false) { - echo mysqli_error($link); - } else { - $content .= "Record successfully added to database."; - } -} - -// ------- END form processing code... ------- - -// output the html -echo($content); - -?> diff --git a/week-6/record-store-app/views/add-record.php b/week-6/record-store-app/views/add-record.php deleted file mode 100644 index 1232540..0000000 --- a/week-6/record-store-app/views/add-record.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -// -> htmlspecialchars() is used to replace special characters with HTML entities */ -$action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=add-record"); - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' method='POST'> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// define a function to sanitise user input (this would ideally be in includes folder) -// helps protect against XSS -function clean_input($data) { - $data = trim($data); // strips unnecessary characters from beginning/end - $data = stripslashes($data); // remove backslashes - $data = htmlspecialchars($data); // replace special characters with HTML entities - return $data; -} - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = mysqli_real_escape_string($link, clean_input($_POST["ean"])); - $title = mysqli_real_escape_string($link, clean_input($_POST["title"])); - $artist_id = mysqli_real_escape_string($link, clean_input($_POST["artist_id"]); - $genre = mysqli_real_escape_string($link, clean_input($_POST["genre"])); - $year = mysqli_real_escape_string($link, clean_input($_POST["year"])); - $price = mysqli_real_escape_string($link, clean_input($_POST["price"])); - - // define the insertion query - $sql = sprintf("INSERT INTO record (ean, title, artist_id, genre, year, price) - VALUES ('%s', '%s', %d, '%s', %d, %f)", $ean, $title, $artist_id, $genre, $year, $price); - - // run the query to insert the data - $result = mysqli_query($link, $sql); - - // check if the query went ok - if ($result === false) { - echo mysqli_error($link); - } else { - $content .= "Record successfully added to database."; - } - - } - - // ------- END form processing code... ------- - - // output the html - echo($content); - -?> diff --git a/week-6/record-store-app/views/artist.php b/week-6/record-store-app/views/artist.php deleted file mode 100644 index ea371d7..0000000 --- a/week-6/record-store-app/views/artist.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -// check if id parameter was not set in query string -if (!isset($_GET['id'])) { - - // define $content with suitable message - $content = "<h1>I don't know which artist you're looking for...</h1>"; - -} else { // id was set, so carry on... - - // define $artist_id variable and assign value of id parameter - $artist_id = $_GET['id']; - - // fetch record titles for artist with id matching $artist_id - $sql = "SELECT r.title, r.year, r.price, a.first_name, a.last_name - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - WHERE a.id=".$artist_id." - ORDER BY year ASC"; - - $result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - - // define a row counter - $i = 0; - - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - - // do this if we are on first row - if ($i == 0) { - - // initialise $content string, assigning it a page header - $content = "<h1>".$row['first_name']." ".$row['last_name']." Records</h1>"; - // append $content string with table definition - $content .= "<table border='1'><tbody>"; - - } - - // append table rows to $content string - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['year']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "</tr>"; - - // increment the row counter - $i++; - - } - - // append $content string with closing table tags - $content .= "</tbody></table>"; - - // free result set - mysqli_free_result($result); - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-6/record-store-app/views/edit-record.php b/week-6/record-store-app/views/edit-record.php deleted file mode 100644 index ed8644a..0000000 --- a/week-6/record-store-app/views/edit-record.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php -/* - -IGNORE THIS SCRIPT AS IT IS INCOMPLETE - -*/ - -// check if id parameter was not set in query string -if (isset($_GET['id'])) { - - $content = "<h1>Edit record</h1>"; - - // define $ean variable and assign value of id parameter - $ean = $_GET['id']; - - // define query to fetch record details - $sql = sprintf("SELECT title, artist_id, genre, year, price - FROM record - WHERE ean=%d",$ean); - - $result = mysqli_query($link, $sql); - $title = $artist_id = $genre = $year = $price = ""; - - if ($result === false) { - echo mysqli_error($link); - } else { - $row = mysqli_fetch_assoc($result); - - $title = $row['title']; - $artist_id = $row['artist_id']; - $genre = $row['genre']; - $year = $row['year']; - $price = $row['price']; - unset($result); - } - - // define a variable with path to the script which will process form - $action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=edit-record"); - - // fetch the artists so that we have access to their names and IDs - $sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - - $result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - // if the id matches current artist_id, show option as selected - if ($row['id'] == $artist_id) { - $options .= "<option value='".$row['id']."' selected>"; - } else { - $options .= "<option value='".$row['id']."'>"; - } - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } - unset($result); - } - - // define the form HTML (would ideally be in a template) - $form_html = "<form action='".$action."' method='POST'> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean' value='".$ean."'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' value='".$title."' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' value='".$genre."' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' value='".$year."' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' value='".$price."' /> - </fieldset> - <button type='submit'>Submit</button> - </form>"; - - // append form HTML to content string - $content .= $form_html; - - // ------- START form processing code... ------- - - // define a function to sanitise user input (this would ideally be in includes folder) - // helps protect against XSS - function clean_input($data) { - $data = trim($data); // strips unnecessary characters from beginning/end - $data = stripslashes($data); // remove backslashes - $data = htmlspecialchars($data); // replace special characters with HTML entities - return $data; - } - - // check if there was a POST request - if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = mysqli_real_escape_string($link, clean_input($_POST["ean"])); - $title = mysqli_real_escape_string($link, clean_input($_POST["title"])); - $artist_id = mysqli_real_escape_string($link, clean_input($_POST["artist_id"])); - $genre = mysqli_real_escape_string($link, clean_input($_POST["genre"])); - $year = mysqli_real_escape_string($link, clean_input($_POST["year"])); - $price = mysqli_real_escape_string($link, clean_input($_POST["price"])); -} - - // define the insertion query - $sql = sprintf("UPDATE record - SET ean=%d, title=%d, artist_id=%d, genre=%d, year=%d, price=%d - WHERE ean=%d", $ean, $title, $artist_id, $genre, $year, $price, $ean); - - // run the query to update the data - $result = mysqli_query($link, $sql); - - // check if the query went ok - if ($result === false) { - echo mysqli_error($link); - } else { - $content .= "Record updated successfully."; - } -} else { - $content = "Not sure what you want to edit."; -} - -// ------- END form processing code... ------- - -// output the html -echo($content); - -?> \ No newline at end of file diff --git a/week-6/record-store-app/views/home.php b/week-6/record-store-app/views/home.php deleted file mode 100644 index dc1ed44..0000000 --- a/week-6/record-store-app/views/home.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Welcome to Goldsmith's Record Store</h1>"; -$content .= "<p>Follow the links above to browse the store.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-6/record-store-app/views/order.php b/week-6/record-store-app/views/order.php deleted file mode 100644 index 0f81c63..0000000 --- a/week-6/record-store-app/views/order.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -// check the order_id parameter has been set in the URL -if (isset($_GET['order_id'])) -{ - $order_id = $_GET['order_id']; -} else { - $order_id = -1; // if not, set to an implausible value -} - -// fetch order details associated with current order id -$sql = "SELECT r.ean, r.title, ol.quantity, ol.transaction_id, r.price - FROM record r - INNER JOIN orderline ol - ON ol.record_ean=r.ean - WHERE ol.transaction_id=".$order_id; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - - // Find the number of rows returned - $num_rows = mysqli_num_rows($result); - - // Check it's not 0 - if ($num_rows == 0) { - $content = "<h1>Order not found</h1>"; - } else { - // create variable for content HTML - $content = "<h1>Order ".$order_id."</h1>"; - $content .= "<table border='1'>"; - $content .= "<thead><tr> - <th>EAN</th> - <th>Title</th> - <th>Quantity</th> - <th>Price</th> - <th>Total</th> - </tr></thead>"; - $content .= "<tbody>"; - // initialise total order price to 0 - $total = 0.00; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $subtotal = $row['quantity'] * $row['price']; - $total = $total + $subtotal; - $content .= "<tr>"; - $content .= "<td>".$row['ean']."</td>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['quantity']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "<td>£".$subtotal."</td>"; - $content .= "</tr>"; - } - $content .= "<tr><td colspan=4><b>TOTAL</b><td><b>£".$total."</b></td></tr>"; - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-6/record-store-app/views/orders.php b/week-6/record-store-app/views/orders.php deleted file mode 100644 index d122891..0000000 --- a/week-6/record-store-app/views/orders.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -// initialise string variable for content HTML -$content = "<h1>Orders</h1>"; - -// fetch all transactions (orders) and group by customer id -$sql = "SELECT id, customer_id FROM transaction - ORDER BY customer_id"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) -{ - echo mysqli_error($link); -} else { - $num_rows = mysqli_num_rows($result); - if ($num_rows > 0) - { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Order ID</th><th>Customer ID</th></tr></thead>"; - $content .= "<tbody>"; - // fetch each row in result set as an associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td><a href=\"?page=order&order_id=".$row['id']."\">".$row['id']."</a></td>"; - $content .= "<td>".$row['customer_id']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - } else { - $content .= "<p>There are no orders to display.</p>"; - } - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-6/record-store-app/views/record.php b/week-6/record-store-app/views/record.php deleted file mode 100644 index 051ed1e..0000000 --- a/week-6/record-store-app/views/record.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Records</h1>"; -$content .= "<p>You are now viewing all records in the database.</p>"; - -// fetch records as a result set -$sql = "SELECT r.title, r.ean, a.first_name, a.last_name, r.genre, r.price, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - ORDER BY r.title, r.price DESC"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Title</th><th>Artist</th><th>Genre</th><th>Price</th></tr></thead>"; - $content .= "<tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-7/record-store-app/README.txt b/week-7/record-store-app/README.txt deleted file mode 100644 index e1b8128..0000000 --- a/week-7/record-store-app/README.txt +++ /dev/null @@ -1,12 +0,0 @@ -********************************* -* RECORD STORE APPLICATION * -********************************* - -Description ------------ -This folder contains the sql file you will need to complete lab 7. - -Author & Contact ----------------- -Sorrel Harriet s.harriet@gold.ac.uk - diff --git a/week-7/record-store-app/sql/record-store.sql b/week-7/record-store-app/sql/record-store.sql deleted file mode 100644 index e50d2d0..0000000 --- a/week-7/record-store-app/sql/record-store.sql +++ /dev/null @@ -1,66 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS orderline, transaction, customer, record, artist; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -) ENGINE=InnoDB; - -/* Define table for storing records (products) */ -CREATE TABLE record ( - ean CHAR(8) NOT NULL, - title VARCHAR(50) NOT NULL, - artist_id INT, - genre VARCHAR(50), - year YEAR(4), - price_gbp DECIMAL(10, 2) unsigned NOT NULL, - price_eu DECIMAL(10, 2) unsigned NOT NULL, - avg_rating DECIMAL(10, 1) unsigned, - PRIMARY KEY (ean), - FOREIGN KEY (artist_id) - REFERENCES artist (id) - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for storing customers */ -CREATE TABLE customer ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50) NOT NULL, - last_name VARCHAR(50) NOT NULL, - email_address VARCHAR(50) NOT NULL, - address VARCHAR(50) NOT NULL, - city VARCHAR(50), - postcode VARCHAR(10) NOT NULL, - wishlist TEXT, - PRIMARY KEY (id) -) ENGINE=InnoDB; - -/* Define table for storing orders */ -CREATE TABLE transaction ( - id INT AUTO_INCREMENT, - customer_id INT NOT NULL, - delivery_method INT, - dt_date DATETIME, - PRIMARY KEY (id), - FOREIGN KEY (customer_id) - REFERENCES customer(id) -) ENGINE=InnoDB; - -/* Define table for storing orderlines */ -CREATE TABLE orderline ( - id INT AUTO_INCREMENT, - transaction_id INT, - record_ean CHAR(8), - quantity INT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (transaction_id) - REFERENCES transaction(id), - FOREIGN KEY (record_ean) - REFERENCES record(ean) - ON UPDATE CASCADE - ON DELETE CASCADE -) ENGINE=InnoDB; - diff --git a/week-8/record-store-app/README.txt b/week-8/record-store-app/README.txt deleted file mode 100644 index db41256..0000000 --- a/week-8/record-store-app/README.txt +++ /dev/null @@ -1,27 +0,0 @@ -********************************* -* RECORD STORE APPLICATION * -********************************* - -Description ------------ -This is a demo record store application. You can use it to help you complete lab 8. It is You can also read this README file to find out the sorts of things that should be included in a README file! - -Author & Contact ----------------- -Sorrel Harriet s.harriet@gold.ac.uk - -Installation Instructions -------------------------- -+ Check you have a LAMP stack installed with PHP>5 and MySQL>5 -+ Upload the application to your web root folder. -+ Run the record-store.sql file on your database. -+ Run the dummy_data.sql file to insert some data. - -Configuration Instructions --------------------------- -Modify the includes/db_connect.php script with your MySQL database credentials. - -Live Demo ---------- -A demo version of this app is deployed at the following URL: -http://doc.gold.ac.uk/~sharr003/data-network-web/lab-exercises/week-8/record-store-app/ diff --git a/week-8/record-store-app/includes/db_connect.php b/week-8/record-store-app/includes/db_connect.php deleted file mode 100644 index 8787faf..0000000 --- a/week-8/record-store-app/includes/db_connect.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/* Open a new connection to the MySQL server */ - -/* connect to the database */ -$link = mysqli_connect( - 'localhost', - 'YOUR_USERNAME', - 'YOUR_PASSWORD', - 'YOUR_DB_NAME' -); - -/* check connection succeeded */ -if (mysqli_connect_errno()) { - echo "Failed to connect to MySQL: " . mysqli_connect_error(); -} - -?> \ No newline at end of file diff --git a/week-8/record-store-app/index.php b/week-8/record-store-app/index.php deleted file mode 100644 index 2995f49..0000000 --- a/week-8/record-store-app/index.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -// connect to the database -require('includes/db_connect.php'); - -// include the header HTML -include('templates/header.html'); - -// include the navigation HTML -include('templates/navigation.html'); - -// get the page id from the URL -// if no parameter detected... -if (!isset($_GET['page'])) { - $id = 'home'; // display home page -} else { - $id = $_GET['page']; // else requested page -} - -// use switch to determine which view to serve based on $id -switch ($id) { -case 'home' : - include 'views/home.php'; - break; -case 'record' : - include 'views/record.php'; - break; -case 'artist' : - include 'views/artist.php'; - break; -case 'orders' : - include 'views/orders.php'; - break; -case 'order' : - include 'views/order.php'; - break; -case 'add-record' : - include 'views/add-record.php'; - break; -default : - include 'views/404.php'; -} - -// close the connection to the database -mysqli_close($link); - -// include the footer HTML -include('templates/footer.html'); - -?> \ No newline at end of file diff --git a/week-8/record-store-app/sql/dummy_data.sql b/week-8/record-store-app/sql/dummy_data.sql deleted file mode 100644 index 7d05801..0000000 --- a/week-8/record-store-app/sql/dummy_data.sql +++ /dev/null @@ -1,67 +0,0 @@ -/* Note that, because foreign key values are being -inserted manually, tables must be recreated before running -this code in order to reset AUTO_INCREMENT */ - -/* Statement to insert some records in the artist table */ -INSERT INTO artist (id, first_name, last_name) -VALUES -(NULL, 'Bob', 'Marley'), -(NULL, 'Peter', 'Tosh'), -(NULL, 'Burning', 'Spear'), -(NULL, 'Alton', 'Ellis'), -(NULL, 'Gregory', 'Issacs'), -(NULL, 'Desmond', 'Dekker'); - -INSERT INTO record (ean, title, artist_id, genre, year, price) -VALUES -('00562056', 'Soul Rebel', 1, 'Reggae', 1970, 25.99 ), -('50264967', 'Catch A Fire', 1, 'Reggae', 1973, 25.99 ), -('00748396', 'Natty Dread', 1, 'Reggae', 1974, 20.99 ), -('00495739', 'Babylon By Bus', 1, 'Reggae', 1978, 24.99 ), -('00738432', 'Legalize It', 2, 'Reggae', 1976, 22.99 ), -('50847583', 'Bush Doctor', 2, 'Reggae', 1978, 20.99 ), -('30748743', 'Marcus Garvey', 3, 'Reggae', 1975, 24.99 ), -('50856384', 'Night Nurse', 5, 'Reggae', 1982, 17.99 ), -('50264972', 'Mr Issacs', 5, 'Reggae', 1982, 9.99 ), -('00649573', 'Black and Dekker', 6, 'Reggae', 1980, 19.99 ), -('00625485', 'Sunday Coming', 4, 'Reggae', 1970, 15.99 ); - -INSERT INTO customer (id, first_name, last_name, email_address, address_1, address_2, postcode) -VALUES -(NULL, 'John', 'Smith', 'john@smith.com', '1 Fake Street', 'London', 'SE3 5RD'), -(NULL, 'Sukie', 'Bapswent', 's.baps@gmail.com', '64 The Terrace', 'Whitby', 'YO65 3TR'), -(NULL, 'John', 'Thumb', 'jthumb@gmail.com', '25 Fantasy Grove', 'Brighton', 'BR2 6LV'); - -INSERT INTO transaction (id, customer_id, delivery_method, dt_date) -VALUES -(NULL, 1, 2, '2015-07-01 14:34:58'), -(NULL, 1, 2, '2015-04-01 11:22:35'), -(NULL, 3, 1, '2015-04-01 19:47:03'), -(NULL, 2, 1, '2015-05-11 22:01:19'); - -INSERT INTO orderline (id, transaction_id, record_ean, quantity) -VALUES -(NULL, 1, '00562056', 1), -(NULL, 1, '00495739', 1), -(NULL, 2, '00649573', 2), -(NULL, 2, '00495739', 1), -(NULL, 3, '00738432', 2), -(NULL, 3, '00562056', 1), -(NULL, 3, '50856384', 3), -(NULL, 3, '00495739', 1), -(NULL, 4, '00625485', 1), -(NULL, 4, '00562056', 2); - -INSERT INTO inventory (stock, record_ean) -VALUES -(25, '00562056'), -(18, '50264967'), -(15, '00748396'), -(20, '00495739'), -(10, '00738432'), -(7, '50847583'), -(3, '30748743'), -(34, '50856384'), -(22, '50264972'), -(15, '00649573'), -(12, '00625485'); diff --git a/week-8/record-store-app/sql/practice_queries.sql b/week-8/record-store-app/sql/practice_queries.sql deleted file mode 100644 index ebb0dff..0000000 --- a/week-8/record-store-app/sql/practice_queries.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* Simple query -Fetch first_name and last_name columns from artist table */ -SELECT first_name, last_name FROM artist; - -/* Query with filters -Fetches titles from record table where year is 1973 and genre is Reggae */ -SELECT title FROM record -WHERE year = 1973 -AND genre = "Reggae"; \ No newline at end of file diff --git a/week-8/record-store-app/sql/record-store.sql b/week-8/record-store-app/sql/record-store.sql deleted file mode 100644 index 9717088..0000000 --- a/week-8/record-store-app/sql/record-store.sql +++ /dev/null @@ -1,71 +0,0 @@ -/* Make sure tables don't exist before creation */ -DROP TABLE IF EXISTS inventory, orderline, transaction, customer, record, artist; - -/* Define table for storing artists */ -CREATE TABLE artist ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50), - last_name VARCHAR(50), - PRIMARY KEY(id) -) ENGINE=InnoDB; - -/* Define table for storing records (products) */ -CREATE TABLE record ( - ean CHAR(8) NOT NULL, - title VARCHAR(50) NOT NULL, - artist_id INT, - genre VARCHAR(50), - year YEAR(4), - price DECIMAL(10, 2) unsigned NOT NULL, - PRIMARY KEY (ean), - FOREIGN KEY (artist_id) - REFERENCES artist (id) - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for storing customers */ -CREATE TABLE customer ( - id INT AUTO_INCREMENT, - first_name VARCHAR(50) NOT NULL, - last_name VARCHAR(50) NOT NULL, - email_address VARCHAR(50) NOT NULL, - address_1 VARCHAR(50) NOT NULL, - address_2 VARCHAR(50), - postcode VARCHAR(10) NOT NULL, - PRIMARY KEY (id) -) ENGINE=InnoDB; - -/* Define table for storing orders */ -CREATE TABLE transaction ( - id INT AUTO_INCREMENT, - customer_id INT NOT NULL, - delivery_method INT, - dt_date DATETIME, - PRIMARY KEY (id), - FOREIGN KEY (customer_id) - REFERENCES customer(id) -) ENGINE=InnoDB; - -/* Define table for storing orderlines */ -CREATE TABLE orderline ( - id INT AUTO_INCREMENT, - transaction_id INT, - record_ean CHAR(8), - quantity INT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (transaction_id) - REFERENCES transaction(id), - FOREIGN KEY (record_ean) - REFERENCES record(ean) - ON UPDATE CASCADE - ON DELETE CASCADE -) ENGINE=InnoDB; - -/* Define table for inventory */ -CREATE TABLE inventory ( - stock INT unsigned DEFAULT 0, - record_ean CHAR(8), - PRIMARY KEY (stock, record_ean), - FOREIGN KEY (record_ean) - REFERENCES record (ean) -) ENGINE=InnoDB; diff --git a/week-8/record-store-app/templates/footer.html b/week-8/record-store-app/templates/footer.html deleted file mode 100644 index 2ab5c0d..0000000 --- a/week-8/record-store-app/templates/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - </body> -</html> diff --git a/week-8/record-store-app/templates/header.html b/week-8/record-store-app/templates/header.html deleted file mode 100644 index 373b26f..0000000 --- a/week-8/record-store-app/templates/header.html +++ /dev/null @@ -1,7 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>Record Store</title> - </head> - <body> \ No newline at end of file diff --git a/week-8/record-store-app/templates/navigation.html b/week-8/record-store-app/templates/navigation.html deleted file mode 100644 index bf4662e..0000000 --- a/week-8/record-store-app/templates/navigation.html +++ /dev/null @@ -1,8 +0,0 @@ -<nav> - <ul> - <li><a href="?page=home" title="home">Home</a></li> - <li><a href="?page=record" title="records">Records</a></li> - <li><a href="?page=orders" title="orders">Orders</a></li> - <li><a href="?page=add-record" title="add record">Add record</a></li> - </ul> -</nav> diff --git a/week-8/record-store-app/views/404.php b/week-8/record-store-app/views/404.php deleted file mode 100644 index 7ae2fe7..0000000 --- a/week-8/record-store-app/views/404.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Page not found</h1>"; -$content .= "<p>Sorry, the page you requested could not be found.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-8/record-store-app/views/add-record-insecure.php b/week-8/record-store-app/views/add-record-insecure.php deleted file mode 100644 index 841a507..0000000 --- a/week-8/record-store-app/views/add-record-insecure.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -$action = $_SERVER["PHP_SELF"]."?page=add-record"; - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' method='POST'> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = $_POST["ean"]; - $title = $_POST["title"]; - $artist_id = $_POST["artist_id"]; - $genre = $_POST["genre"]; - $year = $_POST["year"]; - $price = $_POST["price"]; - - // define the insertion query - $sql = "INSERT INTO record (ean, title, artist_id, genre, year, price) - VALUES ('$ean', '$title', '$artist_id', '$genre', '$year', '$price')"; - - // run the query to insert the data - $result = mysqli_query($link, $sql); - - // check if the query went ok - if ($result === false) { - echo mysqli_error($link); - } else { - $content .= "Record successfully added to database."; - } -} - -// ------- END form processing code... ------- - -// output the html -echo($content); - -?> diff --git a/week-8/record-store-app/views/add-record.php b/week-8/record-store-app/views/add-record.php deleted file mode 100644 index b1fe79d..0000000 --- a/week-8/record-store-app/views/add-record.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -$content = "<h1>Add a record</h1>"; - -// define a variable with path to the script which will process form -// -> $_SERVER["PHP_SELF"] is a path to the current script (index.php) -// -> htmlspecialchars() is used to replace special characters with HTML entities */ -$action = htmlspecialchars($_SERVER["PHP_SELF"]."?page=add-record"); - -// fetch the artists so that we have access to their names and IDs -$sql = "SELECT id, first_name, last_name - FROM artist - ORDER BY last_name"; - -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $options = ""; - // create an option for each artist - while ($row = mysqli_fetch_assoc($result)) { - $options .= "<option value='".$row['id']."'>"; - $options .= $row['first_name']." ".$row['last_name']; - $options .= "</option>"; - } -} - -// define the form HTML (would ideally be in a template) -$form_html = "<form action='".$action."' method='POST'> - <fieldset> - <label for='ean'>EAN (required):</label> - <input type='text' name='ean'/> - </fieldset> - <fieldset> - <label for='title'>Title:</label> - <input type='text' name='title' /> - </fieldset> - <fieldset> - <label for='artist_id'>Artist:</label> - <select name='artist_id'> - - ".$options." - <option value='NULL'>Not listed</option> - </select> - </fieldset> - <fieldset> - <label for='genre'>Genre</label> - <input type='text' name='genre' /> - </fieldset> - <fieldset> - <label for='year'>Year:</label> - <input type='text' name='year' size='5' placeholder='YYYY' /> - </fieldset> - <fieldset> - <label for='price'>Price (£):</label> - <input type='text' name='price' placeholder='00.00' /> - </fieldset> - <fieldset> - <label for='price'>Stock:</label> - <input type='text' name='stock' placeholder='0' /> - </fieldset> - <button type='submit'>Submit</button> - </form>"; - -// append form HTML to content string -$content .= $form_html; - -// ------- START form processing code... ------- - -// define a function to sanitise user input (this would ideally be in includes folder) -// helps protect against XSS -function clean_input($data) { - $data = trim($data); // strips unnecessary characters from beginning/end - $data = stripslashes($data); // remove backslashes - $data = htmlspecialchars($data); // replace special characters with HTML entities - return $data; -} - -// define variables and set to empty values -$title = $artist_id = $price = $year = $genre = $stock = ""; - -// check if there was a POST request -if ($_SERVER["REQUEST_METHOD"] == "POST") { - // validate the form data - $ean = mysqli_real_escape_string($link, clean_input($_POST["ean"])); - $title = mysqli_real_escape_string($link, clean_input($_POST["title"])); - $artist_id = mysqli_real_escape_string($link, clean_input($_POST["artist_id"])); - $genre = mysqli_real_escape_string($link, clean_input($_POST["genre"])); - $year = mysqli_real_escape_string($link, clean_input($_POST["year"])); - $price = mysqli_real_escape_string($link, clean_input($_POST["price"])); - $stock = mysqli_real_escape_string($link, clean_input($_POST["stock"])); - - // turn autocommit off - mysqli_autocommit($link, FALSE); - - // start a transaction - mysqli_query($link, 'START TRANSACTION'); - - // define the insertion query to add a new record in record table - $query1 = sprintf("INSERT INTO record (ean, title, artist_id, genre, year, price) - VALUES ('%s', '%s', %d, '%s', %d, %f)", $ean, $title, $artist_id, $genre, $year, $price); - - // define the insertion query to add a new record in inventory table - $query2 = sprintf("INSERT INTO inventory (stock, record_ean) - VALUES (%d, '%s')", $stock, $ean); - - // check if either of the queries failed (returned false) - if (!mysqli_query($link, $query1) or !mysqli_query($link, $query2)) { - echo mysqli_error($link); - mysqli_rollback($link); // if so, rollback transaction - } else { - mysqli_commit($link); // else, commit transaction - $content .= "Record successfully added to database."; - } - - } - - // ------- END form processing code... ------- - - // output the html - echo($content); - -?> diff --git a/week-8/record-store-app/views/artist.php b/week-8/record-store-app/views/artist.php deleted file mode 100644 index ea371d7..0000000 --- a/week-8/record-store-app/views/artist.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -// check if id parameter was not set in query string -if (!isset($_GET['id'])) { - - // define $content with suitable message - $content = "<h1>I don't know which artist you're looking for...</h1>"; - -} else { // id was set, so carry on... - - // define $artist_id variable and assign value of id parameter - $artist_id = $_GET['id']; - - // fetch record titles for artist with id matching $artist_id - $sql = "SELECT r.title, r.year, r.price, a.first_name, a.last_name - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - WHERE a.id=".$artist_id." - ORDER BY year ASC"; - - $result = mysqli_query($link, $sql); - - // check query returned a result - if ($result === false) { - echo mysqli_error($link); - } else { - - // define a row counter - $i = 0; - - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - - // do this if we are on first row - if ($i == 0) { - - // initialise $content string, assigning it a page header - $content = "<h1>".$row['first_name']." ".$row['last_name']." Records</h1>"; - // append $content string with table definition - $content .= "<table border='1'><tbody>"; - - } - - // append table rows to $content string - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['year']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "</tr>"; - - // increment the row counter - $i++; - - } - - // append $content string with closing table tags - $content .= "</tbody></table>"; - - // free result set - mysqli_free_result($result); - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-8/record-store-app/views/home.php b/week-8/record-store-app/views/home.php deleted file mode 100644 index dc1ed44..0000000 --- a/week-8/record-store-app/views/home.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Welcome to Goldsmith's Record Store</h1>"; -$content .= "<p>Follow the links above to browse the store.</p>"; - -// output the content HTML -echo $content; - -?> diff --git a/week-8/record-store-app/views/order.php b/week-8/record-store-app/views/order.php deleted file mode 100644 index 0f81c63..0000000 --- a/week-8/record-store-app/views/order.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -// check the order_id parameter has been set in the URL -if (isset($_GET['order_id'])) -{ - $order_id = $_GET['order_id']; -} else { - $order_id = -1; // if not, set to an implausible value -} - -// fetch order details associated with current order id -$sql = "SELECT r.ean, r.title, ol.quantity, ol.transaction_id, r.price - FROM record r - INNER JOIN orderline ol - ON ol.record_ean=r.ean - WHERE ol.transaction_id=".$order_id; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - - // Find the number of rows returned - $num_rows = mysqli_num_rows($result); - - // Check it's not 0 - if ($num_rows == 0) { - $content = "<h1>Order not found</h1>"; - } else { - // create variable for content HTML - $content = "<h1>Order ".$order_id."</h1>"; - $content .= "<table border='1'>"; - $content .= "<thead><tr> - <th>EAN</th> - <th>Title</th> - <th>Quantity</th> - <th>Price</th> - <th>Total</th> - </tr></thead>"; - $content .= "<tbody>"; - // initialise total order price to 0 - $total = 0.00; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $subtotal = $row['quantity'] * $row['price']; - $total = $total + $subtotal; - $content .= "<tr>"; - $content .= "<td>".$row['ean']."</td>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td>".$row['quantity']."</td>"; - $content .= "<td>£".$row['price']."</td>"; - $content .= "<td>£".$subtotal."</td>"; - $content .= "</tr>"; - } - $content .= "<tr><td colspan=4><b>TOTAL</b><td><b>£".$total."</b></td></tr>"; - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); - - } -} - -// output the content HTML -echo $content; - -?> diff --git a/week-8/record-store-app/views/orders.php b/week-8/record-store-app/views/orders.php deleted file mode 100644 index d122891..0000000 --- a/week-8/record-store-app/views/orders.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -// initialise string variable for content HTML -$content = "<h1>Orders</h1>"; - -// fetch all transactions (orders) and group by customer id -$sql = "SELECT id, customer_id FROM transaction - ORDER BY customer_id"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) -{ - echo mysqli_error($link); -} else { - $num_rows = mysqli_num_rows($result); - if ($num_rows > 0) - { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Order ID</th><th>Customer ID</th></tr></thead>"; - $content .= "<tbody>"; - // fetch each row in result set as an associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td><a href=\"?page=order&order_id=".$row['id']."\">".$row['id']."</a></td>"; - $content .= "<td>".$row['customer_id']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - } else { - $content .= "<p>There are no orders to display.</p>"; - } - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-8/record-store-app/views/record.php b/week-8/record-store-app/views/record.php deleted file mode 100644 index 17c5201..0000000 --- a/week-8/record-store-app/views/record.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -// create variable for content HTML -$content = "<h1>Records</h1>"; -$content .= "<p>You are now viewing all records in the database.</p>"; - -// fetch records as a result set -$sql = "SELECT r.title, r.ean, a.first_name, a.last_name, r.genre, r.price, i.stock, a.id - FROM record r - INNER JOIN artist a - ON r.artist_id=a.id - INNER JOIN inventory i - ON r.ean=i.record_ean - ORDER BY r.title, r.price DESC"; -$result = mysqli_query($link, $sql); - -// check query returned a result -if ($result === false) { - echo mysqli_error($link); -} else { - $content .= "<table border='1'>"; - $content .= "<thead><tr><th>Title</th><th>Artist</th><th>Genre</th><th>Price</th><th>Stock</th></tr></thead>"; - $content .= "<tbody>"; - // fetch associative array - while ($row = mysqli_fetch_assoc($result)) { - $content .= "<tr>"; - $content .= "<td>".$row['title']."</td>"; - $content .= "<td><a href='?page=artist&id=".$row['id']."'>".$row['first_name']." ".$row['last_name']."</a></td>"; - $content .= "<td>".$row['genre']."</td>"; - $content .= "<td>".$row['price']."</td>"; - $content .= "<td>".$row['stock']."</td>"; - $content .= "</tr>"; - } - $content .= "</tbody></table>"; - // free result set - mysqli_free_result($result); -} - -// output the content HTML -echo $content; - -?> diff --git a/week-9/sharr003_dump.sql b/week-9/sharr003_dump.sql deleted file mode 100644 index b4dfbf8..0000000 --- a/week-9/sharr003_dump.sql +++ /dev/null @@ -1,203 +0,0 @@ --- MySQL dump 10.13 Distrib 5.5.41, for Linux (x86_64) --- --- Host: localhost Database: sharr003_recordstore --- ------------------------------------------------------ --- Server version 5.5.41 - -/*!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 utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Current Database: `sharr003_recordstore` --- - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `sharr003_recordstore` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `sharr003_recordstore`; - --- --- Table structure for table `artist` --- - -DROP TABLE IF EXISTS `artist`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `artist` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_name` varchar(50) DEFAULT NULL, - `last_name` varchar(50) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `artist` --- - -LOCK TABLES `artist` WRITE; -/*!40000 ALTER TABLE `artist` DISABLE KEYS */; -INSERT INTO `artist` VALUES (1,'Bob','Marley'),(2,'Peter','Tosh'),(3,'Burning','Spear'),(4,'Alton','Ellis'),(5,'Gregory','Issacs'),(6,'Desmond','Dekker'); -/*!40000 ALTER TABLE `artist` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `customer` --- - -DROP TABLE IF EXISTS `customer`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `customer` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `first_name` varchar(50) NOT NULL, - `last_name` varchar(50) NOT NULL, - `email_address` varchar(50) NOT NULL, - `address_1` varchar(50) NOT NULL, - `address_2` varchar(50) DEFAULT NULL, - `postcode` varchar(10) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `customer` --- - -LOCK TABLES `customer` WRITE; -/*!40000 ALTER TABLE `customer` DISABLE KEYS */; -INSERT INTO `customer` VALUES (1,'John','Smith','john@smith.com','1 Fake Street','London','SE3 5RD'),(2,'Sukie','Bapswent','s.baps@gmail.com','64 The Terrace','Whitby','YO65 3TR'),(3,'John','Thumb','jthumb@gmail.com','25 Fantasy Grove','Brighton','BR2 6LV'); -/*!40000 ALTER TABLE `customer` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `inventory` --- - -DROP TABLE IF EXISTS `inventory`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `inventory` ( - `stock` int(10) unsigned NOT NULL DEFAULT '0', - `record_ean` char(8) NOT NULL DEFAULT '', - PRIMARY KEY (`stock`,`record_ean`), - KEY `record_ean` (`record_ean`), - CONSTRAINT `inventory_ibfk_1` FOREIGN KEY (`record_ean`) REFERENCES `record` (`ean`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `inventory` --- - -LOCK TABLES `inventory` WRITE; -/*!40000 ALTER TABLE `inventory` DISABLE KEYS */; -INSERT INTO `inventory` VALUES (0,''),(20,'00495739'),(25,'00562056'),(12,'00625485'),(15,'00649573'),(10,'00738432'),(15,'00748396'),(3,'00873645'),(0,'01459284'),(1,'1'),(130,'12341234'),(12,'1234312'),(43,'2382398'),(280,'26542543'),(3,'30748743'),(23,'45545453'),(18,'50264967'),(22,'50264972'),(7,'50847583'),(34,'50856384'),(92429482,'fdgfd'),(0,'q5 5hh5'); -/*!40000 ALTER TABLE `inventory` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `orderline` --- - -DROP TABLE IF EXISTS `orderline`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `orderline` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `transaction_id` int(11) DEFAULT NULL, - `record_ean` char(8) DEFAULT NULL, - `quantity` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `transaction_id` (`transaction_id`), - KEY `record_ean` (`record_ean`), - CONSTRAINT `orderline_ibfk_1` FOREIGN KEY (`transaction_id`) REFERENCES `transaction` (`id`), - CONSTRAINT `orderline_ibfk_2` FOREIGN KEY (`record_ean`) REFERENCES `record` (`ean`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `orderline` --- - -LOCK TABLES `orderline` WRITE; -/*!40000 ALTER TABLE `orderline` DISABLE KEYS */; -INSERT INTO `orderline` VALUES (1,1,'00562056',1),(2,1,'00495739',1),(3,2,'00649573',2),(4,2,'00495739',1),(5,3,'00738432',2),(6,3,'00562056',1),(7,3,'50856384',3),(8,3,'00495739',1),(9,4,'00625485',1),(10,4,'00562056',2); -/*!40000 ALTER TABLE `orderline` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `record` --- - -DROP TABLE IF EXISTS `record`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `record` ( - `ean` char(8) NOT NULL, - `title` varchar(50) NOT NULL, - `artist_id` int(11) DEFAULT NULL, - `genre` varchar(50) DEFAULT NULL, - `year` year(4) DEFAULT NULL, - `price` decimal(10,2) unsigned NOT NULL, - PRIMARY KEY (`ean`), - KEY `artist_id` (`artist_id`), - CONSTRAINT `record_ibfk_1` FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `record` --- - -LOCK TABLES `record` WRITE; -/*!40000 ALTER TABLE `record` DISABLE KEYS */; -INSERT INTO `record` VALUES ('','',6,'',0000,0.00),('00495739','Babylon By Bus',1,'Reggae',1978,24.99),('00562056','Soul Rebel',1,'Reggae',1970,25.99),('00625485','Sunday Coming',4,'Reggae',1970,15.99),('00649573','Black and Dekker',6,'Reggae',1980,19.99),('00738432','Legalize It',2,'Reggae',1976,22.99),('00748396','Natty Dread',1,'Reggae',1974,20.99),('00873645','Another Record',1,'Reggae',1985,10.00),('01459284','Yet another record',3,'Pop',1925,12.50),('1','2',4,'d',2002,2.00),('12341234','Pray for Paris',6,'xxxxx',2015,0.00),('1234312','John SMith the Mac Daddy',2,'Asdf',0000,423.00),('2382398','Arrow',1,'You have failed this city',2011,1000.00),('26542543','Never give up!!!',6,'We can do this people :)',2017,270000.00),('30748743','Marcus Garvey',3,'Reggae',1975,24.99),('45545453','The drop out',1,'rap',1987,12.75),('50264967','Catch A Fire',1,'Reggae',1973,25.99),('50264972','Mr Issacs',5,'Reggae',1982,9.99),('50847583','Bush Doctor',2,'Reggae',1978,20.99),('50856384','Night Nurse',5,'Reggae',1982,17.99),('fdgfd','gffdg',6,'fgfdgg',0000,23323.00),('q5 5hh5','w46h w46h',6,'w64h w46h',0000,6.00); -/*!40000 ALTER TABLE `record` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `transaction` --- - -DROP TABLE IF EXISTS `transaction`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `transaction` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `customer_id` int(11) NOT NULL, - `delivery_method` int(11) DEFAULT NULL, - `dt_date` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `customer_id` (`customer_id`), - CONSTRAINT `transaction_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `transaction` --- - -LOCK TABLES `transaction` WRITE; -/*!40000 ALTER TABLE `transaction` DISABLE KEYS */; -INSERT INTO `transaction` VALUES (1,1,2,'2015-07-01 14:34:58'),(2,1,2,'2015-04-01 11:22:35'),(3,3,1,'2015-04-01 19:47:03'),(4,2,1,'2015-05-11 22:01:19'); -/*!40000 ALTER TABLE `transaction` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!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 */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2015-11-27 10:34:44 -- GitLab