From 9742b70e717d04b4fcee330efbdc8a72ea489701 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Sat, 24 Nov 2018 13:55:09 -0700 Subject: [PATCH] Add favorite note feature, fix setModified when passing UNIX timestamp --- action.php | 14 ++++++++++++++ database.mwb | Bin 7096 -> 7214 bytes lib/Note.lib.php | 35 ++++++++++++++++++++++++++++++++--- lib/nextcloudnotes.php | 11 +++++++++++ pages/home.php | 9 ++++++++- 5 files changed, 65 insertions(+), 4 deletions(-) diff --git a/action.php b/action.php index 8bd8bd2..35693c3 100644 --- a/action.php +++ b/action.php @@ -57,6 +57,7 @@ switch ($VARS['action']) { } $note->deleteNote(); returnToSender("note_deleted"); + break; case "downloadnote": if (empty($VARS['noteid'])) { die($Strings->get("invalid parameters", false)); @@ -68,4 +69,17 @@ switch ($VARS['action']) { header("Content-Type: text/markdown; charset=UTF-8"); header("Content-disposition: attachment; filename=\"" . $note->getCleanTitle() . "_" . $note->getModified() . ".md\""); echo $note->getText(); + break; + case "favoritenote": + if (empty($VARS['noteid'])) { + die($Strings->get("invalid parameters")); + } + $note = Note::loadNote($VARS['noteid']); + if (!$note->hasWriteAccess(new User($_SESSION['uid']))) { + die($Strings->get("invalid parameters")); + } + $note->setFavorite(!$note->getFavorite()); + $note->saveNote(); + returnToSender(""); + break; } \ No newline at end of file diff --git a/database.mwb b/database.mwb index 63826da0208122210eea1bfb5df0559dcd614130..63811fd7a4767a4b66115268d272a2bb379360f5 100644 GIT binary patch delta 7072 zcmZvhMNk|HfJD*YGUxz<1$Pe`+@0WVgL}|m0}SpK+}+(JxNCw3*Wm8DzxK3;?Mqj6 z^|3EquZ_2c52C67kAMdQ1A`31WbdVU!?BB>MOCh>zSjUx0^EABt5*JiE#S1+EAtrj>GhMRAe=u4-+|TK;b^)HG@- zvH*%MSu?Wlk{ws|s`T^PI;fA&7lfN9U;F5#O)uvlfy;!L?|!#&wV1M^P9T~GN8l61 z(~)RDdcR|!zE@0XqygvXH<B}9pkZAl@h~S@O*3z_<214WI1CsK zxh{R&8ksVqcjW*{3a7y?+hhg56Maekgq;ZKH^R-OuY|xB$N=#-?;FEt8x$4=RtDsP zSlpU@-?6Ti)Yw_y84|X)4o~7%MAAN7u@K|jhi|{i*F-)%A?3m|zpCNdy+2dIvQ@Rb zuH3n6AnLpPNE^dHZ&g7SHiic1__2CCts5Br46-K15~IbMYg_x^l(S@O^t|f(>#+)% ztv23eeQst^eXv{LQJezAv{NgAU8;VG#C%*om$of!Ikr^q?;Kf4Y%?lGua_Zs&(_sYDWu|mgT83|LA5K=rz7wvM&N&nTGsL zXr&E={*0Pl&JNT2WJ=FcuF1(yQ)hf^6Z8}%OyK<(<-zDT5kSM*d5w@qg+lRKd#^1~ zf!cH!7ghEvLbi7;iI^#!((pCe3SsNECby@)r1Xa2DR>9Cjpk~9zm)B{*8 z%KpBDy7o(XSJ}wne12sKwmWFL=!!&_7KYocc3z@Zf|O>8V&F!*UN3td^r%2ea zf`Px0X;V*jHin0hR@I&vY#{&CLHTq5uXReTuiv1NAvs90qbll^JbcRA^+;^ESS$4H zpH{Fd5GmZmj%j)ldK&fAh|Gb;B{@sWSz091)epo9{hee$UWeF_Hu_)aNe1!>)%`}> z->`@#b{*{syEYrd2faYBnRuJrs)NJA;_rjdT4>-Y4GIEg?CC5U2x7IT<8SbqvtmZB zph?E{=MGKeA!zbb7FHaTJ#f_Y6Ux_riEv@=m+Ju^CwRI{1WYeuH3z`Rd$m(Kx6_f_ zH}Lw|vJ=UQ%9qL5H-Y;?i=Jp>uUTV>Ji{FkYo-onBGQjD><@;5#Vhi!A8$AM_nRUj zIY{_&%VcEp0>p#dj}U~f&1OmoLbKZQy)?z|lIk2L@gSyRvIxWxSnMjshECOj&9b!V2X82i@8STAm9k4Zx zop+9!u>sg3z{z8>^^ghBmkxMDQjEvCSdS|a6>*D?q6m}fE0GnH3@)$@_qsGO`J5ab zi|iSQTu+)#3gE=fzx=IOmQhi3zR;3JN`&Gcl+D5Fg-Vs|3`BDzf8kMj^eTR&=oL5P z0`1qvrI|!-Kp^tFoxFuS9%(;?$KdCTw{ArSsdXClK$yBLoBhZIE&)>M{MAoUs7sm* zaTU(-RzSW>ivtvRq?LGyL?u|g@p@Aoqm;lh#uhKpP1itPTEmY%D%2z+apCY1hwr{O!hhsrxkVw(z)`|#xa`WNg~?=6vG{lZ%}eMP%^)Q# zxPm$ec9M%cdr9J1b4mkOPz_vd#6HiZB{+DuYsjl!85iZ2?jg-j-);NJxjka&I-{Kh ziomwITqCNQ+5ZIy3!)ZM{@QkQqunk*5*bC_o+yBGrgNx8DVf4S5tb`q|*^?j?? zkHp5(CB5y=C0$G4xHM`)*xg`p&GAPqGqa!!Ei!r6TJQ{qoeeN%o4ps4!v^Y1Xn#Gy z14D1E76|i;dgMtORyr7^j=YiQQ|M3Ron3)R_*92D-e0r0@EalCa&~$E*_@8Fi;^ z`TuFL_#?!-KF5D@cpU*zIl|5spcGs_>3d}Hm_PBs$|(xwTiXVT7gH#N|tME zOJM_nunisLVC%bMJ?AKGwOf@MLb6amYwz}goZ52Gc`}AW&?tMO(d3+#3Em2RgB`!+Y<>H12 zZF47_J^BkK_*h~b-2@zlThfg;6-GW4N|s2Gn4J<aaCjt^wR`5e7E>vg7D(q}WrjJ{zFoO5I>*oG<7b6Y=S4^S^+){~$sjiFr%UzZEHA}EWo+wg8*>H<>Y&-H4a}wg97G&KZgQ7)fFPGEQUXxr#X>pEMBQ`=gzR~!fK?$Sf%{V-2-WEr;p5Pc2WC4*iI5q;XQfo*^?mKe zsde|Kh0Yw~b=HcL>&nj8W7eLIiQ1Z6|KsaQPvM@wV2+kdjtNO*3$M~D>$)BP6llA$~+jknV>H4^iJ_mC;${#*xm)JbIMVQL{ ze5Rb%&%3mHw2%OenmV~y3q!=!7g7D9hd`EB^3DspG&#NUY96+w?h1CBz7&4GPC#^y ziCe6u09x)pHY4{_d43QXoemv4#ImoXQFKb3g-yL3)xKvKjYmmnUxlIP5dHg zXp(eBS!CC-g9yb;`xxVg`OOS;F}Ejn7WaA!0%X;Sx%u}Pa3wUMT~y3Q5p(>^K8gbzF(F`=o{CNRescGtb>i#FX;w+K{&oqv~CIcl2{ocwuaIuNRyDHsrAe>mk z+?!2hm`sD|p8P^YzvS&Ru8D9&#h?v(G~esPnIun$Q|iWKVlXC#g|Gd{+l0BpZGV z%bz@J!+{({;6*kFRl_43p^#lk73Sp<@vjY>Alcp+RAY?$OiRcPGd`yqtU_S}`Mv@N zuXhSRvx^iqg;gvpBIGYiKzsx5+KqkL-)}U#i?APT<6(nH&TdVWn`x~{SI8xb2&%W8 zwzo=%W&_22o!rm(K1Ah6AIR3_4J%W&hU9{9+ix=2SfS&ZLa5hO6-=&C!yg+U=?dC@ zj~)m}^&H4I3i2H#I^Wnw9-Z2N_~xjtRq%zZ3DG1lDF=vb$Ba}rm;;~Lw-5a2D0@sk zr3UJm-5;#~?x5}XMMA~0+y}b4)Po>C-oP=q&Ys5|}m1h~O9A}sHGok{dH7VS< z{GDRl7-IM4@la5xO~cVj;TX%>@TQ5!V$q{R?{1#+4rS0~P1e4kHvP2@L0*QevpIdxyz}mYCdL*Pends!=eRPSCf!XQAc)QC&XefO zZ#{k&i5Zt-n|<=7)#S3e!lZTo!bfTZ%KcEld)GE;u5cRIM6&X+RR@1ldh(UlJN6$^s@Y_U9FK^Uy!t5NVw0T?*>V4{h0dd5S5H+nav7-pH7z zLmv{EPHQNKs}CV%@UfH0Wk;{wK)=Q;apQbdu9Cyi)0un!w8P#B5iD?3Tm#MJ3Cw{< zsv}O7)10E7s;<-*?jtQh`ERs7@QSnW2qpwIdZR(drWU{bu_uJ$R z1~-Xv{vYoF8=FEK16OpvpPc?wsVGSbZG=ZVEt1)+HSjQahm*`#CXf~~R2pyV#opurn zFSsMRmv>}V7#PTkYBsR;wH9ZTIg0B%`DRB3QOqc|q2tC2$_t|An)9M3F=lC>OL|Ck z@8f%$iyY-nOX(&!jP+=s=C>?Met@Lo2+&W%-uFz2sYtxuxDbW`msVEddnyz9N4$a^ z0&A03=@noI!>8`uB=A@Yp03Tou{~RKeq;ViEl6_<$l^#niAh-IG_Qy0STTJ~7%uIO zB&slnXd9D3z-pa|v!GP*C2cQz*sqK29QhZWr{(YhFJfxFEZiOEp9}38g;zK7_c)5W zpjR<0@gFwdf5NakEC0{{2hO#yUeZML9#y3uA~N7ZoOFwEz75FpAdmKh03>&}2>G(5 zCZY&sI?9nnL*kFJen#5vaoJPx(GrMPz~Wl|+$y7%Z=-LG9yH-VQ#q2{`oVprdiHip zLPG25zd6env(;Y^^^a-{r+$KPc{;%S(XAwFWrXLjqJcWi>G8_qAPbQbBdsQZh4t?- z%FyUF#5r5?Q;(`o8(>$?qLy_c@(g+5DO-MnC#I#VbN=1&zBj_DF)G&TQWtryH)DzX zE(A?{wFQ%yw~f@hoO}?Pih>NnnF()N_t_>@pr2QUL&R(_B|)fyBbPyg3~=G82(ed# zW_b1kt8~Y;Rc6-Fx0ZM7{NhHu*kuiGw6{Ybgl2J<#w9M-XQyde?(r>m3fxx#Bp5B76VyIn!XF)-;*qp>9 zXK^~$@>8zwiAZa`esVj%74;=$-JxN$>Zy~CU2+Dq?N?aNyHW$dY!YLaT{Ghq0XA01 z18-ZCq1$dlhm~Vj8rqIvm(D6YSb|;C^eVT2v7=z3!UUL6z))bFR#6jK!We~PgP8uE zey4>rvg)?x=S?gxgDZR65x#>8ozUzeX*031)oV3^nm| z`%_9XA{`Ga%Izw&YB#a+&9yi!Gj24ZGJ- zbG3|Heo7(eCyAzO{CP*xfNM8=w{mf}+N5<4(9oQ+ZuPNFmV#-Vj{nN7zs+0aeq|tp zae6}UmVjiF`p=4(n1v!z6Rht7ahK!4G!&ahd0B77Z8)PY3Ez-h zz_u8mTu6$pI3{i1Vu)6~D}Voa`9l=_WN9nTQZFyeiM_ttl(rg2pTI>GVu^|&DTB%6 z_2w8?_}?LxQkvG~>DaRlDgr7=_Vjdu-o0fYd9lo$8RqnQZ@djU0a7B^nYqjkWny1$ z^MXl#n8d`Hri0A4tR<)nh}Jd zS{{~LloED|dXyQqok6Qpp{oGxp?vIGzEt9vki?cnh~LboLiwCOC?R(g!AX0{mMGhP zof}|{o|Mbcj6r&;DBC(nRp_1%gL{cQLL%Ij#YU+4oqk}n%;mHTLY$Q@U+Lv(6Pz4y z#o!ptfhkgE-hrcaM9Z0KkvN$`$zjS^oKwWXFD-b!UWD&={IwOX)$TXJ!`L%B?3;dF z-5SUGvc)JA%;HIaqL|%=)ABx%+7UGax?2z<^+neRm_}+T7kRW|h62WlAOwFIRwM+_ z*Xm9ySe_NASkMkbO^9yX{i54iY$vW1GKAuJqJQts!>eUOq!*o@eg)5T+w+vUsBy-m z8ZZ5;8YXh1UqK9}!TWt0F-|Dv6#K0aTiwtWC*{xepl* z`Toz1Gz1q&V{H+BX`~$4H(T2Wj5P`BBs=JB$e-KPt`uyE9YKAr;u#;c)705$i-F4E zWd+M6&g3vcBDHd`hBuSBHIvcD@MzRYDZr!BnGA5tR zCno4rDJ2I4JmRwPz^`2JkmzOQW1h@0S}Lc=br`@1ndQC&io*m@+G4!!S^ZAPiyc!JqXp#;3 zTw%S}J`$IDclZaJC|-!T3t`#G#9!vu=GQki;b(l*AyUbq9&wkjUE>c-w@WgOZ*NJ~ zWRpZ8kTYnRv6BVuKZ9D9vvb=EG7C38%lp~>LFsvL{(#bi*&ua7h+=FvvgtUsiy@Ix z^V~_xi{Y}9$jV`VVDtn`4Q3FmP`;d(Xc7;fGxJh?CbHp$o7{yn+vnw^#YXIxSS9e? zvM0(z0!!tCucJ8`XA;!}(;bKkH)N+P`P&F4Or5K+w;@^34s|Kgix zKgMWmXqz|s-D{0g-+0ZNOJ+4!K%UIYRX3jP%hID)^`WU8NRK+?;POj{CGjoO1~5yu z`+1%3L=8p)`9ZbG!dr`~MdG->CmrErAJ1dL(3UJS0ipB*Om# DmKUhh delta 6953 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'notes', ['noteid', 'ownerid', 'color', 'content', 'title', 'modified'], ['noteid' => $noteid]); + $notedata = $database->get('notes', ['noteid', 'ownerid', 'color', 'content', 'title', 'modified', 'favorite'], ['noteid' => $noteid]); $note = new Note($notedata['content'], $notedata['color'], $notedata['ownerid'], $notedata['noteid']); $note->setTitle(is_null($notedata['title']) ? "" : $notedata['title']); $note->setModified(is_null($notedata['modified']) ? date("Y-m-d H:i:s") : $notedata['modified']); + $note->setFavorite($notedata['favorite'] == true); return $note; } @@ -67,7 +69,8 @@ class Note { 'color' => $this->getColor(), 'content' => $this->getText(), 'title' => $this->getTitle(), - 'modified' => $this->getModified() + 'modified' => $this->getModified(), + 'favorite' => $this->getFavorite() ? 1 : 0 ]; // We can't UPDATE the database, so use save as for INSERT @@ -167,6 +170,10 @@ class Note { return $title; } + /** + * Get the note title stripped of Markdown and trimmed + * @return string + */ public function getCleanTitle(): string { $title = $this->getTitle(); $title = str_replace("*", "", $title); @@ -187,6 +194,14 @@ class Note { return date("Y-m-d H:i:s", strtotime($this->modified)); } + /** + * Get if the note is favorited (starred). + * @return bool + */ + public function getFavorite(): bool { + return $this->favorite; + } + /** * Set the note content * @param string $markdown @@ -232,9 +247,21 @@ class Note { * @param string $datetime */ public function setModified(string $datetime) { + if (is_numeric($datetime)) { + $this->modified = date("Y-m-d H:i:s", $datetime); + return; + } $this->modified = date("Y-m-d H:i:s", strtotime($datetime)); } + /** + * Set the note as favorite or not + * @param bool $favorite + */ + public function setFavorite(bool $favorite) { + $this->favorite = $favorite; + } + /** * Get this note as an array. * @return string @@ -247,6 +274,7 @@ class Note { 'content' => $this->getText(), 'title' => $this->getTitle(), 'modified' => $this->getModified(), + 'favorite' => $this->getFavorite(), 'owner' => [ 'uid' => $owner->getUID(), 'username' => $owner->getUsername(), @@ -269,7 +297,7 @@ class Note { "title" => $this->getTitle(), "category" => null, "content" => $this->getText(), - "favorite" => false + "favorite" => $this->getFavorite() ]; } @@ -304,6 +332,7 @@ class Note { $note = new Note($arr['content'], $arr['color'], $arr['owner']['uid'], $arr['noteid']); $note->setTitle($arr['title']); $note->setModified($arr['modified']); + $note->setFavorite($arr['favorite']); return $note; } diff --git a/lib/nextcloudnotes.php b/lib/nextcloudnotes.php index abe047c..62f6910 100644 --- a/lib/nextcloudnotes.php +++ b/lib/nextcloudnotes.php @@ -36,6 +36,8 @@ if (json_last_error() == JSON_ERROR_NONE) { $requestdata = array_merge($requestdata, $requestjson); } +file_put_contents("/var/www/html/debug.log", var_export($requestdata, true)); + switch ($_SERVER['REQUEST_METHOD']) { case "GET": if (count($route) == 1) { @@ -67,6 +69,10 @@ switch ($_SERVER['REQUEST_METHOD']) { $note->setModified($requestdata['modified']); } + if (!empty($requestdata['favorite']) && $requestdata['favorite'] == true) { + $note->setFavorite(true); + } + $note->setOwner($user); $note->saveNote(); @@ -84,6 +90,11 @@ switch ($_SERVER['REQUEST_METHOD']) { } else { $note->setModified($requestdata['modified']); } + if (!empty($requestdata['favorite']) && $requestdata['favorite'] == true) { + $note->setFavorite(true); + } else { + $note->setFavorite(false); + } $note->saveNote(); exit(json_encode($note->toNextcloud())); } else { diff --git a/pages/home.php b/pages/home.php index f2eccb3..702fe23 100644 --- a/pages/home.php +++ b/pages/home.php @@ -35,7 +35,14 @@ foreach ($notes as $note) {