1- <?php
2-
1+ <?php /* vim: set colorcolumn= expandtab shiftwidth=2 softtabstop=2 tabstop=4 smarttab: */
32namespace BNETDocs \Controllers \News ;
43
54use \BNETDocs \Libraries \Authentication ;
2120use \DateTimeZone ;
2221use \InvalidArgumentException ;
2322
24- class Edit extends Controller {
25- public function &run (Router &$ router , View &$ view , array &$ args ) {
23+ class Edit extends Controller
24+ {
25+ public function &run (Router &$ router , View &$ view , array &$ args )
26+ {
2627 $ data = $ router ->getRequestQueryArray ();
2728 $ model = new NewsEditModel ();
2829 $ model ->active_user = Authentication::$ user ;
@@ -41,6 +42,14 @@ public function &run(Router &$router, View &$view, array &$args) {
4142 User::OPTION_ACL_NEWS_MODIFY
4243 ));
4344
45+ if (!$ model ->acl_allowed )
46+ {
47+ $ model ->_responseCode = 403 ;
48+ $ model ->error = 'ACL_NOT_SET ' ;
49+ $ view ->render ($ model );
50+ return $ model ;
51+ }
52+
4453 try { $ model ->news_post = new NewsPost ($ model ->news_post_id ); }
4554 catch (NewsPostNotFoundException $ e ) { $ model ->news_post = null ; }
4655 catch (InvalidArgumentException $ e ) { $ model ->news_post = null ; }
@@ -75,12 +84,16 @@ public function &run(Router &$router, View &$view, array &$args) {
7584 return $ model ;
7685 }
7786
78- protected function handlePost (Router &$ router , NewsEditModel &$ model ) {
79- if (!$ model ->acl_allowed ) {
87+ protected function handlePost (Router &$ router , NewsEditModel &$ model )
88+ {
89+ if (!$ model ->acl_allowed )
90+ {
8091 $ model ->error = 'ACL_NOT_SET ' ;
8192 return ;
8293 }
83- if (!isset (Common::$ database )) {
94+
95+ if (!isset (Common::$ database ))
96+ {
8497 Common::$ database = DatabaseDriver::getDatabaseObject ();
8598 }
8699
@@ -99,16 +112,12 @@ protected function handlePost(Router &$router, NewsEditModel &$model) {
99112 $ model ->content = $ content ;
100113 $ model ->rss_exempt = $ rss_exempt ;
101114
102- if (empty ($ title )) {
103- $ model ->error = 'EMPTY_TITLE ' ;
104- } else if (empty ($ content )) {
105- $ model ->error = 'EMPTY_CONTENT ' ;
106- }
107-
108- $ user_id = $ model ->active_user ->getId ();
115+ $ model ->error = (empty ($ title ) ? 'EMPTY_TITLE ' : (empty ($ content ) ? 'EMPTY_CONTENT ' : null ));
109116
110- try {
117+ if ( $ model -> error ) return ;
111118
119+ try
120+ {
112121 $ model ->news_post ->setCategoryId ($ model ->category );
113122 $ model ->news_post ->setTitle ($ model ->title );
114123 $ model ->news_post ->setMarkdown ($ model ->markdown );
@@ -124,28 +133,25 @@ protected function handlePost(Router &$router, NewsEditModel &$model) {
124133 );
125134
126135 $ success = $ model ->news_post ->save ();
127-
128- } catch (QueryException $ e ) {
129-
136+ $ model ->error = false ;
137+ }
138+ catch (QueryException $ e )
139+ {
130140 // SQL error occurred. We can show a friendly message to the user while
131141 // also notifying this problem to staff.
132142 Logger::logException ($ e );
133143
134144 $ success = false ;
135-
136- }
137-
138- if (!$ success ) {
139145 $ model ->error = 'INTERNAL_ERROR ' ;
140- } else {
141- $ model ->error = false ;
142146 }
143147
144- Logger::logEvent (
148+ Logger::logEvent
149+ (
145150 EventTypes::NEWS_EDITED ,
146- $ user_id ,
151+ ( $ model -> active_user ? $ model -> active_user -> getId () : null ) ,
147152 getenv ('REMOTE_ADDR ' ),
148- json_encode ([
153+ json_encode
154+ ([
149155 'error ' => $ model ->error ,
150156 'news_post_id ' => $ model ->news_post_id ,
151157 'category_id ' => $ model ->news_post ->getCategoryId (),
0 commit comments