From e6735a9a206a207b6fab704785451a6309944ddd Mon Sep 17 00:00:00 2001
From: Joshua Ashton Users
+ View Articles
+
created ' . $path . '
'; + $fs = fopen($path . 'article.md', 'a'); fwrite($fs, $markdown_file_contents); fclose($fs); @@ -146,8 +161,6 @@ function create_article($author_id, $title, $excerpt, $tags, $markdown_file_cont $stmt .= ';'; } - echo $stmt; - pretty_dump($tags); if (count($tags) > 0) exec_statement($stmt, 0); @@ -156,8 +169,13 @@ function create_article($author_id, $title, $excerpt, $tags, $markdown_file_cont function delete_article($article_id) { + $stmt = 'DELETE FROM article_tags WHERE article_id = ' . $article_id . ';'; + exec_statement($stmt, 1); + $stmt = 'DELETE FROM article WHERE article_id = ' . $article_id . ';'; - return exec_statement($stmt, 1); + exec_statement($stmt, 1); + + delete_dir($_ENV['ARTICLES_FQ_PATH'] . $article_id . '/'); } function delete_articles_by_author($author_id) @@ -165,3 +183,9 @@ function delete_articles_by_author($author_id) $stmt = 'DELETE FROM article WHERE author_id = "' . $author_id . '";'; return exec_statement($stmt, 1); } + +function increment_read_counter($article_id) +{ + $stmt = 'UPDATE article SET read_count = read_count + 1 WHERE article_id = ' . $article_id . ';'; + return exec_statement($stmt, 1); +} diff --git a/functions/db_functions.php b/functions/db_functions.php index 9b5d7e3..16facff 100644 --- a/functions/db_functions.php +++ b/functions/db_functions.php @@ -1,4 +1,9 @@ safeLoad(); + // Use environment variables for the database password and IP address. $db_user = $_ENV['DATABASE_USER']; $db_pass = $_ENV['DATABASE_PASSWORD']; diff --git a/functions/functions.php b/functions/functions.php index 468a3b1..d384291 100644 --- a/functions/functions.php +++ b/functions/functions.php @@ -9,6 +9,30 @@ if (!empty($_FILES['upload'])) { upload($_FILES['upload'], $_ENV['UPLOAD_TMP_FQ_PATH'], isset($_POST['filename']) ? $_POST['filename'] : null); } +function delete_dir($dir) +{ + if (!is_dir($dir)) return false; + + if (substr($dir, strlen($dir) - 1, 1) != '/') { + $dir .= '/'; + } + $files = glob($dir . '*', GLOB_MARK); + foreach ($files as $file) { + if (is_dir($file)) + delete_dir($file); + else + delete_file($file); + } + rmdir($dir); +} + +function delete_file($file) +{ + if (!file_exists($file)) return false; + + unlink($file); +} + function upload($input, $dest_dir, $filename = null) { $filetype = strtolower(pathinfo($input['name'], PATHINFO_EXTENSION)); diff --git a/functions/init.php b/functions/init.php index 989d46c..f805cd0 100644 --- a/functions/init.php +++ b/functions/init.php @@ -3,6 +3,7 @@ session_start(); // Initialize Composer. require_once 'vendor/autoload.php'; +require_once 'db_functions.php'; // Load environment variables. $dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../'); @@ -18,3 +19,6 @@ if ($_SESSION['initialized'] && isset($_POST['theme'])) { $_SESSION['theme'] = $_POST['theme']; unset($_POST['theme']); } + +if (isset($_COOKIE['user_id'])) + exec_statement('UPDATE user SET is_active = true WHERE user_id = ' . $_COOKIE['user_id'] . ';', 1); diff --git a/functions/profile.jpg b/functions/profile.jpg deleted file mode 100644 index 8dc6d4f167812e52caa157b9c1d0722fb9d14310..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1556194 zcmb5Wdt6lI{y+Mx%gkDUFl%rUL|`7AF{g{7NhSm{&mhWV7smA0u1v|KZ&+SZp#Wi6 zYnqa*WMotHwUQ;KvdePEF-h_UT^w|qgQ(;k6m$Tkk&D1E;Q7qn=e)kZ*Lj`u#~CA+ z%!M_xp6By<-#*;`^L{H57R-NYKB6duDENc!x1opU<*ocLgr0ipVZ@`rw`Wo`;@~I> zz5+Mv$`#8uEQiNlrwvcdottTWK4bn<&&>Pxi_nqF-+p@)3y)g8CTIQg>8bd|mtMx) z&Huc5;MvPpY`6w9ZjH-Dru p) ;)4a9o{yXmLA(4~7fp(vC;TH?N<%Lw5QWMTsQd!d`X%fpY0hSO-U8?ihbsb$q+
z%c0O;dbh1co8Niykg)cnh8p7by)&CN!NoS}?fSef(XAOCt%@V3aFH0yAAAXa!6p}Y
zV5iiB#7Ask7En+%Hpb&HVd#*V0`=(iZYc4(c?`C<5WjCgO
+nm}ki
zi>HG0(qjpyt?}TX#WzSX_5c9~nBdlj74y;GM2_z@$7j4#B6M_Kmqw?97?~OJ5nj;|
z%SRVEh2(_y_%J|~&iUtwYR@*<`wGYp@DZDlhNdWw7$AG9&SEy)_YpQ;wSXXE9LrXn
zK%Lo5H1oYhH??vTh>l0?tkDwW%hRYbL^BA`b`YbnNf7kxeYA|%RP$i UA
zke7e~#7n?w4x@aKZ%Yq5EgPMBHuonON_&^&j|ypp0~gp$jYxIl^|?ncW%0Jc#j4I6
zTG0a8jf9YI1J<+Dq7S0h93U_%7z~l*Q&7M{!6*l9=n8_7z>8KUb3OcvsjY){1=F1X
z#)&X}2Nl~+(
6n{`wooD
zkO|aZ-nm1=S}#zISKf!@pCg=NH-HbS;*eN%CtuJ?vXJ%9><~hVz3&V#bEwc@kxTwn
zLlrHFx6U?YB9G_HWqDouxub}O$<_?yhxlOnw<^WiLBCP&`-NG1w=I$VmYx^9G5dtf
z72bL+UALaqk5a5d`|XjD?eLcAXUqC>7`Cp-8^+)75JQX4ClNgZ53MgPpOj6D9pa6~
zIqWY<7pSg-)!M!2NCA+So}eK8S_^4&r-gptnl0k({}Nr~+*;OLBGx^zL|(i+16oTE
zNGHx$P_n+l6X07z0h1*F8Jq%sI4C4sc^57~lZ}BzMVz4(#@Y`*=n?+r2Ydl1FjD|w
zk30jB7D(uTv}P^<&2Zw$DACQF(AXhvi4uoDdW-5`CY7o_Zazs%!Y4
V<@oE*Kc!hW9XZ~ML_OJqV);#NEZkx
z5?%{L;XvM5u^atk(6>SkKf2HFoP}r!PH-D_KP%IYc?HwwVni^U9;wTu076bbX4M_*
z7fbQe9Mi0yyT|8b-p1_SKyaL?_H<=%_L3?BvZe!HlI;Qu-o(^7$mDaUd4wQB@os
z5=odrTX7um`ao{xmo61Og=kA|bY2pt+b&aI+&WBODs~dW3l3XYj2cd$Uz7(>p+L2{
zFhMQOETo9Ri$%zfw2upeFY@%6!%!c+v7&Vclf0*z0t2dZgK0_`g4%?n&NOH1ve7Zr
zqi#LAfg0#r_LvzIZz^>Xox^<~H6;K%Q+kBr4ZJ?;M_=N1LQ0<`E6+fP24tiQ+8S63
z_-9vucw3h@WXA)8&YEtQ-^0|bN{!zK-TyzLE>B46LV}2N3;wsV0JBT;Rf|0He}qTA
zRa8G!$c$|vQx2|g%H7UZZOi|QOm@7C+^omj;nfl}C6UcI;r);ki-Z(Mwj-&6ye9oy
z{|AP|F8(<&{U|d-yY#+TyU_+n2r@hLF=(<iV8)wyrwK1vqW@vG>`Cb6
zQ7cb)ou{UVX;Bg7p6!mZ1fk<{zR0_^oeX8nZfb&?cNz)xCA_)o>J?w|Z4kN7{oD?z
zpS~YTv|mQ*AO