1010
1111defined ('_JEXEC ' ) or die;
1212
13+ use Joomla \CMS \Component \ComponentHelper ;
14+ use Joomla \CMS \Factory ;
1315use Joomla \CMS \Language \Text ;
16+ use Joomla \CMS \Layout \LayoutHelper ;
1417use Joomla \CMS \MVC \Controller \BaseController ;
1518use Joomla \CMS \Router \Route ;
1619use Joomla \CMS \Uri \Uri ;
@@ -26,6 +29,26 @@ class SWJProjectsController extends BaseController
2629 */
2730 protected $ default_view = 'versions ' ;
2831
32+ /**
33+ * Typical view method for MVC based architecture
34+ *
35+ * @param boolean $cachable If true, the view output will be cached
36+ * @param array $urlparams An array of safe URL parameters and their variable types, for valid values see {@link \JFilterInput::clean()}.
37+ *
38+ * @throws Exception
39+ *
40+ * @return BaseController A BaseController object to support chaining.
41+ *
42+ * @since __DEPLOY_VERSION__
43+ */
44+ public function display ($ cachable = false , $ urlparams = array ())
45+ {
46+ // Show donate message
47+ $ this ->showDonatemessage ();
48+
49+ return parent ::display ($ cachable , $ urlparams );
50+ }
51+
2952 /**
3053 * Redirect to site.
3154 *
@@ -66,4 +89,42 @@ public function siteRedirect()
6689 $ this ->setRedirect (Uri::root () . $ redirect . $ debug );
6790 $ this ->redirect ();
6891 }
92+
93+ /**
94+ * Method to show donate message by downloads counter.
95+ *
96+ * @throws Exception
97+ *
98+ * @since __DEPLOY_VERSION__
99+ */
100+ protected function showDonateMessage ()
101+ {
102+ // Get params
103+ $ params = ComponentHelper::getParams ('com_swjprojects ' );
104+ $ config = $ params ->get ('donate_counter ' , 0 );
105+
106+ // Get current downloads
107+ $ db = Factory::getDbo ();
108+ $ query = $ db ->getQuery (true )
109+ ->select ('SUM(downloads) ' )
110+ ->from ('#__swjprojects_versions ' );
111+ $ db ->setQuery ($ query );
112+ $ downloads = $ db ->loadResult ();
113+
114+ // Set message
115+ if (($ downloads - $ config ) >= 10 )
116+ {
117+ Factory::getApplication ()->enqueueMessage (
118+ LayoutHelper::render ('components.swjprojects.message.donate ' ), '' );
119+
120+ // Update params
121+ $ params ->set ('donate_counter ' , $ downloads );
122+
123+ $ component = new stdClass ();
124+ $ component ->element = 'com_swjprojects ' ;
125+ $ component ->params = $ params ->toString ();
126+
127+ $ db ->updateObject ('#__extensions ' , $ component , array ('element ' ));
128+ }
129+ }
69130}
0 commit comments