PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/source/plugins/plg_content_pfnotifications/helper.php

https://github.com/projectfork/Projectfork
PHP | 384 lines | 314 code | 63 blank | 7 comment | 53 complexity | 65ef0aa46f8aac0ef08ce8763d87380c MD5 | raw file
  1. <?php
  2. /**
  3. * @package Projectfork
  4. *
  5. * @author Tobias Kuhn (eaxs)
  6. * @copyright Copyright (C) 2006-2012 Tobias Kuhn. All rights reserved.
  7. * @license http://www.gnu.org/licenses/gpl.html GNU/GPL, see LICENSE.txt
  8. */
  9. defined('_JEXEC') or die();
  10. class PFnotificationsHelper
  11. {
  12. public static function formatChanges(&$lang, $changes)
  13. {
  14. $format = array();
  15. foreach ($changes AS $field => $value)
  16. {
  17. $label = '* ' . $lang->_('COM_PROJECTFORK_EMAIL_LABEL_' . strtoupper($field)) . ': ';
  18. $data = self::translateValue($field, $value);
  19. $format[] = $label . "\n" . $data;
  20. }
  21. return implode("\n", $format);
  22. }
  23. public static function translateValue($field, $value)
  24. {
  25. static $access_titles = array();
  26. static $cat_titles = array();
  27. static $project_titles = array();
  28. static $ms_titles = array();
  29. static $list_titles = array();
  30. static $topic_titles = array();
  31. static $task_titles = array();
  32. static $dir_titles = array();
  33. static $note_titles = array();
  34. static $file_titles = array();
  35. static $user_names = array();
  36. $db = JFactory::getDbo();
  37. $query = $db->getQuery(true);
  38. switch ($field)
  39. {
  40. case 'description':
  41. $data = strip_tags($value);
  42. break;
  43. case 'start_date':
  44. case 'end_date':
  45. $data = JHtml::_('date', $value, JText::_('DATE_FORMAT_LC3'));
  46. break;
  47. case 'access':
  48. if (array_key_exists($value, $access_titles)) {
  49. $data = $access_titles[$value];
  50. }
  51. else {
  52. $query->clear();
  53. $query->select('title')
  54. ->from('#__viewlevels')
  55. ->where('id = ' . $db->quote((int) $value));
  56. $db->setQuery($query);
  57. $title = $db->loadResult();
  58. $access_titles[$value] = $title;
  59. $data = $access_titles[$value];
  60. }
  61. break;
  62. case 'catid':
  63. if (array_key_exists($value, $cat_titles)) {
  64. $data = $cat_titles[$value];
  65. }
  66. else {
  67. if ($value > 0) {
  68. $query->clear();
  69. $query->select('title')
  70. ->from('#__categories')
  71. ->where('id = ' . $db->quote((int) $value));
  72. $db->setQuery($query);
  73. $title = $db->loadResult();
  74. }
  75. else {
  76. $title = '-';
  77. }
  78. $cat_titles[$value] = $title;
  79. $data = $cat_titles[$value];
  80. }
  81. break;
  82. case 'project_id':
  83. if (array_key_exists($value, $project_titles)) {
  84. $data = $project_titles[$value];
  85. }
  86. else {
  87. if ($value > 0) {
  88. $query->clear();
  89. $query->select('title')
  90. ->from('#__pf_projects')
  91. ->where('id = ' . $db->quote((int) $value));
  92. $db->setQuery($query);
  93. $title = $db->loadResult();
  94. }
  95. else {
  96. $title = '-';
  97. }
  98. $project_titles[$value] = $title;
  99. $data = $project_titles[$value];
  100. }
  101. break;
  102. case 'milestone_id':
  103. if (array_key_exists($value, $ms_titles)) {
  104. $data = $ms_titles[$value];
  105. }
  106. else {
  107. if ($value > 0) {
  108. $query->clear();
  109. $query->select('title')
  110. ->from('#__pf_milestones')
  111. ->where('id = ' . $db->quote((int) $value));
  112. $db->setQuery($query);
  113. $title = $db->loadResult();
  114. }
  115. else {
  116. $title = '-';
  117. }
  118. $ms_titles[$value] = $title;
  119. $data = $ms_titles[$value];
  120. }
  121. break;
  122. case 'list_id':
  123. if (array_key_exists($value, $list_titles)) {
  124. $data = $list_titles[$value];
  125. }
  126. else {
  127. if ($value > 0) {
  128. $query->clear();
  129. $query->select('title')
  130. ->from('#__pf_task_lists')
  131. ->where('id = ' . $db->quote((int) $value));
  132. $db->setQuery($query);
  133. $title = $db->loadResult();
  134. }
  135. else {
  136. $title = '-';
  137. }
  138. $list_titles[$value] = $title;
  139. $data = $list_titles[$value];
  140. }
  141. break;
  142. case 'task_id':
  143. if (array_key_exists($value, $task_titles)) {
  144. $data = $task_titles[$value];
  145. }
  146. else {
  147. if ($value > 0) {
  148. $query->clear();
  149. $query->select('title')
  150. ->from('#__pf_tasks')
  151. ->where('id = ' . $db->quote((int) $value));
  152. $db->setQuery($query);
  153. $title = $db->loadResult();
  154. }
  155. else {
  156. $title = '-';
  157. }
  158. $task_titles[$value] = $title;
  159. $data = $task_titles[$value];
  160. }
  161. break;
  162. case 'topic_id':
  163. if (array_key_exists($value, $topic_titles)) {
  164. $data = $topic_titles[$value];
  165. }
  166. else {
  167. if ($value > 0) {
  168. $query->clear();
  169. $query->select('title')
  170. ->from('#__pf_topics')
  171. ->where('id = ' . $db->quote((int) $value));
  172. $db->setQuery($query);
  173. $title = $db->loadResult();
  174. }
  175. else {
  176. $title = '-';
  177. }
  178. $topic_titles[$value] = $title;
  179. $data = $topic_titles[$value];
  180. }
  181. break;
  182. case 'directory_id':
  183. if (array_key_exists($value, $dir_titles)) {
  184. $data = $dir_titles[$value];
  185. }
  186. else {
  187. if ($value > 0) {
  188. $query->clear();
  189. $query->select('title')
  190. ->from('#__pf_repo_dirs')
  191. ->where('id = ' . $db->quote((int) $value));
  192. $db->setQuery($query);
  193. $title = $db->loadResult();
  194. }
  195. else {
  196. $title = '-';
  197. }
  198. $dir_titles[$value] = $title;
  199. $data = $dir_titles[$value];
  200. }
  201. break;
  202. case 'file_id':
  203. if (array_key_exists($value, $file_titles)) {
  204. $data = $file_titles[$value];
  205. }
  206. else {
  207. if ($value > 0) {
  208. $query->clear();
  209. $query->select('title')
  210. ->from('#__pf_repo_files')
  211. ->where('id = ' . $db->quote((int) $value));
  212. $db->setQuery($query);
  213. $title = $db->loadResult();
  214. }
  215. else {
  216. $title = '-';
  217. }
  218. $file_titles[$value] = $title;
  219. $data = $file_titles[$value];
  220. }
  221. break;
  222. case 'note_id':
  223. if (array_key_exists($value, $note_titles)) {
  224. $data = $note_titles[$value];
  225. }
  226. else {
  227. if ($value > 0) {
  228. $query->clear();
  229. $query->select('title')
  230. ->from('#__pf_repo_notes')
  231. ->where('id = ' . $db->quote((int) $value));
  232. $db->setQuery($query);
  233. $title = $db->loadResult();
  234. }
  235. else {
  236. $title = '-';
  237. }
  238. $note_titles[$value] = $title;
  239. $data = $note_titles[$value];
  240. }
  241. break;
  242. case 'created_by':
  243. if (array_key_exists($value, $user_names)) {
  244. $data = $user_names[$value];
  245. }
  246. else {
  247. if ($value > 0) {
  248. $query->clear();
  249. $query->select('name')
  250. ->from('#__users')
  251. ->where('id = ' . $db->quote((int) $value));
  252. $db->setQuery($query);
  253. $name = $db->loadResult();
  254. }
  255. else {
  256. $name = '-';
  257. }
  258. $user_names[$value] = $name;
  259. $data = $user_names[$value];
  260. }
  261. break;
  262. case 'priority':
  263. if (class_exists('PFtasksHelper')) {
  264. $data = PFtasksHelper::priority2string($value);
  265. }
  266. else {
  267. $data = $value;
  268. }
  269. break;
  270. default:
  271. $data = $value;
  272. break;
  273. }
  274. return $data;
  275. }
  276. public static function isSupported($context, $params = null)
  277. {
  278. list($component, $item) = explode('.', $context, 2);
  279. $components = PFApplicationHelper::getComponents();
  280. if (!array_key_exists($component, $components)) {
  281. return false;
  282. }
  283. if (!self::getComponentHelper($component)) {
  284. return false;
  285. }
  286. $class_name = 'PF' . str_replace('com_pf', '', $component) . 'NotificationsHelper';
  287. $methods = get_class_methods($class_name);
  288. if (!in_array('isSupported', $methods)) {
  289. return false;
  290. }
  291. if (is_object($params)) {
  292. $settings = array(
  293. 'com_pfprojects' => (int) $params->get('projects_enabled', 1),
  294. 'com_pfmilestones' => (int) $params->get('milestones_enabled', 1),
  295. 'com_pftasks' => (int) $params->get('tasks_enabled', 1),
  296. 'com_pfforum' => (int) $params->get('forum_enabled', 1),
  297. 'com_pfrepo' => (int) $params->get('repo_enabled', 1),
  298. 'com_pfdesigns' => (int) $params->get('designs_enabled', 1)
  299. );
  300. if (array_key_exists($component, $settings)) {
  301. if (!$settings[$component]) {
  302. return false;
  303. }
  304. }
  305. }
  306. $supported = call_user_func(array($class_name, 'isSupported'), $context);
  307. return $supported;
  308. }
  309. public static function getComponentHelper($component)
  310. {
  311. $helper_file = JPATH_ADMINISTRATOR . '/components/' . $component . '/helpers/notifications.php';
  312. $class_name = 'PF' . str_replace('com_pf', '', $component) . 'NotificationsHelper';
  313. if (file_exists($helper_file)) {
  314. JLoader::register($class_name, $helper_file);
  315. }
  316. if (!class_exists($class_name)) {
  317. return false;
  318. }
  319. return true;
  320. }
  321. }