/interfaces/admin/components/pages/controllers/mainpage.php

https://gitlab.com/x33n/platform · PHP · 283 lines · 218 code · 42 blank · 23 comment · 47 complexity · 23dbed59740b24e02d82e5ddaf38b531 MD5 · raw file

  1. <?php
  2. // handle template change
  3. if (isset($_POST['change_template_id'])) {
  4. $settings_request = new CASHRequest(
  5. array(
  6. 'cash_request_type' => 'system',
  7. 'cash_action' => 'setsettings',
  8. 'type' => 'public_profile_template',
  9. 'value' => $_POST['change_template_id'],
  10. 'user_id' => $cash_admin->effective_user_id
  11. )
  12. );
  13. }
  14. // get the current template:
  15. $settings_request = new CASHRequest(
  16. array(
  17. 'cash_request_type' => 'system',
  18. 'cash_action' => 'getsettings',
  19. 'type' => 'public_profile_template',
  20. 'user_id' => $cash_admin->effective_user_id
  21. )
  22. );
  23. $cash_admin->page_data['template_id'] = $settings_request->response['payload'];
  24. if ($cash_admin->page_data['template_id']) {
  25. $cash_admin->page_data['show_published'] = true;
  26. }
  27. // handle campaign selection
  28. $current_campaign = $admin_primary_cash_request->sessionGet('current_campaign');
  29. if (!$current_campaign) {
  30. $settings_request = new CASHRequest(
  31. array(
  32. 'cash_request_type' => 'system',
  33. 'cash_action' => 'getsettings',
  34. 'type' => 'selected_campaign',
  35. 'user_id' => $cash_admin->effective_user_id
  36. )
  37. );
  38. if ($settings_request->response['payload']) {
  39. $current_campaign = $settings_request->response['payload'];
  40. $admin_primary_cash_request->sessionSet('current_campaign',$current_campaign);
  41. }
  42. }
  43. if (isset($_POST['current-campaign'])) {
  44. $current_campaign = $_POST['current-campaign'];
  45. $admin_primary_cash_request->sessionSet('current_campaign',$current_campaign);
  46. $settings_request = new CASHRequest(
  47. array(
  48. 'cash_request_type' => 'system',
  49. 'cash_action' => 'setsettings',
  50. 'type' => 'selected_campaign',
  51. 'value' => $current_campaign,
  52. 'user_id' => $cash_admin->effective_user_id
  53. )
  54. );
  55. }
  56. // get username and any user data
  57. $user_response = $cash_admin->requestAndStore(
  58. array(
  59. 'cash_request_type' => 'people',
  60. 'cash_action' => 'getuser',
  61. 'user_id' => $cash_admin->effective_user_id
  62. )
  63. );
  64. if (is_array($user_response['payload'])) {
  65. $current_username = $user_response['payload']['username'];
  66. $current_userdata = $user_response['payload']['data'];
  67. }
  68. // get news for the news feed
  69. $session_news = AdminHelper::getActivity($current_userdata);
  70. if (is_array($session_news['activity']['lists'])) {
  71. foreach ($session_news['activity']['lists'] as &$list_stats) {
  72. if ($list_stats['total'] == 1) {
  73. $list_stats['singular'] = true;
  74. } else {
  75. $list_stats['singular'] = false;
  76. }
  77. }
  78. }
  79. //Any Notifications?
  80. $cash_admin->page_data['dashboard_active'] = $session_news['activity']['lists'] || $session_news['activity']['orders'];
  81. $cash_admin->page_data['dashboard_lists'] = $session_news['activity']['lists'];
  82. if ($session_news['activity']['orders']) {
  83. $cash_admin->page_data['dashboard_orders'] = count($session_news['activity']['orders']);
  84. if ($cash_admin->page_data['dashboard_orders'] == 1) {
  85. $cash_admin->page_data['dashboard_orders_singular'] = true;
  86. }
  87. } else {
  88. $cash_admin->page_data['dashboard_orders'] = false;
  89. }
  90. // get page url
  91. if (SUBDOMAIN_USERNAMES) {
  92. $cash_admin->page_data['user_page_uri'] = str_replace('https','http',rtrim(str_replace('admin', '', CASH_ADMIN_URL),'/'));
  93. $cash_admin->page_data['user_page_uri'] = str_replace('://','://' . $current_username . '.',$cash_admin->page_data['user_page_uri']);
  94. } else {
  95. $cash_admin->page_data['user_page_uri'] = str_replace('https','http',rtrim(str_replace('admin', $current_username, CASH_ADMIN_URL),'/'));
  96. }
  97. $cash_admin->page_data['user_page_display_uri'] = str_replace('http://','',$cash_admin->page_data['user_page_uri']);
  98. //get public URL
  99. $cash_admin->page_data['public_url'] = CASH_PUBLIC_URL;
  100. // all user elements defined
  101. $elements_response = $cash_admin->requestAndStore(
  102. array(
  103. 'cash_request_type' => 'element',
  104. 'cash_action' => 'getelementsforuser',
  105. 'user_id' => $cash_admin->effective_user_id
  106. )
  107. );
  108. if (!is_array($elements_response['payload'])) {
  109. $elements_response['payload'] = array();
  110. }
  111. // get all campaigns
  112. $campaigns_response = $cash_admin->requestAndStore(
  113. array(
  114. 'cash_request_type' => 'element',
  115. 'cash_action' => 'getcampaignsforuser',
  116. 'user_id' => $cash_admin->effective_user_id
  117. )
  118. );
  119. $total_campaigns = count($campaigns_response['payload']);
  120. $total_elements = count($elements_response['payload']);
  121. if ($total_campaigns) {
  122. //
  123. //
  124. // TODO: proper selection of elements instead of just the first one because whatever
  125. if (!$current_campaign) {
  126. $current_campaign = $campaigns_response['payload'][count($campaigns_response['payload']) - 1]['id'];
  127. $admin_primary_cash_request->sessionSet('current_campaign',$current_campaign);
  128. }
  129. $campaign_elements = array();
  130. if (is_array($campaigns_response['payload'])) {
  131. $cash_admin->page_data['campaigns_as_options'] = '';
  132. foreach ($campaigns_response['payload'] as &$campaign) {
  133. // pull out element details
  134. $campaign['elements'] = json_decode($campaign['elements'],true);
  135. if (is_array($campaign['elements'])) {
  136. $campaign_elements = array_merge($campaign['elements'],$campaign_elements);
  137. if ($campaign['id'] == $current_campaign) {
  138. $elements_response = $cash_admin->requestAndStore(
  139. array(
  140. 'cash_request_type' => 'element',
  141. 'cash_action' => 'getelementsforcampaign',
  142. 'id' => $campaign['id']
  143. )
  144. );
  145. if (is_array($elements_response['payload'])) {
  146. $elements_response['payload'] = array_reverse($elements_response['payload']);
  147. foreach ($elements_response['payload'] as &$element) {
  148. if ($element['modification_date'] == 0) {
  149. $element['formatted_date'] = CASHSystem::formatTimeAgo($element['creation_date']);
  150. } else {
  151. $element['formatted_date'] = CASHSystem::formatTimeAgo($element['modification_date']);
  152. }
  153. }
  154. $cash_admin->page_data['elements_for_campaign'] = new ArrayIterator($elements_response['payload']);
  155. if ($cash_admin->page_data['elements_for_campaign']){
  156. $cash_admin->page_data['has_elements'] = true;
  157. };
  158. }
  159. }
  160. }
  161. // set element count
  162. $campaign['element_count'] = count($campaign['elements']);
  163. if ($campaign['template_id'] == 0) {
  164. $campaign['show_wizard'] = true;
  165. }
  166. // add campaign to dropdown options
  167. $cash_admin->page_data['campaigns_as_options'] .= '<option value="' . $campaign['id'] .'"';
  168. if ($campaign['id'] == $current_campaign) {
  169. $cash_admin->page_data['campaigns_as_options'] .= ' selected="selected"';
  170. }
  171. $cash_admin->page_data['campaigns_as_options'] .= '>' . $campaign['title'] . '</option>';
  172. // normalize modification/creation dates
  173. if ($campaign['modification_date'] == 0) {
  174. $campaign['formatted_date'] = CASHSystem::formatTimeAgo($campaign['creation_date']);
  175. } else {
  176. $campaign['formatted_date'] = CASHSystem::formatTimeAgo($campaign['modification_date']);
  177. }
  178. if ($campaign['id'] == $current_campaign) {
  179. // get campaign analytics
  180. $analytics_response = $cash_admin->requestAndStore(
  181. array(
  182. 'cash_request_type' => 'element',
  183. 'cash_action' => 'getanalyticsforcampaign',
  184. 'id' => $campaign['id']
  185. )
  186. );
  187. $campaign['formatted_views'] = CASHSystem::formatCount(0 + $analytics_response['payload']['total_views']);
  188. // set the campaign as the selected campaign
  189. $cash_admin->page_data['selected_campaign'] = $campaign;
  190. }
  191. }
  192. }
  193. if ($cash_admin->page_data['template_id']) {
  194. foreach ($campaigns_response['payload'] as &$campaign) {
  195. if ($campaign['template_id'] == $cash_admin->page_data['template_id']) {
  196. $campaign['currently_published'] = true;
  197. }
  198. }
  199. }
  200. // set all campaigns as a mustache var
  201. $cash_admin->page_data['campaigns_for_user'] = new ArrayIterator($campaigns_response['payload']);
  202. }
  203. // handle users migrated from beta
  204. $extra_elements = $total_elements - count($campaign_elements);
  205. if ($extra_elements !== 0) {
  206. $cash_admin->page_data['show_archive'] = true;
  207. }
  208. // handle tour junk
  209. $settings_request = new CASHRequest(
  210. array(
  211. 'cash_request_type' => 'system',
  212. 'cash_action' => 'getsettings',
  213. 'type' => 'tour',
  214. 'user_id' => $cash_admin->effective_user_id
  215. )
  216. );
  217. if (!$settings_request->response['payload']) {
  218. $settings_request = new CASHRequest(
  219. array(
  220. 'cash_request_type' => 'system',
  221. 'cash_action' => 'setsettings',
  222. 'type' => 'tour',
  223. 'value' => 1,
  224. 'user_id' => $cash_admin->effective_user_id
  225. )
  226. );
  227. $cash_admin->page_data['show_tour'] = true;
  228. }
  229. // figure out and select the correct view
  230. $cash_admin->setPageContentTemplate('mainpage');
  231. if ($total_campaigns) {
  232. $cash_admin->page_data['has_campaigns'] = true;
  233. if (!$total_elements) {
  234. $cash_admin->page_data['campaigns_noelements'] = true;
  235. }
  236. } else {
  237. if ($total_elements) {
  238. $cash_admin->page_data['migrated'] = true;
  239. }
  240. }
  241. ?>