BuddyPress - Version 2.6.0-beta1

Version Description

= 2.5.1 = See: https://codex.buddypress.org/releases/version-2-5-1/

= 2.5 = See: https://codex.buddypress.org/releases/version-2-5-0/

= 2.4.3 = See: https://codex.buddypress.org/releases/version-2-4-3/

= 2.4.2 = See: https://codex.buddypress.org/releases/version-2-4-2/

= 2.4.1 = See: https://codex.buddypress.org/releases/version-2-4-1/

= 2.4 = See: https://codex.buddypress.org/releases/version-2-4-0/

= 2.3.5 = See: https://codex.buddypress.org/releases/version-2-3-5/

= 2.3.4 = See: https://codex.buddypress.org/releases/version-2-3-4/

= 2.3.3 = See: https://codex.buddypress.org/releases/version-2-3-3/

= 2.3.2 = See: https://codex.buddypress.org/releases/version-2-3-2/

= 2.3.1 = See: https://codex.buddypress.org/releases/version-2-3-1/

= 2.3.0 = See: https://codex.buddypress.org/releases/version-2-3-0/

= 2.2.3.1 = See: https://codex.buddypress.org/releases/version-2-2-3-1/

= 2.2.3 = See: https://codex.buddypress.org/releases/version-2-2-3/

= 2.2.2.1 = See: https://codex.buddypress.org/releases/version-2-2-2-1/

= 2.2.2 = See: https://codex.buddypress.org/releases/version-2-2-2/

= 2.2.1 = See: https://codex.buddypress.org/releases/version-2-2-1/

= 2.2 = See: https://codex.buddypress.org/releases/version-2-2/

= 2.1 = See: https://codex.buddypress.org/releases/version-2-1/

= 2.0.3 = See: https://codex.buddypress.org/releases/version-2-0-3/

= 2.0.2 = See: https://codex.buddypress.org/releases/version-2-0-2/

= 2.0.1 = See: https://codex.buddypress.org/releases/version-2-0-1/

= 2.0 = See: https://codex.buddypress.org/releases/version-2-0/

= 1.9.2 = See: https://codex.buddypress.org/releases/version-1-9-2/

= 1.9.1 = See: https://codex.buddypress.org/releases/version-1-9-1/

= 1.9 = See: https://codex.buddypress.org/releases/version-1-9/

= 1.8.1 = See: https://codex.buddypress.org/releases/version-1-8-1/

= 1.8 = See: https://codex.buddypress.org/releases/version-1-8/

= 1.7.3 = See: https://codex.buddypress.org/releases/version-1-7-3/

= 1.7.2 = See: https://codex.buddypress.org/releases/version-1-7-2/

= 1.7.1 = See: https://codex.buddypress.org/releases/version-1-7-1/

= 1.7 = See: https://codex.buddypress.org/releases/version-1-7/

= 1.6.5 = See: https://codex.buddypress.org/releases/version-1-6-5/

= 1.6.4 = See: https://codex.buddypress.org/releases/version-1-6-4/

= 1.6.3 = See: https://codex.buddypress.org/releases/version-1-6-3/

= 1.6.2 = Compatibility with WordPress 3.5

= 1.6.1 = Fixes 4 bugs

= 1.6 = See: https://codex.buddypress.org/releases/version-1-6/

= 1.5 = See: https://codex.buddypress.org/releases/version-1-5/

= 1.2.9 = Compatibility with WordPress 3.2

= 1.2.8 = Compatibility with WordPress 3.1

= 1.2.7 = Fixes over 10 bugs.

Download this release

Release Info

Developer Otto42
Plugin Icon 128x128 BuddyPress
Version 2.6.0-beta1
Comparing to
See all releases

Code changes from version 2.9.4 to 2.6.0-beta1

Files changed (279) hide show
  1. bp-activity/admin/css/admin-rtl.css +5 -23
  2. bp-activity/admin/css/admin-rtl.min.css +1 -1
  3. bp-activity/admin/css/admin.css +5 -23
  4. bp-activity/admin/css/admin.min.css +1 -1
  5. bp-activity/admin/js/admin.min.js +1 -1
  6. bp-activity/bp-activity-actions.php +41 -6
  7. bp-activity/bp-activity-admin.php +11 -8
  8. bp-activity/bp-activity-akismet.php +2 -21
  9. bp-activity/bp-activity-cache.php +0 -21
  10. bp-activity/bp-activity-classes.php +20 -0
  11. bp-activity/bp-activity-embeds.php +3 -3
  12. bp-activity/bp-activity-filters.php +21 -22
  13. bp-activity/bp-activity-functions.php +79 -345
  14. bp-activity/bp-activity-loader.php +5 -1
  15. bp-activity/bp-activity-notifications.php +252 -111
  16. bp-activity/bp-activity-screens.php +5 -6
  17. bp-activity/bp-activity-template.php +74 -76
  18. bp-activity/classes/class-bp-activity-activity.php +123 -109
  19. bp-activity/classes/class-bp-activity-component.php +18 -9
  20. bp-activity/classes/class-bp-activity-list-table.php +14 -28
  21. bp-activity/classes/class-bp-activity-oembed-extension.php +0 -2
  22. bp-activity/classes/class-bp-activity-template.php +3 -2
  23. bp-activity/css/mentions-rtl.css +10 -24
  24. bp-activity/css/mentions-rtl.min.css +1 -1
  25. bp-activity/css/mentions.css +10 -25
  26. bp-activity/css/mentions.min.css +1 -1
  27. bp-activity/js/mentions.min.js +1 -1
  28. bp-blogs/bp-blogs-activity.php +13 -32
  29. bp-blogs/bp-blogs-classes.php +13 -0
  30. bp-blogs/bp-blogs-filters.php +0 -14
  31. bp-blogs/bp-blogs-functions.php +20 -103
  32. bp-blogs/bp-blogs-loader.php +4 -2
  33. bp-blogs/bp-blogs-screens.php +4 -0
  34. bp-blogs/bp-blogs-template.php +32 -109
  35. bp-blogs/bp-blogs-widgets.php +5 -1
  36. bp-blogs/classes/class-bp-blogs-blog.php +10 -50
  37. bp-blogs/classes/class-bp-blogs-component.php +5 -6
  38. bp-core/admin/bp-core-admin-classes.php +13 -0
  39. bp-core/admin/bp-core-admin-components.php +2 -7
  40. bp-core/admin/bp-core-admin-functions.php +1 -63
  41. bp-core/admin/bp-core-admin-schema.php +26 -13
  42. bp-core/admin/bp-core-admin-settings.php +1 -33
  43. bp-core/admin/bp-core-admin-slugs.php +4 -11
  44. bp-core/admin/bp-core-admin-tools.php +31 -22
  45. bp-core/admin/css/common-rtl.css +85 -395
  46. bp-core/admin/css/common-rtl.min.css +1 -1
  47. bp-core/admin/css/common.css +85 -395
  48. bp-core/admin/css/common.min.css +1 -1
  49. bp-core/admin/css/customizer-controls-rtl.css +3 -3
  50. bp-core/admin/css/customizer-controls-rtl.min.css +1 -1
  51. bp-core/admin/css/customizer-controls.css +3 -3
  52. bp-core/admin/css/customizer-controls.min.css +1 -1
  53. bp-core/admin/images/autolink-feature.png +0 -0
  54. bp-core/admin/images/bp-emails-feature.png +0 -0
  55. bp-core/admin/images/emoji-feature.png +0 -0
  56. bp-core/admin/images/post-type.png +0 -0
  57. bp-core/admin/images/twentytwelve.png +0 -0
  58. bp-core/admin/js/customizer-controls.min.js +1 -1
  59. bp-core/admin/js/customizer-receiver-emails.min.js +1 -1
  60. bp-core/admin/js/dismissible-admin-notices.js +0 -16
  61. bp-core/admin/js/dismissible-admin-notices.min.js +0 -1
  62. bp-core/bp-core-actions.php +4 -12
  63. bp-core/bp-core-admin.php +23 -27
  64. bp-core/bp-core-adminbar.php +6 -5
  65. bp-core/bp-core-attachments.php +24 -40
  66. bp-core/bp-core-avatars.php +139 -80
  67. bp-core/bp-core-buddybar.php +36 -34
  68. bp-core/bp-core-cache.php +6 -116
  69. bp-core/bp-core-caps.php +20 -65
  70. bp-core/bp-core-catchuri.php +26 -123
  71. bp-core/bp-core-classes.php +40 -0
  72. bp-core/bp-core-cssjs.php +22 -147
  73. bp-core/bp-core-customizer-email.php +12 -3
  74. bp-core/bp-core-dependency.php +30 -1
  75. bp-core/bp-core-filters.php +47 -73
  76. bp-core/bp-core-functions.php +82 -506
  77. bp-core/bp-core-loader.php +8 -1
  78. bp-core/bp-core-moderation.php +5 -5
  79. bp-core/bp-core-options.php +71 -24
  80. bp-core/bp-core-taxonomy.php +8 -116
  81. bp-core/bp-core-template-loader.php +7 -16
  82. bp-core/bp-core-template.php +13 -99
  83. bp-core/bp-core-theme-compatibility.php +15 -11
  84. bp-core/bp-core-update.php +24 -109
  85. bp-core/bp-core-widgets.php +5 -1
  86. bp-core/bp-core-wpabstraction.php +12 -5
  87. bp-core/classes/class-bp-admin.php +93 -147
  88. bp-core/classes/class-bp-attachment-avatar.php +6 -15
  89. bp-core/classes/class-bp-attachment-cover-image.php +1 -1
  90. bp-core/classes/class-bp-attachment.php +37 -45
  91. bp-core/classes/class-bp-button.php +76 -238
  92. bp-core/classes/class-bp-core-bp-nav-backcompat.php +1 -1
  93. bp-core/classes/class-bp-core-html-element.php +0 -127
  94. bp-core/classes/class-bp-core-login-widget.php +1 -1
  95. bp-core/classes/class-bp-core-nav-item.php +19 -0
  96. bp-core/classes/class-bp-core-nav.php +19 -21
  97. bp-core/classes/class-bp-core-oembed-extension.php +15 -23
  98. bp-core/classes/class-bp-core-sort-by-key-callback.php +83 -0
  99. bp-core/classes/class-bp-core-user.php +14 -21
  100. bp-core/classes/class-bp-core.php +4 -2
  101. bp-core/classes/class-bp-media-extractor.php +1 -1
  102. bp-core/classes/class-bp-phpmailer.php +2 -13
  103. bp-core/classes/class-bp-theme-compat.php +1 -1
  104. bp-core/classes/class-bp-user-query.php +10 -18
  105. bp-core/classes/class-bp-walker-nav-menu.php +3 -1
  106. bp-core/css/admin-bar-rtl.css +5 -20
  107. bp-core/css/admin-bar-rtl.min.css +1 -1
  108. bp-core/css/admin-bar.css +5 -20
  109. bp-core/css/admin-bar.min.css +1 -1
  110. bp-core/css/avatar-rtl.css +16 -23
  111. bp-core/css/avatar-rtl.min.css +1 -1
  112. bp-core/css/avatar.css +16 -23
  113. bp-core/css/avatar.min.css +1 -1
  114. bp-core/css/buddybar-rtl.css +5 -39
  115. bp-core/css/buddybar-rtl.min.css +1 -1
  116. bp-core/css/buddybar.css +5 -39
  117. bp-core/css/buddybar.min.css +1 -1
  118. bp-core/deprecated/1.2.php +1 -1
  119. bp-core/deprecated/1.5.php +1 -1
  120. bp-core/deprecated/1.6.php +2 -7
  121. bp-core/deprecated/1.7.php +1 -1
  122. bp-core/deprecated/1.9.php +16 -19
  123. bp-core/deprecated/2.1.php +4 -4
  124. bp-core/deprecated/2.5.php +3 -3
  125. bp-core/deprecated/2.7.php +0 -26
  126. bp-core/deprecated/2.8.php +0 -199
  127. bp-core/deprecated/2.9.php +0 -30
  128. bp-core/js/avatar.min.js +1 -1
  129. bp-core/js/bp-plupload.js +1 -6
  130. bp-core/js/bp-plupload.min.js +1 -1
  131. bp-core/js/confirm.min.js +1 -1
  132. bp-core/js/cover-image.min.js +1 -1
  133. bp-core/js/{vendor/jquery-cookie.js → jquery-cookie.js} +0 -0
  134. bp-core/js/jquery-cookie.min.js +1 -0
  135. bp-core/js/jquery-query.min.js +1 -1
  136. bp-core/js/{vendor/jquery-scroll-to.js → jquery-scroll-to.js} +0 -0
  137. bp-core/js/jquery-scroll-to.min.js +1 -0
  138. bp-core/js/{vendor/jquery.atwho.js → jquery.atwho.js} +0 -0
  139. bp-core/js/jquery.atwho.min.js +1 -0
  140. bp-core/js/{vendor/jquery.atwho.txt → jquery.atwho.txt} +0 -0
  141. bp-core/js/{vendor/jquery.caret.js → jquery.caret.js} +0 -0
  142. bp-core/js/jquery.caret.min.js +1 -0
  143. bp-core/js/{vendor/jquery.caret.txt → jquery.caret.txt} +0 -0
  144. bp-core/js/vendor/jquery-cookie.min.js +0 -1
  145. bp-core/js/vendor/jquery-scroll-to.min.js +0 -1
  146. bp-core/js/vendor/jquery.atwho.min.js +0 -1
  147. bp-core/js/vendor/jquery.caret.min.js +0 -1
  148. bp-core/js/vendor/livestamp.js +0 -129
  149. bp-core/js/vendor/livestamp.min.js +0 -1
  150. bp-core/js/vendor/moment-js/locale/af.js +0 -73
  151. bp-core/js/vendor/moment-js/locale/af.min.js +0 -1
  152. bp-core/js/vendor/moment-js/locale/ar-ly.js +0 -122
  153. bp-core/js/vendor/moment-js/locale/ar-ly.min.js +0 -1
  154. bp-core/js/vendor/moment-js/locale/ar-ma.js +0 -60
  155. bp-core/js/vendor/moment-js/locale/ar-ma.min.js +0 -1
  156. bp-core/js/vendor/moment-js/locale/ar-sa.js +0 -104
  157. bp-core/js/vendor/moment-js/locale/ar-sa.min.js +0 -1
  158. bp-core/js/vendor/moment-js/locale/ar-tn.js +0 -59
  159. bp-core/js/vendor/moment-js/locale/ar-tn.min.js +0 -1
  160. bp-core/js/vendor/moment-js/locale/ar.js +0 -137
  161. bp-core/js/vendor/moment-js/locale/ar.min.js +0 -1
  162. bp-core/js/vendor/moment-js/locale/az.js +0 -105
  163. bp-core/js/vendor/moment-js/locale/az.min.js +0 -1
  164. bp-core/js/vendor/moment-js/locale/be.js +0 -134
  165. bp-core/js/vendor/moment-js/locale/be.min.js +0 -1
  166. bp-core/js/vendor/moment-js/locale/bg.js +0 -90
  167. bp-core/js/vendor/moment-js/locale/bg.min.js +0 -1
  168. bp-core/js/vendor/moment-js/locale/bn.js +0 -119
  169. bp-core/js/vendor/moment-js/locale/bn.min.js +0 -1
  170. bp-core/js/vendor/moment-js/locale/bo.js +0 -119
  171. bp-core/js/vendor/moment-js/locale/bo.min.js +0 -1
  172. bp-core/js/vendor/moment-js/locale/br.js +0 -108
  173. bp-core/js/vendor/moment-js/locale/br.min.js +0 -1
  174. bp-core/js/vendor/moment-js/locale/bs.js +0 -143
  175. bp-core/js/vendor/moment-js/locale/bs.min.js +0 -1
  176. bp-core/js/vendor/moment-js/locale/ca.js +0 -81
  177. bp-core/js/vendor/moment-js/locale/ca.min.js +0 -1
  178. bp-core/js/vendor/moment-js/locale/cs.js +0 -172
  179. bp-core/js/vendor/moment-js/locale/cs.min.js +0 -1
  180. bp-core/js/vendor/moment-js/locale/cv.js +0 -63
  181. bp-core/js/vendor/moment-js/locale/cv.min.js +0 -1
  182. bp-core/js/vendor/moment-js/locale/cy.js +0 -81
  183. bp-core/js/vendor/moment-js/locale/cy.min.js +0 -1
  184. bp-core/js/vendor/moment-js/locale/da.js +0 -60
  185. bp-core/js/vendor/moment-js/locale/da.min.js +0 -1
  186. bp-core/js/vendor/moment-js/locale/de-at.js +0 -79
  187. bp-core/js/vendor/moment-js/locale/de-at.min.js +0 -1
  188. bp-core/js/vendor/moment-js/locale/de.js +0 -78
  189. bp-core/js/vendor/moment-js/locale/de.min.js +0 -1
  190. bp-core/js/vendor/moment-js/locale/dv.js +0 -99
  191. bp-core/js/vendor/moment-js/locale/dv.min.js +0 -1
  192. bp-core/js/vendor/moment-js/locale/el.js +0 -98
  193. bp-core/js/vendor/moment-js/locale/el.min.js +0 -1
  194. bp-core/js/vendor/moment-js/locale/en-au.js +0 -67
  195. bp-core/js/vendor/moment-js/locale/en-au.min.js +0 -1
  196. bp-core/js/vendor/moment-js/locale/en-ca.js +0 -63
  197. bp-core/js/vendor/moment-js/locale/en-ca.min.js +0 -1
  198. bp-core/js/vendor/moment-js/locale/en-gb.js +0 -67
  199. bp-core/js/vendor/moment-js/locale/en-gb.min.js +0 -1
  200. bp-core/js/vendor/moment-js/locale/en-ie.js +0 -67
  201. bp-core/js/vendor/moment-js/locale/en-ie.min.js +0 -1
  202. bp-core/js/vendor/moment-js/locale/en-nz.js +0 -67
  203. bp-core/js/vendor/moment-js/locale/en-nz.min.js +0 -1
  204. bp-core/js/vendor/moment-js/locale/eo.js +0 -73
  205. bp-core/js/vendor/moment-js/locale/eo.min.js +0 -1
  206. bp-core/js/vendor/moment-js/locale/es-do.js +0 -80
  207. bp-core/js/vendor/moment-js/locale/es-do.min.js +0 -1
  208. bp-core/js/vendor/moment-js/locale/es.js +0 -81
  209. bp-core/js/vendor/moment-js/locale/es.min.js +0 -1
  210. bp-core/js/vendor/moment-js/locale/et.js +0 -80
  211. bp-core/js/vendor/moment-js/locale/et.min.js +0 -1
  212. bp-core/js/vendor/moment-js/locale/eu.js +0 -66
  213. bp-core/js/vendor/moment-js/locale/eu.min.js +0 -1
  214. bp-core/js/vendor/moment-js/locale/fa.js +0 -106
  215. bp-core/js/vendor/moment-js/locale/fa.min.js +0 -1
  216. bp-core/js/vendor/moment-js/locale/fi.js +0 -107
  217. bp-core/js/vendor/moment-js/locale/fi.min.js +0 -1
  218. bp-core/js/vendor/moment-js/locale/fo.js +0 -60
  219. bp-core/js/vendor/moment-js/locale/fo.min.js +0 -1
  220. bp-core/js/vendor/moment-js/locale/fr-ca.js +0 -60
  221. bp-core/js/vendor/moment-js/locale/fr-ca.min.js +0 -1
  222. bp-core/js/vendor/moment-js/locale/fr-ch.js +0 -64
  223. bp-core/js/vendor/moment-js/locale/fr-ch.min.js +0 -1
  224. bp-core/js/vendor/moment-js/locale/fr.js +0 -64
  225. bp-core/js/vendor/moment-js/locale/fr.min.js +0 -1
  226. bp-core/js/vendor/moment-js/locale/fy.js +0 -73
  227. bp-core/js/vendor/moment-js/locale/fy.min.js +0 -1
  228. bp-core/js/vendor/moment-js/locale/gd.js +0 -76
  229. bp-core/js/vendor/moment-js/locale/gd.min.js +0 -1
  230. bp-core/js/vendor/moment-js/locale/gl.js +0 -77
  231. bp-core/js/vendor/moment-js/locale/gl.min.js +0 -1
  232. bp-core/js/vendor/moment-js/locale/he.js +0 -99
  233. bp-core/js/vendor/moment-js/locale/he.min.js +0 -1
  234. bp-core/js/vendor/moment-js/locale/hi.js +0 -124
  235. bp-core/js/vendor/moment-js/locale/hi.min.js +0 -1
  236. bp-core/js/vendor/moment-js/locale/hr.js +0 -145
  237. bp-core/js/vendor/moment-js/locale/hr.min.js +0 -1
  238. bp-core/js/vendor/moment-js/locale/hu.js +0 -109
  239. bp-core/js/vendor/moment-js/locale/hu.min.js +0 -1
  240. bp-core/js/vendor/moment-js/locale/hy-am.js +0 -95
  241. bp-core/js/vendor/moment-js/locale/hy-am.min.js +0 -1
  242. bp-core/js/vendor/moment-js/locale/id.js +0 -83
  243. bp-core/js/vendor/moment-js/locale/id.min.js +0 -1
  244. bp-core/js/vendor/moment-js/locale/is.js +0 -127
  245. bp-core/js/vendor/moment-js/locale/is.min.js +0 -1
  246. bp-core/js/vendor/moment-js/locale/it.js +0 -70
  247. bp-core/js/vendor/moment-js/locale/it.min.js +0 -1
  248. bp-core/js/vendor/moment-js/locale/ja.js +0 -76
  249. bp-core/js/vendor/moment-js/locale/ja.min.js +0 -1
  250. bp-core/js/vendor/moment-js/locale/jv.js +0 -83
  251. bp-core/js/vendor/moment-js/locale/jv.min.js +0 -1
  252. bp-core/js/vendor/moment-js/locale/ka.js +0 -89
  253. bp-core/js/vendor/moment-js/locale/ka.min.js +0 -1
  254. bp-core/js/vendor/moment-js/locale/kk.js +0 -87
  255. bp-core/js/vendor/moment-js/locale/kk.min.js +0 -1
  256. bp-core/js/vendor/moment-js/locale/km.js +0 -58
  257. bp-core/js/vendor/moment-js/locale/km.min.js +0 -1
  258. bp-core/js/vendor/moment-js/locale/ko.js +0 -65
  259. bp-core/js/vendor/moment-js/locale/ko.min.js +0 -1
  260. bp-core/js/vendor/moment-js/locale/ky.js +0 -88
  261. bp-core/js/vendor/moment-js/locale/ky.min.js +0 -1
  262. bp-core/js/vendor/moment-js/locale/lb.js +0 -137
  263. bp-core/js/vendor/moment-js/locale/lb.min.js +0 -1
  264. bp-core/js/vendor/moment-js/locale/lo.js +0 -70
  265. bp-core/js/vendor/moment-js/locale/lo.min.js +0 -1
  266. bp-core/js/vendor/moment-js/locale/lt.js +0 -117
  267. bp-core/js/vendor/moment-js/locale/lt.min.js +0 -1
  268. bp-core/js/vendor/moment-js/locale/lv.js +0 -97
  269. bp-core/js/vendor/moment-js/locale/lv.min.js +0 -1
  270. bp-core/js/vendor/moment-js/locale/me.js +0 -111
  271. bp-core/js/vendor/moment-js/locale/me.min.js +0 -1
  272. bp-core/js/vendor/moment-js/locale/mi.js +0 -64
  273. bp-core/js/vendor/moment-js/locale/mi.min.js +0 -1
  274. bp-core/js/vendor/moment-js/locale/mk.js +0 -90
  275. bp-core/js/vendor/moment-js/locale/mk.min.js +0 -1
  276. bp-core/js/vendor/moment-js/locale/ml.js +0 -81
  277. bp-core/js/vendor/moment-js/locale/ml.min.js +0 -1
  278. bp-core/js/vendor/moment-js/locale/mr.js +0 -159
  279. bp-core/js/vendor/moment-js/locale/mr.min.js +0 -1
bp-activity/admin/css/admin-rtl.css CHANGED
@@ -1,20 +1,16 @@
1
  .akismet-status {
2
  float: left;
3
  }
4
-
5
  .akismet-status a {
6
- color: #aaa;
7
  font-style: italic;
8
  }
9
-
10
  .akismet-history {
11
  margin: 13px;
12
  }
13
-
14
  .akismet-history div {
15
  margin-bottom: 13px;
16
  }
17
-
18
  .akismet-history span {
19
  color: #999;
20
  }
@@ -22,43 +18,36 @@
22
  #wp-bp-activities-wrap {
23
  padding: 5px 0;
24
  }
25
-
26
  #bp-activities {
27
  height: 120px;
28
  }
29
-
30
  #bp-replyhead {
31
  font-size: 1em;
32
- line-height: 1.4;
33
  margin: 0;
34
  }
35
-
36
  #bp-replysubmit {
37
  margin: 0;
38
  padding: 0 0 3px;
39
  text-align: center;
40
  }
41
-
42
  #bp-replysubmit .error {
43
- color: #f00;
44
  line-height: 21px;
45
  text-align: center;
46
  vertical-align: center;
47
  }
48
-
49
  #bp-replysubmit img.waiting {
50
  float: left;
51
  padding: 4px 10px 0;
52
  vertical-align: top;
53
  }
54
-
55
  #bp-activities-form .column-response img {
56
  float: right;
57
  margin-bottom: 5px;
58
  margin-left: 10px;
59
  margin-top: 1px;
60
  }
61
-
62
  .activity-errors {
63
  list-style-type: disc;
64
  margin-right: 2em;
@@ -68,38 +57,31 @@
68
  #bp_activity_content div.inside {
69
  line-height: 0;
70
  }
71
-
72
  #bp_activity_action h3,
73
  #bp_activity_content h3 {
74
  cursor: auto;
75
  }
76
-
77
  #bp_activity_action td.mceIframeContainer,
78
  #bp_activity_content td.mceIframeContainer {
79
- background-color: #fff;
80
  }
81
-
82
  #post-body #bp-activities-action_resize,
83
  #post-body #bp-activities-content_resize {
84
  position: inherit;
85
  margin-top: -2px;
86
  }
87
-
88
  #bp_activity_link input {
89
  width: 99%;
90
  }
91
-
92
  #bp-activities-primaryid {
93
  margin-bottom: 1em;
94
  }
95
-
96
  .column-action {
97
  width: 12%;
98
  }
99
 
100
  @media screen and (max-width: 782px) {
101
-
102
  body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) {
103
  display: table-cell;
104
  }
105
- }
1
  .akismet-status {
2
  float: left;
3
  }
 
4
  .akismet-status a {
5
+ color: #AAA;
6
  font-style: italic;
7
  }
 
8
  .akismet-history {
9
  margin: 13px;
10
  }
 
11
  .akismet-history div {
12
  margin-bottom: 13px;
13
  }
 
14
  .akismet-history span {
15
  color: #999;
16
  }
18
  #wp-bp-activities-wrap {
19
  padding: 5px 0;
20
  }
 
21
  #bp-activities {
22
  height: 120px;
23
  }
 
24
  #bp-replyhead {
25
  font-size: 1em;
26
+ line-height: 1.4em;
27
  margin: 0;
28
  }
 
29
  #bp-replysubmit {
30
  margin: 0;
31
  padding: 0 0 3px;
32
  text-align: center;
33
  }
 
34
  #bp-replysubmit .error {
35
+ color: red;
36
  line-height: 21px;
37
  text-align: center;
38
  vertical-align: center;
39
  }
 
40
  #bp-replysubmit img.waiting {
41
  float: left;
42
  padding: 4px 10px 0;
43
  vertical-align: top;
44
  }
 
45
  #bp-activities-form .column-response img {
46
  float: right;
47
  margin-bottom: 5px;
48
  margin-left: 10px;
49
  margin-top: 1px;
50
  }
 
51
  .activity-errors {
52
  list-style-type: disc;
53
  margin-right: 2em;
57
  #bp_activity_content div.inside {
58
  line-height: 0;
59
  }
 
60
  #bp_activity_action h3,
61
  #bp_activity_content h3 {
62
  cursor: auto;
63
  }
 
64
  #bp_activity_action td.mceIframeContainer,
65
  #bp_activity_content td.mceIframeContainer {
66
+ background-color: white;
67
  }
 
68
  #post-body #bp-activities-action_resize,
69
  #post-body #bp-activities-content_resize {
70
  position: inherit;
71
  margin-top: -2px;
72
  }
 
73
  #bp_activity_link input {
74
  width: 99%;
75
  }
 
76
  #bp-activities-primaryid {
77
  margin-bottom: 1em;
78
  }
 
79
  .column-action {
80
  width: 12%;
81
  }
82
 
83
  @media screen and (max-width: 782px) {
 
84
  body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) {
85
  display: table-cell;
86
  }
87
+ }
bp-activity/admin/css/admin-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .akismet-status{float:left}.akismet-status a{color:#aaa;font-style:italic}.akismet-history{margin:13px}.akismet-history div{margin-bottom:13px}.akismet-history span{color:#999}#wp-bp-activities-wrap{padding:5px 0}#bp-activities{height:120px}#bp-replyhead{font-size:1em;line-height:1.4;margin:0}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#bp-replysubmit img.waiting{float:left;padding:4px 10px 0;vertical-align:top}#bp-activities-form .column-response img{float:right;margin-bottom:5px;margin-left:10px;margin-top:1px}.activity-errors{list-style-type:disc;margin-right:2em}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0}#bp_activity_action h3,#bp_activity_content h3{cursor:auto}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:#fff}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px}#bp_activity_link input{width:99%}#bp-activities-primaryid{margin-bottom:1em}.column-action{width:12%}@media screen and (max-width:782px){body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}}
1
+ .akismet-status{float:left}.akismet-status a{color:#AAA;font-style:italic}.akismet-history{margin:13px}.akismet-history div{margin-bottom:13px}.akismet-history span{color:#999}#wp-bp-activities-wrap{padding:5px 0}#bp-activities{height:120px}#bp-replyhead{font-size:1em;line-height:1.4em;margin:0}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#bp-replysubmit img.waiting{float:left;padding:4px 10px 0;vertical-align:top}#bp-activities-form .column-response img{float:right;margin-bottom:5px;margin-left:10px;margin-top:1px}.activity-errors{list-style-type:disc;margin-right:2em}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0}#bp_activity_action h3,#bp_activity_content h3{cursor:auto}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:#fff}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px}#bp_activity_link input{width:99%}#bp-activities-primaryid{margin-bottom:1em}.column-action{width:12%}@media screen and (max-width:782px){body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}}
bp-activity/admin/css/admin.css CHANGED
@@ -1,20 +1,16 @@
1
  .akismet-status {
2
  float: right;
3
  }
4
-
5
  .akismet-status a {
6
- color: #aaa;
7
  font-style: italic;
8
  }
9
-
10
  .akismet-history {
11
  margin: 13px;
12
  }
13
-
14
  .akismet-history div {
15
  margin-bottom: 13px;
16
  }
17
-
18
  .akismet-history span {
19
  color: #999;
20
  }
@@ -22,43 +18,36 @@
22
  #wp-bp-activities-wrap {
23
  padding: 5px 0;
24
  }
25
-
26
  #bp-activities {
27
  height: 120px;
28
  }
29
-
30
  #bp-replyhead {
31
  font-size: 1em;
32
- line-height: 1.4;
33
  margin: 0;
34
  }
35
-
36
  #bp-replysubmit {
37
  margin: 0;
38
  padding: 0 0 3px;
39
  text-align: center;
40
  }
41
-
42
  #bp-replysubmit .error {
43
- color: #f00;
44
  line-height: 21px;
45
  text-align: center;
46
  vertical-align: center;
47
  }
48
-
49
  #bp-replysubmit img.waiting {
50
  float: right;
51
  padding: 4px 10px 0;
52
  vertical-align: top;
53
  }
54
-
55
  #bp-activities-form .column-response img {
56
  float: left;
57
  margin-bottom: 5px;
58
  margin-right: 10px;
59
  margin-top: 1px;
60
  }
61
-
62
  .activity-errors {
63
  list-style-type: disc;
64
  margin-left: 2em;
@@ -68,38 +57,31 @@
68
  #bp_activity_content div.inside {
69
  line-height: 0;
70
  }
71
-
72
  #bp_activity_action h3,
73
  #bp_activity_content h3 {
74
  cursor: auto;
75
  }
76
-
77
  #bp_activity_action td.mceIframeContainer,
78
  #bp_activity_content td.mceIframeContainer {
79
- background-color: #fff;
80
  }
81
-
82
  #post-body #bp-activities-action_resize,
83
  #post-body #bp-activities-content_resize {
84
  position: inherit;
85
  margin-top: -2px;
86
  }
87
-
88
  #bp_activity_link input {
89
  width: 99%;
90
  }
91
-
92
  #bp-activities-primaryid {
93
  margin-bottom: 1em;
94
  }
95
-
96
  .column-action {
97
  width: 12%;
98
  }
99
 
100
  @media screen and (max-width: 782px) {
101
-
102
  body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) {
103
  display: table-cell;
104
  }
105
- }
1
  .akismet-status {
2
  float: right;
3
  }
 
4
  .akismet-status a {
5
+ color: #AAA;
6
  font-style: italic;
7
  }
 
8
  .akismet-history {
9
  margin: 13px;
10
  }
 
11
  .akismet-history div {
12
  margin-bottom: 13px;
13
  }
 
14
  .akismet-history span {
15
  color: #999;
16
  }
18
  #wp-bp-activities-wrap {
19
  padding: 5px 0;
20
  }
 
21
  #bp-activities {
22
  height: 120px;
23
  }
 
24
  #bp-replyhead {
25
  font-size: 1em;
26
+ line-height: 1.4em;
27
  margin: 0;
28
  }
 
29
  #bp-replysubmit {
30
  margin: 0;
31
  padding: 0 0 3px;
32
  text-align: center;
33
  }
 
34
  #bp-replysubmit .error {
35
+ color: red;
36
  line-height: 21px;
37
  text-align: center;
38
  vertical-align: center;
39
  }
 
40
  #bp-replysubmit img.waiting {
41
  float: right;
42
  padding: 4px 10px 0;
43
  vertical-align: top;
44
  }
 
45
  #bp-activities-form .column-response img {
46
  float: left;
47
  margin-bottom: 5px;
48
  margin-right: 10px;
49
  margin-top: 1px;
50
  }
 
51
  .activity-errors {
52
  list-style-type: disc;
53
  margin-left: 2em;
57
  #bp_activity_content div.inside {
58
  line-height: 0;
59
  }
 
60
  #bp_activity_action h3,
61
  #bp_activity_content h3 {
62
  cursor: auto;
63
  }
 
64
  #bp_activity_action td.mceIframeContainer,
65
  #bp_activity_content td.mceIframeContainer {
66
+ background-color: white;
67
  }
 
68
  #post-body #bp-activities-action_resize,
69
  #post-body #bp-activities-content_resize {
70
  position: inherit;
71
  margin-top: -2px;
72
  }
 
73
  #bp_activity_link input {
74
  width: 99%;
75
  }
 
76
  #bp-activities-primaryid {
77
  margin-bottom: 1em;
78
  }
 
79
  .column-action {
80
  width: 12%;
81
  }
82
 
83
  @media screen and (max-width: 782px) {
 
84
  body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) {
85
  display: table-cell;
86
  }
87
+ }
bp-activity/admin/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- .akismet-status{float:right}.akismet-status a{color:#aaa;font-style:italic}.akismet-history{margin:13px}.akismet-history div{margin-bottom:13px}.akismet-history span{color:#999}#wp-bp-activities-wrap{padding:5px 0}#bp-activities{height:120px}#bp-replyhead{font-size:1em;line-height:1.4;margin:0}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#bp-replysubmit img.waiting{float:right;padding:4px 10px 0;vertical-align:top}#bp-activities-form .column-response img{float:left;margin-bottom:5px;margin-right:10px;margin-top:1px}.activity-errors{list-style-type:disc;margin-left:2em}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0}#bp_activity_action h3,#bp_activity_content h3{cursor:auto}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:#fff}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px}#bp_activity_link input{width:99%}#bp-activities-primaryid{margin-bottom:1em}.column-action{width:12%}@media screen and (max-width:782px){body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}}
1
+ .akismet-status{float:right}.akismet-status a{color:#AAA;font-style:italic}.akismet-history{margin:13px}.akismet-history div{margin-bottom:13px}.akismet-history span{color:#999}#wp-bp-activities-wrap{padding:5px 0}#bp-activities{height:120px}#bp-replyhead{font-size:1em;line-height:1.4em;margin:0}#bp-replysubmit{margin:0;padding:0 0 3px;text-align:center}#bp-replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#bp-replysubmit img.waiting{float:right;padding:4px 10px 0;vertical-align:top}#bp-activities-form .column-response img{float:left;margin-bottom:5px;margin-right:10px;margin-top:1px}.activity-errors{list-style-type:disc;margin-left:2em}#bp_activity_action div.inside,#bp_activity_content div.inside{line-height:0}#bp_activity_action h3,#bp_activity_content h3{cursor:auto}#bp_activity_action td.mceIframeContainer,#bp_activity_content td.mceIframeContainer{background-color:#fff}#post-body #bp-activities-action_resize,#post-body #bp-activities-content_resize{position:inherit;margin-top:-2px}#bp_activity_link input{width:99%}#bp-activities-primaryid{margin-bottom:1em}.column-action{width:12%}@media screen and (max-width:782px){body.toplevel_page_bp-activity .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}}
bp-activity/admin/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- !function(i){var t={init:function(){i(document).on("click",".row-actions a.reply",t.open),i(document).on("click","#bp-activities-container a.cancel",t.close),i(document).on("click","#bp-activities-container a.save",t.send),i(document).on("keyup","#bp-activities:visible",function(i){27===i.which&&t.close()})},open:function(){var t=i("#bp-activities-container").hide();return i(this).parents("tr").after(t),t.fadeIn("300"),i("#bp-activities").focus(),!1},close:function(){return i("#bp-activities-container").fadeOut("200",function(){i("#bp-activities").val("").blur(),i("#bp-replysubmit .error").html("").hide(),i("#bp-replysubmit .waiting").hide()}),!1},send:function(){i("#bp-replysubmit .error").hide(),i("#bp-replysubmit .waiting").show();var e={};return e["_ajax_nonce-bp-activity-admin-reply"]=i('#bp-activities-container input[name="_ajax_nonce-bp-activity-admin-reply"]').val(),e.action="bp-activity-admin-reply",e.content=i("#bp-activities").val(),e.parent_id=i("#bp-activities-container").prev().data("parent_id"),e.root_id=i("#bp-activities-container").prev().data("root_id"),i.ajax({data:e,type:"POST",url:ajaxurl,error:function(i){t.error(i)},success:function(i){t.show(i)}}),!1},error:function(t){var e=t.statusText;i("#bp-replysubmit .waiting").hide(),t.responseText&&(e=t.responseText.replace(/<.[^<>]*?>/g,"")),e&&i("#bp-replysubmit .error").html(e).show()},show:function(e){var n,a,r;return"string"==typeof e?(t.error({responseText:e}),!1):(r=wpAjax.parseAjaxResponse(e)).errors?(t.error({responseText:wpAjax.broken}),!1):(r=r.responses[0],void i("#bp-activities-container").fadeOut("200",function(){i("#bp-activities").val("").blur(),i("#bp-replysubmit .error").html("").hide(),i("#bp-replysubmit .waiting").hide(),i("#bp-activities-container").before(r.data),a=i("#activity-"+r.id),n=a.closest(".widefat").css("backgroundColor"),a.animate({backgroundColor:"#CEB"},300).animate({backgroundColor:n},300)}))}};i(document).ready(function(){t.init(),i("#bp_activity_action h3, #bp_activity_content h3").unbind("click"),"undefined"!=typeof postboxes&&postboxes.add_postbox_toggles(bp_activity_admin_vars.page)})}(jQuery);
1
+ !function(a){var b={init:function(){a(document).on("click",".row-actions a.reply",b.open),a(document).on("click","#bp-activities-container a.cancel",b.close),a(document).on("click","#bp-activities-container a.save",b.send),a(document).on("keyup","#bp-activities:visible",function(a){27===a.which&&b.close()})},open:function(){var b=a("#bp-activities-container").hide();return a(this).parents("tr").after(b),b.fadeIn("300"),a("#bp-activities").focus(),!1},close:function(){return a("#bp-activities-container").fadeOut("200",function(){a("#bp-activities").val("").blur(),a("#bp-replysubmit .error").html("").hide(),a("#bp-replysubmit .waiting").hide()}),!1},send:function(){a("#bp-replysubmit .error").hide(),a("#bp-replysubmit .waiting").show();var c={};return c["_ajax_nonce-bp-activity-admin-reply"]=a('#bp-activities-container input[name="_ajax_nonce-bp-activity-admin-reply"]').val(),c.action="bp-activity-admin-reply",c.content=a("#bp-activities").val(),c.parent_id=a("#bp-activities-container").prev().data("parent_id"),c.root_id=a("#bp-activities-container").prev().data("root_id"),a.ajax({data:c,type:"POST",url:ajaxurl,error:function(a){b.error(a)},success:function(a){b.show(a)}}),!1},error:function(b){var c=b.statusText;a("#bp-replysubmit .waiting").hide(),b.responseText&&(c=b.responseText.replace(/<.[^<>]*?>/g,"")),c&&a("#bp-replysubmit .error").html(c).show()},show:function(c){var d,e,f;return"string"==typeof c?(b.error({responseText:c}),!1):(f=wpAjax.parseAjaxResponse(c),f.errors?(b.error({responseText:wpAjax.broken}),!1):(f=f.responses[0],void a("#bp-activities-container").fadeOut("200",function(){a("#bp-activities").val("").blur(),a("#bp-replysubmit .error").html("").hide(),a("#bp-replysubmit .waiting").hide(),a("#bp-activities-container").before(f.data),e=a("#activity-"+f.id),d=e.closest(".widefat").css("backgroundColor"),e.animate({backgroundColor:"#CEB"},300).animate({backgroundColor:d},300)})))}};a(document).ready(function(){b.init(),a("#bp_activity_action h3, #bp_activity_content h3").unbind("click"),"undefined"!=typeof postboxes&&postboxes.add_postbox_toggles(bp_activity_admin_vars.page)})}(jQuery);
bp-activity/bp-activity-actions.php CHANGED
@@ -71,7 +71,7 @@ function bp_activity_action_permalink_router() {
71
  } else {
72
 
73
  // Set redirect to group activity stream.
74
- if ( $group = groups_get_group( $activity->item_id ) ) {
75
  $redirect = bp_get_group_permalink( $group ) . bp_get_activity_slug() . '/' . $activity->id . '/';
76
  }
77
  }
@@ -604,6 +604,45 @@ function bp_activity_action_favorites_feed() {
604
  }
605
  add_action( 'bp_actions', 'bp_activity_action_favorites_feed' );
606
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
607
  /**
608
  * AJAX endpoint for Suggestions API lookups.
609
  *
@@ -832,11 +871,7 @@ function bp_activity_transition_post_type_comment_status( $new_status, $old_stat
832
 
833
  // Add "new_post_type_comment" to the whitelisted activity types, so that the activity's Akismet history is generated
834
  $post_type_comment_action = $activity_comment_object->action_id;
835
- $comment_akismet_history = function ( $activity_types ) use ( $post_type_comment_action ) {
836
- $activity_types[] = $post_type_comment_action;
837
-
838
- return $activity_types;
839
- };
840
  add_filter( 'bp_akismet_get_activity_types', $comment_akismet_history );
841
 
842
  // Make sure the activity change won't edit the comment if sync is on
71
  } else {
72
 
73
  // Set redirect to group activity stream.
74
+ if ( $group = groups_get_group( array( 'group_id' => $activity->item_id ) ) ) {
75
  $redirect = bp_get_group_permalink( $group ) . bp_get_activity_slug() . '/' . $activity->id . '/';
76
  }
77
  }
604
  }
605
  add_action( 'bp_actions', 'bp_activity_action_favorites_feed' );
606
 
607
+ /**
608
+ * Loads Akismet filtering for activity.
609
+ *
610
+ * @since 1.6.0
611
+ * @since 2.3.0 We only support Akismet 3+.
612
+ */
613
+ function bp_activity_setup_akismet() {
614
+ $bp = buddypress();
615
+
616
+ // Bail if Akismet is not active.
617
+ if ( ! defined( 'AKISMET_VERSION' ) ) {
618
+ return;
619
+ }
620
+
621
+ // Bail if older version of Akismet.
622
+ if ( ! class_exists( 'Akismet' ) ) {
623
+ return;
624
+ }
625
+
626
+ // Bail if no Akismet key is set.
627
+ if ( ! bp_get_option( 'wordpress_api_key' ) && ! defined( 'WPCOM_API_KEY' ) ) {
628
+ return;
629
+ }
630
+
631
+ /**
632
+ * Filters if BuddyPress Activity Akismet support has been disabled by another plugin.
633
+ *
634
+ * @since 1.6.0
635
+ *
636
+ * @param bool $value Return value of bp_is_akismet_active boolean function.
637
+ */
638
+ if ( ! apply_filters( 'bp_activity_use_akismet', bp_is_akismet_active() ) ) {
639
+ return;
640
+ }
641
+
642
+ // Instantiate Akismet for BuddyPress.
643
+ $bp->activity->akismet = new BP_Akismet();
644
+ }
645
+
646
  /**
647
  * AJAX endpoint for Suggestions API lookups.
648
  *
871
 
872
  // Add "new_post_type_comment" to the whitelisted activity types, so that the activity's Akismet history is generated
873
  $post_type_comment_action = $activity_comment_object->action_id;
874
+ $comment_akismet_history = create_function( '$t', '$t[] = $post_type_comment_action; return $t;' );
 
 
 
 
875
  add_filter( 'bp_akismet_get_activity_types', $comment_akismet_history );
876
 
877
  // Make sure the activity change won't edit the comment if sync is on
bp-activity/bp-activity-admin.php CHANGED
@@ -16,6 +16,10 @@ defined( 'ABSPATH' ) || exit;
16
  // Include WP's list table class.
17
  if ( !class_exists( 'WP_List_Table' ) ) require( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
18
 
 
 
 
 
19
  // Per_page screen option. Has to be hooked in extremely early.
20
  if ( is_admin() && ! empty( $_REQUEST['page'] ) && 'bp-activity' == $_REQUEST['page'] )
21
  add_filter( 'set-screen-option', 'bp_activity_admin_screen_options', 10, 3 );
@@ -141,7 +145,7 @@ add_action( 'wp_ajax_bp-activity-admin-reply', 'bp_activity_admin_reply' );
141
  * @param string $value Will always be false unless another plugin filters it first.
142
  * @param string $option Screen option name.
143
  * @param string $new_value Screen option form value.
144
- * @return string|int Option value. False to abandon update.
145
  */
146
  function bp_activity_admin_screen_options( $value, $option, $new_value ) {
147
  if ( 'toplevel_page_bp_activity_per_page' != $option && 'toplevel_page_bp_activity_network_per_page' != $option )
@@ -165,9 +169,8 @@ function bp_activity_admin_screen_options( $value, $option, $new_value ) {
165
  * @return array Hidden Meta Boxes.
166
  */
167
  function bp_activity_admin_edit_hidden_metaboxes( $hidden, $screen ) {
168
- if ( empty( $screen->id ) || 'toplevel_page_bp-activity' !== $screen->id && 'toplevel_page_bp-activity-network' !== $screen->id ) {
169
  return $hidden;
170
- }
171
 
172
  // Hide the primary link meta box by default.
173
  $hidden = array_merge( (array) $hidden, array( 'bp_activity_itemids', 'bp_activity_link', 'bp_activity_type', 'bp_activity_userid', ) );
@@ -390,8 +393,8 @@ function bp_activity_admin_load() {
390
  * Remove moderation and blacklist checks in case we want to ham an activity
391
  * which contains one of these listed keys.
392
  */
393
- remove_action( 'bp_activity_before_save', 'bp_activity_check_moderation_keys', 2 );
394
- remove_action( 'bp_activity_before_save', 'bp_activity_check_blacklist_keys', 2 );
395
 
396
  bp_activity_mark_as_ham( $activity );
397
  $result = $activity->save();
@@ -1040,9 +1043,9 @@ function bp_activity_admin_index() {
1040
 
1041
  <h3 id="bp-replyhead"><?php _e( 'Reply to Activity', 'buddypress' ); ?></h3>
1042
  <label for="bp-activities" class="screen-reader-text"><?php
1043
- /* translators: accessibility text */
1044
- _e( 'Reply', 'buddypress' );
1045
- ?></label>
1046
  <?php wp_editor( '', 'bp-activities', array( 'dfw' => false, 'media_buttons' => false, 'quicktags' => array( 'buttons' => 'strong,em,link,block,del,ins,img,code,spell,close' ), 'tinymce' => false, ) ); ?>
1047
 
1048
  <p id="bp-replysubmit" class="submit">
16
  // Include WP's list table class.
17
  if ( !class_exists( 'WP_List_Table' ) ) require( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
18
 
19
+ if ( ! buddypress()->do_autoload ) {
20
+ require dirname( __FILE__ ) . '/classes/class-bp-activity-list-table.php';
21
+ }
22
+
23
  // Per_page screen option. Has to be hooked in extremely early.
24
  if ( is_admin() && ! empty( $_REQUEST['page'] ) && 'bp-activity' == $_REQUEST['page'] )
25
  add_filter( 'set-screen-option', 'bp_activity_admin_screen_options', 10, 3 );
145
  * @param string $value Will always be false unless another plugin filters it first.
146
  * @param string $option Screen option name.
147
  * @param string $new_value Screen option form value.
148
+ * @return string Option value. False to abandon update.
149
  */
150
  function bp_activity_admin_screen_options( $value, $option, $new_value ) {
151
  if ( 'toplevel_page_bp_activity_per_page' != $option && 'toplevel_page_bp_activity_network_per_page' != $option )
169
  * @return array Hidden Meta Boxes.
170
  */
171
  function bp_activity_admin_edit_hidden_metaboxes( $hidden, $screen ) {
172
+ if ( empty( $screen->id ) || 'toplevel_page_bp-activity' != $screen->id && 'toplevel_page_bp-activity_network' != $screen->id )
173
  return $hidden;
 
174
 
175
  // Hide the primary link meta box by default.
176
  $hidden = array_merge( (array) $hidden, array( 'bp_activity_itemids', 'bp_activity_link', 'bp_activity_type', 'bp_activity_userid', ) );
393
  * Remove moderation and blacklist checks in case we want to ham an activity
394
  * which contains one of these listed keys.
395
  */
396
+ remove_action( 'bp_activity_before_save', 'bp_activity_check_moderation_keys', 2, 1 );
397
+ remove_action( 'bp_activity_before_save', 'bp_activity_check_blacklist_keys', 2, 1 );
398
 
399
  bp_activity_mark_as_ham( $activity );
400
  $result = $activity->save();
1043
 
1044
  <h3 id="bp-replyhead"><?php _e( 'Reply to Activity', 'buddypress' ); ?></h3>
1045
  <label for="bp-activities" class="screen-reader-text"><?php
1046
+ /* translators: accessibility text */
1047
+ _e( 'Reply', 'buddypress' );
1048
+ ?></label>
1049
  <?php wp_editor( '', 'bp-activities', array( 'dfw' => false, 'media_buttons' => false, 'quicktags' => array( 'buttons' => 'strong,em,link,block,del,ins,img,code,spell,close' ), 'tinymce' => false, ) ); ?>
1050
 
1051
  <p id="bp-replysubmit" class="submit">
bp-activity/bp-activity-akismet.php CHANGED
@@ -10,28 +10,9 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
- /**
14
- * Loads Akismet filtering for activity.
15
- *
16
- * @since 1.6.0
17
- * @since 2.3.0 We only support Akismet 3+.
18
- */
19
- function bp_activity_setup_akismet() {
20
- /**
21
- * Filters if BuddyPress Activity Akismet support has been disabled by another plugin.
22
- *
23
- * @since 1.6.0
24
- *
25
- * @param bool $value Return value of bp_is_akismet_active boolean function.
26
- */
27
- if ( ! apply_filters( 'bp_activity_use_akismet', bp_is_akismet_active() ) ) {
28
- return;
29
- }
30
-
31
- // Instantiate Akismet for BuddyPress.
32
- buddypress()->activity->akismet = new BP_Akismet();
33
  }
34
- add_action( 'bp_activity_setup_globals', 'bp_activity_setup_akismet' );
35
 
36
  /**
37
  * Delete old spam activity meta data.
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ if ( ! buddypress()->do_autoload ) {
14
+ require dirname( __FILE__ ) . '/classes/class-bp-akismet.php';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
 
16
 
17
  /**
18
  * Delete old spam activity meta data.
bp-activity/bp-activity-cache.php CHANGED
@@ -63,24 +63,3 @@ function bp_activity_clear_cache_for_deleted_activity( $deleted_ids ) {
63
  }
64
  }
65
  add_action( 'bp_activity_deleted_activities', 'bp_activity_clear_cache_for_deleted_activity' );
66
-
67
- /**
68
- * Reset cache incrementor for the Activity component.
69
- *
70
- * Called whenever an activity item is created, updated, or deleted, this
71
- * function effectively invalidates all cached results of activity queries.
72
- *
73
- * @since 2.7.0
74
- *
75
- * @return bool True on success, false on failure.
76
- */
77
- function bp_activity_reset_cache_incrementor() {
78
- $without_last_activity = bp_core_reset_incrementor( 'bp_activity' );
79
- $with_last_activity = bp_core_reset_incrementor( 'bp_activity_with_last_activity' );
80
- return $without_last_activity && $with_last_activity;
81
- }
82
- add_action( 'bp_activity_delete', 'bp_activity_reset_cache_incrementor' );
83
- add_action( 'bp_activity_add', 'bp_activity_reset_cache_incrementor' );
84
- add_action( 'added_activity_meta', 'bp_activity_reset_cache_incrementor' );
85
- add_action( 'updated_activity_meta', 'bp_activity_reset_cache_incrementor' );
86
- add_action( 'deleted_activity_meta', 'bp_activity_reset_cache_incrementor' );
63
  }
64
  }
65
  add_action( 'bp_activity_deleted_activities', 'bp_activity_clear_cache_for_deleted_activity' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-activity/bp-activity-classes.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * BuddyPress Activity Classes.
4
+ *
5
+ * @package BuddyPress
6
+ * @subpackage ActivityClasses
7
+ * @since 1.0.0
8
+ */
9
+
10
+ // Exit if accessed directly.
11
+ defined( 'ABSPATH' ) || exit;
12
+
13
+ require dirname( __FILE__ ) . '/classes/class-bp-activity-activity.php';
14
+ require dirname( __FILE__ ) . '/classes/class-bp-activity-feed.php';
15
+ require dirname( __FILE__ ) . '/classes/class-bp-activity-query.php';
16
+
17
+ // Embeds - only applicable for WP 4.5+
18
+ if ( version_compare( $GLOBALS['wp_version'], '4.5', '>=' ) && bp_is_active( 'activity', 'embeds' ) ) {
19
+ require dirname( __FILE__ ) . '/classes/class-bp-activity-oembed-extension.php';
20
+ }
bp-activity/bp-activity-embeds.php CHANGED
@@ -64,9 +64,9 @@ function bp_activity_embed_add_inline_styles() {
64
  $min = bp_core_get_minified_asset_suffix();
65
 
66
  if ( is_rtl() ) {
67
- $css = bp_locate_template_asset( "css/embeds-activity-rtl{$min}.css" );
68
  } else {
69
- $css = bp_locate_template_asset( "css/embeds-activity{$min}.css" );
70
  }
71
 
72
  // Bail if file wasn't found.
@@ -123,7 +123,7 @@ function bp_activity_embed_has_activity( $activity_id = 0 ) {
123
  * @since 2.6.0
124
  */
125
  function bp_activity_embed_excerpt( $content = '' ) {
126
- echo bp_activity_get_embed_excerpt( $content );
127
  }
128
 
129
  /**
64
  $min = bp_core_get_minified_asset_suffix();
65
 
66
  if ( is_rtl() ) {
67
+ $css = bp_locate_template_asset( "assets/embeds/activity-rtl{$min}.css" );
68
  } else {
69
+ $css = bp_locate_template_asset( "assets/embeds/activity{$min}.css" );
70
  }
71
 
72
  // Bail if file wasn't found.
123
  * @since 2.6.0
124
  */
125
  function bp_activity_embed_excerpt( $content = '' ) {
126
+ echo bp_activity_get_embed_excerpt( $content = '' );
127
  }
128
 
129
  /**
bp-activity/bp-activity-filters.php CHANGED
@@ -207,17 +207,13 @@ function bp_activity_filter_kses( $content ) {
207
  global $allowedtags;
208
 
209
  $activity_allowedtags = $allowedtags;
210
- $activity_allowedtags['a']['aria-label'] = array();
211
- $activity_allowedtags['a']['class'] = array();
212
- $activity_allowedtags['a']['data-bp-tooltip'] = array();
213
- $activity_allowedtags['a']['id'] = array();
214
- $activity_allowedtags['a']['rel'] = array();
215
- $activity_allowedtags['a']['title'] = array();
216
-
217
- $activity_allowedtags['b'] = array();
218
- $activity_allowedtags['code'] = array();
219
- $activity_allowedtags['i'] = array();
220
-
221
  $activity_allowedtags['img'] = array();
222
  $activity_allowedtags['img']['src'] = array();
223
  $activity_allowedtags['img']['alt'] = array();
@@ -225,14 +221,10 @@ function bp_activity_filter_kses( $content ) {
225
  $activity_allowedtags['img']['height'] = array();
226
  $activity_allowedtags['img']['class'] = array();
227
  $activity_allowedtags['img']['id'] = array();
 
 
 
228
 
229
- $activity_allowedtags['span'] = array();
230
- $activity_allowedtags['span']['class'] = array();
231
- $activity_allowedtags['span']['data-livestamp'] = array();
232
-
233
- $activity_allowedtags['ul'] = array();
234
- $activity_allowedtags['ol'] = array();
235
- $activity_allowedtags['li'] = array();
236
 
237
  /**
238
  * Filters the allowed HTML tags for BuddyPress Activity content.
@@ -286,7 +278,7 @@ function bp_activity_at_name_filter( $content, $activity_id = 0 ) {
286
 
287
  // Linkify the mentions with the username.
288
  foreach ( (array) $usernames as $user_id => $username ) {
289
- $content = preg_replace( '/(@' . $username . '\b)/', "<a class='bp-suggestions-mention' href='" . bp_core_get_user_domain( $user_id ) . "' rel='nofollow'>@$username</a>", $content );
290
  }
291
 
292
  // Put everything back.
@@ -327,7 +319,7 @@ function bp_activity_at_name_filter_updates( $activity ) {
327
  if ( ! empty( $usernames ) ) {
328
  // Replace @mention text with userlinks.
329
  foreach( (array) $usernames as $user_id => $username ) {
330
- $activity->content = preg_replace( '/(@' . $username . '\b)/', "<a class='bp-suggestions-mention' href='" . bp_core_get_user_domain( $user_id ) . "' rel='nofollow'>@$username</a>", $activity->content );
331
  }
332
 
333
  // Add our hook to send @mention emails after the activity item is saved.
@@ -454,7 +446,14 @@ function bp_activity_truncate_entry( $text, $args = array() ) {
454
  */
455
  $append_text = apply_filters( 'bp_activity_excerpt_append_text', __( '[Read more]', 'buddypress' ) );
456
 
457
- $excerpt_length = bp_activity_get_excerpt_length();
 
 
 
 
 
 
 
458
 
459
  $args = wp_parse_args( $args, array( 'ending' => __( '&hellip;', 'buddypress' ) ) );
460
 
@@ -600,7 +599,7 @@ function bp_activity_heartbeat_last_recorded( $response = array(), $data = array
600
  ob_end_clean();
601
 
602
  // Remove the temporary filter.
603
- remove_filter( 'bp_get_activity_css_class', 'bp_activity_newest_class', 10 );
604
 
605
  if ( ! empty( $newest_activities['last_recorded'] ) ) {
606
  $response['bp_activity_newest_activities'] = $newest_activities;
207
  global $allowedtags;
208
 
209
  $activity_allowedtags = $allowedtags;
210
+ $activity_allowedtags['a']['class'] = array();
211
+ $activity_allowedtags['a']['id'] = array();
212
+ $activity_allowedtags['a']['rel'] = array();
213
+ $activity_allowedtags['a']['title'] = array();
214
+ $activity_allowedtags['b'] = array();
215
+ $activity_allowedtags['code'] = array();
216
+ $activity_allowedtags['i'] = array();
 
 
 
 
217
  $activity_allowedtags['img'] = array();
218
  $activity_allowedtags['img']['src'] = array();
219
  $activity_allowedtags['img']['alt'] = array();
221
  $activity_allowedtags['img']['height'] = array();
222
  $activity_allowedtags['img']['class'] = array();
223
  $activity_allowedtags['img']['id'] = array();
224
+ $activity_allowedtags['img']['title'] = array();
225
+ $activity_allowedtags['span'] = array();
226
+ $activity_allowedtags['span']['class'] = array();
227
 
 
 
 
 
 
 
 
228
 
229
  /**
230
  * Filters the allowed HTML tags for BuddyPress Activity content.
278
 
279
  // Linkify the mentions with the username.
280
  foreach ( (array) $usernames as $user_id => $username ) {
281
+ $content = preg_replace( '/(@' . $username . '\b)/', "<a href='" . bp_core_get_user_domain( $user_id ) . "' rel='nofollow'>@$username</a>", $content );
282
  }
283
 
284
  // Put everything back.
319
  if ( ! empty( $usernames ) ) {
320
  // Replace @mention text with userlinks.
321
  foreach( (array) $usernames as $user_id => $username ) {
322
+ $activity->content = preg_replace( '/(@' . $username . '\b)/', "<a href='" . bp_core_get_user_domain( $user_id ) . "' rel='nofollow'>@$username</a>", $activity->content );
323
  }
324
 
325
  // Add our hook to send @mention emails after the activity item is saved.
446
  */
447
  $append_text = apply_filters( 'bp_activity_excerpt_append_text', __( '[Read more]', 'buddypress' ) );
448
 
449
+ /**
450
+ * Filters the excerpt length for the activity excerpt.
451
+ *
452
+ * @since 1.5.0
453
+ *
454
+ * @param int $value Number indicating how many words to trim the excerpt down to.
455
+ */
456
+ $excerpt_length = apply_filters( 'bp_activity_excerpt_length', 358 );
457
 
458
  $args = wp_parse_args( $args, array( 'ending' => __( '&hellip;', 'buddypress' ) ) );
459
 
599
  ob_end_clean();
600
 
601
  // Remove the temporary filter.
602
+ remove_filter( 'bp_get_activity_css_class', 'bp_activity_newest_class', 10, 1 );
603
 
604
  if ( ! empty( $newest_activities['last_recorded'] ) ) {
605
  $response['bp_activity_newest_activities'] = $newest_activities;
bp-activity/bp-activity-functions.php CHANGED
@@ -406,7 +406,7 @@ function bp_activity_set_action( $component_id, $type, $description, $format_cal
406
  * @param array $args {
407
  * An associative array of tracking parameters. All items are optional.
408
  * @type string $bp_activity_admin_filter String to use in the Dashboard > Activity dropdown.
409
- * @type string $bp_activity_front_filter String to use in the front-end dropdown.
410
  * @type string $bp_activity_new_post String format to use for generating the activity action. Should be a
411
  * translatable string where %1$s is replaced by a user link and %2$s is
412
  * the URL of the newly created post.
@@ -839,63 +839,6 @@ function bp_activity_get_types() {
839
  return apply_filters( 'bp_activity_get_types', $actions );
840
  }
841
 
842
- /**
843
- * Gets the current activity context.
844
- *
845
- * The "context" is the current view type, corresponding roughly to the
846
- * current component. Use this context to determine which activity actions
847
- * should be whitelisted for the filter dropdown.
848
- *
849
- * @since 2.8.0
850
- *
851
- * @return string Activity context. 'member', 'member_groups', 'group', 'activity'.
852
- */
853
- function bp_activity_get_current_context() {
854
- // On member pages, default to 'member', unless this is a user's Groups activity.
855
- if ( bp_is_user() ) {
856
- if ( bp_is_active( 'groups' ) && bp_is_current_action( bp_get_groups_slug() ) ) {
857
- $context = 'member_groups';
858
- } else {
859
- $context = 'member';
860
- }
861
-
862
- // On individual group pages, default to 'group'.
863
- } elseif ( bp_is_active( 'groups' ) && bp_is_group() ) {
864
- $context = 'group';
865
-
866
- // 'activity' everywhere else.
867
- } else {
868
- $context = 'activity';
869
- }
870
-
871
- return $context;
872
- }
873
-
874
- /**
875
- * Gets a flat list of activity actions compatible with a given context.
876
- *
877
- * @since 2.8.0
878
- *
879
- * @param string $context Optional. Name of the context. Defaults to the current context.
880
- * @return array
881
- */
882
- function bp_activity_get_actions_for_context( $context = '' ) {
883
- if ( ! $context ) {
884
- $context = bp_activity_get_current_context();
885
- }
886
-
887
- $actions = array();
888
- foreach ( bp_activity_get_actions() as $component_actions ) {
889
- foreach ( $component_actions as $component_action ) {
890
- if ( in_array( $context, (array) $component_action['context'], true ) ) {
891
- $actions[] = $component_action;
892
- }
893
- }
894
- }
895
-
896
- return $actions;
897
- }
898
-
899
  /** Favorites ****************************************************************/
900
 
901
  /**
@@ -1502,7 +1445,7 @@ function bp_activity_generate_action_string( $activity ) {
1502
  $action = apply_filters( 'bp_activity_generate_action_string', $activity->action, $activity );
1503
 
1504
  // Remove the filter for future activity items.
1505
- remove_filter( 'bp_activity_generate_action_string', $actions->{$activity->component}->{$activity->type}['format_callback'], 10 );
1506
 
1507
  return $action;
1508
  }
@@ -1720,29 +1663,57 @@ function bp_activity_get( $args = '' ) {
1720
  * );
1721
  */
1722
  'filter' => array()
1723
- ), 'activity_get' );
1724
-
1725
- $activity = BP_Activity_Activity::get( array(
1726
- 'page' => $r['page'],
1727
- 'per_page' => $r['per_page'],
1728
- 'max' => $r['max'],
1729
- 'sort' => $r['sort'],
1730
- 'search_terms' => $r['search_terms'],
1731
- 'meta_query' => $r['meta_query'],
1732
- 'date_query' => $r['date_query'],
1733
- 'filter_query' => $r['filter_query'],
1734
- 'filter' => $r['filter'],
1735
- 'scope' => $r['scope'],
1736
- 'display_comments' => $r['display_comments'],
1737
- 'show_hidden' => $r['show_hidden'],
1738
- 'exclude' => $r['exclude'],
1739
- 'in' => $r['in'],
1740
- 'spam' => $r['spam'],
1741
- 'update_meta_cache' => $r['update_meta_cache'],
1742
- 'count_total' => $r['count_total'],
1743
- 'fields' => $r['fields'],
1744
  ) );
1745
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1746
  /**
1747
  * Filters the requested activity item(s).
1748
  *
@@ -1781,7 +1752,7 @@ function bp_activity_get_specific( $args = '' ) {
1781
  'sort' => 'DESC', // Sort ASC or DESC
1782
  'spam' => 'ham_only', // Retrieve items marked as spam.
1783
  'update_meta_cache' => true,
1784
- ), 'activity_get_specific' );
1785
 
1786
  $get_args = array(
1787
  'display_comments' => $r['display_comments'],
@@ -1845,7 +1816,7 @@ function bp_activity_get_specific( $args = '' ) {
1845
  * @type bool $is_spam Should the item be marked as spam? Default: false.
1846
  * @type string $error_type Optional. Error type. Either 'bool' or 'wp_error'. Default: 'bool'.
1847
  * }
1848
- * @return WP_Error|bool|int The ID of the activity on success. False on error.
1849
  */
1850
  function bp_activity_add( $args = '' ) {
1851
 
@@ -1927,13 +1898,10 @@ function bp_activity_add( $args = '' ) {
1927
  * @since 1.2.0
1928
  *
1929
  * @param array|string $args {
1930
- * @type string $content The content of the activity update.
1931
- * @type int $user_id Optional. Defaults to the logged-in user.
1932
- * @type string $error_type Optional. Error type to return. Either 'bool' or 'wp_error'. Defaults to
1933
- * 'bool' for boolean. 'wp_error' will return a WP_Error object.
1934
  * }
1935
- * @return int|bool|WP_Error $activity_id The activity id on success. On failure, either boolean false or WP_Error
1936
- * object depending on the 'error_type' $args parameter.
1937
  */
1938
  function bp_activity_post_update( $args = '' ) {
1939
 
@@ -2026,7 +1994,7 @@ function bp_activity_post_update( $args = '' ) {
2026
  * @param int $post_id ID of the new post.
2027
  * @param WP_Post|null $post Post object.
2028
  * @param int $user_id ID of the post author.
2029
- * @return null|WP_Error|bool|int The ID of the activity on success. False on error.
2030
  */
2031
  function bp_activity_post_type_publish( $post_id = 0, $post = null, $user_id = 0 ) {
2032
 
@@ -2161,7 +2129,7 @@ function bp_activity_post_type_publish( $post_id = 0, $post = null, $user_id = 0
2161
  * @since 2.2.0
2162
  *
2163
  * @param WP_Post|null $post Post item.
2164
- * @return null|WP_Error|bool True on success, false on failure.
2165
  */
2166
  function bp_activity_post_type_update( $post = null ) {
2167
 
@@ -2283,7 +2251,7 @@ function bp_activity_post_type_unpublish( $post_id = 0, $post = null ) {
2283
  * @param int $comment_id ID of the comment.
2284
  * @param bool $is_approved Whether the comment is approved or not.
2285
  * @param object|null $activity_post_object The post type tracking args object.
2286
- * @return null|WP_Error|bool|int The ID of the activity on success. False on error.
2287
  */
2288
  function bp_activity_post_type_comment( $comment_id = 0, $is_approved = true, $activity_post_object = null ) {
2289
  // Get the users comment
@@ -2557,7 +2525,7 @@ add_action( 'delete_comment', 'bp_activity_post_type_remove_comment', 10, 1 );
2557
  * Defaults to false.
2558
  * @type string $error_type Optional. Error type. Either 'bool' or 'wp_error'. Default: 'bool'.
2559
  * }
2560
- * @return WP_Error|bool|int The ID of the comment on success, otherwise false.
2561
  */
2562
  function bp_activity_new_comment( $args = '' ) {
2563
  $bp = buddypress();
@@ -2672,9 +2640,9 @@ function bp_activity_new_comment( $args = '' ) {
2672
  *
2673
  * @since 1.2.0
2674
  *
2675
- * @param int $comment_id ID of the newly posted activity comment.
2676
- * @param array $r Array of parsed comment arguments.
2677
- * @param BP_Activity_Activity $activity Activity item being commented on.
2678
  */
2679
  do_action( 'bp_activity_comment_posted', $comment_id, $r, $activity );
2680
  } else {
@@ -2684,9 +2652,9 @@ function bp_activity_new_comment( $args = '' ) {
2684
  *
2685
  * @since 2.5.0
2686
  *
2687
- * @param int $comment_id ID of the newly posted activity comment.
2688
- * @param array $r Array of parsed comment arguments.
2689
- * @param BP_Activity_Activity $activity Activity item being commented on.
2690
  */
2691
  do_action( 'bp_activity_comment_posted_notification_skipped', $comment_id, $r, $activity );
2692
  }
@@ -2963,12 +2931,6 @@ function bp_activity_delete_comment( $activity_id, $comment_id ) {
2963
  return $deleted;
2964
  }
2965
 
2966
- // Check if comment still exists.
2967
- $comment = new BP_Activity_Activity( $comment_id );
2968
- if ( empty( $comment->id ) ) {
2969
- return false;
2970
- }
2971
-
2972
  // Delete any children of this comment.
2973
  bp_activity_delete_children( $activity_id, $comment_id );
2974
 
@@ -3009,11 +2971,6 @@ function bp_activity_delete_comment( $activity_id, $comment_id ) {
3009
  * @param int $comment_id The ID of the comment to be deleted.
3010
  */
3011
  function bp_activity_delete_children( $activity_id, $comment_id ) {
3012
- // Check if comment still exists.
3013
- $comment = new BP_Activity_Activity( $comment_id );
3014
- if ( empty( $comment->id ) ) {
3015
- return;
3016
- }
3017
 
3018
  // Get activity children to delete.
3019
  $children = BP_Activity_Activity::get_child_comments( $comment_id );
@@ -3073,7 +3030,7 @@ function bp_activity_get_permalink( $activity_id, $activity_obj = false ) {
3073
  $link = $activity_obj->primary_link;
3074
  } else {
3075
  if ( 'activity_comment' == $activity_obj->type ) {
3076
- $link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->item_id . '/#acomment-' . $activity_obj->id;
3077
  } else {
3078
  $link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->id . '/';
3079
  }
@@ -3180,24 +3137,6 @@ function bp_activity_thumbnail_content_images( $content, $link = false, $args =
3180
  return apply_filters( 'bp_activity_thumbnail_content_images', $content, $matches, $args );
3181
  }
3182
 
3183
- /**
3184
- * Gets the excerpt length for activity items.
3185
- *
3186
- * @since 2.8.0
3187
- *
3188
- * @return int Character length for activity excerpts.
3189
- */
3190
- function bp_activity_get_excerpt_length() {
3191
- /**
3192
- * Filters the excerpt length for the activity excerpt.
3193
- *
3194
- * @since 1.5.0
3195
- *
3196
- * @param int Character length for activity excerpts.
3197
- */
3198
- return (int) apply_filters( 'bp_activity_excerpt_length', 358 );
3199
- }
3200
-
3201
  /**
3202
  * Create a rich summary of an activity item for the activity stream.
3203
  *
@@ -3407,7 +3346,7 @@ function bp_activity_mark_as_spam( &$activity, $source = 'by_a_person' ) {
3407
 
3408
  // If Akismet is active, and this was a manual spam/ham request, stop Akismet checking the activity.
3409
  if ( 'by_a_person' == $source && !empty( $bp->activity->akismet ) ) {
3410
- remove_action( 'bp_activity_before_save', array( $bp->activity->akismet, 'check_activity' ), 4 );
3411
 
3412
  // Build data package for Akismet.
3413
  $activity_data = BP_Akismet::build_akismet_data_package( $activity );
@@ -3454,7 +3393,7 @@ function bp_activity_mark_as_ham( &$activity, $source = 'by_a_person' ) {
3454
 
3455
  // If Akismet is active, and this was a manual spam/ham request, stop Akismet checking the activity.
3456
  if ( 'by_a_person' == $source && !empty( $bp->activity->akismet ) ) {
3457
- remove_action( 'bp_activity_before_save', array( $bp->activity->akismet, 'check_activity' ), 4 );
3458
 
3459
  // Build data package for Akismet.
3460
  $activity_data = BP_Akismet::build_akismet_data_package( $activity );
@@ -3478,211 +3417,6 @@ function bp_activity_mark_as_ham( &$activity, $source = 'by_a_person' ) {
3478
  do_action( 'bp_activity_mark_as_ham', $activity, $source );
3479
  }
3480
 
3481
- /* Emails *********************************************************************/
3482
-
3483
- /**
3484
- * Send email and BP notifications when a user is mentioned in an update.
3485
- *
3486
- * @since 1.2.0
3487
- *
3488
- * @param int $activity_id The ID of the activity update.
3489
- * @param int $receiver_user_id The ID of the user who is receiving the update.
3490
- */
3491
- function bp_activity_at_message_notification( $activity_id, $receiver_user_id ) {
3492
- $notifications = BP_Core_Notification::get_all_for_user( $receiver_user_id, 'all' );
3493
-
3494
- // Don't leave multiple notifications for the same activity item.
3495
- foreach( $notifications as $notification ) {
3496
- if ( $activity_id == $notification->item_id ) {
3497
- return;
3498
- }
3499
- }
3500
-
3501
- $activity = new BP_Activity_Activity( $activity_id );
3502
- $email_type = 'activity-at-message';
3503
- $group_name = '';
3504
- $message_link = bp_activity_get_permalink( $activity_id );
3505
- $poster_name = bp_core_get_user_displayname( $activity->user_id );
3506
-
3507
- remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );
3508
- remove_filter( 'bp_get_activity_content_body', 'wpautop' );
3509
- remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
3510
-
3511
- /** This filter is documented in bp-activity/bp-activity-template.php */
3512
- $content = apply_filters_ref_array( 'bp_get_activity_content_body', array( $activity->content, &$activity ) );
3513
-
3514
- add_filter( 'bp_get_activity_content_body', 'convert_smilies' );
3515
- add_filter( 'bp_get_activity_content_body', 'wpautop' );
3516
- add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
3517
-
3518
- // Now email the user with the contents of the message (if they have enabled email notifications).
3519
- if ( 'no' != bp_get_user_meta( $receiver_user_id, 'notification_activity_new_mention', true ) ) {
3520
- if ( bp_is_active( 'groups' ) && bp_is_group() ) {
3521
- $email_type = 'groups-at-message';
3522
- $group_name = bp_get_current_group_name();
3523
- }
3524
-
3525
- $unsubscribe_args = array(
3526
- 'user_id' => $receiver_user_id,
3527
- 'notification_type' => $email_type,
3528
- );
3529
-
3530
- $args = array(
3531
- 'tokens' => array(
3532
- 'activity' => $activity,
3533
- 'usermessage' => wp_strip_all_tags( $content ),
3534
- 'group.name' => $group_name,
3535
- 'mentioned.url' => $message_link,
3536
- 'poster.name' => $poster_name,
3537
- 'receiver-user.id' => $receiver_user_id,
3538
- 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
3539
- ),
3540
- );
3541
-
3542
- bp_send_email( $email_type, $receiver_user_id, $args );
3543
- }
3544
-
3545
- /**
3546
- * Fires after the sending of an @mention email notification.
3547
- *
3548
- * @since 1.5.0
3549
- * @since 2.5.0 $subject, $message, $content arguments unset and deprecated.
3550
- *
3551
- * @param BP_Activity_Activity $activity Activity Item object.
3552
- * @param string $deprecated Removed in 2.5; now an empty string.
3553
- * @param string $deprecated Removed in 2.5; now an empty string.
3554
- * @param string $deprecated Removed in 2.5; now an empty string.
3555
- * @param int $receiver_user_id The ID of the user who is receiving the update.
3556
- */
3557
- do_action( 'bp_activity_sent_mention_email', $activity, '', '', '', $receiver_user_id );
3558
- }
3559
-
3560
- /**
3561
- * Send email and BP notifications when an activity item receives a comment.
3562
- *
3563
- * @since 1.2.0
3564
- * @since 2.5.0 Updated to use new email APIs.
3565
- *
3566
- * @param int $comment_id The comment id.
3567
- * @param int $commenter_id The ID of the user who posted the comment.
3568
- * @param array $params {@link bp_activity_new_comment()}.
3569
- */
3570
- function bp_activity_new_comment_notification( $comment_id = 0, $commenter_id = 0, $params = array() ) {
3571
- $original_activity = new BP_Activity_Activity( $params['activity_id'] );
3572
- $poster_name = bp_core_get_user_displayname( $commenter_id );
3573
- $thread_link = bp_activity_get_permalink( $params['activity_id'] );
3574
-
3575
- remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );
3576
- remove_filter( 'bp_get_activity_content_body', 'wpautop' );
3577
- remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
3578
-
3579
- /** This filter is documented in bp-activity/bp-activity-template.php */
3580
- $content = apply_filters_ref_array( 'bp_get_activity_content_body', array( $params['content'], &$original_activity ) );
3581
-
3582
- add_filter( 'bp_get_activity_content_body', 'convert_smilies' );
3583
- add_filter( 'bp_get_activity_content_body', 'wpautop' );
3584
- add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
3585
-
3586
- if ( $original_activity->user_id != $commenter_id ) {
3587
-
3588
- // Send an email if the user hasn't opted-out.
3589
- if ( 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) {
3590
-
3591
- $unsubscribe_args = array(
3592
- 'user_id' => $original_activity->user_id,
3593
- 'notification_type' => 'activity-comment',
3594
- );
3595
-
3596
- $args = array(
3597
- 'tokens' => array(
3598
- 'comment.id' => $comment_id,
3599
- 'commenter.id' => $commenter_id,
3600
- 'usermessage' => wp_strip_all_tags( $content ),
3601
- 'original_activity.user_id' => $original_activity->user_id,
3602
- 'poster.name' => $poster_name,
3603
- 'thread.url' => esc_url( $thread_link ),
3604
- 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
3605
- ),
3606
- );
3607
-
3608
- bp_send_email( 'activity-comment', $original_activity->user_id, $args );
3609
- }
3610
-
3611
- /**
3612
- * Fires at the point that notifications should be sent for activity comments.
3613
- *
3614
- * @since 2.6.0
3615
- *
3616
- * @param BP_Activity_Activity $original_activity The original activity.
3617
- * @param int $comment_id ID for the newly received comment.
3618
- * @param int $commenter_id ID of the user who made the comment.
3619
- * @param array $params Arguments used with the original activity comment.
3620
- */
3621
- do_action( 'bp_activity_sent_reply_to_update_notification', $original_activity, $comment_id, $commenter_id, $params );
3622
- }
3623
-
3624
-
3625
- /*
3626
- * If this is a reply to another comment, send an email notification to the
3627
- * author of the immediate parent comment.
3628
- */
3629
- if ( empty( $params['parent_id'] ) || ( $params['activity_id'] == $params['parent_id'] ) ) {
3630
- return;
3631
- }
3632
-
3633
- $parent_comment = new BP_Activity_Activity( $params['parent_id'] );
3634
-
3635
- if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id ) {
3636
-
3637
- // Send an email if the user hasn't opted-out.
3638
- if ( 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) {
3639
-
3640
- $unsubscribe_args = array(
3641
- 'user_id' => $parent_comment->user_id,
3642
- 'notification_type' => 'activity-comment-author',
3643
- );
3644
-
3645
- $args = array(
3646
- 'tokens' => array(
3647
- 'comment.id' => $comment_id,
3648
- 'commenter.id' => $commenter_id,
3649
- 'usermessage' => wp_strip_all_tags( $content ),
3650
- 'parent-comment-user.id' => $parent_comment->user_id,
3651
- 'poster.name' => $poster_name,
3652
- 'thread.url' => esc_url( $thread_link ),
3653
- 'unsubscribe' => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
3654
- ),
3655
- );
3656
-
3657
- bp_send_email( 'activity-comment-author', $parent_comment->user_id, $args );
3658
- }
3659
-
3660
- /**
3661
- * Fires at the point that notifications should be sent for comments on activity replies.
3662
- *
3663
- * @since 2.6.0
3664
- *
3665
- * @param BP_Activity_Activity $parent_comment The parent activity.
3666
- * @param int $comment_id ID for the newly received comment.
3667
- * @param int $commenter_id ID of the user who made the comment.
3668
- * @param array $params Arguments used with the original activity comment.
3669
- */
3670
- do_action( 'bp_activity_sent_reply_to_reply_notification', $parent_comment, $comment_id, $commenter_id, $params );
3671
- }
3672
- }
3673
-
3674
- /**
3675
- * Helper method to map action arguments to function parameters.
3676
- *
3677
- * @since 1.9.0
3678
- *
3679
- * @param int $comment_id ID of the comment being notified about.
3680
- * @param array $params Parameters to use with notification.
3681
- */
3682
- function bp_activity_new_comment_notification_helper( $comment_id, $params ) {
3683
- bp_activity_new_comment_notification( $comment_id, $params['user_id'], $params );
3684
- }
3685
- add_action( 'bp_activity_comment_posted', 'bp_activity_new_comment_notification_helper', 10, 2 );
3686
 
3687
  /** Embeds *******************************************************************/
3688
 
@@ -3761,7 +3495,7 @@ add_action( 'bp_before_activity_comment', 'bp_activity_comment_embed' );
3761
  function bp_dtheme_embed_read_more( $activity ) {
3762
  buddypress()->activity->read_more_id = $activity->id;
3763
 
3764
- add_filter( 'embed_post_id', function() { return buddypress()->activity->read_more_id; } );
3765
  add_filter( 'bp_embed_get_cache', 'bp_embed_activity_cache', 10, 3 );
3766
  add_action( 'bp_embed_update_cache', 'bp_embed_activity_save_cache', 10, 3 );
3767
  }
@@ -3831,21 +3565,21 @@ function bp_embed_activity_save_cache( $cache, $cachekey, $id ) {
3831
  *
3832
  * @since 2.0.0
3833
  *
 
 
 
3834
  * @return bool True if activity heartbeat is enabled, otherwise false.
3835
  */
3836
  function bp_activity_do_heartbeat() {
3837
  $retval = false;
3838
 
3839
- if ( bp_is_activity_heartbeat_active() && ( bp_is_activity_directory() || bp_is_group_activity() ) ) {
 
 
 
 
3840
  $retval = true;
3841
  }
3842
 
3843
- /**
3844
- * Filters whether the heartbeat feature in the activity stream should be active.
3845
- *
3846
- * @since 2.8.0
3847
- *
3848
- * @param bool $retval Whether or not activity heartbeat is active.
3849
- */
3850
- return (bool) apply_filters( 'bp_activity_do_heartbeat', $retval );
3851
  }
406
  * @param array $args {
407
  * An associative array of tracking parameters. All items are optional.
408
  * @type string $bp_activity_admin_filter String to use in the Dashboard > Activity dropdown.
409
+ * @type string $bp_activity_front_filter String to use in frontend dropdown.
410
  * @type string $bp_activity_new_post String format to use for generating the activity action. Should be a
411
  * translatable string where %1$s is replaced by a user link and %2$s is
412
  * the URL of the newly created post.
839
  return apply_filters( 'bp_activity_get_types', $actions );
840
  }
841
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
842
  /** Favorites ****************************************************************/
843
 
844
  /**
1445
  $action = apply_filters( 'bp_activity_generate_action_string', $activity->action, $activity );
1446
 
1447
  // Remove the filter for future activity items.
1448
+ remove_filter( 'bp_activity_generate_action_string', $actions->{$activity->component}->{$activity->type}['format_callback'], 10, 2 );
1449
 
1450
  return $action;
1451
  }
1663
  * );
1664
  */
1665
  'filter' => array()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1666
  ) );
1667
 
1668
+ // Attempt to return a cached copy of the first page of sitewide activity.
1669
+ if ( ( 1 === (int) $r['page'] ) && empty( $r['max'] ) && ( 'all' === $r['fields'] ) && empty( $r['search_terms'] ) && empty( $r['meta_query'] ) && empty( $r['date_query'] ) && empty( $r['filter_query'] ) && empty( $r['filter'] ) && empty( $r['scope'] )&& empty( $r['exclude'] ) && empty( $r['in'] ) && ( 'DESC' === $r['sort'] ) && empty( $r['exclude'] ) && ( 'ham_only' === $r['spam'] ) ) {
1670
+
1671
+ $activity = wp_cache_get( 'bp_activity_sitewide_front', 'bp' );
1672
+ if ( false === $activity ) {
1673
+
1674
+ $activity = BP_Activity_Activity::get( array(
1675
+ 'page' => $r['page'],
1676
+ 'per_page' => $r['per_page'],
1677
+ 'max' => $r['max'],
1678
+ 'fields' => $r['fields'],
1679
+ 'sort' => $r['sort'],
1680
+ 'search_terms' => $r['search_terms'],
1681
+ 'meta_query' => $r['meta_query'],
1682
+ 'date_query' => $r['date_query'],
1683
+ 'filter_query' => $r['filter_query'],
1684
+ 'filter' => $r['filter'],
1685
+ 'scope' => $r['scope'],
1686
+ 'display_comments' => $r['display_comments'],
1687
+ 'show_hidden' => $r['show_hidden'],
1688
+ 'spam' => $r['spam'],
1689
+ 'update_meta_cache' => $r['update_meta_cache'],
1690
+ 'count_total' => $r['count_total'],
1691
+ ) );
1692
+
1693
+ wp_cache_set( 'bp_activity_sitewide_front', $activity, 'bp' );
1694
+ }
1695
+
1696
+ } else {
1697
+ $activity = BP_Activity_Activity::get( array(
1698
+ 'page' => $r['page'],
1699
+ 'per_page' => $r['per_page'],
1700
+ 'max' => $r['max'],
1701
+ 'sort' => $r['sort'],
1702
+ 'search_terms' => $r['search_terms'],
1703
+ 'meta_query' => $r['meta_query'],
1704
+ 'date_query' => $r['date_query'],
1705
+ 'filter_query' => $r['filter_query'],
1706
+ 'filter' => $r['filter'],
1707
+ 'scope' => $r['scope'],
1708
+ 'display_comments' => $r['display_comments'],
1709
+ 'show_hidden' => $r['show_hidden'],
1710
+ 'exclude' => $r['exclude'],
1711
+ 'in' => $r['in'],
1712
+ 'spam' => $r['spam'],
1713
+ 'count_total' => $r['count_total'],
1714
+ ) );
1715
+ }
1716
+
1717
  /**
1718
  * Filters the requested activity item(s).
1719
  *
1752
  'sort' => 'DESC', // Sort ASC or DESC
1753
  'spam' => 'ham_only', // Retrieve items marked as spam.
1754
  'update_meta_cache' => true,
1755
+ ) );
1756
 
1757
  $get_args = array(
1758
  'display_comments' => $r['display_comments'],
1816
  * @type bool $is_spam Should the item be marked as spam? Default: false.
1817
  * @type string $error_type Optional. Error type. Either 'bool' or 'wp_error'. Default: 'bool'.
1818
  * }
1819
+ * @return int|bool The ID of the activity on success. False on error.
1820
  */
1821
  function bp_activity_add( $args = '' ) {
1822
 
1898
  * @since 1.2.0
1899
  *
1900
  * @param array|string $args {
1901
+ * @type string $content The content of the activity update.
1902
+ * @type int $user_id Optional. Defaults to the logged-in user.
 
 
1903
  * }
1904
+ * @return int $activity_id The activity id.
 
1905
  */
1906
  function bp_activity_post_update( $args = '' ) {
1907
 
1994
  * @param int $post_id ID of the new post.
1995
  * @param WP_Post|null $post Post object.
1996
  * @param int $user_id ID of the post author.
1997
+ * @return int|bool The ID of the activity on success. False on error.
1998
  */
1999
  function bp_activity_post_type_publish( $post_id = 0, $post = null, $user_id = 0 ) {
2000
 
2129
  * @since 2.2.0
2130
  *
2131
  * @param WP_Post|null $post Post item.
2132
+ * @return bool True on success, false on failure.
2133
  */
2134
  function bp_activity_post_type_update( $post = null ) {
2135
 
2251
  * @param int $comment_id ID of the comment.
2252
  * @param bool $is_approved Whether the comment is approved or not.
2253
  * @param object|null $activity_post_object The post type tracking args object.
2254
+ * @return int|bool The ID of the activity on success. False on error.
2255
  */
2256
  function bp_activity_post_type_comment( $comment_id = 0, $is_approved = true, $activity_post_object = null ) {
2257
  // Get the users comment
2525
  * Defaults to false.
2526
  * @type string $error_type Optional. Error type. Either 'bool' or 'wp_error'. Default: 'bool'.
2527
  * }
2528
+ * @return int|bool The ID of the comment on success, otherwise false.
2529
  */
2530
  function bp_activity_new_comment( $args = '' ) {
2531
  $bp = buddypress();
2640
  *
2641
  * @since 1.2.0
2642
  *
2643
+ * @param int $comment_id ID of the newly posted activity comment.
2644
+ * @param array $r Array of parsed comment arguments.
2645
+ * @param int $activity ID of the activity item being commented on.
2646
  */
2647
  do_action( 'bp_activity_comment_posted', $comment_id, $r, $activity );
2648
  } else {
2652
  *
2653
  * @since 2.5.0
2654
  *
2655
+ * @param int $comment_id ID of the newly posted activity comment.
2656
+ * @param array $r Array of parsed comment arguments.
2657
+ * @param int $activity ID of the activity item being commented on.
2658
  */
2659
  do_action( 'bp_activity_comment_posted_notification_skipped', $comment_id, $r, $activity );
2660
  }
2931
  return $deleted;
2932
  }
2933
 
 
 
 
 
 
 
2934
  // Delete any children of this comment.
2935
  bp_activity_delete_children( $activity_id, $comment_id );
2936
 
2971
  * @param int $comment_id The ID of the comment to be deleted.
2972
  */
2973
  function bp_activity_delete_children( $activity_id, $comment_id ) {
 
 
 
 
 
2974
 
2975
  // Get activity children to delete.
2976
  $children = BP_Activity_Activity::get_child_comments( $comment_id );
3030
  $link = $activity_obj->primary_link;
3031
  } else {
3032
  if ( 'activity_comment' == $activity_obj->type ) {
3033
+ $link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->item_id . '/';
3034
  } else {
3035
  $link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->id . '/';
3036
  }
3137
  return apply_filters( 'bp_activity_thumbnail_content_images', $content, $matches, $args );
3138
  }
3139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3140
  /**
3141
  * Create a rich summary of an activity item for the activity stream.
3142
  *
3346
 
3347
  // If Akismet is active, and this was a manual spam/ham request, stop Akismet checking the activity.
3348
  if ( 'by_a_person' == $source && !empty( $bp->activity->akismet ) ) {
3349
+ remove_action( 'bp_activity_before_save', array( $bp->activity->akismet, 'check_activity' ), 4, 1 );
3350
 
3351
  // Build data package for Akismet.
3352
  $activity_data = BP_Akismet::build_akismet_data_package( $activity );
3393
 
3394
  // If Akismet is active, and this was a manual spam/ham request, stop Akismet checking the activity.
3395
  if ( 'by_a_person' == $source && !empty( $bp->activity->akismet ) ) {
3396
+ remove_action( 'bp_activity_before_save', array( $bp->activity->akismet, 'check_activity' ), 4, 1 );
3397
 
3398
  // Build data package for Akismet.
3399
  $activity_data = BP_Akismet::build_akismet_data_package( $activity );
3417
  do_action( 'bp_activity_mark_as_ham', $activity, $source );
3418
  }
3419
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3420
 
3421
  /** Embeds *******************************************************************/
3422
 
3495
  function bp_dtheme_embed_read_more( $activity ) {
3496
  buddypress()->activity->read_more_id = $activity->id;
3497
 
3498
+ add_filter( 'embed_post_id', create_function( '', 'return buddypress()->activity->read_more_id;' ) );
3499
  add_filter( 'bp_embed_get_cache', 'bp_embed_activity_cache', 10, 3 );
3500
  add_action( 'bp_embed_update_cache', 'bp_embed_activity_save_cache', 10, 3 );
3501
  }
3565
  *
3566
  * @since 2.0.0
3567
  *
3568
+ * directory.
3569
+ * is the group activities.
3570
+ *
3571
  * @return bool True if activity heartbeat is enabled, otherwise false.
3572
  */
3573
  function bp_activity_do_heartbeat() {
3574
  $retval = false;
3575
 
3576
+ if ( ! bp_is_activity_heartbeat_active() ) {
3577
+ return $retval;
3578
+ }
3579
+
3580
+ if ( bp_is_activity_directory() || bp_is_group_activity() ) {
3581
  $retval = true;
3582
  }
3583
 
3584
+ return $retval;
 
 
 
 
 
 
 
3585
  }
bp-activity/bp-activity-loader.php CHANGED
@@ -12,8 +12,12 @@
12
  // Exit if accessed directly.
13
  defined( 'ABSPATH' ) || exit;
14
 
 
 
 
 
15
  /**
16
- * Set up the bp-activity component.
17
  *
18
  * @since 1.6.0
19
  */
12
  // Exit if accessed directly.
13
  defined( 'ABSPATH' ) || exit;
14
 
15
+ if ( ! buddypress()->do_autoload ) {
16
+ require dirname( __FILE__ ) . '/classes/class-bp-activity-component.php';
17
+ }
18
+
19
  /**
20
+ * Bootstrap the Activity component.
21
  *
22
  * @since 1.6.0
23
  */
bp-activity/bp-activity-notifications.php CHANGED
@@ -10,6 +10,194 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * Format notifications related to activity.
15
  *
@@ -20,10 +208,9 @@ defined( 'ABSPATH' ) || exit;
20
  * @param int $secondary_item_id In the case of at-mentions, this is the mentioner's ID.
21
  * @param int $total_items The total number of notifications to format.
22
  * @param string $format 'string' to get a BuddyBar-compatible notification, 'array' otherwise.
23
- * @param int $id Optional. The notification ID.
24
  * @return string $return Formatted @mention notification.
25
  */
26
- function bp_activity_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string', $id = 0 ) {
27
  $action_filter = $action;
28
  $return = false;
29
  $activity_id = $item_id;
@@ -38,10 +225,10 @@ function bp_activity_format_notifications( $action, $item_id, $secondary_item_id
38
  $amount = 'single';
39
 
40
  if ( (int) $total_items > 1 ) {
41
- $text = sprintf( __( 'You have %1$d new mentions', 'buddypress' ), (int) $total_items );
42
  $amount = 'multiple';
43
  } else {
44
- $text = sprintf( __( '%1$s mentioned you', 'buddypress' ), $user_fullname );
45
  }
46
  break;
47
 
@@ -55,8 +242,8 @@ function bp_activity_format_notifications( $action, $item_id, $secondary_item_id
55
  $text = sprintf( __( 'You have %1$d new replies', 'buddypress' ), (int) $total_items );
56
  $amount = 'multiple';
57
  } else {
58
- $link = add_query_arg( 'nid', (int) $id, bp_activity_get_permalink( $activity_id ) );
59
- $text = sprintf( __( '%1$s commented on one of your updates', 'buddypress' ), $user_fullname );
60
  }
61
  break;
62
 
@@ -70,8 +257,8 @@ function bp_activity_format_notifications( $action, $item_id, $secondary_item_id
70
  $text = sprintf( __( 'You have %1$d new comment replies', 'buddypress' ), (int) $total_items );
71
  $amount = 'multiple';
72
  } else {
73
- $link = add_query_arg( 'nid', (int) $id, bp_activity_get_permalink( $activity_id ) );
74
- $text = sprintf( __( '%1$s replied to one your activity comments', 'buddypress' ), $user_fullname );
75
  }
76
  break;
77
  }
@@ -94,7 +281,7 @@ function bp_activity_format_notifications( $action, $item_id, $secondary_item_id
94
  * @param int $activity_id ID of the activity item being formatted.
95
  * @param int $user_id ID of the user who inited the interaction.
96
  */
97
- $return = apply_filters( 'bp_activity_' . $amount . '_' . $action_filter . '_notification', '<a href="' . esc_url( $link ) . '">' . esc_html( $text ) . '</a>', $link, (int) $total_items, $activity_id, $user_id );
98
  } else {
99
 
100
  /**
@@ -151,7 +338,8 @@ function bp_activity_format_notifications( $action, $item_id, $secondary_item_id
151
  * @param int $receiver_user_id ID of user receiving notification.
152
  */
153
  function bp_activity_at_mention_add_notification( $activity, $subject, $message, $content, $receiver_user_id ) {
154
- bp_notifications_add_notification( array(
 
155
  'user_id' => $receiver_user_id,
156
  'item_id' => $activity->id,
157
  'secondary_item_id' => $activity->user_id,
@@ -159,7 +347,8 @@ function bp_activity_at_mention_add_notification( $activity, $subject, $message,
159
  'component_action' => 'new_at_mention',
160
  'date_notified' => bp_core_current_time(),
161
  'is_new' => 1,
162
- ) );
 
163
  }
164
  add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notification', 10, 5 );
165
 
@@ -173,15 +362,17 @@ add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notifi
173
  * @param int $commenter_id ID of the user who made the comment.
174
  */
175
  function bp_activity_update_reply_add_notification( $activity, $comment_id, $commenter_id ) {
176
- bp_notifications_add_notification( array(
177
- 'user_id' => $activity->user_id,
178
- 'item_id' => $comment_id,
179
- 'secondary_item_id' => $commenter_id,
180
- 'component_name' => buddypress()->activity->id,
181
- 'component_action' => 'update_reply',
182
- 'date_notified' => bp_core_current_time(),
183
- 'is_new' => 1,
184
- ) );
 
 
185
  }
186
  add_action( 'bp_activity_sent_reply_to_update_notification', 'bp_activity_update_reply_add_notification', 10, 3 );
187
 
@@ -195,15 +386,17 @@ add_action( 'bp_activity_sent_reply_to_update_notification', 'bp_activity_update
195
  * @param int $commenter_id ID of the user who made the comment.
196
  */
197
  function bp_activity_comment_reply_add_notification( $activity_comment, $comment_id, $commenter_id ) {
198
- bp_notifications_add_notification( array(
199
- 'user_id' => $activity_comment->user_id,
200
- 'item_id' => $comment_id,
201
- 'secondary_item_id' => $commenter_id,
202
- 'component_name' => buddypress()->activity->id,
203
- 'component_action' => 'comment_reply',
204
- 'date_notified' => bp_core_current_time(),
205
- 'is_new' => 1,
206
- ) );
 
 
207
  }
208
  add_action( 'bp_activity_sent_reply_to_reply_notification', 'bp_activity_comment_reply_add_notification', 10, 3 );
209
 
@@ -216,6 +409,10 @@ add_action( 'bp_activity_sent_reply_to_reply_notification', 'bp_activity_comment
216
  * @param int $user_id The id of the user whose notifications are marked as read.
217
  */
218
  function bp_activity_remove_screen_notifications( $user_id = 0 ) {
 
 
 
 
219
  // Only mark read if the current user is looking at his own mentions.
220
  if ( empty( $user_id ) || (int) $user_id !== (int) bp_loggedin_user_id() ) {
221
  return;
@@ -229,44 +426,42 @@ add_action( 'bp_activity_clear_new_mentions', 'bp_activity_remove_screen_notific
229
  * Mark at-mention notification as read when user visits the activity with the mention.
230
  *
231
  * @since 2.0.0
 
232
  *
233
  * @param BP_Activity_Activity $activity Activity object.
234
  */
235
  function bp_activity_remove_screen_notifications_single_activity_permalink( $activity ) {
236
- if ( ! is_user_logged_in() ) {
237
  return;
238
  }
239
 
240
- // Mark as read any notifications for the current user related to this activity item.
241
- bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), $activity->id, buddypress()->activity->id, 'new_at_mention' );
242
- }
243
- add_action( 'bp_activity_screen_single_activity_permalink', 'bp_activity_remove_screen_notifications_single_activity_permalink' );
244
-
245
- /**
246
- * Mark non-mention notifications as read when user visits our read permalink.
247
- *
248
- * In particular, 'update_reply' and 'comment_reply' notifications are handled
249
- * here. See {@link bp_activity_format_notifications()} for more info.
250
- *
251
- * @since 2.6.0
252
- */
253
- function bp_activity_remove_screen_notifications_for_non_mentions() {
254
- if ( false === is_singular() || false === is_user_logged_in() || empty( $_GET['nid'] ) ) {
255
  return;
256
  }
257
 
258
- // Mark notification as read.
259
- BP_Notifications_Notification::update(
260
- array(
261
- 'is_new' => false
262
- ),
263
- array(
264
- 'user_id' => bp_loggedin_user_id(),
265
- 'id' => (int) $_GET['nid']
266
- )
267
- );
 
 
 
 
 
 
 
 
 
 
 
268
  }
269
- add_action( 'bp_screens', 'bp_activity_remove_screen_notifications_for_non_mentions' );
270
 
271
  /**
272
  * Delete at-mention notifications when the corresponding activity item is deleted.
@@ -278,64 +473,10 @@ add_action( 'bp_screens', 'bp_activity_remove_screen_notifications_for_non_menti
278
  function bp_activity_at_mention_delete_notification( $activity_ids_deleted = array() ) {
279
  // Let's delete all without checking if content contains any mentions
280
  // to avoid a query to get the activity.
281
- if ( ! empty( $activity_ids_deleted ) ) {
282
  foreach ( $activity_ids_deleted as $activity_id ) {
283
  bp_notifications_delete_all_notifications_by_type( $activity_id, buddypress()->activity->id );
284
  }
285
  }
286
  }
287
  add_action( 'bp_activity_deleted_activities', 'bp_activity_at_mention_delete_notification', 10 );
288
-
289
- /**
290
- * Add a notification for post comments to the post author or post commenter.
291
- *
292
- * Requires "activity stream commenting on blog and forum posts" to be enabled.
293
- *
294
- * @since 2.6.0
295
- *
296
- * @param int $activity_id The activity comment ID.
297
- * @param WP_Comment $post_type_comment WP Comment object.
298
- * @param array $activity_args Activity comment arguments.
299
- * @param object $activity_post_object The post type tracking args object.
300
- */
301
- function bp_activity_add_notification_for_synced_blog_comment( $activity_id, $post_type_comment, $activity_args, $activity_post_object ) {
302
- // If activity comments are disabled for WP posts, stop now!
303
- if ( bp_disable_blogforum_comments() || empty( $activity_id ) ) {
304
- return;
305
- }
306
-
307
- // Send a notification to the blog post author.
308
- if ( (int) $post_type_comment->post->post_author !== (int) $activity_args['user_id'] ) {
309
- // Only add a notification if comment author is a registered user.
310
- // @todo Should we remove this restriction?
311
- if ( ! empty( $post_type_comment->user_id ) ) {
312
- bp_notifications_add_notification( array(
313
- 'user_id' => $post_type_comment->post->post_author,
314
- 'item_id' => $activity_id,
315
- 'secondary_item_id' => $post_type_comment->user_id,
316
- 'component_name' => buddypress()->activity->id,
317
- 'component_action' => 'update_reply',
318
- 'date_notified' => $post_type_comment->comment_date_gmt,
319
- 'is_new' => 1,
320
- ) );
321
- }
322
- }
323
-
324
- // Send a notification to the parent comment author for follow-up comments.
325
- if ( ! empty( $post_type_comment->comment_parent ) ) {
326
- $parent_comment = get_comment( $post_type_comment->comment_parent );
327
-
328
- if ( ! empty( $parent_comment->user_id ) && (int) $parent_comment->user_id !== (int) $activity_args['user_id'] ) {
329
- bp_notifications_add_notification( array(
330
- 'user_id' => $parent_comment->user_id,
331
- 'item_id' => $activity_id,
332
- 'secondary_item_id' => $post_type_comment->user_id,
333
- 'component_name' => buddypress()->activity->id,
334
- 'component_action' => 'comment_reply',
335
- 'date_notified' => $post_type_comment->comment_date_gmt,
336
- 'is_new' => 1,
337
- ) );
338
- }
339
- }
340
- }
341
- add_action( 'bp_blogs_comment_sync_activity_comment', 'bp_activity_add_notification_for_synced_blog_comment', 10, 4 );
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ /* Emails *********************************************************************/
14
+
15
+ /**
16
+ * Send email and BP notifications when a user is mentioned in an update.
17
+ *
18
+ * @since 1.2.0
19
+ *
20
+ * @param int $activity_id The ID of the activity update.
21
+ * @param int $receiver_user_id The ID of the user who is receiving the update.
22
+ */
23
+ function bp_activity_at_message_notification( $activity_id, $receiver_user_id ) {
24
+ $notifications = BP_Core_Notification::get_all_for_user( $receiver_user_id, 'all' );
25
+
26
+ // Don't leave multiple notifications for the same activity item.
27
+ foreach( $notifications as $notification ) {
28
+ if ( $activity_id == $notification->item_id ) {
29
+ return;
30
+ }
31
+ }
32
+
33
+ $activity = new BP_Activity_Activity( $activity_id );
34
+ $email_type = 'activity-at-message';
35
+ $group_name = '';
36
+ $message_link = bp_activity_get_permalink( $activity_id );
37
+ $poster_name = bp_core_get_user_displayname( $activity->user_id );
38
+
39
+ remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );
40
+ remove_filter( 'bp_get_activity_content_body', 'wpautop' );
41
+ remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
42
+
43
+ /** This filter is documented in bp-activity/bp-activity-template.php */
44
+ $content = apply_filters( 'bp_get_activity_content_body', $activity->content );
45
+
46
+ add_filter( 'bp_get_activity_content_body', 'convert_smilies' );
47
+ add_filter( 'bp_get_activity_content_body', 'wpautop' );
48
+ add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
49
+
50
+ // Now email the user with the contents of the message (if they have enabled email notifications).
51
+ if ( 'no' != bp_get_user_meta( $receiver_user_id, 'notification_activity_new_mention', true ) ) {
52
+ if ( bp_is_active( 'groups' ) && bp_is_group() ) {
53
+ $email_type = 'groups-at-message';
54
+ $group_name = bp_get_current_group_name();
55
+ }
56
+
57
+ $args = array(
58
+ 'tokens' => array(
59
+ 'activity' => $activity,
60
+ 'usermessage' => wp_strip_all_tags( $content ),
61
+ 'group.name' => $group_name,
62
+ 'mentioned.url' => $message_link,
63
+ 'poster.name' => $poster_name,
64
+ 'receiver-user.id' => $receiver_user_id,
65
+ ),
66
+ );
67
+
68
+ bp_send_email( $email_type, $receiver_user_id, $args );
69
+ }
70
+
71
+ /**
72
+ * Fires after the sending of an @mention email notification.
73
+ *
74
+ * @since 1.5.0
75
+ * @since 2.5.0 $subject, $message, $content arguments unset and deprecated.
76
+ *
77
+ * @param BP_Activity_Activity $activity Activity Item object.
78
+ * @param string $deprecated Removed in 2.5; now an empty string.
79
+ * @param string $deprecated Removed in 2.5; now an empty string.
80
+ * @param string $deprecated Removed in 2.5; now an empty string.
81
+ * @param int $receiver_user_id The ID of the user who is receiving the update.
82
+ */
83
+ do_action( 'bp_activity_sent_mention_email', $activity, '', '', '', $receiver_user_id );
84
+ }
85
+
86
+ /**
87
+ * Send email and BP notifications when an activity item receives a comment.
88
+ *
89
+ * @since 1.2.0
90
+ * @since 2.5.0 Updated to use new email APIs.
91
+ *
92
+ * @param int $comment_id The comment id.
93
+ * @param int $commenter_id The ID of the user who posted the comment.
94
+ * @param array $params {@link bp_activity_new_comment()}.
95
+ */
96
+ function bp_activity_new_comment_notification( $comment_id = 0, $commenter_id = 0, $params = array() ) {
97
+ $original_activity = new BP_Activity_Activity( $params['activity_id'] );
98
+ $poster_name = bp_core_get_user_displayname( $commenter_id );
99
+ $thread_link = bp_activity_get_permalink( $params['activity_id'] );
100
+
101
+ remove_filter( 'bp_get_activity_content_body', 'convert_smilies' );
102
+ remove_filter( 'bp_get_activity_content_body', 'wpautop' );
103
+ remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
104
+
105
+ /** This filter is documented in bp-activity/bp-activity-template.php */
106
+ $content = apply_filters( 'bp_get_activity_content_body', $params['content'] );
107
+
108
+ add_filter( 'bp_get_activity_content_body', 'convert_smilies' );
109
+ add_filter( 'bp_get_activity_content_body', 'wpautop' );
110
+ add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
111
+
112
+ if ( $original_activity->user_id != $commenter_id ) {
113
+
114
+ // Send an email if the user hasn't opted-out.
115
+ if ( 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) {
116
+ $args = array(
117
+ 'tokens' => array(
118
+ 'comment.id' => $comment_id,
119
+ 'commenter.id' => $commenter_id,
120
+ 'usermessage' => wp_strip_all_tags( $content ),
121
+ 'original_activity.user_id' => $original_activity->user_id,
122
+ 'poster.name' => $poster_name,
123
+ 'thread.url' => esc_url( $thread_link ),
124
+ ),
125
+ );
126
+
127
+ bp_send_email( 'activity-comment', $original_activity->user_id, $args );
128
+ }
129
+
130
+ /**
131
+ * Fires at the point that notifications should be sent for activity comments.
132
+ *
133
+ * @since 2.6.0
134
+ *
135
+ * @param BP_Activity_Activity $original_activity The original activity.
136
+ * @param int $comment_id ID for the newly received comment.
137
+ * @param int $commenter_id ID of the user who made the comment.
138
+ * @param array $params Arguments used with the original activity comment.
139
+ */
140
+ do_action( 'bp_activity_sent_reply_to_update_notification', $original_activity, $comment_id, $commenter_id, $params );
141
+ }
142
+
143
+
144
+ /*
145
+ * If this is a reply to another comment, send an email notification to the
146
+ * author of the immediate parent comment.
147
+ */
148
+ if ( empty( $params['parent_id'] ) || ( $params['activity_id'] == $params['parent_id'] ) ) {
149
+ return;
150
+ }
151
+
152
+ $parent_comment = new BP_Activity_Activity( $params['parent_id'] );
153
+
154
+ if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id ) {
155
+
156
+ // Send an email if the user hasn't opted-out.
157
+ if ( 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) {
158
+ $args = array(
159
+ 'tokens' => array(
160
+ 'comment.id' => $comment_id,
161
+ 'commenter.id' => $commenter_id,
162
+ 'usermessage' => wp_strip_all_tags( $content ),
163
+ 'parent-comment-user.id' => $parent_comment->user_id,
164
+ 'poster.name' => $poster_name,
165
+ 'thread.url' => esc_url( $thread_link ),
166
+ ),
167
+ );
168
+
169
+ bp_send_email( 'activity-comment-author', $parent_comment->user_id, $args );
170
+ }
171
+
172
+ /**
173
+ * Fires at the point that notifications should be sent for comments on activity replies.
174
+ *
175
+ * @since 2.6.0
176
+ *
177
+ * @param BP_Activity_Activity $parent_comment The parent activity.
178
+ * @param int $comment_id ID for the newly received comment.
179
+ * @param int $commenter_id ID of the user who made the comment.
180
+ * @param array $params Arguments used with the original activity comment.
181
+ */
182
+ do_action( 'bp_activity_sent_reply_to_reply_notification', $parent_comment, $comment_id, $commenter_id, $params );
183
+ }
184
+ }
185
+
186
+ /**
187
+ * Helper method to map action arguments to function parameters.
188
+ *
189
+ * @since 1.9.0
190
+ *
191
+ * @param int $comment_id ID of the comment being notified about.
192
+ * @param array $params Parameters to use with notification.
193
+ */
194
+ function bp_activity_new_comment_notification_helper( $comment_id, $params ) {
195
+ bp_activity_new_comment_notification( $comment_id, $params['user_id'], $params );
196
+ }
197
+ add_action( 'bp_activity_comment_posted', 'bp_activity_new_comment_notification_helper', 10, 2 );
198
+
199
+ /** Notifications *************************************************************/
200
+
201
  /**
202
  * Format notifications related to activity.
203
  *
208
  * @param int $secondary_item_id In the case of at-mentions, this is the mentioner's ID.
209
  * @param int $total_items The total number of notifications to format.
210
  * @param string $format 'string' to get a BuddyBar-compatible notification, 'array' otherwise.
 
211
  * @return string $return Formatted @mention notification.
212
  */
213
+ function bp_activity_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {
214
  $action_filter = $action;
215
  $return = false;
216
  $activity_id = $item_id;
225
  $amount = 'single';
226
 
227
  if ( (int) $total_items > 1 ) {
228
+ $text = sprintf( __( 'You have %1$d new mentions', 'buddypress' ), (int) $total_items );
229
  $amount = 'multiple';
230
  } else {
231
+ $text = sprintf( __( '%1$s mentioned you', 'buddypress' ), $user_fullname );
232
  }
233
  break;
234
 
242
  $text = sprintf( __( 'You have %1$d new replies', 'buddypress' ), (int) $total_items );
243
  $amount = 'multiple';
244
  } else {
245
+ $link = bp_activity_get_permalink( $activity_id );
246
+ $text = sprintf( __( '%1$s commented on one of your updates', 'buddypress' ), $user_fullname );
247
  }
248
  break;
249
 
257
  $text = sprintf( __( 'You have %1$d new comment replies', 'buddypress' ), (int) $total_items );
258
  $amount = 'multiple';
259
  } else {
260
+ $link = bp_activity_get_permalink( $activity_id );
261
+ $text = sprintf( __( '%1$s replied to one your activity comments', 'buddypress' ), $user_fullname );
262
  }
263
  break;
264
  }
281
  * @param int $activity_id ID of the activity item being formatted.
282
  * @param int $user_id ID of the user who inited the interaction.
283
  */
284
+ $return = apply_filters( 'bp_activity_' . $amount . '_' . $action_filter . '_notification', '<a href="' . esc_url( $link ) . '" title="' . esc_attr( $title ) . '">' . esc_html( $text ) . '</a>', $link, (int) $total_items, $activity_id, $user_id );
285
  } else {
286
 
287
  /**
338
  * @param int $receiver_user_id ID of user receiving notification.
339
  */
340
  function bp_activity_at_mention_add_notification( $activity, $subject, $message, $content, $receiver_user_id ) {
341
+ if ( bp_is_active( 'notifications' ) ) {
342
+ bp_notifications_add_notification( array(
343
  'user_id' => $receiver_user_id,
344
  'item_id' => $activity->id,
345
  'secondary_item_id' => $activity->user_id,
347
  'component_action' => 'new_at_mention',
348
  'date_notified' => bp_core_current_time(),
349
  'is_new' => 1,
350
+ ) );
351
+ }
352
  }
353
  add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notification', 10, 5 );
354
 
362
  * @param int $commenter_id ID of the user who made the comment.
363
  */
364
  function bp_activity_update_reply_add_notification( $activity, $comment_id, $commenter_id ) {
365
+ if ( bp_is_active( 'notifications' ) ) {
366
+ bp_notifications_add_notification( array(
367
+ 'user_id' => $activity->user_id,
368
+ 'item_id' => $activity->id,
369
+ 'secondary_item_id' => $commenter_id,
370
+ 'component_name' => buddypress()->activity->id,
371
+ 'component_action' => 'update_reply',
372
+ 'date_notified' => bp_core_current_time(),
373
+ 'is_new' => 1,
374
+ ) );
375
+ }
376
  }
377
  add_action( 'bp_activity_sent_reply_to_update_notification', 'bp_activity_update_reply_add_notification', 10, 3 );
378
 
386
  * @param int $commenter_id ID of the user who made the comment.
387
  */
388
  function bp_activity_comment_reply_add_notification( $activity_comment, $comment_id, $commenter_id ) {
389
+ if ( bp_is_active( 'notifications' ) ) {
390
+ bp_notifications_add_notification( array(
391
+ 'user_id' => $activity_comment->user_id,
392
+ 'item_id' => $activity_comment->item_id,
393
+ 'secondary_item_id' => $commenter_id,
394
+ 'component_name' => buddypress()->activity->id,
395
+ 'component_action' => 'comment_reply',
396
+ 'date_notified' => bp_core_current_time(),
397
+ 'is_new' => 1,
398
+ ) );
399
+ }
400
  }
401
  add_action( 'bp_activity_sent_reply_to_reply_notification', 'bp_activity_comment_reply_add_notification', 10, 3 );
402
 
409
  * @param int $user_id The id of the user whose notifications are marked as read.
410
  */
411
  function bp_activity_remove_screen_notifications( $user_id = 0 ) {
412
+ if ( ! bp_is_active( 'notifications' ) ) {
413
+ return;
414
+ }
415
+
416
  // Only mark read if the current user is looking at his own mentions.
417
  if ( empty( $user_id ) || (int) $user_id !== (int) bp_loggedin_user_id() ) {
418
  return;
426
  * Mark at-mention notification as read when user visits the activity with the mention.
427
  *
428
  * @since 2.0.0
429
+ * @since 2.6.0 Mark notifications for 'update_reply' and 'comment_reply' actions
430
  *
431
  * @param BP_Activity_Activity $activity Activity object.
432
  */
433
  function bp_activity_remove_screen_notifications_single_activity_permalink( $activity ) {
434
+ if ( ! bp_is_active( 'notifications' ) ) {
435
  return;
436
  }
437
 
438
+ if ( ! is_user_logged_in() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
439
  return;
440
  }
441
 
442
+ /**
443
+ * Filter here to add the notification actions to mark as read
444
+ * when the single activity is displayed.
445
+ *
446
+ * @since 2.6.0
447
+ *
448
+ * @param array $value List of notification actions to mark as read.
449
+ */
450
+ $notification_actions = apply_filters( 'bp_activity_notification_actions_single_activity', array(
451
+ 'new_at_mention',
452
+ 'update_reply',
453
+ 'comment_reply',
454
+ ) );
455
+
456
+ $user_id = bp_loggedin_user_id();
457
+ $component = buddypress()->activity->id;
458
+
459
+ foreach ( $notification_actions as $action ) {
460
+ // Mark as read any notifications for the current user related to this activity item.
461
+ bp_notifications_mark_notifications_by_item_id( $user_id, $activity->id, $component, $action );
462
+ }
463
  }
464
+ add_action( 'bp_activity_screen_single_activity_permalink', 'bp_activity_remove_screen_notifications_single_activity_permalink' );
465
 
466
  /**
467
  * Delete at-mention notifications when the corresponding activity item is deleted.
473
  function bp_activity_at_mention_delete_notification( $activity_ids_deleted = array() ) {
474
  // Let's delete all without checking if content contains any mentions
475
  // to avoid a query to get the activity.
476
+ if ( bp_is_active( 'notifications' ) && ! empty( $activity_ids_deleted ) ) {
477
  foreach ( $activity_ids_deleted as $activity_id ) {
478
  bp_notifications_delete_all_notifications_by_type( $activity_id, buddypress()->activity->id );
479
  }
480
  }
481
  }
482
  add_action( 'bp_activity_deleted_activities', 'bp_activity_at_mention_delete_notification', 10 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-activity/bp-activity-screens.php CHANGED
@@ -14,6 +14,10 @@
14
  // Exit if accessed directly.
15
  defined( 'ABSPATH' ) || exit;
16
 
 
 
 
 
17
  /**
18
  * Load the Activity directory.
19
  *
@@ -232,7 +236,7 @@ function bp_activity_screen_single_activity_permalink() {
232
 
233
  // Check to see if the group is not public, if so, check the
234
  // user has access to see this activity.
235
- if ( $group = groups_get_group( $activity->item_id ) ) {
236
 
237
  // Group is not public.
238
  if ( 'public' != $group->status ) {
@@ -245,11 +249,6 @@ function bp_activity_screen_single_activity_permalink() {
245
  }
246
  }
247
 
248
- // If activity author does not match displayed user, block access.
249
- if ( true === $has_access && bp_displayed_user_id() !== $activity->user_id ) {
250
- $has_access = false;
251
- }
252
-
253
  /**
254
  * Filters the access permission for a single activity view.
255
  *
14
  // Exit if accessed directly.
15
  defined( 'ABSPATH' ) || exit;
16
 
17
+ if ( ! buddypress()->do_autoload ) {
18
+ require dirname( __FILE__ ) . '/classes/class-bp-activity-theme-compat.php';
19
+ }
20
+
21
  /**
22
  * Load the Activity directory.
23
  *
236
 
237
  // Check to see if the group is not public, if so, check the
238
  // user has access to see this activity.
239
+ if ( $group = groups_get_group( array( 'group_id' => $activity->item_id ) ) ) {
240
 
241
  // Group is not public.
242
  if ( 'public' != $group->status ) {
249
  }
250
  }
251
 
 
 
 
 
 
252
  /**
253
  * Filters the access permission for a single activity view.
254
  *
bp-activity/bp-activity-template.php CHANGED
@@ -10,6 +10,10 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
13
  /**
14
  * Output the activity component slug.
15
  *
@@ -1173,7 +1177,11 @@ function bp_activity_secondary_avatar( $args = '' ) {
1173
 
1174
  // Only if groups is active.
1175
  if ( bp_is_active( 'groups' ) ) {
1176
- $group = groups_get_group( $item_id );
 
 
 
 
1177
  $link = bp_get_group_permalink( $group );
1178
  $name = $group->name;
1179
  }
@@ -1386,8 +1394,7 @@ function bp_activity_content_body() {
1386
  *
1387
  * @since 1.2.0
1388
  *
1389
- * @param string $content Content body.
1390
- * @param object $activity Activity object. Passed by reference.
1391
  */
1392
  return apply_filters_ref_array( 'bp_get_activity_content_body', array( $activities_template->activity->content, &$activities_template->activity ) );
1393
  }
@@ -1469,13 +1476,6 @@ function bp_insert_activity_meta( $content = '' ) {
1469
  // Get the time since this activity was recorded.
1470
  $date_recorded = bp_core_time_since( $activities_template->activity->date_recorded );
1471
 
1472
- // Set up 'time-since' <span>.
1473
- $time_since = sprintf(
1474
- '<span class="time-since" data-livestamp="%1$s">%2$s</span>',
1475
- bp_core_get_iso8601_date( $activities_template->activity->date_recorded ),
1476
- $date_recorded
1477
- );
1478
-
1479
  /**
1480
  * Filters the activity item time since markup.
1481
  *
@@ -1484,7 +1484,7 @@ function bp_insert_activity_meta( $content = '' ) {
1484
  * @param array $value Array containing the time since markup and the current activity component.
1485
  */
1486
  $time_since = apply_filters_ref_array( 'bp_activity_time_since', array(
1487
- $time_since,
1488
  &$activities_template->activity
1489
  ) );
1490
 
@@ -1493,7 +1493,7 @@ function bp_insert_activity_meta( $content = '' ) {
1493
 
1494
  // Setup variables for activity meta.
1495
  $activity_permalink = bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity );
1496
- $activity_meta = sprintf( '%1$s <a href="%2$s" class="view activity-time-since bp-tooltip" data-bp-tooltip="%3$s">%4$s</a>',
1497
  $new_content,
1498
  $activity_permalink,
1499
  esc_attr__( 'View Discussion', 'buddypress' ),
@@ -1533,7 +1533,7 @@ function bp_insert_activity_meta( $content = '' ) {
1533
  *
1534
  * @global object $activities_template {@link BP_Activity_Template}
1535
  *
1536
- * @param false|BP_Activity_Activity $activity Optional. Falls back on the current item in the loop.
1537
  * @return bool True if can delete, false otherwise.
1538
  */
1539
  function bp_activity_user_can_delete( $activity = false ) {
@@ -2090,7 +2090,7 @@ function bp_activity_comment_delete_link() {
2090
  * activity comment.
2091
  */
2092
  function bp_get_activity_comment_delete_link() {
2093
- $link = wp_nonce_url( trailingslashit( bp_get_activity_directory_permalink() . 'delete/' . bp_get_activity_comment_id() ) . '?cid=' . bp_get_activity_comment_id(), 'bp_activity_delete_link' );
2094
 
2095
  /**
2096
  * Filters the link used for deleting the activity comment currently being displayed.
@@ -2227,61 +2227,19 @@ function bp_activity_comment_count() {
2227
  * Output the depth of the current activity comment.
2228
  *
2229
  * @since 2.0.0
2230
- * @since 2.8.0 Added $comment as a parameter.
2231
- *
2232
- * @param object|int $comment Object of the activity comment or activity comment ID. Usually unnecessary
2233
- * when used in activity comment loop.
2234
  */
2235
- function bp_activity_comment_depth( $comment = 0 ) {
2236
- echo bp_activity_get_comment_depth( $comment );
2237
  }
2238
-
2239
  /**
2240
  * Return the current activity comment depth.
2241
  *
2242
  * @since 2.0.0
2243
- * @since 2.8.0 Added $comment as a parameter.
2244
  *
2245
- * @param object|int $comment Object of the activity comment or activity comment ID. Usually unnecessary
2246
- * when used in activity comment loop.
2247
- * @return int
2248
  */
2249
- function bp_activity_get_comment_depth( $comment = 0 ) {
2250
- $depth = 0;
2251
-
2252
- // Activity comment loop takes precedence.
2253
- if ( isset( $GLOBALS['activities_template']->activity->current_comment->depth ) ) {
2254
- $depth = $GLOBALS['activities_template']->activity->current_comment->depth;
2255
-
2256
- // Get depth for activity comment manually.
2257
- } elseif ( ! empty( $comment ) ) {
2258
- // We passed an activity ID, so fetch the activity object.
2259
- if ( is_int( $comment ) ) {
2260
- $comment = new BP_Activity_Activity( $comment );
2261
- }
2262
-
2263
- // Recurse through activity tree to find the depth.
2264
- if ( is_object( $comment ) && isset( $comment->type ) && 'activity_comment' === $comment->type ) {
2265
- // Fetch the entire root comment tree... ugh.
2266
- $comments = BP_Activity_Activity::get_activity_comments( $comment->item_id, 1, constant( 'PHP_INT_MAX' ) );
2267
-
2268
- // Recursively find our comment object from the comment tree.
2269
- $iterator = new RecursiveArrayIterator( $comments );
2270
- $recursive = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::SELF_FIRST );
2271
- foreach ( $recursive as $cid => $cobj ) {
2272
- // Skip items that are not a comment object.
2273
- if ( ! is_numeric( $cid ) || ! is_object( $cobj ) ) {
2274
- continue;
2275
- }
2276
-
2277
- // We found the activity comment! Set the depth.
2278
- if ( $cid === $comment->id && isset( $cobj->depth ) ) {
2279
- $depth = $cobj->depth;
2280
- break;
2281
- }
2282
- }
2283
- }
2284
- }
2285
 
2286
  /**
2287
  * Filters the comment depth of the current activity comment.
@@ -2290,7 +2248,7 @@ function bp_activity_comment_depth( $comment = 0 ) {
2290
  *
2291
  * @param int $depth Depth for the current activity comment.
2292
  */
2293
- return apply_filters( 'bp_activity_get_comment_depth', $depth );
2294
  }
2295
 
2296
  /**
@@ -2342,8 +2300,8 @@ function bp_activity_comment_form_nojs_display() {
2342
  *
2343
  * @global object $activities_template {@link BP_Activity_Template}
2344
  *
2345
- * @return string|false The activity comment form no JavaScript
2346
- * display CSS. False on failure.
2347
  */
2348
  function bp_get_activity_comment_form_nojs_display() {
2349
  global $activities_template;
@@ -2462,18 +2420,25 @@ function bp_activity_comment_permalink() {
2462
  *
2463
  * @since 1.8.0
2464
  *
 
2465
  * @return string $link The activity comment permalink.
2466
  */
2467
  function bp_get_activity_comment_permalink() {
2468
  global $activities_template;
2469
 
2470
- $link = bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity );
2471
-
2472
- // Used for filter below.
2473
  $comment_id = isset( $activities_template->activity->current_comment->id )
2474
  ? $activities_template->activity->current_comment->id
2475
  : 0;
2476
 
 
 
 
 
 
 
 
 
2477
  /**
2478
  * Filters the activity comment permalink.
2479
  *
@@ -2736,7 +2701,7 @@ function bp_activity_latest_update( $user_id = 0 ) {
2736
  * @param string $value The excerpt for the latest update.
2737
  * @param int $user_id ID of the queried user.
2738
  */
2739
- $latest_update = apply_filters( 'bp_get_activity_latest_update_excerpt', trim( strip_tags( bp_create_excerpt( $update['content'], bp_activity_get_excerpt_length() ) ) ), $user_id );
2740
 
2741
  $latest_update = sprintf(
2742
  '%s <a href="%s">%s</a>',
@@ -2926,7 +2891,7 @@ function bp_activity_can_comment_reply( $comment = false ) {
2926
  // Fall back on current comment in activity loop.
2927
  $comment_depth = isset( $comment->depth )
2928
  ? intval( $comment->depth )
2929
- : bp_activity_get_comment_depth( $comment );
2930
 
2931
  // Threading is turned on, so check the depth.
2932
  if ( get_option( 'thread_comments' ) ) {
@@ -3204,6 +3169,8 @@ function bp_send_public_message_button( $args = '' ) {
3204
  * @type string $wrapper_id Default: 'post-mention'.
3205
  * @type string $link_href Default: the public message link for
3206
  * the current member in the loop.
 
 
3207
  * @type string $link_text Default: 'Public Message'.
3208
  * @type string $link_class Default: 'activity-button mention'.
3209
  * }
@@ -3218,6 +3185,7 @@ function bp_send_public_message_button( $args = '' ) {
3218
  'block_self' => true,
3219
  'wrapper_id' => 'post-mention',
3220
  'link_href' => bp_get_send_public_message_link(),
 
3221
  'link_text' => __( 'Public Message', 'buddypress' ),
3222
  'link_class' => 'activity-button mention'
3223
  ) );
@@ -3838,15 +3806,45 @@ function bp_activity_show_filters( $context = '' ) {
3838
  * @return string HTML for <option> values.
3839
  */
3840
  function bp_get_activity_show_filters( $context = '' ) {
3841
- $filters = array();
3842
- $actions = bp_activity_get_actions_for_context( $context );
3843
- foreach ( $actions as $action ) {
3844
- // Friends activity collapses two filters into one.
3845
- if ( in_array( $action['key'], array( 'friendship_accepted', 'friendship_created' ) ) ) {
3846
- $action['key'] = 'friendship_accepted,friendship_created';
 
 
 
 
 
 
 
 
 
 
 
 
 
3847
  }
 
 
 
3848
 
3849
- $filters[ $action['key'] ] = $action['label'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3850
  }
3851
 
3852
  /**
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ if ( ! buddypress()->do_autoload ) {
14
+ require dirname( __FILE__ ) . '/classes/class-bp-activity-template.php';
15
+ }
16
+
17
  /**
18
  * Output the activity component slug.
19
  *
1177
 
1178
  // Only if groups is active.
1179
  if ( bp_is_active( 'groups' ) ) {
1180
+ $group = groups_get_group( array(
1181
+ 'group_id' => $item_id,
1182
+ 'populate_extras' => false,
1183
+ 'update_meta_cache' => false,
1184
+ ) );
1185
  $link = bp_get_group_permalink( $group );
1186
  $name = $group->name;
1187
  }
1394
  *
1395
  * @since 1.2.0
1396
  *
1397
+ * @param array $value Array containing the current activity content body and the current activity.
 
1398
  */
1399
  return apply_filters_ref_array( 'bp_get_activity_content_body', array( $activities_template->activity->content, &$activities_template->activity ) );
1400
  }
1476
  // Get the time since this activity was recorded.
1477
  $date_recorded = bp_core_time_since( $activities_template->activity->date_recorded );
1478
 
 
 
 
 
 
 
 
1479
  /**
1480
  * Filters the activity item time since markup.
1481
  *
1484
  * @param array $value Array containing the time since markup and the current activity component.
1485
  */
1486
  $time_since = apply_filters_ref_array( 'bp_activity_time_since', array(
1487
+ '<span class="time-since">' . $date_recorded . '</span>',
1488
  &$activities_template->activity
1489
  ) );
1490
 
1493
 
1494
  // Setup variables for activity meta.
1495
  $activity_permalink = bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity );
1496
+ $activity_meta = sprintf( '%1$s <a href="%2$s" class="view activity-time-since" title="%3$s">%4$s</a>',
1497
  $new_content,
1498
  $activity_permalink,
1499
  esc_attr__( 'View Discussion', 'buddypress' ),
1533
  *
1534
  * @global object $activities_template {@link BP_Activity_Template}
1535
  *
1536
+ * @param object|bool $activity Optional. Falls back on the current item in the loop.
1537
  * @return bool True if can delete, false otherwise.
1538
  */
1539
  function bp_activity_user_can_delete( $activity = false ) {
2090
  * activity comment.
2091
  */
2092
  function bp_get_activity_comment_delete_link() {
2093
+ $link = wp_nonce_url( bp_get_root_domain() . '/' . bp_get_activity_slug() . '/delete/' . bp_get_activity_comment_id() . '?cid=' . bp_get_activity_comment_id(), 'bp_activity_delete_link' );
2094
 
2095
  /**
2096
  * Filters the link used for deleting the activity comment currently being displayed.
2227
  * Output the depth of the current activity comment.
2228
  *
2229
  * @since 2.0.0
 
 
 
 
2230
  */
2231
+ function bp_activity_comment_depth() {
2232
+ echo bp_activity_get_comment_depth();
2233
  }
 
2234
  /**
2235
  * Return the current activity comment depth.
2236
  *
2237
  * @since 2.0.0
 
2238
  *
2239
+ * @return int $depth Depth for the current activity comment.
 
 
2240
  */
2241
+ function bp_activity_get_comment_depth() {
2242
+ global $activities_template;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2243
 
2244
  /**
2245
  * Filters the comment depth of the current activity comment.
2248
  *
2249
  * @param int $depth Depth for the current activity comment.
2250
  */
2251
+ return apply_filters( 'bp_activity_get_comment_depth', $activities_template->activity->current_comment->depth );
2252
  }
2253
 
2254
  /**
2300
  *
2301
  * @global object $activities_template {@link BP_Activity_Template}
2302
  *
2303
+ * @return string|bool The activity comment form no JavaScript
2304
+ * display CSS. False on failure.
2305
  */
2306
  function bp_get_activity_comment_form_nojs_display() {
2307
  global $activities_template;
2420
  *
2421
  * @since 1.8.0
2422
  *
2423
+ *
2424
  * @return string $link The activity comment permalink.
2425
  */
2426
  function bp_get_activity_comment_permalink() {
2427
  global $activities_template;
2428
 
2429
+ // Check that comment exists.
 
 
2430
  $comment_id = isset( $activities_template->activity->current_comment->id )
2431
  ? $activities_template->activity->current_comment->id
2432
  : 0;
2433
 
2434
+ // Setup the comment link.
2435
+ $comment_link = ! empty( $comment_id )
2436
+ ? '#acomment-' .$comment_id
2437
+ : false;
2438
+
2439
+ // Append comment ID to end of activity permalink.
2440
+ $link = bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ) . $comment_link;
2441
+
2442
  /**
2443
  * Filters the activity comment permalink.
2444
  *
2701
  * @param string $value The excerpt for the latest update.
2702
  * @param int $user_id ID of the queried user.
2703
  */
2704
+ $latest_update = apply_filters( 'bp_get_activity_latest_update_excerpt', trim( strip_tags( bp_create_excerpt( $update['content'], 358 ) ) ), $user_id );
2705
 
2706
  $latest_update = sprintf(
2707
  '%s <a href="%s">%s</a>',
2891
  // Fall back on current comment in activity loop.
2892
  $comment_depth = isset( $comment->depth )
2893
  ? intval( $comment->depth )
2894
+ : bp_activity_get_comment_depth();
2895
 
2896
  // Threading is turned on, so check the depth.
2897
  if ( get_option( 'thread_comments' ) ) {
3169
  * @type string $wrapper_id Default: 'post-mention'.
3170
  * @type string $link_href Default: the public message link for
3171
  * the current member in the loop.
3172
+ * @type string $link_title Default: 'Send a public message on your
3173
+ * activity stream.'.
3174
  * @type string $link_text Default: 'Public Message'.
3175
  * @type string $link_class Default: 'activity-button mention'.
3176
  * }
3185
  'block_self' => true,
3186
  'wrapper_id' => 'post-mention',
3187
  'link_href' => bp_get_send_public_message_link(),
3188
+ 'link_title' => __( 'Send a public message on your activity stream.', 'buddypress' ),
3189
  'link_text' => __( 'Public Message', 'buddypress' ),
3190
  'link_class' => 'activity-button mention'
3191
  ) );
3806
  * @return string HTML for <option> values.
3807
  */
3808
  function bp_get_activity_show_filters( $context = '' ) {
3809
+ // Set default context based on current page.
3810
+ if ( empty( $context ) ) {
3811
+
3812
+ // On member pages, default to 'member', unless this
3813
+ // is a user's Groups activity.
3814
+ if ( bp_is_user() ) {
3815
+ if ( bp_is_active( 'groups' ) && bp_is_current_action( bp_get_groups_slug() ) ) {
3816
+ $context = 'member_groups';
3817
+ } else {
3818
+ $context = 'member';
3819
+ }
3820
+
3821
+ // On individual group pages, default to 'group'.
3822
+ } elseif ( bp_is_active( 'groups' ) && bp_is_group() ) {
3823
+ $context = 'group';
3824
+
3825
+ // 'activity' everywhere else.
3826
+ } else {
3827
+ $context = 'activity';
3828
  }
3829
+ }
3830
+
3831
+ $filters = array();
3832
 
3833
+ // Walk through the registered actions, and prepare an the
3834
+ // select box options.
3835
+ foreach ( bp_activity_get_actions() as $actions ) {
3836
+ foreach ( $actions as $action ) {
3837
+ if ( ! in_array( $context, (array) $action['context'] ) ) {
3838
+ continue;
3839
+ }
3840
+
3841
+ // Friends activity collapses two filters into one.
3842
+ if ( in_array( $action['key'], array( 'friendship_accepted', 'friendship_created' ) ) ) {
3843
+ $action['key'] = 'friendship_accepted,friendship_created';
3844
+ }
3845
+
3846
+ $filters[ $action['key'] ] = $action['label'];
3847
+ }
3848
  }
3849
 
3850
  /**
bp-activity/classes/class-bp-activity-activity.php CHANGED
@@ -185,25 +185,22 @@ class BP_Activity_Activity {
185
  wp_cache_set( $this->id, $row, 'bp_activity' );
186
  }
187
 
188
- if ( empty( $row ) ) {
189
- $this->id = 0;
190
- return;
191
- }
192
-
193
- $this->id = (int) $row->id;
194
- $this->item_id = (int) $row->item_id;
195
- $this->secondary_item_id = (int) $row->secondary_item_id;
196
- $this->user_id = (int) $row->user_id;
197
- $this->primary_link = $row->primary_link;
198
- $this->component = $row->component;
199
- $this->type = $row->type;
200
- $this->action = $row->action;
201
- $this->content = $row->content;
202
- $this->date_recorded = $row->date_recorded;
203
- $this->hide_sitewide = (int) $row->hide_sitewide;
204
- $this->mptt_left = (int) $row->mptt_left;
205
- $this->mptt_right = (int) $row->mptt_right;
206
- $this->is_spam = (int) $row->is_spam;
207
 
208
  // Generate dynamic 'action' when possible.
209
  $action = bp_activity_generate_action_string( $this );
@@ -226,7 +223,7 @@ class BP_Activity_Activity {
226
  *
227
  * @since 1.0.0
228
  *
229
- * @return WP_Error|bool True on success.
230
  */
231
  public function save() {
232
  global $wpdb;
@@ -320,7 +317,6 @@ class BP_Activity_Activity {
320
  *
321
  * @since 1.2.0
322
  * @since 2.4.0 Introduced the `$fields` parameter.
323
- * @since 2.9.0 Introduced the `$order_by` parameter.
324
  *
325
  * @see BP_Activity_Activity::get_filter_sql() for a description of the
326
  * 'filter' parameter.
@@ -336,7 +332,6 @@ class BP_Activity_Activity {
336
  * @type string $fields Activity fields to return. Pass 'ids' to get only the activity IDs.
337
  * 'all' returns full activity objects.
338
  * @type string $sort ASC or DESC. Default: 'DESC'.
339
- * @type string $order_by Column to order results by.
340
  * @type array $exclude Array of activity IDs to exclude. Default: false.
341
  * @type array $in Array of ids to limit query by (IN). Default: false.
342
  * @type array $meta_query Array of meta_query conditions. See WP_Meta_Query::queries.
@@ -378,30 +373,30 @@ class BP_Activity_Activity {
378
  10 => 'spam'
379
  );
380
 
381
- $args = bp_core_parse_args_array( $old_args_keys, func_get_args() );
 
382
  }
383
 
384
  $bp = buddypress();
385
  $r = wp_parse_args( $args, array(
386
- 'page' => 1, // The current page.
387
- 'per_page' => 25, // Activity items per page.
388
- 'max' => false, // Max number of items to return.
389
- 'fields' => 'all', // Fields to include.
390
- 'sort' => 'DESC', // ASC or DESC.
391
- 'order_by' => 'date_recorded', // Column to order by.
392
- 'exclude' => false, // Array of ids to exclude.
393
- 'in' => false, // Array of ids to limit query by (IN).
394
- 'meta_query' => false, // Filter by activitymeta.
395
- 'date_query' => false, // Filter by date.
396
- 'filter_query' => false, // Advanced filtering - see BP_Activity_Query.
397
- 'filter' => false, // See self::get_filter_sql().
398
- 'scope' => false, // Preset activity arguments.
399
- 'search_terms' => false, // Terms to search by.
400
- 'display_comments' => false, // Whether to include activity comments.
401
- 'show_hidden' => false, // Show items marked hide_sitewide.
402
- 'spam' => 'ham_only', // Spam status.
403
- 'update_meta_cache' => true, // Whether or not to update meta cache.
404
- 'count_total' => false, // Whether or not to use count_total.
405
  ) );
406
 
407
  // Select conditions.
@@ -428,7 +423,7 @@ class BP_Activity_Activity {
428
 
429
  // Override some arguments if needed.
430
  if ( ! empty( $scope_query['override'] ) ) {
431
- $r = array_replace_recursive( $r, $scope_query['override'] );
432
  }
433
 
434
  // Advanced filtering.
@@ -464,29 +459,6 @@ class BP_Activity_Activity {
464
  $sort = 'DESC';
465
  }
466
 
467
- switch( $r['order_by'] ) {
468
- case 'id' :
469
- case 'user_id' :
470
- case 'component' :
471
- case 'type' :
472
- case 'action' :
473
- case 'content' :
474
- case 'primary_link' :
475
- case 'item_id' :
476
- case 'secondary_item_id' :
477
- case 'date_recorded' :
478
- case 'hide_sitewide' :
479
- case 'mptt_left' :
480
- case 'mptt_right' :
481
- case 'is_spam' :
482
- break;
483
-
484
- default :
485
- $r['order_by'] = 'date_recorded';
486
- break;
487
- }
488
- $order_by = 'a.' . $r['order_by'];
489
-
490
  // Hide Hidden Items?
491
  if ( ! $r['show_hidden'] ) {
492
  $where_conditions['hidden_sql'] = "a.hide_sitewide = 0";
@@ -570,6 +542,28 @@ class BP_Activity_Activity {
570
  */
571
  $join_sql = apply_filters( 'bp_activity_get_join_sql', $join_sql, $r, $select_sql, $from_sql, $where_sql );
572
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
573
  // Sanitize page and per_page parameters.
574
  $page = absint( $r['page'] );
575
  $per_page = absint( $r['per_page'] );
@@ -619,21 +613,9 @@ class BP_Activity_Activity {
619
  $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}, a.id {$sort}", $select_sql, $from_sql, $where_sql, $sort, $pag_sql ) );
620
  }
621
 
622
- // Integer casting for legacy activity query.
623
- foreach ( (array) $activities as $i => $ac ) {
624
- $activities[ $i ]->id = (int) $ac->id;
625
- $activities[ $i ]->item_id = (int) $ac->item_id;
626
- $activities[ $i ]->secondary_item_id = (int) $ac->secondary_item_id;
627
- $activities[ $i ]->user_id = (int) $ac->user_id;
628
- $activities[ $i ]->hide_sitewide = (int) $ac->hide_sitewide;
629
- $activities[ $i ]->mptt_left = (int) $ac->mptt_left;
630
- $activities[ $i ]->mptt_right = (int) $ac->mptt_right;
631
- $activities[ $i ]->is_spam = (int) $ac->is_spam;
632
- }
633
-
634
  } else {
635
  // Query first for activity IDs.
636
- $activity_ids_sql = "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY {$order_by} {$sort}, a.id {$sort}";
637
 
638
  if ( ! empty( $per_page ) && ! empty( $page ) ) {
639
  // We query for $per_page + 1 items in order to
@@ -651,23 +633,7 @@ class BP_Activity_Activity {
651
  */
652
  $activity_ids_sql = apply_filters( 'bp_activity_paged_activities_sql', $activity_ids_sql, $r );
653
 
654
- /*
655
- * Queries that include 'last_activity' are cached separately,
656
- * since they are generally much less long-lived.
657
- */
658
- if ( preg_match( '/a\.type NOT IN \([^\)]*\'last_activity\'[^\)]*\)/', $activity_ids_sql ) ) {
659
- $cache_group = 'bp_activity';
660
- } else {
661
- $cache_group = 'bp_activity_with_last_activity';
662
- }
663
-
664
- $cached = bp_core_get_incremented_cache( $activity_ids_sql, $cache_group );
665
- if ( false === $cached ) {
666
- $activity_ids = $wpdb->get_col( $activity_ids_sql );
667
- bp_core_set_incremented_cache( $activity_ids_sql, $cache_group, $activity_ids );
668
- } else {
669
- $activity_ids = $cached;
670
- }
671
 
672
  $retval['has_more_items'] = ! empty( $per_page ) && count( $activity_ids ) > $per_page;
673
 
@@ -724,13 +690,7 @@ class BP_Activity_Activity {
724
  * @param string $sort Sort direction for query.
725
  */
726
  $total_activities_sql = apply_filters( 'bp_activity_total_activities_sql', "SELECT count(DISTINCT a.id) FROM {$bp->activity->table_name} a {$join_sql} {$where_sql}", $where_sql, $sort );
727
- $cached = bp_core_get_incremented_cache( $total_activities_sql, $cache_group );
728
- if ( false === $cached ) {
729
- $total_activities = $wpdb->get_var( $total_activities_sql );
730
- bp_core_set_incremented_cache( $total_activities_sql, $cache_group, $total_activities );
731
- } else {
732
- $total_activities = $cached;
733
- }
734
 
735
  if ( !empty( $r['max'] ) ) {
736
  if ( (int) $total_activities > (int) $r['max'] ) {
@@ -987,7 +947,7 @@ class BP_Activity_Activity {
987
  * @param mixed $scope The activity scope. Accepts string or array of scopes.
988
  * @param array $r Current activity arguments. Same as those of BP_Activity_Activity::get(),
989
  * but merged with defaults.
990
- * @return false|array 'sql' WHERE SQL string and 'override' activity args.
991
  */
992
  public static function get_scope_query_sql( $scope = false, $r = array() ) {
993
 
@@ -1116,7 +1076,7 @@ class BP_Activity_Activity {
1116
  * @param string $action Action to filter by.
1117
  * @param string $content Content to filter by.
1118
  * @param string $date_recorded Date to filter by.
1119
- * @return int|false Activity ID on success, false if none is found.
1120
  */
1121
  public static function get_id( $user_id, $component, $type, $item_id, $secondary_item_id, $action, $content, $date_recorded ) {
1122
  global $wpdb;
@@ -1477,6 +1437,7 @@ class BP_Activity_Activity {
1477
  }
1478
 
1479
  // Legacy query - not recommended.
 
1480
 
1481
  /**
1482
  * Filters if BuddyPress should use the legacy activity query.
@@ -1487,7 +1448,7 @@ class BP_Activity_Activity {
1487
  * @param BP_Activity_Activity $value Magic method referring to currently called method.
1488
  * @param array $func_args Array of the method's argument list.
1489
  */
1490
- if ( apply_filters( 'bp_use_legacy_activity_query', false, __METHOD__, func_get_args() ) ) {
1491
 
1492
  /**
1493
  * Filters the MySQL prepared statement for the legacy activity query.
@@ -1697,7 +1658,7 @@ class BP_Activity_Activity {
1697
  *
1698
  * @param string $field The database field.
1699
  * @param array|bool $items The values for the IN clause, or false when none are found.
1700
- * @return string|false
1701
  */
1702
  public static function get_in_operator_sql( $field, $items ) {
1703
  global $wpdb;
@@ -1832,7 +1793,7 @@ class BP_Activity_Activity {
1832
  // Get activities from user meta.
1833
  $favorite_activity_entries = bp_get_user_meta( $user_id, 'bp_favorite_activities', true );
1834
  if ( ! empty( $favorite_activity_entries ) ) {
1835
- return count( $favorite_activity_entries );
1836
  }
1837
 
1838
  // No favorites.
@@ -1845,7 +1806,7 @@ class BP_Activity_Activity {
1845
  * @since 1.1.0
1846
  *
1847
  * @param string $content The content to filter by.
1848
- * @return int|false The ID of the first matching item if found, otherwise false.
1849
  */
1850
  public static function check_exists_by_content( $content ) {
1851
  global $wpdb;
@@ -1872,4 +1833,57 @@ class BP_Activity_Activity {
1872
 
1873
  return $wpdb->get_var( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET hide_sitewide = 1 WHERE user_id = %d", $user_id ) );
1874
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1875
  }
185
  wp_cache_set( $this->id, $row, 'bp_activity' );
186
  }
187
 
188
+ if ( ! empty( $row ) ) {
189
+ $this->id = (int) $row->id;
190
+ $this->item_id = (int) $row->item_id;
191
+ $this->secondary_item_id = (int) $row->secondary_item_id;
192
+ $this->user_id = (int) $row->user_id;
193
+ $this->primary_link = $row->primary_link;
194
+ $this->component = $row->component;
195
+ $this->type = $row->type;
196
+ $this->action = $row->action;
197
+ $this->content = $row->content;
198
+ $this->date_recorded = $row->date_recorded;
199
+ $this->hide_sitewide = (int) $row->hide_sitewide;
200
+ $this->mptt_left = (int) $row->mptt_left;
201
+ $this->mptt_right = (int) $row->mptt_right;
202
+ $this->is_spam = (int) $row->is_spam;
203
+ }
 
 
 
204
 
205
  // Generate dynamic 'action' when possible.
206
  $action = bp_activity_generate_action_string( $this );
223
  *
224
  * @since 1.0.0
225
  *
226
+ * @return bool True on success.
227
  */
228
  public function save() {
229
  global $wpdb;
317
  *
318
  * @since 1.2.0
319
  * @since 2.4.0 Introduced the `$fields` parameter.
 
320
  *
321
  * @see BP_Activity_Activity::get_filter_sql() for a description of the
322
  * 'filter' parameter.
332
  * @type string $fields Activity fields to return. Pass 'ids' to get only the activity IDs.
333
  * 'all' returns full activity objects.
334
  * @type string $sort ASC or DESC. Default: 'DESC'.
 
335
  * @type array $exclude Array of activity IDs to exclude. Default: false.
336
  * @type array $in Array of ids to limit query by (IN). Default: false.
337
  * @type array $meta_query Array of meta_query conditions. See WP_Meta_Query::queries.
373
  10 => 'spam'
374
  );
375
 
376
+ $func_args = func_get_args();
377
+ $args = bp_core_parse_args_array( $old_args_keys, $func_args );
378
  }
379
 
380
  $bp = buddypress();
381
  $r = wp_parse_args( $args, array(
382
+ 'page' => 1, // The current page.
383
+ 'per_page' => 25, // Activity items per page.
384
+ 'max' => false, // Max number of items to return.
385
+ 'fields' => 'all', // Fields to include.
386
+ 'sort' => 'DESC', // ASC or DESC.
387
+ 'exclude' => false, // Array of ids to exclude.
388
+ 'in' => false, // Array of ids to limit query by (IN).
389
+ 'meta_query' => false, // Filter by activitymeta.
390
+ 'date_query' => false, // Filter by date.
391
+ 'filter_query' => false, // Advanced filtering - see BP_Activity_Query.
392
+ 'filter' => false, // See self::get_filter_sql().
393
+ 'scope' => false, // Preset activity arguments.
394
+ 'search_terms' => false, // Terms to search by.
395
+ 'display_comments' => false, // Whether to include activity comments.
396
+ 'show_hidden' => false, // Show items marked hide_sitewide.
397
+ 'spam' => 'ham_only', // Spam status.
398
+ 'update_meta_cache' => true, // Whether or not to update meta cache.
399
+ 'count_total' => false, // Whether or not to use count_total.
 
400
  ) );
401
 
402
  // Select conditions.
423
 
424
  // Override some arguments if needed.
425
  if ( ! empty( $scope_query['override'] ) ) {
426
+ $r = self::array_replace_recursive( $r, $scope_query['override'] );
427
  }
428
 
429
  // Advanced filtering.
459
  $sort = 'DESC';
460
  }
461
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
462
  // Hide Hidden Items?
463
  if ( ! $r['show_hidden'] ) {
464
  $where_conditions['hidden_sql'] = "a.hide_sitewide = 0";
542
  */
543
  $join_sql = apply_filters( 'bp_activity_get_join_sql', $join_sql, $r, $select_sql, $from_sql, $where_sql );
544
 
545
+ /**
546
+ * Filters the preferred order of indexes for activity item.
547
+ *
548
+ * @since 1.6.0
549
+ *
550
+ * @param array $value Array of indexes in preferred order.
551
+ */
552
+ $indexes = apply_filters( 'bp_activity_preferred_index_order', array( 'user_id', 'item_id', 'secondary_item_id', 'date_recorded', 'component', 'type', 'hide_sitewide', 'is_spam' ) );
553
+
554
+ foreach( $indexes as $key => $index ) {
555
+ if ( false !== strpos( $where_sql, $index ) ) {
556
+ $the_index = $index;
557
+ break; // Take the first one we find.
558
+ }
559
+ }
560
+
561
+ if ( !empty( $the_index ) ) {
562
+ $index_hint_sql = "USE INDEX ({$the_index})";
563
+ } else {
564
+ $index_hint_sql = '';
565
+ }
566
+
567
  // Sanitize page and per_page parameters.
568
  $page = absint( $r['page'] );
569
  $per_page = absint( $r['per_page'] );
613
  $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}, a.id {$sort}", $select_sql, $from_sql, $where_sql, $sort, $pag_sql ) );
614
  }
615
 
 
 
 
 
 
 
 
 
 
 
 
 
616
  } else {
617
  // Query first for activity IDs.
618
+ $activity_ids_sql = "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}, a.id {$sort}";
619
 
620
  if ( ! empty( $per_page ) && ! empty( $page ) ) {
621
  // We query for $per_page + 1 items in order to
633
  */
634
  $activity_ids_sql = apply_filters( 'bp_activity_paged_activities_sql', $activity_ids_sql, $r );
635
 
636
+ $activity_ids = $wpdb->get_col( $activity_ids_sql );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
637
 
638
  $retval['has_more_items'] = ! empty( $per_page ) && count( $activity_ids ) > $per_page;
639
 
690
  * @param string $sort Sort direction for query.
691
  */
692
  $total_activities_sql = apply_filters( 'bp_activity_total_activities_sql', "SELECT count(DISTINCT a.id) FROM {$bp->activity->table_name} a {$join_sql} {$where_sql}", $where_sql, $sort );
693
+ $total_activities = $wpdb->get_var( $total_activities_sql );
 
 
 
 
 
 
694
 
695
  if ( !empty( $r['max'] ) ) {
696
  if ( (int) $total_activities > (int) $r['max'] ) {
947
  * @param mixed $scope The activity scope. Accepts string or array of scopes.
948
  * @param array $r Current activity arguments. Same as those of BP_Activity_Activity::get(),
949
  * but merged with defaults.
950
+ * @return array 'sql' WHERE SQL string and 'override' activity args.
951
  */
952
  public static function get_scope_query_sql( $scope = false, $r = array() ) {
953
 
1076
  * @param string $action Action to filter by.
1077
  * @param string $content Content to filter by.
1078
  * @param string $date_recorded Date to filter by.
1079
+ * @return int|bool Activity ID on success, false if none is found.
1080
  */
1081
  public static function get_id( $user_id, $component, $type, $item_id, $secondary_item_id, $action, $content, $date_recorded ) {
1082
  global $wpdb;
1437
  }
1438
 
1439
  // Legacy query - not recommended.
1440
+ $func_args = func_get_args();
1441
 
1442
  /**
1443
  * Filters if BuddyPress should use the legacy activity query.
1448
  * @param BP_Activity_Activity $value Magic method referring to currently called method.
1449
  * @param array $func_args Array of the method's argument list.
1450
  */
1451
+ if ( apply_filters( 'bp_use_legacy_activity_query', false, __METHOD__, $func_args ) ) {
1452
 
1453
  /**
1454
  * Filters the MySQL prepared statement for the legacy activity query.
1658
  *
1659
  * @param string $field The database field.
1660
  * @param array|bool $items The values for the IN clause, or false when none are found.
1661
+ * @return string|bool
1662
  */
1663
  public static function get_in_operator_sql( $field, $items ) {
1664
  global $wpdb;
1793
  // Get activities from user meta.
1794
  $favorite_activity_entries = bp_get_user_meta( $user_id, 'bp_favorite_activities', true );
1795
  if ( ! empty( $favorite_activity_entries ) ) {
1796
+ return count( maybe_unserialize( $favorite_activity_entries ) );
1797
  }
1798
 
1799
  // No favorites.
1806
  * @since 1.1.0
1807
  *
1808
  * @param string $content The content to filter by.
1809
+ * @return int|bool The ID of the first matching item if found, otherwise false.
1810
  */
1811
  public static function check_exists_by_content( $content ) {
1812
  global $wpdb;
1833
 
1834
  return $wpdb->get_var( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET hide_sitewide = 1 WHERE user_id = %d", $user_id ) );
1835
  }
1836
+
1837
+ /**
1838
+ * PHP-agnostic version of {@link array_replace_recursive()}.
1839
+ *
1840
+ * The array_replace_recursive() function is a PHP 5.3 function. BuddyPress (and
1841
+ * WordPress) currently supports down to PHP 5.2, so this method is a workaround
1842
+ * for PHP 5.2.
1843
+ *
1844
+ * Note: array_replace_recursive() supports infinite arguments, but for our use-
1845
+ * case, we only need to support two arguments.
1846
+ *
1847
+ * Subject to removal once WordPress makes PHP 5.3.0 the minimum requirement.
1848
+ *
1849
+ * @since 2.2.0
1850
+ *
1851
+ * @see http://php.net/manual/en/function.array-replace-recursive.php#109390
1852
+ *
1853
+ * @param array $base Array with keys needing to be replaced.
1854
+ * @param array $replacements Array with the replaced keys.
1855
+ * @return array
1856
+ */
1857
+ protected static function array_replace_recursive( $base = array(), $replacements = array() ) {
1858
+ if ( function_exists( 'array_replace_recursive' ) ) {
1859
+ return array_replace_recursive( $base, $replacements );
1860
+ }
1861
+
1862
+ // PHP 5.2-compatible version
1863
+ // http://php.net/manual/en/function.array-replace-recursive.php#109390.
1864
+ foreach ( array_slice( func_get_args(), 1 ) as $replacements ) {
1865
+ $bref_stack = array( &$base );
1866
+ $head_stack = array( $replacements );
1867
+
1868
+ do {
1869
+ end( $bref_stack );
1870
+
1871
+ $bref = &$bref_stack[ key( $bref_stack ) ];
1872
+ $head = array_pop( $head_stack );
1873
+
1874
+ unset( $bref_stack[ key($bref_stack) ] );
1875
+
1876
+ foreach ( array_keys( $head ) as $key ) {
1877
+ if ( isset( $key, $bref ) && is_array( $bref[$key] ) && is_array( $head[$key] ) ) {
1878
+ $bref_stack[] = &$bref[ $key ];
1879
+ $head_stack[] = $head[ $key ];
1880
+ } else {
1881
+ $bref[ $key ] = $head[ $key ];
1882
+ }
1883
+ }
1884
+ } while( count( $head_stack ) );
1885
+ }
1886
+
1887
+ return $base;
1888
+ }
1889
  }
bp-activity/classes/class-bp-activity-component.php CHANGED
@@ -57,18 +57,18 @@ class BP_Activity_Component extends BP_Component {
57
  'adminbar',
58
  'template',
59
  'functions',
 
60
  'cache'
61
  );
62
 
63
- // Notifications support.
64
- if ( bp_is_active( 'notifications' ) ) {
65
- $includes[] = 'notifications';
66
  }
67
 
68
  // Load Akismet support if Akismet is configured.
69
  $akismet_key = bp_get_option( 'wordpress_api_key' );
70
 
71
- /** This filter is documented in bp-activity/bp-activity-akismet.php */
72
  if ( defined( 'AKISMET_VERSION' ) && class_exists( 'Akismet' ) && ( ! empty( $akismet_key ) || defined( 'WPCOM_API_KEY' ) ) && apply_filters( 'bp_activity_use_akismet', bp_is_akismet_active() ) ) {
73
  $includes[] = 'akismet';
74
  }
@@ -116,17 +116,13 @@ class BP_Activity_Component extends BP_Component {
116
  'activity' => $bp->table_prefix . 'bp_activity_meta',
117
  );
118
 
119
- // Fetch the default directory title.
120
- $default_directory_titles = bp_core_get_directory_page_default_titles();
121
- $default_directory_title = $default_directory_titles[$this->id];
122
-
123
  // All globals for activity component.
124
  // Note that global_tables is included in this array.
125
  $args = array(
126
  'slug' => BP_ACTIVITY_SLUG,
127
  'root_slug' => isset( $bp->pages->activity->slug ) ? $bp->pages->activity->slug : BP_ACTIVITY_SLUG,
128
  'has_directory' => true,
129
- 'directory_title' => isset( $bp->pages->activity->title ) ? $bp->pages->activity->title : $default_directory_title,
130
  'notification_callback' => 'bp_activity_format_notifications',
131
  'search_string' => __( 'Search Activity...', 'buddypress' ),
132
  'global_tables' => $global_tables,
@@ -365,6 +361,19 @@ class BP_Activity_Component extends BP_Component {
365
  parent::setup_title();
366
  }
367
 
 
 
 
 
 
 
 
 
 
 
 
 
 
368
  /**
369
  * Setup cache groups.
370
  *
57
  'adminbar',
58
  'template',
59
  'functions',
60
+ 'notifications',
61
  'cache'
62
  );
63
 
64
+ if ( ! buddypress()->do_autoload ) {
65
+ $includes[] = 'classes';
 
66
  }
67
 
68
  // Load Akismet support if Akismet is configured.
69
  $akismet_key = bp_get_option( 'wordpress_api_key' );
70
 
71
+ /** This filter is documented in bp-activity/bp-activity-actions.php */
72
  if ( defined( 'AKISMET_VERSION' ) && class_exists( 'Akismet' ) && ( ! empty( $akismet_key ) || defined( 'WPCOM_API_KEY' ) ) && apply_filters( 'bp_activity_use_akismet', bp_is_akismet_active() ) ) {
73
  $includes[] = 'akismet';
74
  }
116
  'activity' => $bp->table_prefix . 'bp_activity_meta',
117
  );
118
 
 
 
 
 
119
  // All globals for activity component.
120
  // Note that global_tables is included in this array.
121
  $args = array(
122
  'slug' => BP_ACTIVITY_SLUG,
123
  'root_slug' => isset( $bp->pages->activity->slug ) ? $bp->pages->activity->slug : BP_ACTIVITY_SLUG,
124
  'has_directory' => true,
125
+ 'directory_title' => _x( 'Site-Wide Activity', 'component directory title', 'buddypress' ),
126
  'notification_callback' => 'bp_activity_format_notifications',
127
  'search_string' => __( 'Search Activity...', 'buddypress' ),
128
  'global_tables' => $global_tables,
361
  parent::setup_title();
362
  }
363
 
364
+ /**
365
+ * Set up actions necessary for the component.
366
+ *
367
+ * @since 1.6.0
368
+ */
369
+ public function setup_actions() {
370
+
371
+ // Spam prevention.
372
+ add_action( 'bp_include', 'bp_activity_setup_akismet' );
373
+
374
+ parent::setup_actions();
375
+ }
376
+
377
  /**
378
  * Setup cache groups.
379
  *
bp-activity/classes/class-bp-activity-list-table.php CHANGED
@@ -171,7 +171,7 @@ class BP_Activity_List_Table extends WP_List_Table {
171
  $activities['total'] = count( $activities['activities'] );
172
 
173
  // Sort the array by the activity object's date_recorded value.
174
- usort( $activities['activities'], function( $a, $b ) { return $a->date_recorded > $b->date_recorded; } );
175
  }
176
 
177
  // The bp_activity_get function returns an array of objects; cast these to arrays for WP_List_Table.
@@ -428,26 +428,8 @@ class BP_Activity_List_Table extends WP_List_Table {
428
  <option value="" <?php selected( ! $selected ); ?>><?php _e( 'View all actions', 'buddypress' ); ?></option>
429
 
430
  <?php foreach ( $activity_actions as $component => $actions ) : ?>
431
- <?php
432
- // Older avatar activity items use 'profile' for component. See r4273.
433
- if ( $component === 'profile' ) {
434
- $component = 'xprofile';
435
- }
436
-
437
- if ( bp_is_active( $component ) ) {
438
- if ( $component === 'xprofile' ) {
439
- $component_name = buddypress()->profile->name;
440
- } else {
441
- $component_name = buddypress()->$component->name;
442
- }
443
-
444
- } else {
445
- // Prevent warnings by other plugins if a component is disabled but the activity type has been registered.
446
- $component_name = ucfirst( $component );
447
- }
448
- ?>
449
-
450
- <optgroup label="<?php echo esc_html( $component_name ); ?>">
451
 
452
  <?php foreach ( $actions as $action_key => $action_values ) : ?>
453
 
@@ -515,7 +497,6 @@ class BP_Activity_List_Table extends WP_List_Table {
515
  * @param array $item A singular item (one full row).
516
  */
517
  function column_cb( $item ) {
518
- /* translators: accessibility text */
519
  printf( '<label class="screen-reader-text" for="aid-%1$d">' . __( 'Select activity item %1$d', 'buddypress' ) . '</label><input type="checkbox" name="aid[]" value="%1$d" id="aid-%1$d" />', $item['id'] );
520
  }
521
 
@@ -592,7 +573,7 @@ class BP_Activity_List_Table extends WP_List_Table {
592
  if ( $this->can_comment( $item ) ) {
593
  $actions['reply'] = sprintf( '<a href="#" class="reply hide-if-no-js">%s</a>', __( 'Reply', 'buddypress' ) );
594
  } else {
595
- $actions['reply'] = sprintf( '<span class="form-input-tip">%s</span>', __( 'Replies disabled', 'buddypress' ) );
596
  }
597
 
598
  // Edit.
@@ -641,10 +622,15 @@ class BP_Activity_List_Table extends WP_List_Table {
641
 
642
  // Get activity content - if not set, use the action.
643
  if ( ! empty( $item['content'] ) ) {
644
- $activity = new BP_Activity_Activity( $item['id'] );
645
 
646
- /** This filter is documented in bp-activity/bp-activity-template.php */
647
- $content = apply_filters_ref_array( 'bp_get_activity_content_body', array( $item['content'], &$activity ) );
 
 
 
 
 
 
648
  } else {
649
  /**
650
  * Filters current activity item action.
@@ -706,7 +692,8 @@ class BP_Activity_List_Table extends WP_List_Table {
706
 
707
  // If the activity has comments, display a link to the activity's permalink, with its comment count in a speech bubble.
708
  if ( $comment_count ) {
709
- printf( '<a href="%1$s" class="post-com-count post-com-count-approved"><span class="comment-count comment-count-approved">%2$s</span></a>', esc_url( $root_activity_url ), number_format_i18n( $comment_count ) );
 
710
  }
711
 
712
  // For non-root activities, display a link to the replied-to activity's author's profile.
@@ -806,7 +793,6 @@ class BP_Activity_List_Table extends WP_List_Table {
806
  $parent_activity = (object) $item;
807
  } elseif ( 'activity_comment' === $item['type'] ) {
808
  $parent_activity = new BP_Activity_Activity( $item['item_id'] );
809
- $can_comment = bp_activity_can_comment_reply( (object) $item );
810
  }
811
 
812
  if ( isset( $parent_activity->type ) && bp_activity_post_type_get_tracking_arg( $parent_activity->type, 'post_type' ) ) {
171
  $activities['total'] = count( $activities['activities'] );
172
 
173
  // Sort the array by the activity object's date_recorded value.
174
+ usort( $activities['activities'], create_function( '$a, $b', 'return $a->date_recorded > $b->date_recorded;' ) );
175
  }
176
 
177
  // The bp_activity_get function returns an array of objects; cast these to arrays for WP_List_Table.
428
  <option value="" <?php selected( ! $selected ); ?>><?php _e( 'View all actions', 'buddypress' ); ?></option>
429
 
430
  <?php foreach ( $activity_actions as $component => $actions ) : ?>
431
+
432
+ <optgroup label="<?php echo ucfirst( $component ); ?>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
433
 
434
  <?php foreach ( $actions as $action_key => $action_values ) : ?>
435
 
497
  * @param array $item A singular item (one full row).
498
  */
499
  function column_cb( $item ) {
 
500
  printf( '<label class="screen-reader-text" for="aid-%1$d">' . __( 'Select activity item %1$d', 'buddypress' ) . '</label><input type="checkbox" name="aid[]" value="%1$d" id="aid-%1$d" />', $item['id'] );
501
  }
502
 
573
  if ( $this->can_comment( $item ) ) {
574
  $actions['reply'] = sprintf( '<a href="#" class="reply hide-if-no-js">%s</a>', __( 'Reply', 'buddypress' ) );
575
  } else {
576
+ $actions['reply'] = sprintf( '<span class="form-input-tip" title="%s">%s</span>', __( 'Replies are disabled for this activity item', 'buddypress' ), __( 'Replies disabled', 'buddypress' ) );
577
  }
578
 
579
  // Edit.
622
 
623
  // Get activity content - if not set, use the action.
624
  if ( ! empty( $item['content'] ) ) {
 
625
 
626
+ /**
627
+ * Filters current activity item content.
628
+ *
629
+ * @since 1.2.0
630
+ *
631
+ * @param array $item Array index holding current activity item content.
632
+ */
633
+ $content = apply_filters_ref_array( 'bp_get_activity_content_body', array( $item['content'] ) );
634
  } else {
635
  /**
636
  * Filters current activity item action.
692
 
693
  // If the activity has comments, display a link to the activity's permalink, with its comment count in a speech bubble.
694
  if ( $comment_count ) {
695
+ $title_attr = sprintf( _n( '%s related activity', '%s related activities', $comment_count, 'buddypress' ), number_format_i18n( $comment_count ) );
696
+ printf( '<a href="%1$s" title="%2$s" class="post-com-count post-com-count-approved"><span class="comment-count comment-count-approved">%3$s</span></a>', esc_url( $root_activity_url ), esc_attr( $title_attr ), number_format_i18n( $comment_count ) );
697
  }
698
 
699
  // For non-root activities, display a link to the replied-to activity's author's profile.
793
  $parent_activity = (object) $item;
794
  } elseif ( 'activity_comment' === $item['type'] ) {
795
  $parent_activity = new BP_Activity_Activity( $item['item_id'] );
 
796
  }
797
 
798
  if ( isset( $parent_activity->type ) && bp_activity_post_type_get_tracking_arg( $parent_activity->type, 'post_type' ) ) {
bp-activity/classes/class-bp-activity-oembed-extension.php CHANGED
@@ -311,9 +311,7 @@ class BP_Activity_oEmbed_Extension extends BP_Core_oEmbed_Extension {
311
  <?php
312
  printf(
313
  _n(
314
- /* translators: accessibility text */
315
  '%s <span class="screen-reader-text">Comment</span>',
316
- /* translators: accessibility text */
317
  '%s <span class="screen-reader-text">Comments</span>',
318
  $count,
319
  'buddypress'
311
  <?php
312
  printf(
313
  _n(
 
314
  '%s <span class="screen-reader-text">Comment</span>',
 
315
  '%s <span class="screen-reader-text">Comments</span>',
316
  $count,
317
  'buddypress'
bp-activity/classes/class-bp-activity-template.php CHANGED
@@ -159,7 +159,8 @@ class BP_Activity_Template {
159
  12 => 'page_arg'
160
  );
161
 
162
- $args = bp_core_parse_args_array( $old_args_keys, func_get_args() );
 
163
  }
164
 
165
  $defaults = array(
@@ -195,7 +196,7 @@ class BP_Activity_Template {
195
  $this->disable_blogforum_replies = (bool) bp_core_get_root_option( 'bp-disable-blogforum-comments' );
196
 
197
  // Get an array of the logged in user's favorite activities.
198
- $this->my_favs = bp_get_user_meta( bp_loggedin_user_id(), 'bp_favorite_activities', true );
199
 
200
  // Fetch specific activity items based on ID's.
201
  if ( !empty( $include ) ) {
159
  12 => 'page_arg'
160
  );
161
 
162
+ $func_args = func_get_args();
163
+ $args = bp_core_parse_args_array( $old_args_keys, $func_args );
164
  }
165
 
166
  $defaults = array(
196
  $this->disable_blogforum_replies = (bool) bp_core_get_root_option( 'bp-disable-blogforum-comments' );
197
 
198
  // Get an array of the logged in user's favorite activities.
199
+ $this->my_favs = maybe_unserialize( bp_get_user_meta( bp_loggedin_user_id(), 'bp_favorite_activities', true ) );
200
 
201
  // Fetch specific activity items based on ID's.
202
  if ( !empty( $include ) ) {
bp-activity/css/mentions-rtl.css CHANGED
@@ -2,8 +2,8 @@
2
  background: rgba(204, 204, 204, 0.8);
3
  border-radius: 2px;
4
  border: 1px solid rgb(204, 204, 204);
5
- box-shadow: 0 0 5px rgba(204, 204, 204, 0.25), 0 0 1px #fff;
6
- color: #d84800;
7
  display: none;
8
  font-family: sans-serif;
9
  margin-top: 18px;
@@ -14,16 +14,14 @@
14
  .atwho-view {
15
  left: 0;
16
  }
17
-
18
  .atwho-view ul {
19
- background: #fff;
20
  list-style: none;
21
  margin: auto;
22
  padding: 0;
23
  }
24
-
25
  .atwho-view ul li {
26
- border-bottom: 1px solid #efefef;
27
  box-sizing: content-box;
28
  cursor: pointer;
29
  display: block;
@@ -34,71 +32,59 @@
34
  overflow: hidden;
35
  padding: 5px 10px;
36
  }
37
-
38
  .atwho-view img {
39
  border-radius: 2px;
40
  float: left;
41
  height: 20px;
42
- margin-top: 0;
43
  width: 20px;
44
  }
45
-
46
  .atwho-view strong {
47
- background: #efefef;
48
- font-weight: 700;
49
  }
50
-
51
  .atwho-view .username strong {
52
- color: #d54e21;
53
  }
54
-
55
  .atwho-view small {
56
- color: #aaa;
57
  float: left;
58
  font-size: smaller;
59
- font-weight: 400;
60
  margin: 0 40px 0 10px;
61
  }
62
-
63
  .atwho-view .cur {
64
  background: rgba(239, 239, 239, 0.5);
65
  }
66
 
67
  @media (max-width: 900px) {
68
-
69
  .atwho-view img {
70
  float: right;
71
  margin: 0 0 0 10px;
72
  }
73
  }
74
-
75
  @media (max-width: 400px) {
76
-
77
  .atwho-view ul li {
78
  font-size: 16px;
79
  line-height: 23px;
80
  padding: 13px;
81
  }
82
-
83
  .atwho-view ul li img {
84
  height: 30px;
85
  margin-top: -5px;
86
  width: 30px;
87
  }
88
-
89
  .atwho-view {
90
  border-radius: 0;
91
  height: 100%;
92
  right: 0 !important;
93
  width: 100%;
94
  }
95
-
96
  .atwho-view ul li .username {
97
  display: inline-block;
98
  margin: -10px 0 0 0;
99
  padding: 10px 0;
100
  }
101
-
102
  .atwho-view ul li small {
103
  display: inline-block;
104
  margin-right: 20px;
2
  background: rgba(204, 204, 204, 0.8);
3
  border-radius: 2px;
4
  border: 1px solid rgb(204, 204, 204);
5
+ box-shadow: 0 0 5px rgba(204, 204, 204, 0.25), 0 0 1px #FFF;
6
+ color: #D84800;
7
  display: none;
8
  font-family: sans-serif;
9
  margin-top: 18px;
14
  .atwho-view {
15
  left: 0;
16
  }
 
17
  .atwho-view ul {
18
+ background: #FFF;
19
  list-style: none;
20
  margin: auto;
21
  padding: 0;
22
  }
 
23
  .atwho-view ul li {
24
+ border-bottom: 1px solid #EFEFEF;
25
  box-sizing: content-box;
26
  cursor: pointer;
27
  display: block;
32
  overflow: hidden;
33
  padding: 5px 10px;
34
  }
 
35
  .atwho-view img {
36
  border-radius: 2px;
37
  float: left;
38
  height: 20px;
39
+ margin-top:0;
40
  width: 20px;
41
  }
 
42
  .atwho-view strong {
43
+ background: #EFEFEF;
44
+ font-weight: bold;
45
  }
 
46
  .atwho-view .username strong {
47
+ color: #D54E21;
48
  }
 
49
  .atwho-view small {
50
+ color: #AAA;
51
  float: left;
52
  font-size: smaller;
53
+ font-weight: normal;
54
  margin: 0 40px 0 10px;
55
  }
 
56
  .atwho-view .cur {
57
  background: rgba(239, 239, 239, 0.5);
58
  }
59
 
60
  @media (max-width: 900px) {
 
61
  .atwho-view img {
62
  float: right;
63
  margin: 0 0 0 10px;
64
  }
65
  }
 
66
  @media (max-width: 400px) {
 
67
  .atwho-view ul li {
68
  font-size: 16px;
69
  line-height: 23px;
70
  padding: 13px;
71
  }
 
72
  .atwho-view ul li img {
73
  height: 30px;
74
  margin-top: -5px;
75
  width: 30px;
76
  }
 
77
  .atwho-view {
78
  border-radius: 0;
79
  height: 100%;
80
  right: 0 !important;
81
  width: 100%;
82
  }
 
83
  .atwho-view ul li .username {
84
  display: inline-block;
85
  margin: -10px 0 0 0;
86
  padding: 10px 0;
87
  }
 
88
  .atwho-view ul li small {
89
  display: inline-block;
90
  margin-right: 20px;
bp-activity/css/mentions-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .atwho-view{background:rgba(204,204,204,.8);border-radius:2px;border:1px solid #ccc;box-shadow:0 0 5px rgba(204,204,204,.25),0 0 1px #fff;color:#d84800;display:none;font-family:sans-serif;margin-top:18px;position:absolute;top:0;z-index:1000}.atwho-view{left:0}.atwho-view ul{background:#fff;list-style:none;margin:auto;padding:0}.atwho-view ul li{border-bottom:1px solid #efefef;box-sizing:content-box;cursor:pointer;display:block;font-size:14px;height:20px;line-height:20px;margin:0;overflow:hidden;padding:5px 10px}.atwho-view img{border-radius:2px;float:left;height:20px;margin-top:0;width:20px}.atwho-view strong{background:#efefef;font-weight:700}.atwho-view .username strong{color:#d54e21}.atwho-view small{color:#aaa;float:left;font-size:smaller;font-weight:400;margin:0 40px 0 10px}.atwho-view .cur{background:rgba(239,239,239,.5)}@media (max-width:900px){.atwho-view img{float:right;margin:0 0 0 10px}}@media (max-width:400px){.atwho-view ul li{font-size:16px;line-height:23px;padding:13px}.atwho-view ul li img{height:30px;margin-top:-5px;width:30px}.atwho-view{border-radius:0;height:100%;right:0!important;width:100%}.atwho-view ul li .username{display:inline-block;margin:-10px 0 0 0;padding:10px 0}.atwho-view ul li small{display:inline-block;margin-right:20px}}
1
+ .atwho-view{background:rgba(204,204,204,.8);border-radius:2px;border:1px solid #ccc;box-shadow:0 0 5px rgba(204,204,204,.25),0 0 1px #FFF;color:#D84800;display:none;font-family:sans-serif;margin-top:18px;position:absolute;top:0;z-index:1000;left:0}.atwho-view ul{background:#FFF;list-style:none;margin:auto;padding:0}.atwho-view ul li{border-bottom:1px solid #EFEFEF;box-sizing:content-box;cursor:pointer;display:block;font-size:14px;height:20px;line-height:20px;margin:0;overflow:hidden;padding:5px 10px}.atwho-view img{border-radius:2px;float:left;height:20px;margin-top:0;width:20px}.atwho-view strong{background:#EFEFEF;font-weight:700}.atwho-view .username strong{color:#D54E21}.atwho-view small{color:#AAA;float:left;font-size:smaller;font-weight:400;margin:0 40px 0 10px}.atwho-view .cur{background:rgba(239,239,239,.5)}@media (max-width:900px){.atwho-view img{float:right;margin:0 0 0 10px}}@media (max-width:400px){.atwho-view ul li{font-size:16px;line-height:23px;padding:13px}.atwho-view ul li img{height:30px;margin-top:-5px;width:30px}.atwho-view{border-radius:0;height:100%;right:0!important;width:100%}.atwho-view ul li .username{display:inline-block;margin:-10px 0 0;padding:10px 0}.atwho-view ul li small{display:inline-block;margin-right:20px}}
bp-activity/css/mentions.css CHANGED
@@ -2,8 +2,8 @@
2
  background: rgba(204, 204, 204, 0.8);
3
  border-radius: 2px;
4
  border: 1px solid rgb(204, 204, 204);
5
- box-shadow: 0 0 5px rgba(204, 204, 204, 0.25), 0 0 1px #fff;
6
- color: #d84800;
7
  display: none;
8
  font-family: sans-serif;
9
  margin-top: 18px;
@@ -11,21 +11,18 @@
11
  top: 0;
12
  z-index: 1000; /* >999 for wp-admin */
13
  }
14
-
15
  /* rtl:ignore */
16
  .atwho-view {
17
  left: 0;
18
  }
19
-
20
  .atwho-view ul {
21
- background: #fff;
22
  list-style: none;
23
  margin: auto;
24
  padding: 0;
25
  }
26
-
27
  .atwho-view ul li {
28
- border-bottom: 1px solid #efefef;
29
  box-sizing: content-box;
30
  cursor: pointer;
31
  display: block;
@@ -36,71 +33,59 @@
36
  overflow: hidden;
37
  padding: 5px 10px;
38
  }
39
-
40
  .atwho-view img {
41
  border-radius: 2px;
42
  float: right;
43
  height: 20px;
44
- margin-top: 0;
45
  width: 20px;
46
  }
47
-
48
  .atwho-view strong {
49
- background: #efefef;
50
- font-weight: 700;
51
  }
52
-
53
  .atwho-view .username strong {
54
- color: #d54e21;
55
  }
56
-
57
  .atwho-view small {
58
- color: #aaa;
59
  float: right;
60
  font-size: smaller;
61
- font-weight: 400;
62
  margin: 0 10px 0 40px;
63
  }
64
-
65
  .atwho-view .cur {
66
  background: rgba(239, 239, 239, 0.5);
67
  }
68
 
69
  @media (max-width: 900px) {
70
-
71
  .atwho-view img {
72
  float: left;
73
  margin: 0 10px 0 0;
74
  }
75
  }
76
-
77
  @media (max-width: 400px) {
78
-
79
  .atwho-view ul li {
80
  font-size: 16px;
81
  line-height: 23px;
82
  padding: 13px;
83
  }
84
-
85
  .atwho-view ul li img {
86
  height: 30px;
87
  margin-top: -5px;
88
  width: 30px;
89
  }
90
-
91
  .atwho-view {
92
  border-radius: 0;
93
  height: 100%;
94
  left: 0 !important;
95
  width: 100%;
96
  }
97
-
98
  .atwho-view ul li .username {
99
  display: inline-block;
100
  margin: -10px 0 0 0;
101
  padding: 10px 0;
102
  }
103
-
104
  .atwho-view ul li small {
105
  display: inline-block;
106
  margin-left: 20px;
2
  background: rgba(204, 204, 204, 0.8);
3
  border-radius: 2px;
4
  border: 1px solid rgb(204, 204, 204);
5
+ box-shadow: 0 0 5px rgba(204, 204, 204, 0.25), 0 0 1px #FFF;
6
+ color: #D84800;
7
  display: none;
8
  font-family: sans-serif;
9
  margin-top: 18px;
11
  top: 0;
12
  z-index: 1000; /* >999 for wp-admin */
13
  }
 
14
  /* rtl:ignore */
15
  .atwho-view {
16
  left: 0;
17
  }
 
18
  .atwho-view ul {
19
+ background: #FFF;
20
  list-style: none;
21
  margin: auto;
22
  padding: 0;
23
  }
 
24
  .atwho-view ul li {
25
+ border-bottom: 1px solid #EFEFEF;
26
  box-sizing: content-box;
27
  cursor: pointer;
28
  display: block;
33
  overflow: hidden;
34
  padding: 5px 10px;
35
  }
 
36
  .atwho-view img {
37
  border-radius: 2px;
38
  float: right;
39
  height: 20px;
40
+ margin-top:0;
41
  width: 20px;
42
  }
 
43
  .atwho-view strong {
44
+ background: #EFEFEF;
45
+ font-weight: bold;
46
  }
 
47
  .atwho-view .username strong {
48
+ color: #D54E21;
49
  }
 
50
  .atwho-view small {
51
+ color: #AAA;
52
  float: right;
53
  font-size: smaller;
54
+ font-weight: normal;
55
  margin: 0 10px 0 40px;
56
  }
 
57
  .atwho-view .cur {
58
  background: rgba(239, 239, 239, 0.5);
59
  }
60
 
61
  @media (max-width: 900px) {
 
62
  .atwho-view img {
63
  float: left;
64
  margin: 0 10px 0 0;
65
  }
66
  }
 
67
  @media (max-width: 400px) {
 
68
  .atwho-view ul li {
69
  font-size: 16px;
70
  line-height: 23px;
71
  padding: 13px;
72
  }
 
73
  .atwho-view ul li img {
74
  height: 30px;
75
  margin-top: -5px;
76
  width: 30px;
77
  }
 
78
  .atwho-view {
79
  border-radius: 0;
80
  height: 100%;
81
  left: 0 !important;
82
  width: 100%;
83
  }
 
84
  .atwho-view ul li .username {
85
  display: inline-block;
86
  margin: -10px 0 0 0;
87
  padding: 10px 0;
88
  }
 
89
  .atwho-view ul li small {
90
  display: inline-block;
91
  margin-left: 20px;
bp-activity/css/mentions.min.css CHANGED
@@ -1 +1 @@
1
- .atwho-view{background:rgba(204,204,204,.8);border-radius:2px;border:1px solid #ccc;box-shadow:0 0 5px rgba(204,204,204,.25),0 0 1px #fff;color:#d84800;display:none;font-family:sans-serif;margin-top:18px;position:absolute;top:0;z-index:1000}.atwho-view{left:0}.atwho-view ul{background:#fff;list-style:none;margin:auto;padding:0}.atwho-view ul li{border-bottom:1px solid #efefef;box-sizing:content-box;cursor:pointer;display:block;font-size:14px;height:20px;line-height:20px;margin:0;overflow:hidden;padding:5px 10px}.atwho-view img{border-radius:2px;float:right;height:20px;margin-top:0;width:20px}.atwho-view strong{background:#efefef;font-weight:700}.atwho-view .username strong{color:#d54e21}.atwho-view small{color:#aaa;float:right;font-size:smaller;font-weight:400;margin:0 10px 0 40px}.atwho-view .cur{background:rgba(239,239,239,.5)}@media (max-width:900px){.atwho-view img{float:left;margin:0 10px 0 0}}@media (max-width:400px){.atwho-view ul li{font-size:16px;line-height:23px;padding:13px}.atwho-view ul li img{height:30px;margin-top:-5px;width:30px}.atwho-view{border-radius:0;height:100%;left:0!important;width:100%}.atwho-view ul li .username{display:inline-block;margin:-10px 0 0 0;padding:10px 0}.atwho-view ul li small{display:inline-block;margin-left:20px}}
1
+ .atwho-view{background:rgba(204,204,204,.8);border-radius:2px;border:1px solid #ccc;box-shadow:0 0 5px rgba(204,204,204,.25),0 0 1px #FFF;color:#D84800;display:none;font-family:sans-serif;margin-top:18px;position:absolute;top:0;z-index:1000;left:0}.atwho-view ul{background:#FFF;list-style:none;margin:auto;padding:0}.atwho-view ul li{border-bottom:1px solid #EFEFEF;box-sizing:content-box;cursor:pointer;display:block;font-size:14px;height:20px;line-height:20px;margin:0;overflow:hidden;padding:5px 10px}.atwho-view img{border-radius:2px;float:right;height:20px;margin-top:0;width:20px}.atwho-view strong{background:#EFEFEF;font-weight:700}.atwho-view .username strong{color:#D54E21}.atwho-view small{color:#AAA;float:right;font-size:smaller;font-weight:400;margin:0 10px 0 40px}.atwho-view .cur{background:rgba(239,239,239,.5)}@media (max-width:900px){.atwho-view img{float:left;margin:0 10px 0 0}}@media (max-width:400px){.atwho-view ul li{font-size:16px;line-height:23px;padding:13px}.atwho-view ul li img{height:30px;margin-top:-5px;width:30px}.atwho-view{border-radius:0;height:100%;left:0!important;width:100%}.atwho-view ul li .username{display:inline-block;margin:-10px 0 0;padding:10px 0}.atwho-view ul li small{display:inline-block;margin-left:20px}}
bp-activity/js/mentions.min.js CHANGED
@@ -1 +1 @@
1
- window.bp=window.bp||{},function(t,e,i){var n,s=[];t.mentions=t.mentions||{},t.mentions.users=window.bp.mentions.users||[],"object"==typeof window.BP_Suggestions&&(t.mentions.users=window.BP_Suggestions.friends||t.mentions.users),e.fn.bp_mentions=function(t){e.isArray(t)&&(t={data:t});var i={delay:200,hide_without_suffix:!0,insert_tpl:"</>${atwho-data-value}</>",limit:10,start_with_space:!1,suffix:"",callbacks:{filter:function(t,e,i){var n,s,r,o=[],a=new RegExp("^"+t+"| "+t,"ig");for(s=0,r=e.length;s<r;s++)(n=e[s])[i].toLowerCase().match(a)&&o.push(n);return o},highlighter:function(t,e){if(!e)return t;var i=new RegExp(">(\\s*|[\\w\\s]*)("+this.at.replace("+","\\+")+"?"+e.replace("+","\\+")+")([\\w ]*)\\s*<","ig");return t.replace(i,function(t,e,i,n){return">"+e+"<strong>"+i+"</strong>"+n+"<"})},before_reposition:function(t){var i,n,s,r,o=e("#atwho-ground-"+this.id+" .atwho-view"),a=e("body"),u=this.$inputor.data("atwho");"undefined"!==u&&"undefined"!==u.iframe&&null!==u.iframe?(i=this.$inputor.caret("offset",{iframe:u.iframe}),"undefined"!==(s=e(u.iframe).offset())&&(i.left+=s.left,i.top+=s.top)):i=this.$inputor.caret("offset"),i.left>a.width()/2?(o.addClass("right"),r=i.left-t.left-this.view.$el.width()):(o.removeClass("right"),r=i.left-t.left+1),a.width()<=400&&e(document).scrollTop(i.top-6),(!(n=parseInt(this.$inputor.css("line-height").substr(0,this.$inputor.css("line-height").length-2),10))||n<5)&&(n=19),t.top=i.top+n,t.left+=r},inserting_wrapper:function(t,e,i){return""+e+i}}},r={callbacks:{remote_filter:function(t,i){var r=e(this),o={};"object"!=typeof(n=s[t])?(r.xhr&&r.xhr.abort(),o={action:"bp_get_suggestions",term:t,type:"members"},e.isNumeric(this.$inputor.data("suggestions-group-id"))&&(o["group-id"]=parseInt(this.$inputor.data("suggestions-group-id"),10)),r.xhr=e.getJSON(ajaxurl,o).done(function(n){if(n.success){var r=e.map(n.data,function(t){return t.search=t.search||t.ID+" "+t.name,t});s[t]=r,i(r)}})):i(n)}},data:e.map(t.data,function(t){return t.search=t.search||t.ID+" "+t.name,t}),at:"@",search_key:"search",tpl:'<li data-value="@${ID}"><img src="${image}" /><span class="username">@${ID}</span><small>${name}</small></li>'},o=e.extend(!0,{},i,r,t);return e.fn.atwho.call(this,o)},e(document).ready(function(){e(".bp-suggestions, #comments form textarea, .wp-editor-area").bp_mentions(t.mentions.users)}),t.mentions.tinyMCEinit=function(){void 0!==window.tinyMCE&&null!==window.tinyMCE.activeEditor&&void 0!==window.tinyMCE.activeEditor&&e(window.tinyMCE.activeEditor.contentDocument.activeElement).atwho("setIframe",e(".wp-editor-wrap iframe")[0]).bp_mentions(t.mentions.users)}}(bp,jQuery);
1
+ window.bp=window.bp||{},function(a,b,c){var d,e=[];a.mentions=a.mentions||{},a.mentions.users=window.bp.mentions.users||[],"object"==typeof window.BP_Suggestions&&(a.mentions.users=window.BP_Suggestions.friends||a.mentions.users),b.fn.bp_mentions=function(a){b.isArray(a)&&(a={data:a});var c={delay:200,hide_without_suffix:!0,insert_tpl:"</>${atwho-data-value}</>",limit:10,start_with_space:!1,suffix:"",callbacks:{filter:function(a,b,c){var d,e,f,g=[],h=new RegExp("^"+a+"| "+a,"ig");for(e=0,f=b.length;f>e;e++)d=b[e],d[c].toLowerCase().match(h)&&g.push(d);return g},highlighter:function(a,b){if(!b)return a;var c=new RegExp(">(\\s*|[\\w\\s]*)("+this.at.replace("+","\\+")+"?"+b.replace("+","\\+")+")([\\w ]*)\\s*<","ig");return a.replace(c,function(a,b,c,d){return">"+b+"<strong>"+c+"</strong>"+d+"<"})},before_reposition:function(a){var c,d,e,f,g=b("#atwho-ground-"+this.id+" .atwho-view"),h=b("body"),i=this.$inputor.data("atwho");"undefined"!==i&&"undefined"!==i.iframe&&null!==i.iframe?(c=this.$inputor.caret("offset",{iframe:i.iframe}),e=b(i.iframe).offset(),"undefined"!==e&&(c.left+=e.left,c.top+=e.top)):c=this.$inputor.caret("offset"),c.left>h.width()/2?(g.addClass("right"),f=c.left-a.left-this.view.$el.width()):(g.removeClass("right"),f=c.left-a.left+1),h.width()<=400&&b(document).scrollTop(c.top-6),d=parseInt(this.$inputor.css("line-height").substr(0,this.$inputor.css("line-height").length-2),10),(!d||5>d)&&(d=19),a.top=c.top+d,a.left+=f},inserting_wrapper:function(a,b,c){return""+b+c}}},f={callbacks:{remote_filter:function(a,c){var f=b(this),g={};return d=e[a],"object"==typeof d?void c(d):(f.xhr&&f.xhr.abort(),g={action:"bp_get_suggestions",term:a,type:"members"},b.isNumeric(this.$inputor.data("suggestions-group-id"))&&(g["group-id"]=parseInt(this.$inputor.data("suggestions-group-id"),10)),void(f.xhr=b.getJSON(ajaxurl,g).done(function(d){if(d.success){var f=b.map(d.data,function(a){return a.search=a.search||a.ID+" "+a.name,a});e[a]=f,c(f)}})))}},data:b.map(a.data,function(a){return a.search=a.search||a.ID+" "+a.name,a}),at:"@",search_key:"search",tpl:'<li data-value="@${ID}"><img src="${image}" /><span class="username">@${ID}</span><small>${name}</small></li>'},g=b.extend(!0,{},c,f,a);return b.fn.atwho.call(this,g)},b(document).ready(function(){b(".bp-suggestions, #comments form textarea, .wp-editor-area").bp_mentions(a.mentions.users)}),a.mentions.tinyMCEinit=function(){"undefined"!=typeof window.tinyMCE&&null!==window.tinyMCE.activeEditor&&"undefined"!=typeof window.tinyMCE.activeEditor&&b(window.tinyMCE.activeEditor.contentDocument.activeElement).atwho("setIframe",b(".wp-editor-wrap iframe")[0]).bp_mentions(a.mentions.users)}}(bp,jQuery);
bp-blogs/bp-blogs-activity.php CHANGED
@@ -48,7 +48,7 @@ add_action( 'bp_register_activity_actions', 'bp_blogs_register_activity_actions'
48
  *
49
  * @param object|null $params Tracking arguments.
50
  * @param string|int $post_type Post type to track.
51
- * @return object|null
52
  */
53
  function bp_blogs_register_post_tracking_args( $params = null, $post_type = 0 ) {
54
 
@@ -435,7 +435,7 @@ add_filter( 'bp_activity_prefetch_object_data', 'bp_blogs_prefetch_activity_obje
435
  * bp_activity_add().
436
  * @type string $component Default: 'blogs'.
437
  * }
438
- * @return WP_Error|bool|int On success, returns the activity ID. False on failure.
439
  */
440
  function bp_blogs_record_activity( $args = '' ) {
441
  $defaults = array(
@@ -547,7 +547,7 @@ function bp_blogs_comments_open( $activity ) {
547
  switch_to_blog( $blog_id );
548
 
549
  // Use comments_open().
550
- remove_filter( 'comments_open', 'bp_comments_open', 10 );
551
  $open = comments_open( $activity->secondary_item_id );
552
  add_filter( 'comments_open', 'bp_comments_open', 10, 2 );
553
 
@@ -624,15 +624,6 @@ function bp_blogs_record_activity_on_site_creation( $recorded_blog, $is_private,
624
  if ( ! $is_private && ! $no_activity && bp_blogs_is_blog_trackable( $recorded_blog->blog_id, $recorded_blog->user_id ) ) {
625
  bp_blogs_record_activity( array(
626
  'user_id' => $recorded_blog->user_id,
627
-
628
- /**
629
- * Filters the activity created blog primary link.
630
- *
631
- * @since 1.1.0
632
- *
633
- * @param string $value Blog primary link.
634
- * @param int $value Blog ID.
635
- */
636
  'primary_link' => apply_filters( 'bp_blogs_activity_created_blog_primary_link', bp_blogs_get_blogmeta( $recorded_blog->blog_id, 'url' ), $recorded_blog->blog_id ),
637
  'type' => 'new_blog',
638
  'item_id' => $recorded_blog->blog_id
@@ -648,25 +639,15 @@ add_action( 'bp_blogs_new_blog', 'bp_blogs_record_activity_on_site_creation', 10
648
  *
649
  * @param int $blog_id Site ID.
650
  */
651
- function bp_blogs_delete_new_blog_activity_for_site( $blog_id, $user_id = 0 ) {
652
- $args = array(
653
  'item_id' => $blog_id,
654
  'component' => buddypress()->blogs->id,
655
  'type' => 'new_blog'
656
- );
657
-
658
- /**
659
- * In the case a user is removed, make sure he is the author of the 'new_blog' activity
660
- * when trying to delete it.
661
- */
662
- if ( ! empty( $user_id ) ) {
663
- $args['user_id'] = $user_id;
664
- }
665
-
666
- bp_blogs_delete_activity( $args );
667
  }
668
- add_action( 'bp_blogs_remove_blog', 'bp_blogs_delete_new_blog_activity_for_site', 10, 1 );
669
- add_action( 'bp_blogs_remove_blog_for_user', 'bp_blogs_delete_new_blog_activity_for_site', 10, 2 );
670
 
671
  /**
672
  * Delete all 'blogs' activity items for a site when the site is deleted.
@@ -806,7 +787,7 @@ function bp_blogs_sync_add_from_activity_comment( $comment_id, $params, $parent_
806
  );
807
 
808
  // Prevent separate activity entry being made.
809
- remove_action( 'comment_post', 'bp_activity_post_type_comment', 10 );
810
 
811
  // Handle multisite.
812
  switch_to_blog( $parent_activity->item_id );
@@ -832,7 +813,7 @@ function bp_blogs_sync_add_from_activity_comment( $comment_id, $params, $parent_
832
  // permalinks to use the post comment link
833
  //
834
  // @todo since this is done after AJAX posting, the activity comment permalink
835
- // doesn't change on the front end until the next page refresh.
836
  $resave_activity = new BP_Activity_Activity( $comment_id );
837
  $resave_activity->primary_link = get_comment_link( $post_comment_id );
838
 
@@ -970,8 +951,8 @@ function bp_blogs_sync_activity_edit_to_post_comment( BP_Activity_Activity $acti
970
  $old_comment_status = $post_comment_status;
971
 
972
  // No need to edit the activity, as it's the activity who's updating the comment
973
- remove_action( 'transition_comment_status', 'bp_activity_transition_post_type_comment_status', 10 );
974
- remove_action( 'bp_activity_post_type_comment', 'bp_blogs_comment_sync_activity_comment', 10 );
975
 
976
  if ( 1 === $activity->is_spam && 'spam' !== $post_comment_status ) {
977
  wp_spam_comment( $post_comment_id );
@@ -1300,7 +1281,7 @@ function bp_blogs_can_comment_reply( $retval, $comment ) {
1300
 
1301
  // Check comment depth and disable if depth is too large.
1302
  if ( isset( buddypress()->blogs->thread_depth[$comment->item_id] ) ){
1303
- if ( bp_activity_get_comment_depth( $comment ) >= buddypress()->blogs->thread_depth[$comment->item_id] ) {
1304
  $retval = false;
1305
  }
1306
  }
48
  *
49
  * @param object|null $params Tracking arguments.
50
  * @param string|int $post_type Post type to track.
51
+ * @return object
52
  */
53
  function bp_blogs_register_post_tracking_args( $params = null, $post_type = 0 ) {
54
 
435
  * bp_activity_add().
436
  * @type string $component Default: 'blogs'.
437
  * }
438
+ * @return int|bool On success, returns the activity ID. False on failure.
439
  */
440
  function bp_blogs_record_activity( $args = '' ) {
441
  $defaults = array(
547
  switch_to_blog( $blog_id );
548
 
549
  // Use comments_open().
550
+ remove_filter( 'comments_open', 'bp_comments_open', 10, 2 );
551
  $open = comments_open( $activity->secondary_item_id );
552
  add_filter( 'comments_open', 'bp_comments_open', 10, 2 );
553
 
624
  if ( ! $is_private && ! $no_activity && bp_blogs_is_blog_trackable( $recorded_blog->blog_id, $recorded_blog->user_id ) ) {
625
  bp_blogs_record_activity( array(
626
  'user_id' => $recorded_blog->user_id,
 
 
 
 
 
 
 
 
 
627
  'primary_link' => apply_filters( 'bp_blogs_activity_created_blog_primary_link', bp_blogs_get_blogmeta( $recorded_blog->blog_id, 'url' ), $recorded_blog->blog_id ),
628
  'type' => 'new_blog',
629
  'item_id' => $recorded_blog->blog_id
639
  *
640
  * @param int $blog_id Site ID.
641
  */
642
+ function bp_blogs_delete_new_blog_activity_for_site( $blog_id ) {
643
+ bp_blogs_delete_activity( array(
644
  'item_id' => $blog_id,
645
  'component' => buddypress()->blogs->id,
646
  'type' => 'new_blog'
647
+ ) );
 
 
 
 
 
 
 
 
 
 
648
  }
649
+ add_action( 'bp_blogs_remove_blog', 'bp_blogs_delete_new_blog_activity_for_site' );
650
+ add_action( 'bp_blogs_remove_blog_for_user', 'bp_blogs_delete_new_blog_activity_for_site' );
651
 
652
  /**
653
  * Delete all 'blogs' activity items for a site when the site is deleted.
787
  );
788
 
789
  // Prevent separate activity entry being made.
790
+ remove_action( 'comment_post', 'bp_activity_post_type_comment', 10, 2 );
791
 
792
  // Handle multisite.
793
  switch_to_blog( $parent_activity->item_id );
813
  // permalinks to use the post comment link
814
  //
815
  // @todo since this is done after AJAX posting, the activity comment permalink
816
+ // doesn't change on the frontend until the next page refresh.
817
  $resave_activity = new BP_Activity_Activity( $comment_id );
818
  $resave_activity->primary_link = get_comment_link( $post_comment_id );
819
 
951
  $old_comment_status = $post_comment_status;
952
 
953
  // No need to edit the activity, as it's the activity who's updating the comment
954
+ remove_action( 'transition_comment_status', 'bp_activity_transition_post_type_comment_status', 10, 3 );
955
+ remove_action( 'bp_activity_post_type_comment', 'bp_blogs_comment_sync_activity_comment', 10, 4 );
956
 
957
  if ( 1 === $activity->is_spam && 'spam' !== $post_comment_status ) {
958
  wp_spam_comment( $post_comment_id );
1281
 
1282
  // Check comment depth and disable if depth is too large.
1283
  if ( isset( buddypress()->blogs->thread_depth[$comment->item_id] ) ){
1284
+ if ( $comment->mptt_left > buddypress()->blogs->thread_depth[$comment->item_id] ) {
1285
  $retval = false;
1286
  }
1287
  }
bp-blogs/bp-blogs-classes.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * BuddyPress Blogs Classes.
4
+ *
5
+ * @package BuddyPress
6
+ * @subpackage BlogsClasses
7
+ * @since 1.0.0
8
+ */
9
+
10
+ // Exit if accessed directly.
11
+ defined( 'ABSPATH' ) || exit;
12
+
13
+ require dirname( __FILE__ ) . '/classes/class-bp-blogs-blog.php';
bp-blogs/bp-blogs-filters.php CHANGED
@@ -121,17 +121,3 @@ function bp_blogs_post_pre_publish( $return = true, $blog_id = 0, $post_id = 0,
121
  }
122
  add_filter( 'bp_activity_post_pre_publish', 'bp_blogs_post_pre_publish', 10, 4 );
123
  add_filter( 'bp_activity_post_pre_comment', 'bp_blogs_post_pre_publish', 10, 4 );
124
-
125
- /**
126
- * Registers our custom thumb size with WP's Site Icon feature.
127
- *
128
- * @since 2.7.0
129
- *
130
- * @param array $sizes Current array of custom site icon sizes.
131
- * @return array
132
- */
133
- function bp_blogs_register_custom_site_icon_size( $sizes ) {
134
- $sizes[] = bp_core_avatar_thumb_width();
135
- return $sizes;
136
- }
137
- add_filter( 'site_icon_image_sizes', 'bp_blogs_register_custom_site_icon_size' );
121
  }
122
  add_filter( 'bp_activity_post_pre_publish', 'bp_blogs_post_pre_publish', 10, 4 );
123
  add_filter( 'bp_activity_post_pre_comment', 'bp_blogs_post_pre_publish', 10, 4 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-blogs/bp-blogs-functions.php CHANGED
@@ -65,14 +65,7 @@ function bp_blogs_get_blogs( $args = '' ) {
65
  $r['include_blog_ids']
66
  );
67
 
68
- /**
69
- * Filters a set of blogs.
70
- *
71
- * @since 1.2.0
72
- *
73
- * @param array $blogs Array of blog data.
74
- * @param array $r Parsed query arguments.
75
- */
76
  return apply_filters( 'bp_blogs_get_blogs', $blogs, $r );
77
  }
78
 
@@ -253,26 +246,9 @@ function bp_blogs_record_existing_blogs( $args = array() ) {
253
  */
254
  function bp_blogs_is_blog_recordable( $blog_id, $user_id = 0 ) {
255
 
256
- /**
257
- * Filters whether or not a blog is globally activity stream recordable.
258
- *
259
- * @since 1.7.0
260
- *
261
- * @param bool $value Whether or not recordable. Default true.
262
- * @param int $blog_id Current blog ID.
263
- */
264
  $recordable_globally = apply_filters( 'bp_blogs_is_blog_recordable', true, $blog_id );
265
 
266
  if ( !empty( $user_id ) ) {
267
- /**
268
- * Filters whether or not a blog is globally activity stream recordable for user.
269
- *
270
- * @since 1.7.0
271
- *
272
- * @param bool $recordable_globally Whether or not recordable.
273
- * @param int $blog_id Current blog ID.
274
- * @param int $user_id Current user ID.
275
- */
276
  $recordable_for_user = apply_filters( 'bp_blogs_is_blog_recordable_for_user', $recordable_globally, $blog_id, $user_id );
277
  } else {
278
  $recordable_for_user = $recordable_globally;
@@ -299,27 +275,9 @@ function bp_blogs_is_blog_recordable( $blog_id, $user_id = 0 ) {
299
  */
300
  function bp_blogs_is_blog_trackable( $blog_id, $user_id = 0 ) {
301
 
302
- /**
303
- * Filters whether or not a blog is globally trackable.
304
- *
305
- * @since 1.7.0
306
- *
307
- * @param bool $value Whether or not trackable.
308
- * @param int $blog_id Current blog ID.
309
- */
310
  $trackable_globally = apply_filters( 'bp_blogs_is_blog_trackable', bp_blogs_is_blog_recordable( $blog_id, $user_id ), $blog_id );
311
 
312
  if ( !empty( $user_id ) ) {
313
-
314
- /**
315
- * Filters whether or not a blog is globally trackable for user.
316
- *
317
- * @since 1.7.0
318
- *
319
- * @param bool $value Whether or not trackable.
320
- * @param int $blog_id Current blog ID.
321
- * @param int $user_id Current user ID.
322
- */
323
  $trackable_for_user = apply_filters( 'bp_blogs_is_blog_trackable_for_user', $trackable_globally, $blog_id, $user_id );
324
  } else {
325
  $trackable_for_user = $trackable_globally;
@@ -341,7 +299,7 @@ function bp_blogs_is_blog_trackable( $blog_id, $user_id = 0 ) {
341
  * @param int $user_id ID of the user for whom the blog is being recorded.
342
  * @param bool $no_activity Optional. Whether to skip recording an activity
343
  * item about this blog creation. Default: false.
344
- * @return false|null Returns false on failure.
345
  */
346
  function bp_blogs_record_blog( $blog_id, $user_id, $no_activity = false ) {
347
 
@@ -386,14 +344,6 @@ function bp_blogs_record_blog( $blog_id, $user_id, $no_activity = false ) {
386
  bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'thread_comments_depth', $thread_depth );
387
 
388
  $is_private = !empty( $_POST['blog_public'] ) && (int) $_POST['blog_public'] ? false : true;
389
-
390
- /**
391
- * Filters whether or not a new blog is public.
392
- *
393
- * @since 1.5.0
394
- *
395
- * @param bool $is_private Whether or not blog is public.
396
- */
397
  $is_private = !apply_filters( 'bp_is_new_blog_public', !$is_private );
398
 
399
  /**
@@ -525,32 +475,11 @@ function bp_blogs_update_option_thread_comments_depth( $oldvalue, $newvalue ) {
525
  }
526
  add_action( 'update_option_thread_comments_depth', 'bp_blogs_update_option_thread_comments_depth', 10, 2 );
527
 
528
- /**
529
- * Syncs site icon URLs to blogmeta.
530
- *
531
- * @since 2.7.0
532
- *
533
- * @param int|string $old_value Old value
534
- * @param int|string $new_value New value
535
- */
536
- function bp_blogs_update_option_site_icon( $old_value, $new_value ) {
537
- if ( 0 === $new_value ) {
538
- bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_thumb', 0 );
539
- bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_full', 0 );
540
- } else {
541
- // Save site icon URL as blogmeta.
542
- bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_thumb', get_site_icon_url( bp_core_avatar_thumb_width() ) );
543
- bp_blogs_update_blogmeta( get_current_blog_id(), 'site_icon_url_full', get_site_icon_url( bp_core_avatar_full_width() ) );
544
- }
545
- }
546
- add_action( 'update_option_site_icon', 'bp_blogs_update_option_site_icon', 10, 2 );
547
-
548
  /**
549
  * Deletes the 'url' blogmeta for a site.
550
  *
551
- * Fires when a site's details are updated, which generally happens when
552
- * editing a site under "Network Admin > Sites". Prior to WP 4.9, the
553
- * correct hook was 'refresh_blog_details'; afterward, 'clean_site_cache'.
554
  *
555
  * @since 2.3.0
556
  *
@@ -559,12 +488,7 @@ add_action( 'update_option_site_icon', 'bp_blogs_update_option_site_icon', 10, 2
559
  function bp_blogs_delete_url_blogmeta( $site_id = 0 ) {
560
  bp_blogs_delete_blogmeta( (int) $site_id, 'url' );
561
  }
562
-
563
- if ( function_exists( 'wp_switch_roles_and_user' ) ) {
564
- add_action( 'clean_site_cache', 'bp_blogs_delete_url_blogmeta' );
565
- } else {
566
- add_action( 'refresh_blog_details', 'bp_blogs_delete_url_blogmeta' );
567
- }
568
 
569
  /**
570
  * Record activity metadata about a published blog post.
@@ -700,7 +624,7 @@ add_action( 'bp_activity_post_type_updated', 'bp_blogs_update_post_activity_meta
700
  * @param WP_Comment|null $comment The comment object.
701
  * @param array $activity_args Array of activity arguments.
702
  * @param object|null $activity_post_object The post type tracking args object.
703
- * @return WP_Error|bool|int Returns false if no activity, the activity id otherwise.
704
  */
705
  function bp_blogs_comment_sync_activity_comment( &$activity_id, $comment = null, $activity_args = array(), $activity_post_object = null ) {
706
  if ( empty( $activity_args ) || empty( $comment->post->ID ) || empty( $activity_post_object->comment_action_id ) ) {
@@ -791,18 +715,6 @@ function bp_blogs_comment_sync_activity_comment( &$activity_id, $comment = null,
791
  bp_activity_update_meta( $activity_id, 'post_url', esc_url_raw( add_query_arg( 'p', $comment->post->ID, home_url( '/' ) ) ) );
792
  }
793
  }
794
-
795
- /**
796
- * Fires after an activity comment is added from a WP post comment.
797
- *
798
- * @since 2.6.0
799
- *
800
- * @param int $activity_id The activity comment ID.
801
- * @param WP_Comment $post_type_comment WP Comment object.
802
- * @param array $activity_args Activity comment arguments.
803
- * @param object $activity_post_object The post type tracking args object.
804
- */
805
- do_action( 'bp_blogs_comment_sync_activity_comment', $activity_id, $comment, $activity_args, $activity_post_object );
806
  }
807
  }
808
 
@@ -840,7 +752,7 @@ add_action( 'bp_activity_post_type_comment', 'bp_blogs_comment_sync_activity_com
840
  * @param int $user_id The ID of the user.
841
  * @param string|bool $role User's WordPress role for this blog ID.
842
  * @param int $blog_id Blog ID user is being added to.
843
- * @return false|null False on failure.
844
  */
845
  function bp_blogs_add_user_to_blog( $user_id, $role = false, $blog_id = 0 ) {
846
  global $wpdb;
@@ -900,14 +812,6 @@ add_action( 'user_register', 'bp_blogs_add_user_to_blog' );
900
  * @return string
901
  */
902
  function bp_blogs_get_allowed_roles() {
903
-
904
- /**
905
- * Filters the allowed roles a member must have to be recorded into bp_user_blogs pointer table.
906
- *
907
- * @since 2.1.0
908
- *
909
- * @param array $value Array of potential roles user needs.
910
- */
911
  return apply_filters( 'bp_blogs_get_allowed_roles', array( 'contributor', 'author', 'editor', 'administrator' ) );
912
  }
913
 
@@ -1003,6 +907,19 @@ function bp_blogs_remove_blog_for_user( $user_id, $blog_id ) {
1003
 
1004
  BP_Blogs_Blog::delete_blog_for_user( $blog_id, $user_id );
1005
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1006
  /**
1007
  * Fires after a blog has been removed from the tracker for a specific user.
1008
  *
65
  $r['include_blog_ids']
66
  );
67
 
68
+ // Filter and return.
 
 
 
 
 
 
 
69
  return apply_filters( 'bp_blogs_get_blogs', $blogs, $r );
70
  }
71
 
246
  */
247
  function bp_blogs_is_blog_recordable( $blog_id, $user_id = 0 ) {
248
 
 
 
 
 
 
 
 
 
249
  $recordable_globally = apply_filters( 'bp_blogs_is_blog_recordable', true, $blog_id );
250
 
251
  if ( !empty( $user_id ) ) {
 
 
 
 
 
 
 
 
 
252
  $recordable_for_user = apply_filters( 'bp_blogs_is_blog_recordable_for_user', $recordable_globally, $blog_id, $user_id );
253
  } else {
254
  $recordable_for_user = $recordable_globally;
275
  */
276
  function bp_blogs_is_blog_trackable( $blog_id, $user_id = 0 ) {
277
 
 
 
 
 
 
 
 
 
278
  $trackable_globally = apply_filters( 'bp_blogs_is_blog_trackable', bp_blogs_is_blog_recordable( $blog_id, $user_id ), $blog_id );
279
 
280
  if ( !empty( $user_id ) ) {
 
 
 
 
 
 
 
 
 
 
281
  $trackable_for_user = apply_filters( 'bp_blogs_is_blog_trackable_for_user', $trackable_globally, $blog_id, $user_id );
282
  } else {
283
  $trackable_for_user = $trackable_globally;
299
  * @param int $user_id ID of the user for whom the blog is being recorded.
300
  * @param bool $no_activity Optional. Whether to skip recording an activity
301
  * item about this blog creation. Default: false.
302
+ * @return bool|null Returns false on failure.
303
  */
304
  function bp_blogs_record_blog( $blog_id, $user_id, $no_activity = false ) {
305
 
344
  bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'thread_comments_depth', $thread_depth );
345
 
346
  $is_private = !empty( $_POST['blog_public'] ) && (int) $_POST['blog_public'] ? false : true;
 
 
 
 
 
 
 
 
347
  $is_private = !apply_filters( 'bp_is_new_blog_public', !$is_private );
348
 
349
  /**
475
  }
476
  add_action( 'update_option_thread_comments_depth', 'bp_blogs_update_option_thread_comments_depth', 10, 2 );
477
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
478
  /**
479
  * Deletes the 'url' blogmeta for a site.
480
  *
481
+ * Hooked to 'refresh_blog_details', which is notably used when editing a site
482
+ * under "Network Admin > Sites".
 
483
  *
484
  * @since 2.3.0
485
  *
488
  function bp_blogs_delete_url_blogmeta( $site_id = 0 ) {
489
  bp_blogs_delete_blogmeta( (int) $site_id, 'url' );
490
  }
491
+ add_action( 'refresh_blog_details', 'bp_blogs_delete_url_blogmeta' );
 
 
 
 
 
492
 
493
  /**
494
  * Record activity metadata about a published blog post.
624
  * @param WP_Comment|null $comment The comment object.
625
  * @param array $activity_args Array of activity arguments.
626
  * @param object|null $activity_post_object The post type tracking args object.
627
+ * @return int|bool Returns false if no activity, the activity id otherwise.
628
  */
629
  function bp_blogs_comment_sync_activity_comment( &$activity_id, $comment = null, $activity_args = array(), $activity_post_object = null ) {
630
  if ( empty( $activity_args ) || empty( $comment->post->ID ) || empty( $activity_post_object->comment_action_id ) ) {
715
  bp_activity_update_meta( $activity_id, 'post_url', esc_url_raw( add_query_arg( 'p', $comment->post->ID, home_url( '/' ) ) ) );
716
  }
717
  }
 
 
 
 
 
 
 
 
 
 
 
 
718
  }
719
  }
720
 
752
  * @param int $user_id The ID of the user.
753
  * @param string|bool $role User's WordPress role for this blog ID.
754
  * @param int $blog_id Blog ID user is being added to.
755
+ * @return bool|null False on failure.
756
  */
757
  function bp_blogs_add_user_to_blog( $user_id, $role = false, $blog_id = 0 ) {
758
  global $wpdb;
812
  * @return string
813
  */
814
  function bp_blogs_get_allowed_roles() {
 
 
 
 
 
 
 
 
815
  return apply_filters( 'bp_blogs_get_allowed_roles', array( 'contributor', 'author', 'editor', 'administrator' ) );
816
  }
817
 
907
 
908
  BP_Blogs_Blog::delete_blog_for_user( $blog_id, $user_id );
909
 
910
+ /**
911
+ * Delete activity stream item only if the Activity component is active
912
+ *
913
+ * @see https://buddypress.trac.wordpress.org/ticket/6937
914
+ */
915
+ if ( bp_is_active( 'activity' ) ) {
916
+ bp_blogs_delete_activity( array(
917
+ 'item_id' => $blog_id,
918
+ 'component' => buddypress()->blogs->id,
919
+ 'type' => 'new_blog'
920
+ ) );
921
+ }
922
+
923
  /**
924
  * Fires after a blog has been removed from the tracker for a specific user.
925
  *
bp-blogs/bp-blogs-loader.php CHANGED
@@ -14,10 +14,12 @@
14
  // Exit if accessed directly.
15
  defined( 'ABSPATH' ) || exit;
16
 
 
 
 
 
17
  /**
18
  * Set up the bp-blogs component.
19
- *
20
- * @since 1.5.0
21
  */
22
  function bp_setup_blogs() {
23
  buddypress()->blogs = new BP_Blogs_Component();
14
  // Exit if accessed directly.
15
  defined( 'ABSPATH' ) || exit;
16
 
17
+ if ( ! buddypress()->do_autoload ) {
18
+ require dirname( __FILE__ ) . '/classes/class-bp-blogs-component.php';
19
+ }
20
+
21
  /**
22
  * Set up the bp-blogs component.
 
 
23
  */
24
  function bp_setup_blogs() {
25
  buddypress()->blogs = new BP_Blogs_Component();
bp-blogs/bp-blogs-screens.php CHANGED
@@ -10,6 +10,10 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
13
  /**
14
  * Load the "My Blogs" screen.
15
  */
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ if ( ! buddypress()->do_autoload ) {
14
+ require dirname( __FILE__ ) . '/classes/class-bp-blogs-theme-compat.php';
15
+ }
16
+
17
  /**
18
  * Load the "My Blogs" screen.
19
  */
bp-blogs/bp-blogs-template.php CHANGED
@@ -10,6 +10,10 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
13
  /**
14
  * Output the blogs component slug.
15
  *
@@ -216,22 +220,9 @@ function bp_the_blog() {
216
  /**
217
  * Output the blogs pagination count.
218
  *
219
- * @since 1.0.0
220
- */
221
- function bp_blogs_pagination_count() {
222
- echo bp_get_blogs_pagination_count();
223
- }
224
-
225
- /**
226
- * Get the blogs pagination count.
227
- *
228
- * @since 2.7.0
229
- *
230
  * @global object $blogs_template {@link BP_Blogs_Template}
231
- *
232
- * @return string
233
  */
234
- function bp_get_blogs_pagination_count() {
235
  global $blogs_template;
236
 
237
  $start_num = intval( ( $blogs_template->pag_page - 1 ) * $blogs_template->pag_num ) + 1;
@@ -245,17 +236,7 @@ function bp_get_blogs_pagination_count() {
245
  $message = sprintf( _n( 'Viewing %1$s - %2$s of %3$s site', 'Viewing %1$s - %2$s of %3$s sites', $blogs_template->total_blog_count, 'buddypress' ), $from_num, $to_num, $total );
246
  }
247
 
248
- /**
249
- * Filters the "Viewing x-y of z blogs" pagination message.
250
- *
251
- * @since 2.7.0
252
- *
253
- * @param string $message "Viewing x-y of z blogs" text.
254
- * @param string $from_num Total amount for the low value in the range.
255
- * @param string $to_num Total amount for the high value in the range.
256
- * @param string $total Total amount of blogs found.
257
- */
258
- return apply_filters( 'bp_get_blogs_pagination_count', $message, $from_num, $to_num, $total );
259
  }
260
 
261
  /**
@@ -311,6 +292,7 @@ function bp_blog_avatar( $args = '' ) {
311
  * {@link bp_core_fetch_avatar()}.
312
  * @type string $alt Default: 'Profile picture of site author [user name]'.
313
  * @type string $class Default: 'avatar'.
 
314
  * @type string $type Default: 'full'.
315
  * @type int|bool $width Default: false.
316
  * @type int|bool $height Default: false.
@@ -336,81 +318,25 @@ function bp_blog_avatar( $args = '' ) {
336
  'width' => false,
337
  'height' => false,
338
  'class' => 'avatar',
 
339
  'id' => false,
340
  'alt' => sprintf( __( 'Profile picture of site author %s', 'buddypress' ), esc_attr( $author_displayname ) ),
341
  'no_grav' => true,
342
  ) );
343
 
344
- // Use site icon if available.
345
- $avatar = '';
346
- if ( bp_is_active( 'blogs', 'site-icon' ) && function_exists( 'has_site_icon' ) ) {
347
- $site_icon = bp_blogs_get_blogmeta( bp_get_blog_id(), "site_icon_url_{$r['type']}" );
348
-
349
- // Never attempted to fetch site icon before; do it now!
350
- if ( '' === $site_icon ) {
351
- switch_to_blog( bp_get_blog_id() );
352
-
353
- // Fetch the other size first.
354
- if ( 'full' === $r['type'] ) {
355
- $size = bp_core_avatar_thumb_width();
356
- $save_size = 'thumb';
357
- } else {
358
- $size = bp_core_avatar_full_width();
359
- $save_size = 'full';
360
- }
361
-
362
- $site_icon = get_site_icon_url( $size );
363
- // Empty site icons get saved as integer 0.
364
- if ( empty( $site_icon ) ) {
365
- $site_icon = 0;
366
- }
367
-
368
- // Sync site icon for other size to blogmeta.
369
- bp_blogs_update_blogmeta( bp_get_blog_id(), "site_icon_url_{$save_size}", $site_icon );
370
-
371
- // Now, fetch the size we want.
372
- if ( 0 !== $site_icon ) {
373
- $size = 'full' === $r['type'] ? bp_core_avatar_full_width() : bp_core_avatar_thumb_width();
374
- $site_icon = get_site_icon_url( $size );
375
- }
376
-
377
- // Sync site icon to blogmeta.
378
- bp_blogs_update_blogmeta( bp_get_blog_id(), "site_icon_url_{$r['type']}", $site_icon );
379
-
380
- restore_current_blog();
381
- }
382
-
383
- // We have a site icon.
384
- if ( ! is_numeric( $site_icon ) ) {
385
- if ( empty( $r['width'] ) && ! isset( $size ) ) {
386
- $size = 'full' === $r['type'] ? bp_core_avatar_full_width() : bp_core_avatar_thumb_width();
387
- } else {
388
- $size = (int) $r['width'];
389
- }
390
-
391
- $avatar = sprintf( '<img src="%1$s" class="%2$s" width="%3$s" height="%3$s" alt="%4$s" />',
392
- esc_url( $site_icon ),
393
- esc_attr( "{$r['class']} avatar-{$size}" ),
394
- esc_attr( $size ),
395
- sprintf( esc_attr__( 'Site icon for %s', 'buddypress' ), bp_get_blog_name() )
396
- );
397
- }
398
- }
399
-
400
- // Fallback to user ID avatar.
401
- if ( '' === $avatar ) {
402
- $avatar = bp_core_fetch_avatar( array(
403
- 'item_id' => $blogs_template->blog->admin_user_id,
404
- // 'avatar_dir' => 'blog-avatars',
405
- // 'object' => 'blog',
406
- 'type' => $r['type'],
407
- 'alt' => $r['alt'],
408
- 'css_id' => $r['id'],
409
- 'class' => $r['class'],
410
- 'width' => $r['width'],
411
- 'height' => $r['height']
412
- ) );
413
- }
414
 
415
  /**
416
  * In future BuddyPress versions you will be able to set the avatar for a blog.
@@ -640,7 +566,7 @@ function bp_blog_last_active( $args = array() ) {
640
  /**
641
  * Filters the last active date of the current blog in the loop.
642
  *
643
- * @since 1.2.0
644
  *
645
  * @param string $last_activity Last active date.
646
  * @param array $r Array of parsed args used to determine formatting.
@@ -1079,7 +1005,7 @@ function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' )
1079
  if ( !is_subdomain_install() )
1080
  echo '<span class="prefix_address">' . $current_site->domain . $current_site->path . '</span> <input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="63" /><br />';
1081
  else
1082
- echo '<input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="63" ' . bp_get_form_field_attributes( 'blogname' ) . '/> <span class="suffix_address">.' . bp_signup_get_subdomain_base() . '</span><br />';
1083
 
1084
  if ( !is_user_logged_in() ) {
1085
  print '(<strong>' . __( 'Your address will be ' , 'buddypress');
@@ -1106,8 +1032,9 @@ function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' )
1106
  echo '<input name="blog_title" type="text" id="blog_title" value="'.esc_html($blog_title, 1).'" /></p>';
1107
  ?>
1108
 
1109
- <fieldset class="create-site">
1110
- <legend class="label"><?php _e('Privacy: I would like my site to appear in search engines, and in public listings around this network', 'buddypress') ?></legend>
 
1111
 
1112
  <label class="checkbox" for="blog_public_on">
1113
  <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if( !isset( $_POST['blog_public'] ) || '1' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
@@ -1117,7 +1044,7 @@ function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' )
1117
  <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if( isset( $_POST['blog_public'] ) && '0' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
1118
  <strong><?php _e( 'No' , 'buddypress'); ?></strong>
1119
  </label>
1120
- </fieldset>
1121
 
1122
  <?php
1123
 
@@ -1338,7 +1265,7 @@ function bp_blog_create_button() {
1338
  *
1339
  * @since 2.0.0
1340
  *
1341
- * @return false|string
1342
  */
1343
  function bp_get_blog_create_button() {
1344
  if ( ! is_user_logged_in() ) {
@@ -1353,6 +1280,7 @@ function bp_blog_create_button() {
1353
  'id' => 'create_blog',
1354
  'component' => 'blogs',
1355
  'link_text' => __( 'Create a Site', 'buddypress' ),
 
1356
  'link_class' => 'blog-create no-ajax',
1357
  'link_href' => trailingslashit( bp_get_blogs_directory_permalink() . 'create' ),
1358
  'wrapper' => false,
@@ -1396,13 +1324,6 @@ function bp_blog_create_nav_item() {
1396
 
1397
  $output = '<li id="blog-create-nav">' . $create_blog_button . '</li>';
1398
 
1399
- /**
1400
- * Filters the Create A Site nav item output.
1401
- *
1402
- * @since 2.2.0
1403
- *
1404
- * @param string $output Nav item output.
1405
- */
1406
  return apply_filters( 'bp_get_blog_create_nav_item', $output );
1407
  }
1408
 
@@ -1412,7 +1333,7 @@ function bp_blog_create_nav_item() {
1412
  *
1413
  * @since 2.2.0
1414
  *
1415
- * @return string|null HTML Output
1416
  */
1417
  function bp_blog_backcompat_create_nav_item() {
1418
  // Bail if Blogs nav item is already used by bp-legacy.
@@ -1456,6 +1377,7 @@ function bp_blogs_visit_blog_button( $args = '' ) {
1456
  * @type string $link_href Permalink of the current blog in the loop.
1457
  * @type string $link_class Default: 'blog-button visit'.
1458
  * @type string $link_text Default: 'Visit Site'.
 
1459
  * }
1460
  * @return string The HTML for the Visit button.
1461
  */
@@ -1469,6 +1391,7 @@ function bp_blogs_visit_blog_button( $args = '' ) {
1469
  'link_href' => bp_get_blog_permalink(),
1470
  'link_class' => 'blog-button visit',
1471
  'link_text' => __( 'Visit Site', 'buddypress' ),
 
1472
  );
1473
 
1474
  $button = wp_parse_args( $args, $defaults );
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ if ( ! buddypress()->do_autoload ) {
14
+ require dirname( __FILE__ ) . '/classes/class-bp-blogs-template.php';
15
+ }
16
+
17
  /**
18
  * Output the blogs component slug.
19
  *
220
  /**
221
  * Output the blogs pagination count.
222
  *
 
 
 
 
 
 
 
 
 
 
 
223
  * @global object $blogs_template {@link BP_Blogs_Template}
 
 
224
  */
225
+ function bp_blogs_pagination_count() {
226
  global $blogs_template;
227
 
228
  $start_num = intval( ( $blogs_template->pag_page - 1 ) * $blogs_template->pag_num ) + 1;
236
  $message = sprintf( _n( 'Viewing %1$s - %2$s of %3$s site', 'Viewing %1$s - %2$s of %3$s sites', $blogs_template->total_blog_count, 'buddypress' ), $from_num, $to_num, $total );
237
  }
238
 
239
+ echo $message;
 
 
 
 
 
 
 
 
 
 
240
  }
241
 
242
  /**
292
  * {@link bp_core_fetch_avatar()}.
293
  * @type string $alt Default: 'Profile picture of site author [user name]'.
294
  * @type string $class Default: 'avatar'.
295
+ * @type string $title Default: 'Profile picture of site author [user name]'.
296
  * @type string $type Default: 'full'.
297
  * @type int|bool $width Default: false.
298
  * @type int|bool $height Default: false.
318
  'width' => false,
319
  'height' => false,
320
  'class' => 'avatar',
321
+ 'title' => sprintf( __( 'Profile picture of site author %s', 'buddypress' ), esc_attr( $author_displayname ) ),
322
  'id' => false,
323
  'alt' => sprintf( __( 'Profile picture of site author %s', 'buddypress' ), esc_attr( $author_displayname ) ),
324
  'no_grav' => true,
325
  ) );
326
 
327
+ // Fetch the avatar.
328
+ $avatar = bp_core_fetch_avatar( array(
329
+ 'item_id' => $blogs_template->blog->admin_user_id,
330
+ 'title' => $r['title'],
331
+ // 'avatar_dir' => 'blog-avatars',
332
+ // 'object' => 'blog',
333
+ 'type' => $r['type'],
334
+ 'alt' => $r['alt'],
335
+ 'css_id' => $r['id'],
336
+ 'class' => $r['class'],
337
+ 'width' => $r['width'],
338
+ 'height' => $r['height']
339
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
 
341
  /**
342
  * In future BuddyPress versions you will be able to set the avatar for a blog.
566
  /**
567
  * Filters the last active date of the current blog in the loop.
568
  *
569
+ * @since
570
  *
571
  * @param string $last_activity Last active date.
572
  * @param array $r Array of parsed args used to determine formatting.
1005
  if ( !is_subdomain_install() )
1006
  echo '<span class="prefix_address">' . $current_site->domain . $current_site->path . '</span> <input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="63" /><br />';
1007
  else
1008
+ echo '<input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="63" ' . bp_get_form_field_attributes( 'blogname' ) . '/> <span class="suffix_address">.' . bp_blogs_get_subdomain_base() . '</span><br />';
1009
 
1010
  if ( !is_user_logged_in() ) {
1011
  print '(<strong>' . __( 'Your address will be ' , 'buddypress');
1032
  echo '<input name="blog_title" type="text" id="blog_title" value="'.esc_html($blog_title, 1).'" /></p>';
1033
  ?>
1034
 
1035
+ <p>
1036
+ <label for="blog_public_on"><?php _e('Privacy:', 'buddypress') ?></label>
1037
+ <?php _e( 'I would like my site to appear in search engines, and in public listings around this network.', 'buddypress' ); ?>
1038
 
1039
  <label class="checkbox" for="blog_public_on">
1040
  <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if( !isset( $_POST['blog_public'] ) || '1' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
1044
  <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if( isset( $_POST['blog_public'] ) && '0' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> />
1045
  <strong><?php _e( 'No' , 'buddypress'); ?></strong>
1046
  </label>
1047
+ </p>
1048
 
1049
  <?php
1050
 
1265
  *
1266
  * @since 2.0.0
1267
  *
1268
+ * @return string
1269
  */
1270
  function bp_get_blog_create_button() {
1271
  if ( ! is_user_logged_in() ) {
1280
  'id' => 'create_blog',
1281
  'component' => 'blogs',
1282
  'link_text' => __( 'Create a Site', 'buddypress' ),
1283
+ 'link_title' => __( 'Create a Site', 'buddypress' ),
1284
  'link_class' => 'blog-create no-ajax',
1285
  'link_href' => trailingslashit( bp_get_blogs_directory_permalink() . 'create' ),
1286
  'wrapper' => false,
1324
 
1325
  $output = '<li id="blog-create-nav">' . $create_blog_button . '</li>';
1326
 
 
 
 
 
 
 
 
1327
  return apply_filters( 'bp_get_blog_create_nav_item', $output );
1328
  }
1329
 
1333
  *
1334
  * @since 2.2.0
1335
  *
1336
+ * @return string HTML Output
1337
  */
1338
  function bp_blog_backcompat_create_nav_item() {
1339
  // Bail if Blogs nav item is already used by bp-legacy.
1377
  * @type string $link_href Permalink of the current blog in the loop.
1378
  * @type string $link_class Default: 'blog-button visit'.
1379
  * @type string $link_text Default: 'Visit Site'.
1380
+ * @type string $link_title Default: 'Visit Site'.
1381
  * }
1382
  * @return string The HTML for the Visit button.
1383
  */
1391
  'link_href' => bp_get_blog_permalink(),
1392
  'link_class' => 'blog-button visit',
1393
  'link_text' => __( 'Visit Site', 'buddypress' ),
1394
+ 'link_title' => __( 'Visit Site', 'buddypress' ),
1395
  );
1396
 
1397
  $button = wp_parse_args( $args, $defaults );
bp-blogs/bp-blogs-widgets.php CHANGED
@@ -10,6 +10,10 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
13
  /**
14
  * Register the widgets for the Blogs component.
15
  */
@@ -17,7 +21,7 @@ function bp_blogs_register_widgets() {
17
  global $wpdb;
18
 
19
  if ( bp_is_active( 'activity' ) && bp_is_root_blog( $wpdb->blogid ) ) {
20
- add_action( 'widgets_init', function() { register_widget( 'BP_Blogs_Recent_Posts_Widget' ); } );
21
  }
22
  }
23
  add_action( 'bp_register_widgets', 'bp_blogs_register_widgets' );
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ if ( ! buddypress()->do_autoload ) {
14
+ require dirname( __FILE__ ) . '/classes/class-bp-blogs-recent-posts-widget.php';
15
+ }
16
+
17
  /**
18
  * Register the widgets for the Blogs component.
19
  */
21
  global $wpdb;
22
 
23
  if ( bp_is_active( 'activity' ) && bp_is_root_blog( $wpdb->blogid ) ) {
24
+ add_action( 'widgets_init', create_function( '', 'return register_widget("BP_Blogs_Recent_Posts_Widget");' ) );
25
  }
26
  }
27
  add_action( 'bp_register_widgets', 'bp_blogs_register_widgets' );
bp-blogs/classes/class-bp-blogs-blog.php CHANGED
@@ -48,7 +48,7 @@ class BP_Blogs_Blog {
48
  */
49
  public function __construct( $id = null ) {
50
  if ( !empty( $id ) ) {
51
- $this->id = (int) $id;
52
  $this->populate();
53
  }
54
  }
@@ -63,8 +63,8 @@ class BP_Blogs_Blog {
63
 
64
  $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name} WHERE id = %d", $this->id ) );
65
 
66
- $this->user_id = (int) $blog->user_id;
67
- $this->blog_id = (int) $blog->blog_id;
68
  }
69
 
70
  /**
@@ -75,24 +75,7 @@ class BP_Blogs_Blog {
75
  public function save() {
76
  global $wpdb;
77
 
78
- /**
79
- * Filters the blog user ID before save.
80
- *
81
- * @since 1.0.0
82
- *
83
- * @param int $value User ID.
84
- * @param int $value Site ID.
85
- */
86
  $this->user_id = apply_filters( 'bp_blogs_blog_user_id_before_save', $this->user_id, $this->id );
87
-
88
- /**
89
- * Filters the blog blog ID before save.
90
- *
91
- * @since 1.0.0
92
- *
93
- * @param int $value Blog ID.
94
- * @param int $value Site ID.
95
- */
96
  $this->blog_id = apply_filters( 'bp_blogs_blog_id_before_save', $this->blog_id, $this->id );
97
 
98
  /**
@@ -260,12 +243,6 @@ class BP_Blogs_Blog {
260
 
261
  $paged_blogs = BP_Blogs_Blog::get_blog_extras( $paged_blogs, $blog_ids, $type );
262
 
263
- // Integer casting.
264
- foreach ( (array) $paged_blogs as $key => $data ) {
265
- $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id;
266
- $paged_blogs[ $key ]->admin_user_id = (int) $paged_blogs[ $key ]->admin_user_id;
267
- }
268
-
269
  if ( $update_meta_cache ) {
270
  bp_blogs_update_meta_cache( $blog_ids );
271
  }
@@ -361,8 +338,8 @@ class BP_Blogs_Blog {
361
  $user_blogs = array();
362
  foreach ( (array) $blogs as $blog ) {
363
  $user_blogs[$blog->blog_id] = new stdClass;
364
- $user_blogs[$blog->blog_id]->id = (int) $blog->id;
365
- $user_blogs[$blog->blog_id]->blog_id = (int) $blog->blog_id;
366
  $user_blogs[$blog->blog_id]->siteurl = ( is_ssl() ) ? 'https://' . $blog->domain . $blog->path : 'http://' . $blog->domain . $blog->path;
367
  $user_blogs[$blog->blog_id]->name = $blog->name;
368
  }
@@ -387,7 +364,7 @@ class BP_Blogs_Blog {
387
  if ( !$user_id )
388
  $user_id = bp_displayed_user_id();
389
 
390
- return array_map( 'intval', $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id ) ) );
391
  }
392
 
393
  /**
@@ -402,9 +379,7 @@ class BP_Blogs_Blog {
402
 
403
  $bp = buddypress();
404
 
405
- $query = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->blogs->table_name} WHERE blog_id = %d", $blog_id ) );
406
-
407
- return is_numeric( $query ) ? (int) $query : $query;
408
  }
409
 
410
  /**
@@ -469,12 +444,7 @@ class BP_Blogs_Blog {
469
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC{$pag_sql}" );
470
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC" );
471
 
472
- // Integer casting.
473
- foreach ( (array) $paged_blogs as $key => $data ) {
474
- $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id;
475
- }
476
-
477
- return array( 'blogs' => $paged_blogs, 'total' => (int) $total_blogs );
478
  }
479
 
480
  /**
@@ -502,12 +472,7 @@ class BP_Blogs_Blog {
502
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT b.blog_id FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql} {$pag_sql}" );
503
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql}" );
504
 
505
- // Integer casting.
506
- foreach ( (array) $paged_blogs as $key => $data ) {
507
- $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id;
508
- }
509
-
510
- return array( 'blogs' => $paged_blogs, 'total' => (int) $total_blogs );
511
  }
512
 
513
  /**
@@ -544,12 +509,7 @@ class BP_Blogs_Blog {
544
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND {$letter_sql} {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC{$pag_sql}" );
545
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND {$letter_sql} {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC" );
546
 
547
- // Integer casting.
548
- foreach ( (array) $paged_blogs as $key => $data ) {
549
- $paged_blogs[ $key ]->blog_id = (int) $paged_blogs[ $key ]->blog_id;
550
- }
551
-
552
- return array( 'blogs' => $paged_blogs, 'total' => (int) $total_blogs );
553
  }
554
 
555
  /**
48
  */
49
  public function __construct( $id = null ) {
50
  if ( !empty( $id ) ) {
51
+ $this->id = $id;
52
  $this->populate();
53
  }
54
  }
63
 
64
  $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name} WHERE id = %d", $this->id ) );
65
 
66
+ $this->user_id = $blog->user_id;
67
+ $this->blog_id = $blog->blog_id;
68
  }
69
 
70
  /**
75
  public function save() {
76
  global $wpdb;
77
 
 
 
 
 
 
 
 
 
78
  $this->user_id = apply_filters( 'bp_blogs_blog_user_id_before_save', $this->user_id, $this->id );
 
 
 
 
 
 
 
 
 
79
  $this->blog_id = apply_filters( 'bp_blogs_blog_id_before_save', $this->blog_id, $this->id );
80
 
81
  /**
243
 
244
  $paged_blogs = BP_Blogs_Blog::get_blog_extras( $paged_blogs, $blog_ids, $type );
245
 
 
 
 
 
 
 
246
  if ( $update_meta_cache ) {
247
  bp_blogs_update_meta_cache( $blog_ids );
248
  }
338
  $user_blogs = array();
339
  foreach ( (array) $blogs as $blog ) {
340
  $user_blogs[$blog->blog_id] = new stdClass;
341
+ $user_blogs[$blog->blog_id]->id = $blog->id;
342
+ $user_blogs[$blog->blog_id]->blog_id = $blog->blog_id;
343
  $user_blogs[$blog->blog_id]->siteurl = ( is_ssl() ) ? 'https://' . $blog->domain . $blog->path : 'http://' . $blog->domain . $blog->path;
344
  $user_blogs[$blog->blog_id]->name = $blog->name;
345
  }
364
  if ( !$user_id )
365
  $user_id = bp_displayed_user_id();
366
 
367
+ return $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id ) );
368
  }
369
 
370
  /**
379
 
380
  $bp = buddypress();
381
 
382
+ return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->blogs->table_name} WHERE blog_id = %d", $blog_id ) );
 
 
383
  }
384
 
385
  /**
444
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC{$pag_sql}" );
445
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND {$search_terms_sql} ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC" );
446
 
447
+ return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
 
 
 
 
 
448
  }
449
 
450
  /**
472
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT b.blog_id FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql} {$pag_sql}" );
473
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql}" );
474
 
475
+ return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
 
 
 
 
 
476
  }
477
 
478
  /**
509
  $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND {$letter_sql} {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC{$pag_sql}" );
510
  $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND {$letter_sql} {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC" );
511
 
512
+ return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
 
 
 
 
 
513
  }
514
 
515
  /**
bp-blogs/classes/class-bp-blogs-component.php CHANGED
@@ -32,7 +32,6 @@ class BP_Blogs_Component extends BP_Component {
32
  array(
33
  'adminbar_myaccount_order' => 30,
34
  'search_query_arg' => 'sites_search',
35
- 'features' => array( 'site-icon' )
36
  )
37
  );
38
  }
@@ -66,16 +65,12 @@ class BP_Blogs_Component extends BP_Component {
66
  'blog' => $bp->table_prefix . 'bp_user_blogs_blogmeta',
67
  );
68
 
69
- // Fetch the default directory title.
70
- $default_directory_titles = bp_core_get_directory_page_default_titles();
71
- $default_directory_title = $default_directory_titles[$this->id];
72
-
73
  // All globals for blogs component.
74
  $args = array(
75
  'slug' => BP_BLOGS_SLUG,
76
  'root_slug' => isset( $bp->pages->blogs->slug ) ? $bp->pages->blogs->slug : BP_BLOGS_SLUG,
77
  'has_directory' => is_multisite(), // Non-multisite installs don't need a top-level Sites directory, since there's only one site.
78
- 'directory_title' => isset( $bp->pages->blogs->title ) ? $bp->pages->blogs->title : $default_directory_title,
79
  'notification_callback' => 'bp_blogs_format_notifications',
80
  'search_string' => __( 'Search sites...', 'buddypress' ),
81
  'autocomplete_all' => defined( 'BP_MESSAGES_AUTOCOMPLETE_ALL' ),
@@ -132,6 +127,10 @@ class BP_Blogs_Component extends BP_Component {
132
  'functions',
133
  );
134
 
 
 
 
 
135
  if ( bp_is_active( 'activity' ) ) {
136
  $includes[] = 'activity';
137
  }
32
  array(
33
  'adminbar_myaccount_order' => 30,
34
  'search_query_arg' => 'sites_search',
 
35
  )
36
  );
37
  }
65
  'blog' => $bp->table_prefix . 'bp_user_blogs_blogmeta',
66
  );
67
 
 
 
 
 
68
  // All globals for blogs component.
69
  $args = array(
70
  'slug' => BP_BLOGS_SLUG,
71
  'root_slug' => isset( $bp->pages->blogs->slug ) ? $bp->pages->blogs->slug : BP_BLOGS_SLUG,
72
  'has_directory' => is_multisite(), // Non-multisite installs don't need a top-level Sites directory, since there's only one site.
73
+ 'directory_title' => _x( 'Sites', 'component directory title', 'buddypress' ),
74
  'notification_callback' => 'bp_blogs_format_notifications',
75
  'search_string' => __( 'Search sites...', 'buddypress' ),
76
  'autocomplete_all' => defined( 'BP_MESSAGES_AUTOCOMPLETE_ALL' ),
127
  'functions',
128
  );
129
 
130
+ if ( ! buddypress()->do_autoload ) {
131
+ $includes[] = 'classes';
132
+ }
133
+
134
  if ( bp_is_active( 'activity' ) ) {
135
  $includes[] = 'activity';
136
  }
bp-core/admin/bp-core-admin-classes.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Core component classes for wp-admin screens.
4
+ *
5
+ * @package BuddyPress
6
+ * @subpackage Core
7
+ * @since 2.5.0
8
+ */
9
+
10
+ // Exit if accessed directly.
11
+ defined( 'ABSPATH' ) || exit;
12
+
13
+ require dirname( dirname( __FILE__ ) ) . '/classes/class-bp-walker-category-checklist.php';
bp-core/admin/bp-core-admin-components.php CHANGED
@@ -196,15 +196,11 @@ function bp_core_admin_components_options() {
196
 
197
  <?php if ( !in_array( $name, array( 'core', 'members' ) ) ) : ?>
198
 
199
- <input type="checkbox" id="<?php echo esc_attr( "bp_components[$name]" ); ?>" name="<?php echo esc_attr( "bp_components[$name]" ); ?>" value="1"<?php checked( isset( $active_components[esc_attr( $name )] ) ); ?> /><label for="<?php echo esc_attr( "bp_components[$name]" ); ?>" class="screen-reader-text"><?php
200
- /* translators: accessibility text */
201
- printf( __( 'Select %s', 'buddypress' ), esc_html( $labels['title'] ) ); ?></label>
202
 
203
  <?php else : ?>
204
 
205
- <input type="checkbox" id="<?php echo esc_attr( "bp_components[$name]" ); ?>" name="<?php echo esc_attr( "bp_components[$name]" ); ?>" value="1" checked="checked" disabled><label for="<?php echo esc_attr( "bp_components[$name]" ); ?>" class="screen-reader-text"><?php
206
- /* translators: accessibility text */
207
- printf( __( '%s is a required component', 'buddypress' ), esc_html( $labels['title'] ) ); ?></label>
208
 
209
  <?php endif; ?>
210
 
@@ -276,7 +272,6 @@ function bp_core_admin_components_settings_handler() {
276
  $bp = buddypress();
277
 
278
  // Save settings and upgrade schema.
279
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
280
  require_once( $bp->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php' );
281
 
282
  $submitted = stripslashes_deep( $_POST['bp_components'] );
196
 
197
  <?php if ( !in_array( $name, array( 'core', 'members' ) ) ) : ?>
198
 
199
+ <input type="checkbox" id="<?php echo esc_attr( "bp_components[$name]" ); ?>" name="<?php echo esc_attr( "bp_components[$name]" ); ?>" value="1"<?php checked( isset( $active_components[esc_attr( $name )] ) ); ?> /><label for="<?php echo esc_attr( "bp_components[$name]" ); ?>" class="screen-reader-text"><?php printf( __( 'Select %s', 'buddypress' ), esc_html( $labels['title'] ) ); ?></label>
 
 
200
 
201
  <?php else : ?>
202
 
203
+ <input type="checkbox" id="<?php echo esc_attr( "bp_components[$name]" ); ?>" name="<?php echo esc_attr( "bp_components[$name]" ); ?>" value="1" checked="checked" disabled><label for="<?php echo esc_attr( "bp_components[$name]" ); ?>" class="screen-reader-text"><?php printf( __( '%s is a required component', 'buddypress' ), esc_html( $labels['title'] ) ); ?></label>
 
 
204
 
205
  <?php endif; ?>
206
 
272
  $bp = buddypress();
273
 
274
  // Save settings and upgrade schema.
 
275
  require_once( $bp->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php' );
276
 
277
  $submitted = stripslashes_deep( $_POST['bp_components'] );
bp-core/admin/bp-core-admin-functions.php CHANGED
@@ -314,7 +314,7 @@ function bp_core_activation_notice() {
314
 
315
  // BP components cannot share a single WP page. Check for duplicate assignments, and post a message if found.
316
  $dupe_names = array();
317
- $page_ids = bp_core_get_directory_page_ids();
318
  $dupes = array_diff_assoc( $page_ids, array_unique( $page_ids ) );
319
 
320
  if ( !empty( $dupes ) ) {
@@ -804,29 +804,7 @@ function bp_admin_do_wp_nav_menu_meta_box() {
804
  </ul>
805
  </div>
806
 
807
- <?php
808
- $removed_args = array(
809
- 'action',
810
- 'customlink-tab',
811
- 'edit-menu-item',
812
- 'menu-item',
813
- 'page-tab',
814
- '_wpnonce',
815
- );
816
- ?>
817
-
818
  <p class="button-controls">
819
- <span class="list-controls">
820
- <a href="<?php
821
- echo esc_url( add_query_arg(
822
- array(
823
- $post_type_name . '-tab' => 'all',
824
- 'selectall' => 1,
825
- ),
826
- remove_query_arg( $removed_args )
827
- ) );
828
- ?>#buddypress-menu" class="select-all"><?php _e( 'Select All', 'buddypress' ); ?></a>
829
- </span>
830
  <span class="add-to-menu">
831
  <input type="submit"<?php if ( function_exists( 'wp_nav_menu_disabled_check' ) ) : wp_nav_menu_disabled_check( $nav_menu_selected_id ); endif; ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu', 'buddypress' ); ?>" name="add-custom-menu-item" id="submit-buddypress-menu" />
832
  <span class="spinner"></span>
@@ -1113,43 +1091,3 @@ function bp_core_admin_user_spammed_js() {
1113
  </script>
1114
  <?php
1115
  }
1116
-
1117
- /**
1118
- * Catch and process an admin notice dismissal.
1119
- *
1120
- * @since 2.7.0
1121
- */
1122
- function bp_core_admin_notice_dismiss_callback() {
1123
- if ( ! current_user_can( 'install_plugins' ) ) {
1124
- wp_send_json_error();
1125
- }
1126
-
1127
- if ( empty( $_POST['nonce'] ) || empty( $_POST['notice_id'] ) ) {
1128
- wp_send_json_error();
1129
- }
1130
-
1131
- $notice_id = wp_unslash( $_POST['notice_id'] );
1132
-
1133
- if ( ! wp_verify_nonce( $_POST['nonce'], 'bp-dismissible-notice-' . $notice_id ) ) {
1134
- wp_send_json_error();
1135
- }
1136
-
1137
- bp_update_option( "bp-dismissed-notice-$notice_id", 1 );
1138
-
1139
- wp_send_json_success();
1140
- }
1141
- add_action( 'wp_ajax_bp_dismiss_notice', 'bp_core_admin_notice_dismiss_callback' );
1142
-
1143
- /**
1144
- * Add a "buddypress" class to body element of wp-admin.
1145
- *
1146
- * @since 2.8.0
1147
- *
1148
- * @param string $classes CSS classes for the body tag in the admin, a comma separated string.
1149
- *
1150
- * @return string
1151
- */
1152
- function bp_core_admin_body_classes( $classes ) {
1153
- return $classes . ' buddypress';
1154
- }
1155
- add_filter( 'admin_body_class', 'bp_core_admin_body_classes' );
314
 
315
  // BP components cannot share a single WP page. Check for duplicate assignments, and post a message if found.
316
  $dupe_names = array();
317
+ $page_ids = (array)bp_core_get_directory_page_ids();
318
  $dupes = array_diff_assoc( $page_ids, array_unique( $page_ids ) );
319
 
320
  if ( !empty( $dupes ) ) {
804
  </ul>
805
  </div>
806
 
 
 
 
 
 
 
 
 
 
 
 
807
  <p class="button-controls">
 
 
 
 
 
 
 
 
 
 
 
808
  <span class="add-to-menu">
809
  <input type="submit"<?php if ( function_exists( 'wp_nav_menu_disabled_check' ) ) : wp_nav_menu_disabled_check( $nav_menu_selected_id ); endif; ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu', 'buddypress' ); ?>" name="add-custom-menu-item" id="submit-buddypress-menu" />
810
  <span class="spinner"></span>
1091
  </script>
1092
  <?php
1093
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/admin/bp-core-admin-schema.php CHANGED
@@ -10,6 +10,23 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * Main installer.
15
  *
@@ -76,7 +93,7 @@ function bp_core_install( $active_components = false ) {
76
  */
77
  function bp_core_install_notifications() {
78
  $sql = array();
79
- $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
80
  $bp_prefix = bp_core_get_table_prefix();
81
 
82
  $sql[] = "CREATE TABLE {$bp_prefix}bp_notifications (
@@ -117,7 +134,7 @@ function bp_core_install_notifications() {
117
  */
118
  function bp_core_install_activity_streams() {
119
  $sql = array();
120
- $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
121
  $bp_prefix = bp_core_get_table_prefix();
122
 
123
  $sql[] = "CREATE TABLE {$bp_prefix}bp_activity (
@@ -167,7 +184,7 @@ function bp_core_install_activity_streams() {
167
  */
168
  function bp_core_install_friends() {
169
  $sql = array();
170
- $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
171
  $bp_prefix = bp_core_get_table_prefix();
172
 
173
  $sql[] = "CREATE TABLE {$bp_prefix}bp_friends (
@@ -192,7 +209,7 @@ function bp_core_install_friends() {
192
  */
193
  function bp_core_install_groups() {
194
  $sql = array();
195
- $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
196
  $bp_prefix = bp_core_get_table_prefix();
197
 
198
  $sql[] = "CREATE TABLE {$bp_prefix}bp_groups (
@@ -202,12 +219,10 @@ function bp_core_install_groups() {
202
  slug varchar(200) NOT NULL,
203
  description longtext NOT NULL,
204
  status varchar(10) NOT NULL DEFAULT 'public',
205
- parent_id bigint(20) NOT NULL DEFAULT 0,
206
  enable_forum tinyint(1) NOT NULL DEFAULT '1',
207
  date_created datetime NOT NULL,
208
  KEY creator_id (creator_id),
209
- KEY status (status),
210
- KEY parent_id (parent_id)
211
  ) {$charset_collate};";
212
 
213
  $sql[] = "CREATE TABLE {$bp_prefix}bp_groups_members (
@@ -251,7 +266,7 @@ function bp_core_install_groups() {
251
  */
252
  function bp_core_install_private_messaging() {
253
  $sql = array();
254
- $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
255
  $bp_prefix = bp_core_get_table_prefix();
256
 
257
  $sql[] = "CREATE TABLE {$bp_prefix}bp_messages_messages (
@@ -310,7 +325,7 @@ function bp_core_install_extended_profiles() {
310
  global $wpdb;
311
 
312
  $sql = array();
313
- $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
314
  $bp_prefix = bp_core_get_table_prefix();
315
 
316
  // These values should only be updated if they are not already present.
@@ -395,7 +410,7 @@ function bp_core_install_extended_profiles() {
395
  */
396
  function bp_core_install_blog_tracking() {
397
  $sql = array();
398
- $charset_collate = $GLOBALS['wpdb']->get_charset_collate();
399
  $bp_prefix = bp_core_get_table_prefix();
400
 
401
  $sql[] = "CREATE TABLE {$bp_prefix}bp_user_blogs (
@@ -502,7 +517,7 @@ function bp_core_install_emails() {
502
  );
503
 
504
  $emails = bp_email_get_schema();
505
- $descriptions = bp_email_get_type_schema( 'description' );
506
 
507
  // Add these emails to the database.
508
  foreach ( $emails as $id => $email ) {
@@ -520,8 +535,6 @@ function bp_core_install_emails() {
520
  }
521
  }
522
 
523
- bp_update_option( 'bp-emails-unsubscribe-salt', base64_encode( wp_generate_password( 64, true, true ) ) );
524
-
525
  /**
526
  * Fires after BuddyPress adds the posts for its emails.
527
  *
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ /**
14
+ * Get the DB schema to use for BuddyPress components.
15
+ *
16
+ * @since 1.1.0
17
+ *
18
+ * @global $wpdb $wpdb
19
+ *
20
+ * @return string The default database character-set, if set.
21
+ */
22
+ function bp_core_set_charset() {
23
+ global $wpdb;
24
+
25
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
26
+
27
+ return !empty( $wpdb->charset ) ? "DEFAULT CHARACTER SET {$wpdb->charset}" : '';
28
+ }
29
+
30
  /**
31
  * Main installer.
32
  *
93
  */
94
  function bp_core_install_notifications() {
95
  $sql = array();
96
+ $charset_collate = bp_core_set_charset();
97
  $bp_prefix = bp_core_get_table_prefix();
98
 
99
  $sql[] = "CREATE TABLE {$bp_prefix}bp_notifications (
134
  */
135
  function bp_core_install_activity_streams() {
136
  $sql = array();
137
+ $charset_collate = bp_core_set_charset();
138
  $bp_prefix = bp_core_get_table_prefix();
139
 
140
  $sql[] = "CREATE TABLE {$bp_prefix}bp_activity (
184
  */
185
  function bp_core_install_friends() {
186
  $sql = array();
187
+ $charset_collate = bp_core_set_charset();
188
  $bp_prefix = bp_core_get_table_prefix();
189
 
190
  $sql[] = "CREATE TABLE {$bp_prefix}bp_friends (
209
  */
210
  function bp_core_install_groups() {
211
  $sql = array();
212
+ $charset_collate = bp_core_set_charset();
213
  $bp_prefix = bp_core_get_table_prefix();
214
 
215
  $sql[] = "CREATE TABLE {$bp_prefix}bp_groups (
219
  slug varchar(200) NOT NULL,
220
  description longtext NOT NULL,
221
  status varchar(10) NOT NULL DEFAULT 'public',
 
222
  enable_forum tinyint(1) NOT NULL DEFAULT '1',
223
  date_created datetime NOT NULL,
224
  KEY creator_id (creator_id),
225
+ KEY status (status)
 
226
  ) {$charset_collate};";
227
 
228
  $sql[] = "CREATE TABLE {$bp_prefix}bp_groups_members (
266
  */
267
  function bp_core_install_private_messaging() {
268
  $sql = array();
269
+ $charset_collate = bp_core_set_charset();
270
  $bp_prefix = bp_core_get_table_prefix();
271
 
272
  $sql[] = "CREATE TABLE {$bp_prefix}bp_messages_messages (
325
  global $wpdb;
326
 
327
  $sql = array();
328
+ $charset_collate = bp_core_set_charset();
329
  $bp_prefix = bp_core_get_table_prefix();
330
 
331
  // These values should only be updated if they are not already present.
410
  */
411
  function bp_core_install_blog_tracking() {
412
  $sql = array();
413
+ $charset_collate = bp_core_set_charset();
414
  $bp_prefix = bp_core_get_table_prefix();
415
 
416
  $sql[] = "CREATE TABLE {$bp_prefix}bp_user_blogs (
517
  );
518
 
519
  $emails = bp_email_get_schema();
520
+ $descriptions = bp_email_get_type_schema();
521
 
522
  // Add these emails to the database.
523
  foreach ( $emails as $id => $email ) {
535
  }
536
  }
537
 
 
 
538
  /**
539
  * Fires after BuddyPress adds the posts for its emails.
540
  *
bp-core/admin/bp-core-admin-settings.php CHANGED
@@ -47,38 +47,6 @@ function bp_admin_setting_callback_account_deletion() {
47
  <?php
48
  }
49
 
50
- /**
51
- * Form element to change the active template pack.
52
- */
53
- function bp_admin_setting_callback_theme_package_id() {
54
- $options = '';
55
-
56
- /*
57
- * Note: This should never be empty. /bp-templates/ is the
58
- * canonical backup if no other packages exist. If there's an error here,
59
- * something else is wrong.
60
- *
61
- * See BuddyPress::register_theme_packages()
62
- */
63
- foreach ( (array) buddypress()->theme_compat->packages as $id => $theme ) {
64
- $options .= sprintf(
65
- '<option value="%1$s" %2$s>%3$s</option>',
66
- esc_attr( $id ),
67
- selected( $theme->id, bp_get_theme_package_id(), false ),
68
- esc_html( $theme->name )
69
- );
70
- }
71
-
72
- if ( $options ) : ?>
73
- <select name="_bp_theme_package_id" id="_bp_theme_package_id"><?php echo $options; ?></select>
74
- <p class="description"><label for="_bp_theme_package_id"><?php esc_html_e( 'The selected Template Pack will serve all BuddyPress templates.', 'buddypress' ); ?></label></p>
75
-
76
- <?php else : ?>
77
- <p><?php esc_html_e( 'No template packages available.', 'buddypress' ); ?></p>
78
-
79
- <?php endif;
80
- }
81
-
82
  /** Activity *******************************************************************/
83
 
84
  /**
@@ -271,7 +239,7 @@ function bp_admin_setting_callback_bbpress_configuration() {
271
 
272
  <?php if ( false === $file_exists ) : ?>
273
 
274
- <a class="button" href="<?php bp_admin_url( 'admin.php?page=bb-forums-setup&repair=1' ); ?>"><?php _e( 'Repair', 'buddypress' ) ?></a>
275
  <span class="attention"><?php _e( 'File does not exist', 'buddypress' ); ?></span>
276
 
277
  <?php endif; ?>
47
  <?php
48
  }
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  /** Activity *******************************************************************/
51
 
52
  /**
239
 
240
  <?php if ( false === $file_exists ) : ?>
241
 
242
+ <a class="button" href="<?php bp_admin_url( 'admin.php?page=bb-forums-setup&repair=1' ); ?>" title="<?php esc_attr_e( 'Attempt to save a new config file.', 'buddypress' ); ?>"><?php _e( 'Repair', 'buddypress' ) ?></a>
243
  <span class="attention"><?php _e( 'File does not exist', 'buddypress' ); ?></span>
244
 
245
  <?php endif; ?>
bp-core/admin/bp-core-admin-slugs.php CHANGED
@@ -109,6 +109,7 @@ function bp_core_admin_get_static_pages() {
109
  * @todo Use settings API
110
  */
111
  function bp_core_admin_slugs_options() {
 
112
 
113
  // Get the existing WP pages
114
  $existing_pages = bp_core_get_directory_page_ids();
@@ -183,20 +184,12 @@ function bp_core_admin_slugs_options() {
183
 
184
  <h3><?php _e( 'Registration', 'buddypress' ); ?></h3>
185
 
186
- <?php if ( bp_get_signup_allowed() ) : ?>
187
- <p><?php _e( 'Associate WordPress Pages with the following BuddyPress Registration pages.', 'buddypress' ); ?></p>
188
- <?php else : ?>
189
- <?php if ( is_multisite() ) : ?>
190
- <p><?php printf( __( 'Registration is currently disabled. Before associating a page is allowed, please enable registration by selecting either the "User accounts may be registered" or "Both sites and user accounts can be registered" option on <a href="%s">this page</a>.', 'buddypress' ), network_admin_url( 'settings.php' ) ); ?></p>
191
- <?php else : ?>
192
- <p><?php printf( __( 'Registration is currently disabled. Before associating a page is allowed, please enable registration by clicking on the "Anyone can register" checkbox on <a href="%s">this page</a>.', 'buddypress' ), admin_url( 'options-general.php' ) ); ?></p>
193
- <?php endif; ?>
194
- <?php endif; ?>
195
 
196
  <table class="form-table">
197
  <tbody>
198
 
199
- <?php if ( bp_get_signup_allowed() ) : foreach ( $static_pages as $name => $label ) : ?>
200
 
201
  <tr valign="top">
202
  <th scope="row">
@@ -225,7 +218,7 @@ function bp_core_admin_slugs_options() {
225
  </td>
226
  </tr>
227
 
228
- <?php endforeach; endif; ?>
229
 
230
  <?php
231
 
109
  * @todo Use settings API
110
  */
111
  function bp_core_admin_slugs_options() {
112
+ $bp = buddypress();
113
 
114
  // Get the existing WP pages
115
  $existing_pages = bp_core_get_directory_page_ids();
184
 
185
  <h3><?php _e( 'Registration', 'buddypress' ); ?></h3>
186
 
187
+ <p><?php _e( 'Associate WordPress Pages with the following BuddyPress Registration pages.', 'buddypress' ); ?></p>
 
 
 
 
 
 
 
 
188
 
189
  <table class="form-table">
190
  <tbody>
191
 
192
+ <?php foreach ( $static_pages as $name => $label ) : ?>
193
 
194
  <tr valign="top">
195
  <th scope="row">
218
  </td>
219
  </tr>
220
 
221
+ <?php endforeach ?>
222
 
223
  <?php
224
 
bp-core/admin/bp-core-admin-tools.php CHANGED
@@ -21,33 +21,42 @@ function bp_core_admin_tools() {
21
 
22
  <h1><?php esc_html_e( 'BuddyPress Tools', 'buddypress' ) ?></h1>
23
 
24
- <p><?php esc_html_e( 'BuddyPress keeps track of various relationships between members, groups, and activity items. Occasionally these relationships become out of sync, most often after an import, update, or migration.', 'buddypress' ); ?></p>
25
- <p><?php esc_html_e( 'Use the tools below to manually recalculate these relationships.', 'buddypress' ); ?>
 
26
  </p>
27
  <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Avoid running more than one repair job at a time.', 'buddypress' ); ?></p>
28
 
29
  <form class="settings" method="post" action="">
30
-
31
- <fieldset>
32
- <legend><?php esc_html_e( 'Repair tools', 'buddypress' ) ?></legend>
33
-
34
- <div class="checkbox">
35
- <?php foreach ( bp_admin_repair_list() as $item ) : ?>
36
- <label for="<?php echo esc_attr( str_replace( '_', '-', $item[0] ) ); ?>"><input type="checkbox" class="checkbox" name="<?php echo esc_attr( $item[0] ) . '" id="' . esc_attr( str_replace( '_', '-', $item[0] ) ); ?>" value="1" /> <?php echo esc_html( $item[1] ); ?></label>
37
- <?php endforeach; ?>
38
- </div>
39
-
40
- <p class="submit">
41
- <input class="button-primary" type="submit" name="bp-tools-submit" value="<?php esc_attr_e( 'Repair Items', 'buddypress' ); ?>" />
42
- <?php wp_nonce_field( 'bp-do-counts' ); ?>
43
- </p>
44
-
 
 
 
 
 
 
 
 
 
 
 
45
  </fieldset>
46
-
47
  </form>
48
-
49
  </div>
50
-
51
  <?php
52
  }
53
 
@@ -328,7 +337,7 @@ function bp_admin_repair_last_activity() {
328
  *
329
  * @param string $message Feedback message.
330
  * @param string|bool $class Unused.
331
- * @return false|Closure
332
  */
333
  function bp_admin_tools_feedback( $message, $class = false ) {
334
  if ( is_string( $message ) ) {
@@ -357,7 +366,7 @@ function bp_admin_tools_feedback( $message, $class = false ) {
357
 
358
  $message = '<div id="message" class="' . esc_attr( $class ) . '">' . $message . '</div>';
359
  $message = str_replace( "'", "\'", $message );
360
- $lambda = function() use ( $message ) { echo $message; };
361
 
362
  add_action( bp_core_do_network_admin() ? 'network_admin_notices' : 'admin_notices', $lambda );
363
 
21
 
22
  <h1><?php esc_html_e( 'BuddyPress Tools', 'buddypress' ) ?></h1>
23
 
24
+ <p>
25
+ <?php esc_html_e( 'BuddyPress keeps track of various relationships between members, groups, and activity items. Occasionally these relationships become out of sync, most often after an import, update, or migration.', 'buddypress' ); ?>
26
+ <?php esc_html_e( 'Use the tools below to manually recalculate these relationships.', 'buddypress' ); ?>
27
  </p>
28
  <p class="description"><?php esc_html_e( 'Some of these tools create substantial database overhead. Avoid running more than one repair job at a time.', 'buddypress' ); ?></p>
29
 
30
  <form class="settings" method="post" action="">
31
+ <table class="form-table">
32
+ <tbody>
33
+ <tr valign="top">
34
+ <th scope="row"><?php esc_html_e( 'Repair tools', 'buddypress' ) ?></th>
35
+ <td>
36
+ <fieldset>
37
+ <legend class="screen-reader-text"><span><?php
38
+ /* translators: accessibility text */
39
+ esc_html_e( 'Repair', 'buddypress' );
40
+ ?></span></legend>
41
+
42
+ <?php foreach ( bp_admin_repair_list() as $item ) : ?>
43
+
44
+ <label for="<?php echo esc_attr( str_replace( '_', '-', $item[0] ) ); ?>"><input type="checkbox" class="checkbox" name="<?php echo esc_attr( $item[0] ) . '" id="' . esc_attr( str_replace( '_', '-', $item[0] ) ); ?>" value="1" /> <?php echo esc_html( $item[1] ); ?></label><br />
45
+
46
+ <?php endforeach; ?>
47
+
48
+ </fieldset>
49
+ </td>
50
+ </tr>
51
+ </tbody>
52
+ </table>
53
+
54
+ <fieldset class="submit">
55
+ <input class="button-primary" type="submit" name="bp-tools-submit" value="<?php esc_attr_e( 'Repair Items', 'buddypress' ); ?>" />
56
+ <?php wp_nonce_field( 'bp-do-counts' ); ?>
57
  </fieldset>
 
58
  </form>
 
59
  </div>
 
60
  <?php
61
  }
62
 
337
  *
338
  * @param string $message Feedback message.
339
  * @param string|bool $class Unused.
340
+ * @return bool
341
  */
342
  function bp_admin_tools_feedback( $message, $class = false ) {
343
  if ( is_string( $message ) ) {
366
 
367
  $message = '<div id="message" class="' . esc_attr( $class ) . '">' . $message . '</div>';
368
  $message = str_replace( "'", "\'", $message );
369
+ $lambda = create_function( '', "echo '$message';" );
370
 
371
  add_action( bp_core_do_network_admin() ? 'network_admin_notices' : 'admin_notices', $lambda );
372
 
bp-core/admin/css/common-rtl.css CHANGED
@@ -12,16 +12,15 @@ TABLE OF CONTENTS:
12
  1.1 Version Badge
13
  1.2 About Panel
14
  1.2.1 Headline Feature
15
- 1.2.2 Features Section
16
- 1.2.3 Changelog Section
 
17
  2.0 Dashicons
18
  2.1 Top level menus
19
  2.2 Settings - Components
20
  2.3 Tools
21
  3.0 User's Lists
22
  4.0 Emails - Edit page
23
- 5.0 Tools - BuddyPress
24
- 6.0 Plugins page
25
  ------------------------------------------------------------------------------*/
26
 
27
  /*------------------------------------------------------------------------------
@@ -34,7 +33,7 @@ TABLE OF CONTENTS:
34
  .bp-badge {
35
  color: #d84800;
36
  display: inline-block;
37
- font: 400 150px/1 dashicons !important;
38
  }
39
 
40
  .bp-badge:before {
@@ -47,15 +46,7 @@ TABLE OF CONTENTS:
47
  left: 0;
48
  }
49
 
50
- .index_page_bp-credits code,
51
- .index_page_bp-about code {
52
- background-color: #e0e0e0;
53
- color: #636363;
54
- font-size: 1em;
55
- }
56
-
57
  @media only screen and (max-width: 500px) {
58
-
59
  .about-wrap .bp-badge {
60
  position: relative;
61
  margin: 10px auto;
@@ -71,371 +62,140 @@ TABLE OF CONTENTS:
71
  /*
72
  * 1.2.1 Headline Feature
73
  */
74
- .buddypress .bp-headline-feature {
 
75
  margin-bottom: 2em;
76
- margin-top: 3em;
77
- padding: 2em 3em;
78
- }
79
-
80
- .buddypress .bp-headline {
81
- margin: 0 auto;
82
- width: 45em;
83
- }
84
-
85
- .buddypress .bp-headline span.dashicons {
86
- background-color: #f1f1f1;
87
- color: #d84800;
88
- clear: right;
89
- font-size: 100px;
90
- float: right;
91
- height: 100px;
92
- line-height: 100px;
93
- margin: 0 0 15px 15px;
94
  text-align: center;
95
- width: 100px;
96
  }
97
 
98
- .buddypress .bp-headline-feature .headline-title {
 
 
 
99
  font-size: 2.2em;
100
- font-weight: 300;
101
- line-height: 2;
102
- margin: 0 0 1em;
103
  text-align: center;
104
  }
105
 
106
- .buddypress .bp-headline-feature p {
 
107
  font-size: 1.15em;
108
- margin: 1.15em 0 0.6em auto;
109
- }
110
-
111
- /*
112
- * 1.2.2 Features Section
113
- */
114
- .buddypress .bp-features-section {
115
- border-bottom: 1px solid #ccc;
116
- clear: both;
117
- margin-bottom: 3em;
118
- margin-top: 2em;
119
- overflow: hidden;
120
- padding-bottom: 2em;
121
- }
122
-
123
- .buddypress .bp-features-section p {
124
- font-size: 14px;
125
- line-height: 1.5;
126
- }
127
-
128
- .buddypress .bp-features-section img {
129
- margin-bottom: 20px;
130
- }
131
-
132
- .buddypress .bp-features-section span.dashicons {
133
- background-color: #fff;
134
- border-radius: 50%;
135
- clear: right;
136
- color: #d84800;
137
- font-size: 50px;
138
- float: right;
139
- height: 80px;
140
- line-height: 80px;
141
- margin: 0 0 15px 15px;
142
- text-align: center;
143
- width: 80px;
144
- }
145
-
146
- .buddypress .bp-features-section .headline-title {
147
- font-size: 2em;
148
- font-weight: 300;
149
- line-height: 1.5;
150
- margin: 1em auto 2em;
151
- text-align: center;
152
  }
153
 
154
- .buddypress .bp-features-section .bp-feature-with-images {
155
- border-bottom: 1px solid #ccc;
156
- margin-bottom: 5em;
157
- padding-bottom: 2em;
158
  }
159
 
160
- .buddypress .bp-features-section .bp-feature,
161
- .buddypress .bp-features-section .bp-feature-imaged {
 
 
 
162
  float: right;
163
- margin-bottom: 3em;
164
  margin-left: 4.799999999%;
 
165
  width: 47.6%;
166
  }
167
 
168
- .buddypress .bp-features-section .bp-feature.opposite,
169
- .buddypress .bp-features-section .bp-feature-imaged.anon {
170
  margin-left: 0;
171
  }
172
 
173
- .buddypress .bp-features-section .bp-feature code {
174
- font-size: 0.95em;
175
- line-height: 1.5;
 
 
 
176
  }
177
 
178
- .buddypress .bp-feature:after {
 
179
  clear: both;
180
- content: "";
181
- margin-bottom: 2em;
 
182
  }
183
 
184
- .buddypress .bp-feature-imaged .feature-title {
185
- color: #23282d;
186
- font-size: 1.25em;
187
- margin-bottom: 0.6em;
188
  margin-top: 0;
189
  }
190
 
191
- .buddypress .bp-feature-imaged p {
192
- clear: right;
193
- font-size: 1.1em;
194
- }
195
-
196
- .buddypress .bp-feature-imaged img {
197
- clear: right;
198
  }
199
 
200
- .buddypress .bp-feature .feature-title {
 
 
201
  font-size: 1em;
202
- line-height: 1.5;
203
- margin-bottom: 0;
204
- margin-right: 110px;
205
- margin-top: 0;
206
- text-align: right;
207
- }
208
-
209
- .buddypress .bp-feature p {
210
- margin-right: 110px;
211
  }
212
 
213
  /*
214
- * 1.2.3 Changelog Section
215
  */
216
- .buddypress .bp-changelog-section {
217
- clear: both;
 
218
  margin-bottom: 3em;
219
- margin-top: 4em;
220
- padding-bottom: 0;
221
- }
222
-
223
- .buddypress .bp-changelog-section:after {
224
- clear: both;
225
- content: "";
226
- display: table;
227
  }
228
 
229
- .buddypress .bp-changelog-section .changelog-title {
230
- color: #23282d;
231
  font-size: 1.25em;
232
- line-height: 1.5;
233
- margin: 0 auto 1.5em;
234
- }
235
-
236
- .buddypress .bp-two-column div {
237
- float: right;
238
- margin-left: 4.799999999%;
239
- position: relative;
240
- width: 47.6%;
241
- }
242
-
243
- .buddypress .bp-three-column .bp-column {
244
- float: right;
245
- margin-left: 5%;
246
- position: relative;
247
- width: 29.95%;
248
- }
249
-
250
- .buddypress .bp-two-column .bp-column:nth-of-type(2n),
251
- .buddypress .bp-three-column .bp-column:nth-of-type(3n) {
252
- margin-left: 0;
253
- }
254
-
255
- .buddypress .bp-changelog {
256
- margin-bottom: 3em;
257
- }
258
-
259
- .buddypress .bp-changelog:after {
260
- clear: both;
261
- content: "";
262
- display: table;
263
- }
264
-
265
- .buddypress .bp-changelog .title {
266
- font-size: 14px;
267
- margin-bottom: 0.75em;
268
- margin-top: 0;
269
- }
270
-
271
- .buddypress .bp-changelog p {
272
- margin-bottom: 0;
273
- }
274
-
275
- .bp-changelog-url {
276
  text-align: center;
277
  }
278
 
279
- .bp-assets {
280
- clear: both;
281
- margin-bottom: 3em;
282
- }
283
-
284
  @media screen and ( max-width: 782px ) {
285
-
286
- .bp-headline-feature,
287
- .bp-features-section,
288
- .bp-changelog-section,
289
- .bp-assets {
290
- margin-right: 20px;
291
- margin-left: 20px;
292
- }
293
-
294
- .buddypress .bp-headline-feature {
295
- padding: 0;
296
- }
297
-
298
- .buddypress .bp-headline {
299
- margin: 0;
300
- width: 97%;
301
- }
302
-
303
- .buddypress .bp-features-section {
304
- clear: both;
305
- margin-bottom: 0;
306
- margin-top: 2em;
307
- padding-bottom: 2em;
308
- }
309
-
310
- .buddypress .bp-features-section .bp-feature-with-images {
311
- margin-bottom: 2em;
312
- }
313
-
314
- .buddypress .bp-features-section .headline-title {
315
- margin-bottom: 1em;
316
- }
317
-
318
- .buddypress .bp-changelog-section .changelog-title {
319
- font-size: 1.25em;
320
- line-height: 1.5;
321
- margin-bottom: 0.5em;
322
- margin-top: 0.5em;
323
- }
324
-
325
- .buddypress .bp-features-section .feature-title,
326
- .buddypress .bp-changelog-section .title {
327
- font-size: 1.25em;
328
- line-height: 1.25;
329
- margin-top: 0.6em;
330
- text-align: right;
331
- }
332
-
333
- .buddypress .bp-features-section .bp-feature,
334
- .buddypress .bp-features-section .bp-feature-imaged {
335
- clear: both;
336
- float: right;
337
- margin-bottom: 1em;
338
- margin-top: 1em;
339
- margin-left: 0;
340
- padding-left: 1em;
341
- width: 100%;
342
- }
343
-
344
- .buddypress .bp-features-section .bp-feature-imaged p {
345
- font-size: 1em;
346
- }
347
-
348
- .buddypress .bp-features-section .bp-feature span {
349
- margin-top: 0.33em;
350
- }
351
-
352
- .buddypress .bp-feature.opposite .feature-title,
353
- .buddypress .bp-feature.opposite p {
354
- float: none;
355
- }
356
-
357
- .buddypress .bp-changelog-section {
358
- clear: both;
359
- margin-bottom: 2em;
360
- margin-top: 2em;
361
- }
362
-
363
- .buddypress .bp-changelog {
364
  margin-bottom: 0;
365
  }
366
-
367
- .buddypress .bp-changelog-section .changelog-title {
368
- margin-bottom: 0.5em;
369
- }
370
-
371
- .buddypress .bp-changelog .title {
372
- font-size: 1em;
373
- }
374
-
375
- .buddypress .bp-changelog p {
376
- margin-bottom: 1em;
377
- }
378
-
379
- .buddypress .bp-changelog-section .two-col > div,
380
- .buddypress .bp-changelog-section .three-col .col {
381
  margin-top: 0;
382
- padding-bottom: 0.5em;
383
- width: 100%;
384
  }
385
-
386
- .buddypress .bp-three-column .bp-column {
 
 
 
387
  width: 100%;
388
  }
389
- }
390
-
391
- @media screen and ( max-width: 360px ) {
392
-
393
- .buddypress .bp-headline {
394
- text-align: center;
395
- }
396
-
397
- .buddypress .bp-headline span.dashicons {
398
- clear: none;
399
- font-size: 80px;
400
- float: none;
401
- height: 80px;
402
- line-height: 80px;
403
- margin: 0 auto;
404
- width: 80px;
405
- }
406
-
407
- .buddypress .bp-headline-feature .headline-title,
408
- .buddypress .bp-features-section .headline-title {
409
- font-size: 1.5em;
410
- line-height: 1.5;
411
- text-align: right;
412
- }
413
-
414
- .buddypress .bp-headline-feature .headline-title {
415
- margin: 1em 0 0;
416
- }
417
-
418
- .buddypress .bp-headline-feature p {
419
- margin: 1.15em 0 0.6em auto;
420
- text-align: right;
421
- width: auto;
422
- }
423
-
424
- .buddypress .bp-features-section .bp-feature {
425
- text-align: center;
426
- }
427
-
428
- .buddypress .bp-features-section span.dashicons {
429
- float: none;
430
  }
431
-
432
- .buddypress .bp-features-section .feature-title,
433
- .buddypress .bp-features-section p {
434
- margin-right: 0;
435
  text-align: right;
436
  }
437
  }
438
 
 
439
  /*------------------------------------------------------------------------------
440
  * 2.0 Dashicons
441
  *----------------------------------------------------------------------------*/
@@ -469,7 +229,7 @@ TABLE OF CONTENTS:
469
 
470
  #adminmenu #toplevel_page_bp-friends .wp-menu-image:before,
471
  #adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before,
472
- #adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before {
473
  content: "\f454";
474
  }
475
 
@@ -495,7 +255,7 @@ TABLE OF CONTENTS:
495
  }
496
 
497
  .settings_page_bp-components td.plugin-title span:before {
498
- font-family: dashicons;
499
  font-size: 18px;
500
  }
501
 
@@ -548,16 +308,13 @@ TABLE OF CONTENTS:
548
  }
549
 
550
  @media screen and ( max-width: 782px ) {
551
-
552
  .settings_page_bp-components td.plugin-title span {
553
  margin-top: 5px;
554
  }
555
-
556
  #bp-admin-component-form .wp-list-table.plugins .plugin-title {
557
  display: block;
558
  width: auto;
559
  }
560
-
561
  #bp-admin-component-form .subsubsub {
562
  margin-bottom: 0;
563
  padding-bottom: 35px;
@@ -603,13 +360,6 @@ body.users_page_bp-signups td.count_sent {
603
  text-align: center;
604
  }
605
 
606
- .bp-signups-list table {
607
- margin: 1em 0;
608
- }
609
-
610
- .bp-signups-list .column-fields {
611
- font-weight: 700;
612
- }
613
 
614
  /*------------------------------------------------------------------------------
615
  * 4.0 Emails - Edit Page
@@ -632,63 +382,3 @@ body.post-type-bp-email .categorydiv label {
632
  padding-right: 25px;
633
  text-indent: -25px;
634
  }
635
-
636
- /*------------------------------------------------------------------------------
637
- * 5.0 Tools - BuddyPress
638
- *----------------------------------------------------------------------------*/
639
- .tools_page_bp-tools .wrap {
640
- max-width: 950px;
641
- }
642
-
643
- .tools_page_bp-tools p {
644
- line-height: 2;
645
- }
646
-
647
- .tools_page_bp-tools fieldset {
648
- margin: 2em 0 0;
649
- }
650
-
651
- .tools_page_bp-tools legend {
652
- color: #23282d;
653
- font-size: 1.3em;
654
- font-weight: 600;
655
- margin: 1em 0;
656
- }
657
-
658
- .tools_page_bp-tools label {
659
- clear: right;
660
- display: block;
661
- line-height: 1.5;
662
- margin: 0 0 1em;
663
- vertical-align: middle;
664
- }
665
-
666
- @media screen and (max-width: 782px) {
667
-
668
- .tools_page_bp-tools p {
669
- line-height: 1.5;
670
- }
671
-
672
- .tools_page_bp-tools label {
673
- margin-bottom: 1em;
674
- padding-left: 25px;
675
- text-indent: -33px;
676
- }
677
-
678
- .tools_page_bp-tools .checkbox {
679
- padding: 0 30px 0 0;
680
- }
681
- }
682
-
683
-
684
- /*------------------------------------------------------------------------------
685
- * 6.0 Plugins page
686
- *----------------------------------------------------------------------------*/
687
- #buddypress-update.not-shiny .update-message {
688
- border-right: 0;
689
- padding-right: 36px;
690
- }
691
-
692
- #buddypress-update.not-shiny .update-message:before {
693
- content: "\f534";
694
- }
12
  1.1 Version Badge
13
  1.2 About Panel
14
  1.2.1 Headline Feature
15
+ 1.2.2 Columns
16
+ 1.2.3 Features Section
17
+ 1.2.4 Changelog Section
18
  2.0 Dashicons
19
  2.1 Top level menus
20
  2.2 Settings - Components
21
  2.3 Tools
22
  3.0 User's Lists
23
  4.0 Emails - Edit page
 
 
24
  ------------------------------------------------------------------------------*/
25
 
26
  /*------------------------------------------------------------------------------
33
  .bp-badge {
34
  color: #d84800;
35
  display: inline-block;
36
+ font: normal 150px/1 'dashicons' !important;
37
  }
38
 
39
  .bp-badge:before {
46
  left: 0;
47
  }
48
 
 
 
 
 
 
 
 
49
  @media only screen and (max-width: 500px) {
 
50
  .about-wrap .bp-badge {
51
  position: relative;
52
  margin: 10px auto;
62
  /*
63
  * 1.2.1 Headline Feature
64
  */
65
+ .index_page_bp-about .about-wrap .headline-feature,
66
+ .dashboard_page_bp-about .about-wrap .headline-feature {
67
  margin-bottom: 2em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  text-align: center;
 
69
  }
70
 
71
+ .index_page_bp-about .about-wrap .headline-feature h3,
72
+ .index_page_bp-about .headline-feature .headline-title,
73
+ .dashboard_page_bp-about .about-wrap .headline-feature h3,
74
+ .dashboard_page_bp-about .headline-feature .headline-title {
75
  font-size: 2.2em;
76
+ font-weight: normal;
77
+ line-height: 1.3;
78
+ margin: 1.25em 0 0.6em;
79
  text-align: center;
80
  }
81
 
82
+ .index_page_bp-about .about-wrap .headline-feature p,
83
+ .dashboard_page_bp-about .about-wrap .headline-feature p {
84
  font-size: 1.15em;
85
+ margin: 1.15em auto 0.6em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
+ .index_page_bp-about .about-wrap .headline-feature .introduction,
89
+ .dashboard_page_bp-about .about-wrap .headline-feature .introduction {
90
+ font-weight: 600;
 
91
  }
92
 
93
+ /*
94
+ * 1.2.2 Columns
95
+ */
96
+ .index_page_bp-about .about-wrap .two-col > div,
97
+ .dashboard_page_bp-about .about-wrap .two-col > div {
98
  float: right;
 
99
  margin-left: 4.799999999%;
100
+ position: relative;
101
  width: 47.6%;
102
  }
103
 
104
+ .index_page_bp-about .about-wrap .two-col .last-feature,
105
+ .dashboard_page_bp-about .about-wrap .two-col .last-feature {
106
  margin-left: 0;
107
  }
108
 
109
+ /*
110
+ * 1.2.3 Features Section
111
+ */
112
+ .index_page_bp-about .bp-features-section,
113
+ .dashboard_page_bp-about .bp-features-section {
114
+ margin-bottom: 2em;
115
  }
116
 
117
+ .index_page_bp-about .about-wrap .feature-section,
118
+ .dashboard_page_bp-about .about-wrap .feature-section {
119
  clear: both;
120
+ margin-top: 2em;
121
+ overflow: hidden;
122
+ padding-bottom: 0;
123
  }
124
 
125
+ .index_page_bp-about .about-wrap .changelog .feature-section,
126
+ .dashboard_page_bp-about .about-wrap .changelog .feature-section {
 
 
127
  margin-top: 0;
128
  }
129
 
130
+ .index_page_bp-about .about-wrap .feature-section h3,
131
+ .dashboard_page_bp-about .about-wrap .feature-section h3 {
132
+ font-size: 1.25em;
133
+ line-height: 1.5em;
134
+ margin: 0 0 0.6em;
 
 
135
  }
136
 
137
+ .index_page_bp-about .about-wrap .changelog h4,
138
+ .dashboard_page_bp-about .about-wrap .changelog h4 {
139
+ color: #23282d;
140
  font-size: 1em;
141
+ margin: 1.4em 0 0.6em;
 
 
 
 
 
 
 
 
142
  }
143
 
144
  /*
145
+ * 1.2.4 Changelog Section
146
  */
147
+ .index_page_bp-about .about-wrap .changelog,
148
+ .dashboard_page_bp-about .about-wrap .changelog {
149
+ border-top: 1px solid #eee;
150
  margin-bottom: 3em;
 
 
 
 
 
 
 
 
151
  }
152
 
153
+ .index_page_bp-about .about-wrap .changelog .changelog-title,
154
+ .dashboard_page_bp-about .about-wrap .changelog .changelog-title {
155
  font-size: 1.25em;
156
+ line-height: 1.5em;
157
+ margin: 1.25em 0 .6em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  text-align: center;
159
  }
160
 
 
 
 
 
 
161
  @media screen and ( max-width: 782px ) {
162
+ .index_page_bp-about .about-wrap .headline-feature,
163
+ .dashboard_page_bp-about .about-wrap .headline-feature {
164
+ max-width: 100%;
165
+ }
166
+ .index_page_bp-about .about-wrap .headline-feature h3,
167
+ .dahsboard_page_bp-about .about-wrap .headline-feature h3,
168
+ .index_page_bp-about .about-wrap .headline-feature .headline-title,
169
+ .dashboard_page_bp-about .about-wrap .headline-feature .headline-title {
170
+ font-size: 2em;
171
+ }
172
+ .index_page_bp-about .bp-features-section,
173
+ .dashboard_page_bp-about .bp-features-section {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  margin-bottom: 0;
175
  }
176
+ .index_page_bp-about .about-wrap .feature-section,
177
+ .dashboard_page_bp-about .about-wrap .feature-section {
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  margin-top: 0;
 
 
179
  }
180
+ .index_page_bp-about .about-wrap .two-col > div,
181
+ .dashboard_page_bp-about .about-wrap .two-col > div {
182
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
183
+ margin-top: 1.25em;
184
+ padding-bottom: 1em;
185
  width: 100%;
186
  }
187
+ .index_page_bp-about .changelog .two-col > div,
188
+ .dashboard_page_bp-about .changelog .two-col > div {
189
+ margin-top: 0;
190
+ padding-bottom: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  }
192
+ .index_page_bp-about .about-wrap .changelog .changelog-title,
193
+ .dashboard_page_bp-about .about-wrap .changelog .changelog-title {
 
 
194
  text-align: right;
195
  }
196
  }
197
 
198
+
199
  /*------------------------------------------------------------------------------
200
  * 2.0 Dashicons
201
  *----------------------------------------------------------------------------*/
229
 
230
  #adminmenu #toplevel_page_bp-friends .wp-menu-image:before,
231
  #adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before,
232
+ #adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before{
233
  content: "\f454";
234
  }
235
 
255
  }
256
 
257
  .settings_page_bp-components td.plugin-title span:before {
258
+ font-family: 'dashicons';
259
  font-size: 18px;
260
  }
261
 
308
  }
309
 
310
  @media screen and ( max-width: 782px ) {
 
311
  .settings_page_bp-components td.plugin-title span {
312
  margin-top: 5px;
313
  }
 
314
  #bp-admin-component-form .wp-list-table.plugins .plugin-title {
315
  display: block;
316
  width: auto;
317
  }
 
318
  #bp-admin-component-form .subsubsub {
319
  margin-bottom: 0;
320
  padding-bottom: 35px;
360
  text-align: center;
361
  }
362
 
 
 
 
 
 
 
 
363
 
364
  /*------------------------------------------------------------------------------
365
  * 4.0 Emails - Edit Page
382
  padding-right: 25px;
383
  text-indent: -25px;
384
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/admin/css/common-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.about-wrap .bp-badge{position:absolute;top:0;left:0}.index_page_bp-about code,.index_page_bp-credits code{background-color:#e0e0e0;color:#636363;font-size:1em}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;left:auto}}.buddypress .bp-headline-feature{margin-bottom:2em;margin-top:3em;padding:2em 3em}.buddypress .bp-headline{margin:0 auto;width:45em}.buddypress .bp-headline span.dashicons{background-color:#f1f1f1;color:#d84800;clear:right;font-size:100px;float:right;height:100px;line-height:100px;margin:0 0 15px 15px;text-align:center;width:100px}.buddypress .bp-headline-feature .headline-title{font-size:2.2em;font-weight:300;line-height:2;margin:0 0 1em;text-align:center}.buddypress .bp-headline-feature p{font-size:1.15em;margin:1.15em 0 .6em auto}.buddypress .bp-features-section{border-bottom:1px solid #ccc;clear:both;margin-bottom:3em;margin-top:2em;overflow:hidden;padding-bottom:2em}.buddypress .bp-features-section p{font-size:14px;line-height:1.5}.buddypress .bp-features-section img{margin-bottom:20px}.buddypress .bp-features-section span.dashicons{background-color:#fff;border-radius:50%;clear:right;color:#d84800;font-size:50px;float:right;height:80px;line-height:80px;margin:0 0 15px 15px;text-align:center;width:80px}.buddypress .bp-features-section .headline-title{font-size:2em;font-weight:300;line-height:1.5;margin:1em auto 2em;text-align:center}.buddypress .bp-features-section .bp-feature-with-images{border-bottom:1px solid #ccc;margin-bottom:5em;padding-bottom:2em}.buddypress .bp-features-section .bp-feature,.buddypress .bp-features-section .bp-feature-imaged{float:right;margin-bottom:3em;margin-left:4.799999999%;width:47.6%}.buddypress .bp-features-section .bp-feature-imaged.anon,.buddypress .bp-features-section .bp-feature.opposite{margin-left:0}.buddypress .bp-features-section .bp-feature code{font-size:.95em;line-height:1.5}.buddypress .bp-feature:after{clear:both;content:"";margin-bottom:2em}.buddypress .bp-feature-imaged .feature-title{color:#23282d;font-size:1.25em;margin-bottom:.6em;margin-top:0}.buddypress .bp-feature-imaged p{clear:right;font-size:1.1em}.buddypress .bp-feature-imaged img{clear:right}.buddypress .bp-feature .feature-title{font-size:1em;line-height:1.5;margin-bottom:0;margin-right:110px;margin-top:0;text-align:right}.buddypress .bp-feature p{margin-right:110px}.buddypress .bp-changelog-section{clear:both;margin-bottom:3em;margin-top:4em;padding-bottom:0}.buddypress .bp-changelog-section:after{clear:both;content:"";display:table}.buddypress .bp-changelog-section .changelog-title{color:#23282d;font-size:1.25em;line-height:1.5;margin:0 auto 1.5em}.buddypress .bp-two-column div{float:right;margin-left:4.799999999%;position:relative;width:47.6%}.buddypress .bp-three-column .bp-column{float:right;margin-left:5%;position:relative;width:29.95%}.buddypress .bp-three-column .bp-column:nth-of-type(3n),.buddypress .bp-two-column .bp-column:nth-of-type(2n){margin-left:0}.buddypress .bp-changelog{margin-bottom:3em}.buddypress .bp-changelog:after{clear:both;content:"";display:table}.buddypress .bp-changelog .title{font-size:14px;margin-bottom:.75em;margin-top:0}.buddypress .bp-changelog p{margin-bottom:0}.bp-changelog-url{text-align:center}.bp-assets{clear:both;margin-bottom:3em}@media screen and (max-width:782px){.bp-assets,.bp-changelog-section,.bp-features-section,.bp-headline-feature{margin-right:20px;margin-left:20px}.buddypress .bp-headline-feature{padding:0}.buddypress .bp-headline{margin:0;width:97%}.buddypress .bp-features-section{clear:both;margin-bottom:0;margin-top:2em;padding-bottom:2em}.buddypress .bp-features-section .bp-feature-with-images{margin-bottom:2em}.buddypress .bp-features-section .headline-title{margin-bottom:1em}.buddypress .bp-changelog-section .changelog-title{font-size:1.25em;line-height:1.5;margin-bottom:.5em;margin-top:.5em}.buddypress .bp-changelog-section .title,.buddypress .bp-features-section .feature-title{font-size:1.25em;line-height:1.25;margin-top:.6em;text-align:right}.buddypress .bp-features-section .bp-feature,.buddypress .bp-features-section .bp-feature-imaged{clear:both;float:right;margin-bottom:1em;margin-top:1em;margin-left:0;padding-left:1em;width:100%}.buddypress .bp-features-section .bp-feature-imaged p{font-size:1em}.buddypress .bp-features-section .bp-feature span{margin-top:.33em}.buddypress .bp-feature.opposite .feature-title,.buddypress .bp-feature.opposite p{float:none}.buddypress .bp-changelog-section{clear:both;margin-bottom:2em;margin-top:2em}.buddypress .bp-changelog{margin-bottom:0}.buddypress .bp-changelog-section .changelog-title{margin-bottom:.5em}.buddypress .bp-changelog .title{font-size:1em}.buddypress .bp-changelog p{margin-bottom:1em}.buddypress .bp-changelog-section .three-col .col,.buddypress .bp-changelog-section .two-col>div{margin-top:0;padding-bottom:.5em;width:100%}.buddypress .bp-three-column .bp-column{width:100%}}@media screen and (max-width:360px){.buddypress .bp-headline{text-align:center}.buddypress .bp-headline span.dashicons{clear:none;font-size:80px;float:none;height:80px;line-height:80px;margin:0 auto;width:80px}.buddypress .bp-features-section .headline-title,.buddypress .bp-headline-feature .headline-title{font-size:1.5em;line-height:1.5;text-align:right}.buddypress .bp-headline-feature .headline-title{margin:1em 0 0}.buddypress .bp-headline-feature p{margin:1.15em 0 .6em auto;text-align:right;width:auto}.buddypress .bp-features-section .bp-feature{text-align:center}.buddypress .bp-features-section span.dashicons{float:none}.buddypress .bp-features-section .feature-title,.buddypress .bp-features-section p{margin-right:0;text-align:right}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:right;width:18px;height:18px;margin-left:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.forums td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}.bp-signups-list table{margin:1em 0}.bp-signups-list .column-fields{font-weight:700}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email th#situation{width:20%}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:right;padding-right:25px;text-indent:-25px}.tools_page_bp-tools .wrap{max-width:950px}.tools_page_bp-tools p{line-height:2}.tools_page_bp-tools fieldset{margin:2em 0 0}.tools_page_bp-tools legend{color:#23282d;font-size:1.3em;font-weight:600;margin:1em 0}.tools_page_bp-tools label{clear:right;display:block;line-height:1.5;margin:0 0 1em;vertical-align:middle}@media screen and (max-width:782px){.tools_page_bp-tools p{line-height:1.5}.tools_page_bp-tools label{margin-bottom:1em;padding-left:25px;text-indent:-33px}.tools_page_bp-tools .checkbox{padding:0 30px 0 0}}#buddypress-update.not-shiny .update-message{border-right:0;padding-right:36px}#buddypress-update.not-shiny .update-message:before{content:"\f534"}
1
+ .bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.about-wrap .bp-badge{position:absolute;top:0;left:0}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;left:auto}}.dashboard_page_bp-about .about-wrap .headline-feature,.index_page_bp-about .about-wrap .headline-feature{margin-bottom:2em;text-align:center}.dashboard_page_bp-about .about-wrap .headline-feature h3,.dashboard_page_bp-about .headline-feature .headline-title,.index_page_bp-about .about-wrap .headline-feature h3,.index_page_bp-about .headline-feature .headline-title{font-size:2.2em;font-weight:400;line-height:1.3;margin:1.25em 0 .6em;text-align:center}.dashboard_page_bp-about .about-wrap .headline-feature p,.index_page_bp-about .about-wrap .headline-feature p{font-size:1.15em;margin:1.15em auto .6em}.dashboard_page_bp-about .about-wrap .headline-feature .introduction,.index_page_bp-about .about-wrap .headline-feature .introduction{font-weight:600}.dashboard_page_bp-about .about-wrap .two-col>div,.index_page_bp-about .about-wrap .two-col>div{float:right;margin-left:4.799999999%;position:relative;width:47.6%}.dashboard_page_bp-about .about-wrap .two-col .last-feature,.index_page_bp-about .about-wrap .two-col .last-feature{margin-left:0}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{margin-bottom:2em}.dashboard_page_bp-about .about-wrap .feature-section,.index_page_bp-about .about-wrap .feature-section{clear:both;margin-top:2em;overflow:hidden;padding-bottom:0}.dashboard_page_bp-about .about-wrap .changelog .feature-section,.index_page_bp-about .about-wrap .changelog .feature-section{margin-top:0}.dashboard_page_bp-about .about-wrap .feature-section h3,.index_page_bp-about .about-wrap .feature-section h3{font-size:1.25em;line-height:1.5em;margin:0 0 .6em}.dashboard_page_bp-about .about-wrap .changelog h4,.index_page_bp-about .about-wrap .changelog h4{color:#23282d;font-size:1em;margin:1.4em 0 .6em}.dashboard_page_bp-about .about-wrap .changelog,.index_page_bp-about .about-wrap .changelog{border-top:1px solid #eee;margin-bottom:3em}.dashboard_page_bp-about .about-wrap .changelog .changelog-title,.index_page_bp-about .about-wrap .changelog .changelog-title{font-size:1.25em;line-height:1.5em;margin:1.25em 0 .6em;text-align:center}@media screen and (max-width:782px){.dashboard_page_bp-about .about-wrap .headline-feature,.index_page_bp-about .about-wrap .headline-feature{max-width:100%}.dahsboard_page_bp-about .about-wrap .headline-feature h3,.dashboard_page_bp-about .about-wrap .headline-feature .headline-title,.index_page_bp-about .about-wrap .headline-feature .headline-title,.index_page_bp-about .about-wrap .headline-feature h3{font-size:2em}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{margin-bottom:0}.dashboard_page_bp-about .about-wrap .feature-section,.index_page_bp-about .about-wrap .feature-section{margin-top:0}.dashboard_page_bp-about .about-wrap .two-col>div,.index_page_bp-about .about-wrap .two-col>div{border-bottom:1px solid rgba(0,0,0,.1);margin-top:1.25em;padding-bottom:1em;width:100%}.dashboard_page_bp-about .changelog .two-col>div,.index_page_bp-about .changelog .two-col>div{margin-top:0;padding-bottom:0}.dashboard_page_bp-about .about-wrap .changelog .changelog-title,.index_page_bp-about .about-wrap .changelog .changelog-title{text-align:right}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:right;width:18px;height:18px;margin-left:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.forums td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.post-type-bp-email th#situation,body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:right;padding-right:25px;text-indent:-25px}
bp-core/admin/css/common.css CHANGED
@@ -12,16 +12,15 @@ TABLE OF CONTENTS:
12
  1.1 Version Badge
13
  1.2 About Panel
14
  1.2.1 Headline Feature
15
- 1.2.2 Features Section
16
- 1.2.3 Changelog Section
 
17
  2.0 Dashicons
18
  2.1 Top level menus
19
  2.2 Settings - Components
20
  2.3 Tools
21
  3.0 User's Lists
22
  4.0 Emails - Edit page
23
- 5.0 Tools - BuddyPress
24
- 6.0 Plugins page
25
  ------------------------------------------------------------------------------*/
26
 
27
  /*------------------------------------------------------------------------------
@@ -34,7 +33,7 @@ TABLE OF CONTENTS:
34
  .bp-badge {
35
  color: #d84800;
36
  display: inline-block;
37
- font: 400 150px/1 dashicons !important;
38
  }
39
 
40
  .bp-badge:before {
@@ -47,15 +46,7 @@ TABLE OF CONTENTS:
47
  right: 0;
48
  }
49
 
50
- .index_page_bp-credits code,
51
- .index_page_bp-about code {
52
- background-color: #e0e0e0;
53
- color: #636363;
54
- font-size: 1em;
55
- }
56
-
57
  @media only screen and (max-width: 500px) {
58
-
59
  .about-wrap .bp-badge {
60
  position: relative;
61
  margin: 10px auto;
@@ -71,371 +62,140 @@ TABLE OF CONTENTS:
71
  /*
72
  * 1.2.1 Headline Feature
73
  */
74
- .buddypress .bp-headline-feature {
 
75
  margin-bottom: 2em;
76
- margin-top: 3em;
77
- padding: 2em 3em;
78
- }
79
-
80
- .buddypress .bp-headline {
81
- margin: 0 auto;
82
- width: 45em;
83
- }
84
-
85
- .buddypress .bp-headline span.dashicons {
86
- background-color: #f1f1f1;
87
- color: #d84800;
88
- clear: left;
89
- font-size: 100px;
90
- float: left;
91
- height: 100px;
92
- line-height: 100px;
93
- margin: 0 15px 15px 0;
94
  text-align: center;
95
- width: 100px;
96
  }
97
 
98
- .buddypress .bp-headline-feature .headline-title {
 
 
 
99
  font-size: 2.2em;
100
- font-weight: 300;
101
- line-height: 2;
102
- margin: 0 0 1em;
103
  text-align: center;
104
  }
105
 
106
- .buddypress .bp-headline-feature p {
 
107
  font-size: 1.15em;
108
- margin: 1.15em auto 0.6em 0;
109
- }
110
-
111
- /*
112
- * 1.2.2 Features Section
113
- */
114
- .buddypress .bp-features-section {
115
- border-bottom: 1px solid #ccc;
116
- clear: both;
117
- margin-bottom: 3em;
118
- margin-top: 2em;
119
- overflow: hidden;
120
- padding-bottom: 2em;
121
- }
122
-
123
- .buddypress .bp-features-section p {
124
- font-size: 14px;
125
- line-height: 1.5;
126
- }
127
-
128
- .buddypress .bp-features-section img {
129
- margin-bottom: 20px;
130
- }
131
-
132
- .buddypress .bp-features-section span.dashicons {
133
- background-color: #fff;
134
- border-radius: 50%;
135
- clear: left;
136
- color: #d84800;
137
- font-size: 50px;
138
- float: left;
139
- height: 80px;
140
- line-height: 80px;
141
- margin: 0 15px 15px 0;
142
- text-align: center;
143
- width: 80px;
144
- }
145
-
146
- .buddypress .bp-features-section .headline-title {
147
- font-size: 2em;
148
- font-weight: 300;
149
- line-height: 1.5;
150
- margin: 1em auto 2em;
151
- text-align: center;
152
  }
153
 
154
- .buddypress .bp-features-section .bp-feature-with-images {
155
- border-bottom: 1px solid #ccc;
156
- margin-bottom: 5em;
157
- padding-bottom: 2em;
158
  }
159
 
160
- .buddypress .bp-features-section .bp-feature,
161
- .buddypress .bp-features-section .bp-feature-imaged {
 
 
 
162
  float: left;
163
- margin-bottom: 3em;
164
  margin-right: 4.799999999%;
 
165
  width: 47.6%;
166
  }
167
 
168
- .buddypress .bp-features-section .bp-feature.opposite,
169
- .buddypress .bp-features-section .bp-feature-imaged.anon {
170
  margin-right: 0;
171
  }
172
 
173
- .buddypress .bp-features-section .bp-feature code {
174
- font-size: 0.95em;
175
- line-height: 1.5;
 
 
 
176
  }
177
 
178
- .buddypress .bp-feature:after {
 
179
  clear: both;
180
- content: "";
181
- margin-bottom: 2em;
 
182
  }
183
 
184
- .buddypress .bp-feature-imaged .feature-title {
185
- color: #23282d;
186
- font-size: 1.25em;
187
- margin-bottom: 0.6em;
188
  margin-top: 0;
189
  }
190
 
191
- .buddypress .bp-feature-imaged p {
192
- clear: left;
193
- font-size: 1.1em;
194
- }
195
-
196
- .buddypress .bp-feature-imaged img {
197
- clear: left;
198
  }
199
 
200
- .buddypress .bp-feature .feature-title {
 
 
201
  font-size: 1em;
202
- line-height: 1.5;
203
- margin-bottom: 0;
204
- margin-left: 110px;
205
- margin-top: 0;
206
- text-align: left;
207
- }
208
-
209
- .buddypress .bp-feature p {
210
- margin-left: 110px;
211
  }
212
 
213
  /*
214
- * 1.2.3 Changelog Section
215
  */
216
- .buddypress .bp-changelog-section {
217
- clear: both;
 
218
  margin-bottom: 3em;
219
- margin-top: 4em;
220
- padding-bottom: 0;
221
- }
222
-
223
- .buddypress .bp-changelog-section:after {
224
- clear: both;
225
- content: "";
226
- display: table;
227
  }
228
 
229
- .buddypress .bp-changelog-section .changelog-title {
230
- color: #23282d;
231
  font-size: 1.25em;
232
- line-height: 1.5;
233
- margin: 0 auto 1.5em;
234
- }
235
-
236
- .buddypress .bp-two-column div {
237
- float: left;
238
- margin-right: 4.799999999%;
239
- position: relative;
240
- width: 47.6%;
241
- }
242
-
243
- .buddypress .bp-three-column .bp-column {
244
- float: left;
245
- margin-right: 5%;
246
- position: relative;
247
- width: 29.95%;
248
- }
249
-
250
- .buddypress .bp-two-column .bp-column:nth-of-type(2n),
251
- .buddypress .bp-three-column .bp-column:nth-of-type(3n) {
252
- margin-right: 0;
253
- }
254
-
255
- .buddypress .bp-changelog {
256
- margin-bottom: 3em;
257
- }
258
-
259
- .buddypress .bp-changelog:after {
260
- clear: both;
261
- content: "";
262
- display: table;
263
- }
264
-
265
- .buddypress .bp-changelog .title {
266
- font-size: 14px;
267
- margin-bottom: 0.75em;
268
- margin-top: 0;
269
- }
270
-
271
- .buddypress .bp-changelog p {
272
- margin-bottom: 0;
273
- }
274
-
275
- .bp-changelog-url {
276
  text-align: center;
277
  }
278
 
279
- .bp-assets {
280
- clear: both;
281
- margin-bottom: 3em;
282
- }
283
-
284
  @media screen and ( max-width: 782px ) {
285
-
286
- .bp-headline-feature,
287
- .bp-features-section,
288
- .bp-changelog-section,
289
- .bp-assets {
290
- margin-left: 20px;
291
- margin-right: 20px;
292
- }
293
-
294
- .buddypress .bp-headline-feature {
295
- padding: 0;
296
- }
297
-
298
- .buddypress .bp-headline {
299
- margin: 0;
300
- width: 97%;
301
- }
302
-
303
- .buddypress .bp-features-section {
304
- clear: both;
305
- margin-bottom: 0;
306
- margin-top: 2em;
307
- padding-bottom: 2em;
308
- }
309
-
310
- .buddypress .bp-features-section .bp-feature-with-images {
311
- margin-bottom: 2em;
312
- }
313
-
314
- .buddypress .bp-features-section .headline-title {
315
- margin-bottom: 1em;
316
- }
317
-
318
- .buddypress .bp-changelog-section .changelog-title {
319
- font-size: 1.25em;
320
- line-height: 1.5;
321
- margin-bottom: 0.5em;
322
- margin-top: 0.5em;
323
- }
324
-
325
- .buddypress .bp-features-section .feature-title,
326
- .buddypress .bp-changelog-section .title {
327
- font-size: 1.25em;
328
- line-height: 1.25;
329
- margin-top: 0.6em;
330
- text-align: left;
331
- }
332
-
333
- .buddypress .bp-features-section .bp-feature,
334
- .buddypress .bp-features-section .bp-feature-imaged {
335
- clear: both;
336
- float: left;
337
- margin-bottom: 1em;
338
- margin-top: 1em;
339
- margin-right: 0;
340
- padding-right: 1em;
341
- width: 100%;
342
- }
343
-
344
- .buddypress .bp-features-section .bp-feature-imaged p {
345
- font-size: 1em;
346
- }
347
-
348
- .buddypress .bp-features-section .bp-feature span {
349
- margin-top: 0.33em;
350
- }
351
-
352
- .buddypress .bp-feature.opposite .feature-title,
353
- .buddypress .bp-feature.opposite p {
354
- float: none;
355
- }
356
-
357
- .buddypress .bp-changelog-section {
358
- clear: both;
359
- margin-bottom: 2em;
360
- margin-top: 2em;
361
- }
362
-
363
- .buddypress .bp-changelog {
364
  margin-bottom: 0;
365
  }
366
-
367
- .buddypress .bp-changelog-section .changelog-title {
368
- margin-bottom: 0.5em;
369
- }
370
-
371
- .buddypress .bp-changelog .title {
372
- font-size: 1em;
373
- }
374
-
375
- .buddypress .bp-changelog p {
376
- margin-bottom: 1em;
377
- }
378
-
379
- .buddypress .bp-changelog-section .two-col > div,
380
- .buddypress .bp-changelog-section .three-col .col {
381
  margin-top: 0;
382
- padding-bottom: 0.5em;
383
- width: 100%;
384
  }
385
-
386
- .buddypress .bp-three-column .bp-column {
 
 
 
387
  width: 100%;
388
  }
389
- }
390
-
391
- @media screen and ( max-width: 360px ) {
392
-
393
- .buddypress .bp-headline {
394
- text-align: center;
395
- }
396
-
397
- .buddypress .bp-headline span.dashicons {
398
- clear: none;
399
- font-size: 80px;
400
- float: none;
401
- height: 80px;
402
- line-height: 80px;
403
- margin: 0 auto;
404
- width: 80px;
405
- }
406
-
407
- .buddypress .bp-headline-feature .headline-title,
408
- .buddypress .bp-features-section .headline-title {
409
- font-size: 1.5em;
410
- line-height: 1.5;
411
- text-align: left;
412
- }
413
-
414
- .buddypress .bp-headline-feature .headline-title {
415
- margin: 1em 0 0;
416
- }
417
-
418
- .buddypress .bp-headline-feature p {
419
- margin: 1.15em auto 0.6em 0;
420
- text-align: left;
421
- width: auto;
422
- }
423
-
424
- .buddypress .bp-features-section .bp-feature {
425
- text-align: center;
426
- }
427
-
428
- .buddypress .bp-features-section span.dashicons {
429
- float: none;
430
  }
431
-
432
- .buddypress .bp-features-section .feature-title,
433
- .buddypress .bp-features-section p {
434
- margin-left: 0;
435
  text-align: left;
436
  }
437
  }
438
 
 
439
  /*------------------------------------------------------------------------------
440
  * 2.0 Dashicons
441
  *----------------------------------------------------------------------------*/
@@ -469,7 +229,7 @@ TABLE OF CONTENTS:
469
 
470
  #adminmenu #toplevel_page_bp-friends .wp-menu-image:before,
471
  #adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before,
472
- #adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before {
473
  content: "\f454";
474
  }
475
 
@@ -495,7 +255,7 @@ TABLE OF CONTENTS:
495
  }
496
 
497
  .settings_page_bp-components td.plugin-title span:before {
498
- font-family: dashicons;
499
  font-size: 18px;
500
  }
501
 
@@ -548,16 +308,13 @@ TABLE OF CONTENTS:
548
  }
549
 
550
  @media screen and ( max-width: 782px ) {
551
-
552
  .settings_page_bp-components td.plugin-title span {
553
  margin-top: 5px;
554
  }
555
-
556
  #bp-admin-component-form .wp-list-table.plugins .plugin-title {
557
  display: block;
558
  width: auto;
559
  }
560
-
561
  #bp-admin-component-form .subsubsub {
562
  margin-bottom: 0;
563
  padding-bottom: 35px;
@@ -603,13 +360,6 @@ body.users_page_bp-signups td.count_sent {
603
  text-align: center;
604
  }
605
 
606
- .bp-signups-list table {
607
- margin: 1em 0;
608
- }
609
-
610
- .bp-signups-list .column-fields {
611
- font-weight: 700;
612
- }
613
 
614
  /*------------------------------------------------------------------------------
615
  * 4.0 Emails - Edit Page
@@ -632,63 +382,3 @@ body.post-type-bp-email .categorydiv label {
632
  padding-left: 25px;
633
  text-indent: -25px;
634
  }
635
-
636
- /*------------------------------------------------------------------------------
637
- * 5.0 Tools - BuddyPress
638
- *----------------------------------------------------------------------------*/
639
- .tools_page_bp-tools .wrap {
640
- max-width: 950px;
641
- }
642
-
643
- .tools_page_bp-tools p {
644
- line-height: 2;
645
- }
646
-
647
- .tools_page_bp-tools fieldset {
648
- margin: 2em 0 0;
649
- }
650
-
651
- .tools_page_bp-tools legend {
652
- color: #23282d;
653
- font-size: 1.3em;
654
- font-weight: 600;
655
- margin: 1em 0;
656
- }
657
-
658
- .tools_page_bp-tools label {
659
- clear: left;
660
- display: block;
661
- line-height: 1.5;
662
- margin: 0 0 1em;
663
- vertical-align: middle;
664
- }
665
-
666
- @media screen and (max-width: 782px) {
667
-
668
- .tools_page_bp-tools p {
669
- line-height: 1.5;
670
- }
671
-
672
- .tools_page_bp-tools label {
673
- margin-bottom: 1em;
674
- padding-right: 25px;
675
- text-indent: -33px;
676
- }
677
-
678
- .tools_page_bp-tools .checkbox {
679
- padding: 0 0 0 30px;
680
- }
681
- }
682
-
683
-
684
- /*------------------------------------------------------------------------------
685
- * 6.0 Plugins page
686
- *----------------------------------------------------------------------------*/
687
- #buddypress-update.not-shiny .update-message {
688
- border-left: 0;
689
- padding-left: 36px;
690
- }
691
-
692
- #buddypress-update.not-shiny .update-message:before {
693
- content: "\f534";
694
- }
12
  1.1 Version Badge
13
  1.2 About Panel
14
  1.2.1 Headline Feature
15
+ 1.2.2 Columns
16
+ 1.2.3 Features Section
17
+ 1.2.4 Changelog Section
18
  2.0 Dashicons
19
  2.1 Top level menus
20
  2.2 Settings - Components
21
  2.3 Tools
22
  3.0 User's Lists
23
  4.0 Emails - Edit page
 
 
24
  ------------------------------------------------------------------------------*/
25
 
26
  /*------------------------------------------------------------------------------
33
  .bp-badge {
34
  color: #d84800;
35
  display: inline-block;
36
+ font: normal 150px/1 'dashicons' !important;
37
  }
38
 
39
  .bp-badge:before {
46
  right: 0;
47
  }
48
 
 
 
 
 
 
 
 
49
  @media only screen and (max-width: 500px) {
 
50
  .about-wrap .bp-badge {
51
  position: relative;
52
  margin: 10px auto;
62
  /*
63
  * 1.2.1 Headline Feature
64
  */
65
+ .index_page_bp-about .about-wrap .headline-feature,
66
+ .dashboard_page_bp-about .about-wrap .headline-feature {
67
  margin-bottom: 2em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  text-align: center;
 
69
  }
70
 
71
+ .index_page_bp-about .about-wrap .headline-feature h3,
72
+ .index_page_bp-about .headline-feature .headline-title,
73
+ .dashboard_page_bp-about .about-wrap .headline-feature h3,
74
+ .dashboard_page_bp-about .headline-feature .headline-title {
75
  font-size: 2.2em;
76
+ font-weight: normal;
77
+ line-height: 1.3;
78
+ margin: 1.25em 0 0.6em;
79
  text-align: center;
80
  }
81
 
82
+ .index_page_bp-about .about-wrap .headline-feature p,
83
+ .dashboard_page_bp-about .about-wrap .headline-feature p {
84
  font-size: 1.15em;
85
+ margin: 1.15em auto 0.6em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
+ .index_page_bp-about .about-wrap .headline-feature .introduction,
89
+ .dashboard_page_bp-about .about-wrap .headline-feature .introduction {
90
+ font-weight: 600;
 
91
  }
92
 
93
+ /*
94
+ * 1.2.2 Columns
95
+ */
96
+ .index_page_bp-about .about-wrap .two-col > div,
97
+ .dashboard_page_bp-about .about-wrap .two-col > div {
98
  float: left;
 
99
  margin-right: 4.799999999%;
100
+ position: relative;
101
  width: 47.6%;
102
  }
103
 
104
+ .index_page_bp-about .about-wrap .two-col .last-feature,
105
+ .dashboard_page_bp-about .about-wrap .two-col .last-feature {
106
  margin-right: 0;
107
  }
108
 
109
+ /*
110
+ * 1.2.3 Features Section
111
+ */
112
+ .index_page_bp-about .bp-features-section,
113
+ .dashboard_page_bp-about .bp-features-section {
114
+ margin-bottom: 2em;
115
  }
116
 
117
+ .index_page_bp-about .about-wrap .feature-section,
118
+ .dashboard_page_bp-about .about-wrap .feature-section {
119
  clear: both;
120
+ margin-top: 2em;
121
+ overflow: hidden;
122
+ padding-bottom: 0;
123
  }
124
 
125
+ .index_page_bp-about .about-wrap .changelog .feature-section,
126
+ .dashboard_page_bp-about .about-wrap .changelog .feature-section {
 
 
127
  margin-top: 0;
128
  }
129
 
130
+ .index_page_bp-about .about-wrap .feature-section h3,
131
+ .dashboard_page_bp-about .about-wrap .feature-section h3 {
132
+ font-size: 1.25em;
133
+ line-height: 1.5em;
134
+ margin: 0 0 0.6em;
 
 
135
  }
136
 
137
+ .index_page_bp-about .about-wrap .changelog h4,
138
+ .dashboard_page_bp-about .about-wrap .changelog h4 {
139
+ color: #23282d;
140
  font-size: 1em;
141
+ margin: 1.4em 0 0.6em;
 
 
 
 
 
 
 
 
142
  }
143
 
144
  /*
145
+ * 1.2.4 Changelog Section
146
  */
147
+ .index_page_bp-about .about-wrap .changelog,
148
+ .dashboard_page_bp-about .about-wrap .changelog {
149
+ border-top: 1px solid #eee;
150
  margin-bottom: 3em;
 
 
 
 
 
 
 
 
151
  }
152
 
153
+ .index_page_bp-about .about-wrap .changelog .changelog-title,
154
+ .dashboard_page_bp-about .about-wrap .changelog .changelog-title {
155
  font-size: 1.25em;
156
+ line-height: 1.5em;
157
+ margin: 1.25em 0 .6em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  text-align: center;
159
  }
160
 
 
 
 
 
 
161
  @media screen and ( max-width: 782px ) {
162
+ .index_page_bp-about .about-wrap .headline-feature,
163
+ .dashboard_page_bp-about .about-wrap .headline-feature {
164
+ max-width: 100%;
165
+ }
166
+ .index_page_bp-about .about-wrap .headline-feature h3,
167
+ .dahsboard_page_bp-about .about-wrap .headline-feature h3,
168
+ .index_page_bp-about .about-wrap .headline-feature .headline-title,
169
+ .dashboard_page_bp-about .about-wrap .headline-feature .headline-title {
170
+ font-size: 2em;
171
+ }
172
+ .index_page_bp-about .bp-features-section,
173
+ .dashboard_page_bp-about .bp-features-section {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  margin-bottom: 0;
175
  }
176
+ .index_page_bp-about .about-wrap .feature-section,
177
+ .dashboard_page_bp-about .about-wrap .feature-section {
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  margin-top: 0;
 
 
179
  }
180
+ .index_page_bp-about .about-wrap .two-col > div,
181
+ .dashboard_page_bp-about .about-wrap .two-col > div {
182
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
183
+ margin-top: 1.25em;
184
+ padding-bottom: 1em;
185
  width: 100%;
186
  }
187
+ .index_page_bp-about .changelog .two-col > div,
188
+ .dashboard_page_bp-about .changelog .two-col > div {
189
+ margin-top: 0;
190
+ padding-bottom: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  }
192
+ .index_page_bp-about .about-wrap .changelog .changelog-title,
193
+ .dashboard_page_bp-about .about-wrap .changelog .changelog-title {
 
 
194
  text-align: left;
195
  }
196
  }
197
 
198
+
199
  /*------------------------------------------------------------------------------
200
  * 2.0 Dashicons
201
  *----------------------------------------------------------------------------*/
229
 
230
  #adminmenu #toplevel_page_bp-friends .wp-menu-image:before,
231
  #adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before,
232
+ #adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before{
233
  content: "\f454";
234
  }
235
 
255
  }
256
 
257
  .settings_page_bp-components td.plugin-title span:before {
258
+ font-family: 'dashicons';
259
  font-size: 18px;
260
  }
261
 
308
  }
309
 
310
  @media screen and ( max-width: 782px ) {
 
311
  .settings_page_bp-components td.plugin-title span {
312
  margin-top: 5px;
313
  }
 
314
  #bp-admin-component-form .wp-list-table.plugins .plugin-title {
315
  display: block;
316
  width: auto;
317
  }
 
318
  #bp-admin-component-form .subsubsub {
319
  margin-bottom: 0;
320
  padding-bottom: 35px;
360
  text-align: center;
361
  }
362
 
 
 
 
 
 
 
 
363
 
364
  /*------------------------------------------------------------------------------
365
  * 4.0 Emails - Edit Page
382
  padding-left: 25px;
383
  text-indent: -25px;
384
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/admin/css/common.min.css CHANGED
@@ -1 +1 @@
1
- .bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.about-wrap .bp-badge{position:absolute;top:0;right:0}.index_page_bp-about code,.index_page_bp-credits code{background-color:#e0e0e0;color:#636363;font-size:1em}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;right:auto}}.buddypress .bp-headline-feature{margin-bottom:2em;margin-top:3em;padding:2em 3em}.buddypress .bp-headline{margin:0 auto;width:45em}.buddypress .bp-headline span.dashicons{background-color:#f1f1f1;color:#d84800;clear:left;font-size:100px;float:left;height:100px;line-height:100px;margin:0 15px 15px 0;text-align:center;width:100px}.buddypress .bp-headline-feature .headline-title{font-size:2.2em;font-weight:300;line-height:2;margin:0 0 1em;text-align:center}.buddypress .bp-headline-feature p{font-size:1.15em;margin:1.15em auto .6em 0}.buddypress .bp-features-section{border-bottom:1px solid #ccc;clear:both;margin-bottom:3em;margin-top:2em;overflow:hidden;padding-bottom:2em}.buddypress .bp-features-section p{font-size:14px;line-height:1.5}.buddypress .bp-features-section img{margin-bottom:20px}.buddypress .bp-features-section span.dashicons{background-color:#fff;border-radius:50%;clear:left;color:#d84800;font-size:50px;float:left;height:80px;line-height:80px;margin:0 15px 15px 0;text-align:center;width:80px}.buddypress .bp-features-section .headline-title{font-size:2em;font-weight:300;line-height:1.5;margin:1em auto 2em;text-align:center}.buddypress .bp-features-section .bp-feature-with-images{border-bottom:1px solid #ccc;margin-bottom:5em;padding-bottom:2em}.buddypress .bp-features-section .bp-feature,.buddypress .bp-features-section .bp-feature-imaged{float:left;margin-bottom:3em;margin-right:4.799999999%;width:47.6%}.buddypress .bp-features-section .bp-feature-imaged.anon,.buddypress .bp-features-section .bp-feature.opposite{margin-right:0}.buddypress .bp-features-section .bp-feature code{font-size:.95em;line-height:1.5}.buddypress .bp-feature:after{clear:both;content:"";margin-bottom:2em}.buddypress .bp-feature-imaged .feature-title{color:#23282d;font-size:1.25em;margin-bottom:.6em;margin-top:0}.buddypress .bp-feature-imaged p{clear:left;font-size:1.1em}.buddypress .bp-feature-imaged img{clear:left}.buddypress .bp-feature .feature-title{font-size:1em;line-height:1.5;margin-bottom:0;margin-left:110px;margin-top:0;text-align:left}.buddypress .bp-feature p{margin-left:110px}.buddypress .bp-changelog-section{clear:both;margin-bottom:3em;margin-top:4em;padding-bottom:0}.buddypress .bp-changelog-section:after{clear:both;content:"";display:table}.buddypress .bp-changelog-section .changelog-title{color:#23282d;font-size:1.25em;line-height:1.5;margin:0 auto 1.5em}.buddypress .bp-two-column div{float:left;margin-right:4.799999999%;position:relative;width:47.6%}.buddypress .bp-three-column .bp-column{float:left;margin-right:5%;position:relative;width:29.95%}.buddypress .bp-three-column .bp-column:nth-of-type(3n),.buddypress .bp-two-column .bp-column:nth-of-type(2n){margin-right:0}.buddypress .bp-changelog{margin-bottom:3em}.buddypress .bp-changelog:after{clear:both;content:"";display:table}.buddypress .bp-changelog .title{font-size:14px;margin-bottom:.75em;margin-top:0}.buddypress .bp-changelog p{margin-bottom:0}.bp-changelog-url{text-align:center}.bp-assets{clear:both;margin-bottom:3em}@media screen and (max-width:782px){.bp-assets,.bp-changelog-section,.bp-features-section,.bp-headline-feature{margin-left:20px;margin-right:20px}.buddypress .bp-headline-feature{padding:0}.buddypress .bp-headline{margin:0;width:97%}.buddypress .bp-features-section{clear:both;margin-bottom:0;margin-top:2em;padding-bottom:2em}.buddypress .bp-features-section .bp-feature-with-images{margin-bottom:2em}.buddypress .bp-features-section .headline-title{margin-bottom:1em}.buddypress .bp-changelog-section .changelog-title{font-size:1.25em;line-height:1.5;margin-bottom:.5em;margin-top:.5em}.buddypress .bp-changelog-section .title,.buddypress .bp-features-section .feature-title{font-size:1.25em;line-height:1.25;margin-top:.6em;text-align:left}.buddypress .bp-features-section .bp-feature,.buddypress .bp-features-section .bp-feature-imaged{clear:both;float:left;margin-bottom:1em;margin-top:1em;margin-right:0;padding-right:1em;width:100%}.buddypress .bp-features-section .bp-feature-imaged p{font-size:1em}.buddypress .bp-features-section .bp-feature span{margin-top:.33em}.buddypress .bp-feature.opposite .feature-title,.buddypress .bp-feature.opposite p{float:none}.buddypress .bp-changelog-section{clear:both;margin-bottom:2em;margin-top:2em}.buddypress .bp-changelog{margin-bottom:0}.buddypress .bp-changelog-section .changelog-title{margin-bottom:.5em}.buddypress .bp-changelog .title{font-size:1em}.buddypress .bp-changelog p{margin-bottom:1em}.buddypress .bp-changelog-section .three-col .col,.buddypress .bp-changelog-section .two-col>div{margin-top:0;padding-bottom:.5em;width:100%}.buddypress .bp-three-column .bp-column{width:100%}}@media screen and (max-width:360px){.buddypress .bp-headline{text-align:center}.buddypress .bp-headline span.dashicons{clear:none;font-size:80px;float:none;height:80px;line-height:80px;margin:0 auto;width:80px}.buddypress .bp-features-section .headline-title,.buddypress .bp-headline-feature .headline-title{font-size:1.5em;line-height:1.5;text-align:left}.buddypress .bp-headline-feature .headline-title{margin:1em 0 0}.buddypress .bp-headline-feature p{margin:1.15em auto .6em 0;text-align:left;width:auto}.buddypress .bp-features-section .bp-feature{text-align:center}.buddypress .bp-features-section span.dashicons{float:none}.buddypress .bp-features-section .feature-title,.buddypress .bp-features-section p{margin-left:0;text-align:left}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:left;width:18px;height:18px;margin-right:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.forums td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}.bp-signups-list table{margin:1em 0}.bp-signups-list .column-fields{font-weight:700}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email th#situation{width:20%}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:left;padding-left:25px;text-indent:-25px}.tools_page_bp-tools .wrap{max-width:950px}.tools_page_bp-tools p{line-height:2}.tools_page_bp-tools fieldset{margin:2em 0 0}.tools_page_bp-tools legend{color:#23282d;font-size:1.3em;font-weight:600;margin:1em 0}.tools_page_bp-tools label{clear:left;display:block;line-height:1.5;margin:0 0 1em;vertical-align:middle}@media screen and (max-width:782px){.tools_page_bp-tools p{line-height:1.5}.tools_page_bp-tools label{margin-bottom:1em;padding-right:25px;text-indent:-33px}.tools_page_bp-tools .checkbox{padding:0 0 0 30px}}#buddypress-update.not-shiny .update-message{border-left:0;padding-left:36px}#buddypress-update.not-shiny .update-message:before{content:"\f534"}
1
+ .bp-badge{color:#d84800;display:inline-block;font:400 150px/1 dashicons!important}.bp-badge:before{content:"\f448"}.about-wrap .bp-badge{position:absolute;top:0;right:0}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;right:auto}}.dashboard_page_bp-about .about-wrap .headline-feature,.index_page_bp-about .about-wrap .headline-feature{margin-bottom:2em;text-align:center}.dashboard_page_bp-about .about-wrap .headline-feature h3,.dashboard_page_bp-about .headline-feature .headline-title,.index_page_bp-about .about-wrap .headline-feature h3,.index_page_bp-about .headline-feature .headline-title{font-size:2.2em;font-weight:400;line-height:1.3;margin:1.25em 0 .6em;text-align:center}.dashboard_page_bp-about .about-wrap .headline-feature p,.index_page_bp-about .about-wrap .headline-feature p{font-size:1.15em;margin:1.15em auto .6em}.dashboard_page_bp-about .about-wrap .headline-feature .introduction,.index_page_bp-about .about-wrap .headline-feature .introduction{font-weight:600}.dashboard_page_bp-about .about-wrap .two-col>div,.index_page_bp-about .about-wrap .two-col>div{float:left;margin-right:4.799999999%;position:relative;width:47.6%}.dashboard_page_bp-about .about-wrap .two-col .last-feature,.index_page_bp-about .about-wrap .two-col .last-feature{margin-right:0}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{margin-bottom:2em}.dashboard_page_bp-about .about-wrap .feature-section,.index_page_bp-about .about-wrap .feature-section{clear:both;margin-top:2em;overflow:hidden;padding-bottom:0}.dashboard_page_bp-about .about-wrap .changelog .feature-section,.index_page_bp-about .about-wrap .changelog .feature-section{margin-top:0}.dashboard_page_bp-about .about-wrap .feature-section h3,.index_page_bp-about .about-wrap .feature-section h3{font-size:1.25em;line-height:1.5em;margin:0 0 .6em}.dashboard_page_bp-about .about-wrap .changelog h4,.index_page_bp-about .about-wrap .changelog h4{color:#23282d;font-size:1em;margin:1.4em 0 .6em}.dashboard_page_bp-about .about-wrap .changelog,.index_page_bp-about .about-wrap .changelog{border-top:1px solid #eee;margin-bottom:3em}.dashboard_page_bp-about .about-wrap .changelog .changelog-title,.index_page_bp-about .about-wrap .changelog .changelog-title{font-size:1.25em;line-height:1.5em;margin:1.25em 0 .6em;text-align:center}@media screen and (max-width:782px){.dashboard_page_bp-about .about-wrap .headline-feature,.index_page_bp-about .about-wrap .headline-feature{max-width:100%}.dahsboard_page_bp-about .about-wrap .headline-feature h3,.dashboard_page_bp-about .about-wrap .headline-feature .headline-title,.index_page_bp-about .about-wrap .headline-feature .headline-title,.index_page_bp-about .about-wrap .headline-feature h3{font-size:2em}.dashboard_page_bp-about .bp-features-section,.index_page_bp-about .bp-features-section{margin-bottom:0}.dashboard_page_bp-about .about-wrap .feature-section,.index_page_bp-about .about-wrap .feature-section{margin-top:0}.dashboard_page_bp-about .about-wrap .two-col>div,.index_page_bp-about .about-wrap .two-col>div{border-bottom:1px solid rgba(0,0,0,.1);margin-top:1.25em;padding-bottom:1em;width:100%}.dashboard_page_bp-about .changelog .two-col>div,.index_page_bp-about .changelog .two-col>div{margin-top:0;padding-bottom:0}.dashboard_page_bp-about .about-wrap .changelog .changelog-title,.index_page_bp-about .about-wrap .changelog .changelog-title{text-align:left}}#adminmenu #toplevel_page_bp-activity .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-activity_user .wp-menu-image:before{content:"\f452"}#adminmenu #toplevel_page_bp-groups .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-groups_user .wp-menu-image:before{content:"\f456"}#adminmenu #toplevel_page_bp-notifications .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-notifications_user .wp-menu-image:before{content:"\f439"}#adminmenu #toplevel_page_bp-messages .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-messages_user .wp-menu-image:before{content:"\f457"}#adminmenu #toplevel_page_bp-friends .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-friends_user .wp-menu-image:before{content:"\f454"}#adminmenu #toplevel_page_bp-settings .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_network .wp-menu-image:before,#adminmenu #toplevel_page_bp-settings_user .wp-menu-image:before{content:"\f108"}#adminmenu li.toplevel_page_bp-components .wp-menu-image,#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image{content:"\f448"}.settings_page_bp-components td.plugin-title span{float:left;width:18px;height:18px;margin-right:5px}.settings_page_bp-components td.plugin-title span:before{font-family:dashicons;font-size:18px}.settings_page_bp-components tr.activity td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.notifications td.plugin-title span:before{content:"\f339"}.settings_page_bp-components tr.xprofile td.plugin-title span:before{content:"\f336"}.settings_page_bp-components tr.settings td.plugin-title span:before{content:"\f108"}.settings_page_bp-components tr.groups td.plugin-title span:before{content:"\f456"}.settings_page_bp-components tr.messages td.plugin-title span:before{content:"\f457"}.settings_page_bp-components tr.forums td.plugin-title span:before{content:"\f452"}.settings_page_bp-components tr.blogs td.plugin-title span:before{content:"\f120"}.settings_page_bp-components tr.friends td.plugin-title span:before{content:"\f454"}.settings_page_bp-components tr.core td.plugin-title span:before{content:"\f448"}.settings_page_bp-components tr.members td.plugin-title span:before{content:"\f307"}#bp-admin-component-form .wp-list-table.plugins .plugin-title{width:25%}@media screen and (max-width:782px){.settings_page_bp-components td.plugin-title span{margin-top:5px}#bp-admin-component-form .wp-list-table.plugins .plugin-title{display:block;width:auto}#bp-admin-component-form .subsubsub{margin-bottom:0;padding-bottom:35px}}#adminmenu .toplevel_page_network-tools div.wp-menu-image:before{content:""}body.site-users-php th#role,body.users-php th#role,body.users_page_bp-signups th#count_sent{width:10%}body.site-users-php th#email,body.site-users-php th#name,body.users-php th#email,body.users-php th#name,body.users-php th#registered,body.users_page_bp-signups th#date_sent,body.users_page_bp-signups th#email,body.users_page_bp-signups th#name,body.users_page_bp-signups th#registered{width:15%}body.post-type-bp-email th#situation,body.users-php th#blogs,body.users_page_bp-signups th#blogs{width:20%}body.users_page_bp-signups td.count_sent,body.users_page_bp-signups th.column-count_sent{text-align:center}body.post-type-bp-email #excerpt{height:auto}body.post-type-bp-email td.column-situation ul{margin:0}body.post-type-bp-email .categorydiv label{display:block;float:left;padding-left:25px;text-indent:-25px}
bp-core/admin/css/customizer-controls-rtl.css CHANGED
@@ -1,7 +1,7 @@
1
  .customize-control-range output {
2
- background-color: #fff;
3
- border: 1px solid #ddd;
4
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07);
5
  float: right;
6
  margin-left: 10px;
7
  margin-top: -4px;
1
  .customize-control-range output {
2
+ background-color: #FFF;
3
+ border: 1px solid #DDD;
4
+ box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 );
5
  float: right;
6
  margin-left: 10px;
7
  margin-top: -4px;
bp-core/admin/css/customizer-controls-rtl.min.css CHANGED
@@ -1 +1 @@
1
- .customize-control-range output{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);float:right;margin-left:10px;margin-top:-4px;min-width:16px;padding:5px}
1
+ .customize-control-range output{background-color:#FFF;border:1px solid #DDD;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);float:right;margin-left:10px;margin-top:-4px;min-width:16px;padding:5px}
bp-core/admin/css/customizer-controls.css CHANGED
@@ -1,7 +1,7 @@
1
  .customize-control-range output {
2
- background-color: #fff;
3
- border: 1px solid #ddd;
4
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07);
5
  float: left;
6
  margin-right: 10px;
7
  margin-top: -4px;
1
  .customize-control-range output {
2
+ background-color: #FFF;
3
+ border: 1px solid #DDD;
4
+ box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 );
5
  float: left;
6
  margin-right: 10px;
7
  margin-top: -4px;
bp-core/admin/css/customizer-controls.min.css CHANGED
@@ -1 +1 @@
1
- .customize-control-range output{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);float:left;margin-right:10px;margin-top:-4px;min-width:16px;padding:5px}
1
+ .customize-control-range output{background-color:#FFF;border:1px solid #DDD;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);float:left;margin-right:10px;margin-top:-4px;min-width:16px;padding:5px}
bp-core/admin/images/autolink-feature.png ADDED
Binary file
bp-core/admin/images/bp-emails-feature.png ADDED
Binary file
bp-core/admin/images/emoji-feature.png ADDED
Binary file
bp-core/admin/images/post-type.png ADDED
Binary file
bp-core/admin/images/twentytwelve.png ADDED
Binary file
bp-core/admin/js/customizer-controls.min.js CHANGED
@@ -1 +1 @@
1
- !function(n){n(window).on("load",function(){n(".customize-control-range input").on("input",function(){var t=n(this);t.siblings("output").text(t.val())})})}(jQuery);
1
+ !function(a){a(window).on("load",function(){a(".customize-control-range input").on("input",function(){var b=a(this);b.siblings("output").text(b.val())})})}(jQuery);
bp-core/admin/js/customizer-receiver-emails.min.js CHANGED
@@ -1 +1 @@
1
- !function(o){wp.customize("bp_email_options[email_bg]",function(t){t.bind(function(t){t.length&&(o(".email_bg").attr("bgcolor",t),o("hr").attr("color",t))})}),wp.customize("bp_email_options[header_bg]",function(t){t.bind(function(t){t.length&&o(".header_bg").attr("bgcolor",t)})}),wp.customize("bp_email_options[header_text_size]",function(t){t.bind(function(t){t.length&&o(".header_text_size").css("font-size",t+"px")})}),wp.customize("bp_email_options[header_text_color]",function(t){t.bind(function(t){t.length&&o(".header_text_color").css("color",t)})}),wp.customize("bp_email_options[highlight_color]",function(t){t.bind(function(t){t.length&&(o(".header_bg").css("border-top-color",t),o("a").css("color",t),o("hr").attr("color",t))})}),wp.customize("bp_email_options[body_bg]",function(t){t.bind(function(t){t.length&&o(".body_bg").attr("bgcolor",t)})}),wp.customize("bp_email_options[body_text_size]",function(t){t.bind(function(t){t.length&&(o(".body_text_size").css("font-size",t+"px").css("line-height",Math.floor(1.618*t)+"px"),o(".welcome").css("font-size",Math.floor(1.35*t)+"px"))})}),wp.customize("bp_email_options[body_text_color]",function(t){t.bind(function(t){t.length&&o(".body_text_color").css("color",t)})}),wp.customize("bp_email_options[footer_bg]",function(t){t.bind(function(t){t.length&&o(".footer_bg").attr("bgcolor",t)})}),wp.customize("bp_email_options[footer_text_size]",function(t){t.bind(function(t){t.length&&o(".footer_text_size").css("font-size",t+"px").css("line-height",Math.floor(1.618*t)+"px")})}),wp.customize("bp_email_options[footer_text_color]",function(t){t.bind(function(t){t.length&&o(".footer_text_color").css("color",t)})}),wp.customize("bp_email_options[footer_text]",function(t){t.bind(function(t){o(".footer_text").text(t)})})}(jQuery);
1
+ !function(a){wp.customize("bp_email_options[email_bg]",function(b){b.bind(function(b){b.length&&(a(".email_bg").attr("bgcolor",b),a("hr").attr("color",b))})}),wp.customize("bp_email_options[header_bg]",function(b){b.bind(function(b){b.length&&a(".header_bg").attr("bgcolor",b)})}),wp.customize("bp_email_options[header_text_size]",function(b){b.bind(function(b){b.length&&a(".header_text_size").css("font-size",b+"px")})}),wp.customize("bp_email_options[header_text_color]",function(b){b.bind(function(b){b.length&&a(".header_text_color").css("color",b)})}),wp.customize("bp_email_options[highlight_color]",function(b){b.bind(function(b){b.length&&(a(".header_bg").css("border-top-color",b),a("a").css("color",b),a("hr").attr("color",b))})}),wp.customize("bp_email_options[body_bg]",function(b){b.bind(function(b){b.length&&a(".body_bg").attr("bgcolor",b)})}),wp.customize("bp_email_options[body_text_size]",function(b){b.bind(function(b){b.length&&(a(".body_text_size").css("font-size",b+"px").css("line-height",Math.floor(1.618*b)+"px"),a(".welcome").css("font-size",Math.floor(1.35*b)+"px"))})}),wp.customize("bp_email_options[body_text_color]",function(b){b.bind(function(b){b.length&&a(".body_text_color").css("color",b)})}),wp.customize("bp_email_options[footer_bg]",function(b){b.bind(function(b){b.length&&a(".footer_bg").attr("bgcolor",b)})}),wp.customize("bp_email_options[footer_text_size]",function(b){b.bind(function(b){b.length&&a(".footer_text_size").css("font-size",b+"px").css("line-height",Math.floor(1.618*b)+"px")})}),wp.customize("bp_email_options[footer_text_color]",function(b){b.bind(function(b){b.length&&a(".footer_text_color").css("color",b)})}),wp.customize("bp_email_options[footer_text]",function(b){b.bind(function(b){a(".footer_text").text(b)})})}(jQuery);
bp-core/admin/js/dismissible-admin-notices.js DELETED
@@ -1,16 +0,0 @@
1
- (function($){
2
- $(document).ready(function() {
3
- $( '.bp-is-dismissible .notice-dismiss' ).click( function() {
4
- var $notice = $( this ).closest( '.notice' );
5
- var notice_id = $notice.data( 'noticeid' );
6
- $.post( {
7
- url: ajaxurl,
8
- data: {
9
- action: 'bp_dismiss_notice',
10
- nonce: $( '#bp-dismissible-nonce-' + notice_id ).val(),
11
- notice_id: $notice.data( 'noticeid' )
12
- }
13
- } );
14
- } );
15
- });
16
- }(jQuery));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/admin/js/dismissible-admin-notices.min.js DELETED
@@ -1 +0,0 @@
1
- !function(i){i(document).ready(function(){i(".bp-is-dismissible .notice-dismiss").click(function(){var n=i(this).closest(".notice"),s=n.data("noticeid");i.post({url:ajaxurl,data:{action:"bp_dismiss_notice",nonce:i("#bp-dismissible-nonce-"+s).val(),notice_id:n.data("noticeid")}})})})}(jQuery);
 
bp-core/bp-core-actions.php CHANGED
@@ -29,7 +29,7 @@ defined( 'ABSPATH' ) || exit;
29
  * near the bottom of this file.
30
  *
31
  * v--WordPress Actions v--BuddyPress Sub-actions
32
- */
33
  add_action( 'plugins_loaded', 'bp_loaded', 10 );
34
  add_action( 'init', 'bp_init', 10 );
35
  add_action( 'rest_api_init', 'bp_rest_api_init', 20 ); // After WP core.
@@ -55,9 +55,9 @@ add_action( 'generate_rewrite_rules', 'bp_generate_rewrite_rules', 10 );
55
  */
56
  add_action( 'bp_loaded', 'bp_setup_components', 2 );
57
  add_action( 'bp_loaded', 'bp_include', 4 );
58
- add_action( 'bp_loaded', 'bp_setup_option_filters', 5 );
59
  add_action( 'bp_loaded', 'bp_setup_cache_groups', 5 );
60
  add_action( 'bp_loaded', 'bp_setup_widgets', 6 );
 
61
  add_action( 'bp_loaded', 'bp_register_theme_packages', 12 );
62
  add_action( 'bp_loaded', 'bp_register_theme_directory', 14 );
63
 
@@ -68,9 +68,9 @@ add_action( 'bp_loaded', 'bp_register_theme_directory', 14 );
68
  * The load order helps to execute code at the correct time.
69
  * v---Load order
70
  */
71
- add_action( 'bp_init', 'bp_register_post_types', 2 );
72
- add_action( 'bp_init', 'bp_register_taxonomies', 2 );
73
  add_action( 'bp_init', 'bp_core_set_uri_globals', 2 );
 
 
74
  add_action( 'bp_init', 'bp_setup_globals', 4 );
75
  add_action( 'bp_init', 'bp_setup_canonical_stack', 5 );
76
  add_action( 'bp_init', 'bp_setup_nav', 6 );
@@ -80,11 +80,6 @@ add_action( 'bp_init', 'bp_add_rewrite_tags', 20 );
80
  add_action( 'bp_init', 'bp_add_rewrite_rules', 30 );
81
  add_action( 'bp_init', 'bp_add_permastructs', 40 );
82
 
83
- /**
84
- * The bp_register_taxonomies hook - Attached to 'bp_init' @ priority 2 above.
85
- */
86
- add_action( 'bp_register_taxonomies', 'bp_register_member_types' );
87
-
88
  /**
89
  * The bp_template_redirect hook - Attached to 'template_redirect' above.
90
  *
@@ -115,6 +110,3 @@ if ( is_admin() ) {
115
 
116
  // Activation redirect.
117
  add_action( 'bp_activation', 'bp_add_activation_redirect' );
118
-
119
- // Email unsubscribe.
120
- add_action( 'bp_get_request_unsubscribe', 'bp_email_unsubscribe_handler' );
29
  * near the bottom of this file.
30
  *
31
  * v--WordPress Actions v--BuddyPress Sub-actions
32
+ */
33
  add_action( 'plugins_loaded', 'bp_loaded', 10 );
34
  add_action( 'init', 'bp_init', 10 );
35
  add_action( 'rest_api_init', 'bp_rest_api_init', 20 ); // After WP core.
55
  */
56
  add_action( 'bp_loaded', 'bp_setup_components', 2 );
57
  add_action( 'bp_loaded', 'bp_include', 4 );
 
58
  add_action( 'bp_loaded', 'bp_setup_cache_groups', 5 );
59
  add_action( 'bp_loaded', 'bp_setup_widgets', 6 );
60
+ add_action( 'bp_loaded', 'bp_register_member_types', 8 );
61
  add_action( 'bp_loaded', 'bp_register_theme_packages', 12 );
62
  add_action( 'bp_loaded', 'bp_register_theme_directory', 14 );
63
 
68
  * The load order helps to execute code at the correct time.
69
  * v---Load order
70
  */
 
 
71
  add_action( 'bp_init', 'bp_core_set_uri_globals', 2 );
72
+ add_action( 'bp_init', 'bp_register_post_types', 3 );
73
+ add_action( 'bp_init', 'bp_register_taxonomies', 3 );
74
  add_action( 'bp_init', 'bp_setup_globals', 4 );
75
  add_action( 'bp_init', 'bp_setup_canonical_stack', 5 );
76
  add_action( 'bp_init', 'bp_setup_nav', 6 );
80
  add_action( 'bp_init', 'bp_add_rewrite_rules', 30 );
81
  add_action( 'bp_init', 'bp_add_permastructs', 40 );
82
 
 
 
 
 
 
83
  /**
84
  * The bp_template_redirect hook - Attached to 'template_redirect' above.
85
  *
110
 
111
  // Activation redirect.
112
  add_action( 'bp_activation', 'bp_add_activation_redirect' );
 
 
 
bp-core/bp-core-admin.php CHANGED
@@ -10,6 +10,10 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
13
  /**
14
  * Setup BuddyPress Admin.
15
  *
@@ -26,33 +30,25 @@ function bp_admin() {
26
  _n_noop( 'Security Release', 'Security Releases', 'buddypress' );
27
  _n_noop( 'Maintenance and Security Release', 'Maintenance and Security Releases', 'buddypress' );
28
 
29
- /* translators: 1: BuddyPress version number. */
30
- _n_noop(
31
- '<strong>Version %1$s</strong> addressed a security issue.',
32
- '<strong>Version %1$s</strong> addressed some security issues.',
33
- 'buddypress'
34
- );
35
-
36
- /* translators: 1: BuddyPress version number, 2: plural number of bugs. */
37
- _n_noop(
38
- '<strong>Version %1$s</strong> addressed %2$s bug.',
39
- '<strong>Version %1$s</strong> addressed %2$s bugs.',
40
- 'buddypress'
41
- );
42
-
43
- /* translators: 1: BuddyPress version number, 2: plural number of bugs. Singular security issue. */
44
- _n_noop(
45
- '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug.',
46
- '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs.',
47
- 'buddypress'
48
- );
49
-
50
- /* translators: 1: BuddyPress version number, 2: plural number of bugs. More than one security issue. */
51
- _n_noop(
52
- '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
53
- '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.',
54
- 'buddypress'
55
- );
56
 
57
  __( 'For more information, see <a href="%s">the release notes</a>.', 'buddypress' );
58
  }
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ if ( ! buddypress()->do_autoload ) {
14
+ require dirname( __FILE__ ) . '/classes/class-bp-admin.php';
15
+ }
16
+
17
  /**
18
  * Setup BuddyPress Admin.
19
  *
30
  _n_noop( 'Security Release', 'Security Releases', 'buddypress' );
31
  _n_noop( 'Maintenance and Security Release', 'Maintenance and Security Releases', 'buddypress' );
32
 
33
+ /* translators: 1: WordPress version number. */
34
+ _n_noop( '<strong>Version %1$s</strong> addressed a security issue.',
35
+ '<strong>Version %1$s</strong> addressed some security issues.',
36
+ 'buddypress' );
37
+
38
+ /* translators: 1: WordPress version number, 2: plural number of bugs. */
39
+ _n_noop( '<strong>Version %1$s</strong> addressed %2$s bug.',
40
+ '<strong>Version %1$s</strong> addressed %2$s bugs.',
41
+ 'buddypress' );
42
+
43
+ /* translators: 1: WordPress version number, 2: plural number of bugs. Singular security issue. */
44
+ _n_noop( '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug.',
45
+ '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs.',
46
+ 'buddypress' );
47
+
48
+ /* translators: 1: WordPress version number, 2: plural number of bugs. More than one security issue. */
49
+ _n_noop( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
50
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.',
51
+ 'buddypress' );
 
 
 
 
 
 
 
 
52
 
53
  __( 'For more information, see <a href="%s">the release notes</a>.', 'buddypress' );
54
  }
bp-core/bp-core-adminbar.php CHANGED
@@ -39,6 +39,12 @@ function bp_admin_bar_my_account_root() {
39
  'class' => 'ab-sub-secondary'
40
  )
41
  ) );
 
 
 
 
 
 
42
  }
43
  }
44
  add_action( 'admin_bar_menu', 'bp_admin_bar_my_account_root', 100 );
@@ -61,11 +67,6 @@ function bp_core_load_admin_bar() {
61
  if ( ! bp_use_wp_admin_bar() ) {
62
  _doing_it_wrong( __FUNCTION__, __( 'The BuddyBar is no longer supported. Please migrate to the WordPress toolbar as soon as possible.', 'buddypress' ), '2.1.0' );
63
 
64
- // Load deprecated code if not available.
65
- if ( ! function_exists( 'bp_core_admin_bar' ) ) {
66
- require buddypress()->plugin_dir . 'bp-core/deprecated/2.1.php';
67
- }
68
-
69
  // Keep the WP Toolbar from loading.
70
  show_admin_bar( false );
71
 
39
  'class' => 'ab-sub-secondary'
40
  )
41
  ) );
42
+
43
+ // Remove 'Edit' post link as it's not applicable to BP.
44
+ // Remove when https://core.trac.wordpress.org/ticket/29538 is addressed.
45
+ if ( is_buddypress() ) {
46
+ $wp_admin_bar->remove_node( 'edit' );
47
+ }
48
  }
49
  }
50
  add_action( 'admin_bar_menu', 'bp_admin_bar_my_account_root', 100 );
67
  if ( ! bp_use_wp_admin_bar() ) {
68
  _doing_it_wrong( __FUNCTION__, __( 'The BuddyBar is no longer supported. Please migrate to the WordPress toolbar as soon as possible.', 'buddypress' ), '2.1.0' );
69
 
 
 
 
 
 
70
  // Keep the WP Toolbar from loading.
71
  show_admin_bar( false );
72
 
bp-core/bp-core-attachments.php CHANGED
@@ -52,11 +52,6 @@ function bp_attachments_uploads_dir_get( $data = '' ) {
52
  foreach ( $upload_data as $key => $value ) {
53
  if ( 'basedir' === $key || 'baseurl' === $key ) {
54
  $upload_data[ $key ] = trailingslashit( $value ) . $attachments_dir;
55
-
56
- // Fix for HTTPS.
57
- if ( 'baseurl' === $key && is_ssl() ) {
58
- $upload_data[ $key ] = str_replace( 'http://', 'https://', $upload_data[ $key ] );
59
- }
60
  } else {
61
  unset( $upload_data[ $key ] );
62
  }
@@ -265,7 +260,7 @@ function bp_attachments_create_item_type( $type = 'avatar', $args = array() ) {
265
  }
266
 
267
  // Make sure the file path is safe.
268
- if ( 1 === validate_file( $r['image'] ) ) {
269
  return false;
270
  }
271
 
@@ -447,7 +442,7 @@ function bp_attachments_get_attachment( $data = 'url', $args = array() ) {
447
  $type_subdir = $r['object_dir'] . '/' . $r['item_id'] . '/' . $r['type'];
448
  $type_dir = trailingslashit( $bp_attachments_uploads_dir['basedir'] ) . $type_subdir;
449
 
450
- if ( 1 === validate_file( $type_dir ) || ! is_dir( $type_dir ) ) {
451
  return $attachment_data;
452
  }
453
 
@@ -512,7 +507,7 @@ function bp_attachments_delete_file( $args = array() ) {
512
  * @since 2.5.1
513
  *
514
  * @param bool $value Whether or not to delete the BuddyPress attachment.
515
- ` * @param array $args Array of arguments for the attachment deletion.
516
  */
517
  if ( ! apply_filters( 'bp_attachments_pre_delete_file', true, $args ) ) {
518
  return true;
@@ -949,7 +944,7 @@ function bp_attachments_get_template_part( $slug ) {
949
  * @since 2.4.0
950
  *
951
  * @param string $component The component to get the settings for ("xprofile" for user or "groups").
952
- * @return false|array The cover image settings in array, false on failure.
953
  */
954
  function bp_attachments_get_cover_image_settings( $component = 'xprofile' ) {
955
  // Default parameters.
@@ -968,7 +963,7 @@ function bp_attachments_get_cover_image_settings( $component = 'xprofile' ) {
968
  * Eg: for the user's profile cover image use:
969
  * add_filter( 'bp_before_xprofile_cover_image_settings_parse_args', 'your_filter', 10, 1 );
970
  *
971
- * @since 2.4.0
972
  *
973
  * @param array $settings The cover image settings
974
  */
@@ -995,12 +990,12 @@ function bp_attachments_get_cover_image_settings( $component = 'xprofile' ) {
995
  }
996
 
997
  /**
998
- * Get cover image Width and Height.
999
  *
1000
  * @since 2.4.0
1001
  *
1002
  * @param string $component The BuddyPress component concerned ("xprofile" for user or "groups").
1003
- * @return array|bool An associative array containing the advised width and height for the cover image. False if settings are empty.
1004
  */
1005
  function bp_attachments_get_cover_image_dimensions( $component = 'xprofile' ) {
1006
  // Let's prevent notices when setting the warning strings.
@@ -1110,7 +1105,7 @@ function bp_attachments_get_group_has_cover_image( $group_id = 0 ) {
1110
  * @type string $cover_image_dir The Cover image dir to write the image into. Required.
1111
  * }
1112
  * @param BP_Attachment_Cover_Image|null $cover_image_class The class to use to fit the cover image.
1113
- * @return false|array An array containing cover image data on success, false otherwise.
1114
  */
1115
  function bp_attachments_cover_image_generate_file( $args = array(), $cover_image_class = null ) {
1116
  // Bail if an argument is missing.
@@ -1185,7 +1180,7 @@ function bp_attachments_cover_image_generate_file( $args = array(), $cover_image
1185
  *
1186
  * @since 2.4.0
1187
  *
1188
- * @return string|null A json object containing success data if the upload succeeded,
1189
  * error message otherwise.
1190
  */
1191
  function bp_attachments_cover_image_ajax_upload() {
@@ -1247,7 +1242,10 @@ function bp_attachments_cover_image_ajax_upload() {
1247
 
1248
  if ( ! bp_get_current_group_id() && ! empty( $bp_params['item_id'] ) ) {
1249
  $needs_reset = array( 'component' => 'groups', 'key' => 'current_group', 'value' => $bp->groups->current_group );
1250
- $bp->groups->current_group = groups_get_group( $bp_params['item_id'] );
 
 
 
1251
  }
1252
 
1253
  // Other object's cover image.
@@ -1314,7 +1312,7 @@ function bp_attachments_cover_image_ajax_upload() {
1314
  $cover_subdir = $object_data['dir'] . '/' . $bp_params['item_id'] . '/cover-image';
1315
  $cover_dir = trailingslashit( $bp_attachments_uploads_dir['basedir'] ) . $cover_subdir;
1316
 
1317
- if ( 1 === validate_file( $cover_dir ) || ! is_dir( $cover_dir ) ) {
1318
  // Upload error response.
1319
  bp_attachments_json_response( false, $is_html4, array(
1320
  'type' => 'upload_error',
@@ -1396,47 +1394,33 @@ function bp_attachments_cover_image_ajax_delete() {
1396
  wp_send_json_error();
1397
  }
1398
 
1399
- if ( empty( $_POST['object'] ) || empty( $_POST['item_id'] ) ) {
 
 
1400
  wp_send_json_error();
1401
  }
1402
 
1403
- $args = array(
1404
- 'object' => sanitize_text_field( $_POST['object'] ),
1405
- 'item_id' => (int) $_POST['item_id'],
1406
- );
1407
-
1408
- // Check permissions.
1409
  check_admin_referer( 'bp_delete_cover_image', 'nonce' );
1410
- if ( ! bp_attachments_current_user_can( 'edit_cover_image', $args ) ) {
 
 
1411
  wp_send_json_error();
1412
  }
1413
 
1414
  // Set object for the user's case.
1415
- if ( 'user' === $args['object'] ) {
1416
  $component = 'xprofile';
1417
  $dir = 'members';
1418
 
1419
  // Set it for any other cases.
1420
  } else {
1421
- $component = $args['object'] . 's';
1422
  $dir = $component;
1423
  }
1424
 
1425
  // Handle delete.
1426
- if ( bp_attachments_delete_file( array( 'item_id' => $args['item_id'], 'object_dir' => $dir, 'type' => 'cover-image' ) ) ) {
1427
- /**
1428
- * Fires if the cover image was successfully deleted.
1429
- *
1430
- * The dynamic portion of the hook will be xprofile in case of a user's
1431
- * cover image, groups in case of a group's cover image. For instance:
1432
- * Use add_action( 'xprofile_cover_image_deleted' ) to run your specific
1433
- * code once the user has deleted his cover image.
1434
- *
1435
- * @since 2.8.0
1436
- *
1437
- * @param int $item_id Inform about the item id the cover image was deleted for.
1438
- */
1439
- do_action( "{$component}_cover_image_deleted", (int) $args['item_id'] );
1440
 
1441
  // Defaults no cover image.
1442
  $response = array(
52
  foreach ( $upload_data as $key => $value ) {
53
  if ( 'basedir' === $key || 'baseurl' === $key ) {
54
  $upload_data[ $key ] = trailingslashit( $value ) . $attachments_dir;
 
 
 
 
 
55
  } else {
56
  unset( $upload_data[ $key ] );
57
  }
260
  }
261
 
262
  // Make sure the file path is safe.
263
+ if ( 0 !== validate_file( $r['image'] ) ) {
264
  return false;
265
  }
266
 
442
  $type_subdir = $r['object_dir'] . '/' . $r['item_id'] . '/' . $r['type'];
443
  $type_dir = trailingslashit( $bp_attachments_uploads_dir['basedir'] ) . $type_subdir;
444
 
445
+ if ( ! is_dir( $type_dir ) ) {
446
  return $attachment_data;
447
  }
448
 
507
  * @since 2.5.1
508
  *
509
  * @param bool $value Whether or not to delete the BuddyPress attachment.
510
+ * @param array Array of arguments for the attachment deletion.
511
  */
512
  if ( ! apply_filters( 'bp_attachments_pre_delete_file', true, $args ) ) {
513
  return true;
944
  * @since 2.4.0
945
  *
946
  * @param string $component The component to get the settings for ("xprofile" for user or "groups").
947
+ * @return array The cover image settings.
948
  */
949
  function bp_attachments_get_cover_image_settings( $component = 'xprofile' ) {
950
  // Default parameters.
963
  * Eg: for the user's profile cover image use:
964
  * add_filter( 'bp_before_xprofile_cover_image_settings_parse_args', 'your_filter', 10, 1 );
965
  *
966
+ * @since 2.4.0
967
  *
968
  * @param array $settings The cover image settings
969
  */
990
  }
991
 
992
  /**
993
+ * Get cover image Width and Height
994
  *
995
  * @since 2.4.0
996
  *
997
  * @param string $component The BuddyPress component concerned ("xprofile" for user or "groups").
998
+ * @return array An associative array containing the advised width and height for the cover image.
999
  */
1000
  function bp_attachments_get_cover_image_dimensions( $component = 'xprofile' ) {
1001
  // Let's prevent notices when setting the warning strings.
1105
  * @type string $cover_image_dir The Cover image dir to write the image into. Required.
1106
  * }
1107
  * @param BP_Attachment_Cover_Image|null $cover_image_class The class to use to fit the cover image.
1108
+ * @return bool|array An array containing cover image data on success, false otherwise.
1109
  */
1110
  function bp_attachments_cover_image_generate_file( $args = array(), $cover_image_class = null ) {
1111
  // Bail if an argument is missing.
1180
  *
1181
  * @since 2.4.0
1182
  *
1183
+ * @return string|null A json object containing success data if the upload succeeded
1184
  * error message otherwise.
1185
  */
1186
  function bp_attachments_cover_image_ajax_upload() {
1242
 
1243
  if ( ! bp_get_current_group_id() && ! empty( $bp_params['item_id'] ) ) {
1244
  $needs_reset = array( 'component' => 'groups', 'key' => 'current_group', 'value' => $bp->groups->current_group );
1245
+ $bp->groups->current_group = groups_get_group( array(
1246
+ 'group_id' => $bp_params['item_id'],
1247
+ 'populate_extras' => false,
1248
+ ) );
1249
  }
1250
 
1251
  // Other object's cover image.
1312
  $cover_subdir = $object_data['dir'] . '/' . $bp_params['item_id'] . '/cover-image';
1313
  $cover_dir = trailingslashit( $bp_attachments_uploads_dir['basedir'] ) . $cover_subdir;
1314
 
1315
+ if ( ! is_dir( $cover_dir ) ) {
1316
  // Upload error response.
1317
  bp_attachments_json_response( false, $is_html4, array(
1318
  'type' => 'upload_error',
1394
  wp_send_json_error();
1395
  }
1396
 
1397
+ $cover_image_data = $_POST;
1398
+
1399
+ if ( empty( $cover_image_data['object'] ) || empty( $cover_image_data['item_id'] ) ) {
1400
  wp_send_json_error();
1401
  }
1402
 
1403
+ // Check the nonce.
 
 
 
 
 
1404
  check_admin_referer( 'bp_delete_cover_image', 'nonce' );
1405
+
1406
+ // Capability check.
1407
+ if ( ! bp_attachments_current_user_can( 'edit_cover_image', $cover_image_data ) ) {
1408
  wp_send_json_error();
1409
  }
1410
 
1411
  // Set object for the user's case.
1412
+ if ( 'user' === $cover_image_data['object'] ) {
1413
  $component = 'xprofile';
1414
  $dir = 'members';
1415
 
1416
  // Set it for any other cases.
1417
  } else {
1418
+ $component = $cover_image_data['object'] . 's';
1419
  $dir = $component;
1420
  }
1421
 
1422
  // Handle delete.
1423
+ if ( bp_attachments_delete_file( array( 'item_id' => $cover_image_data['item_id'], 'object_dir' => $dir, 'type' => 'cover-image' ) ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
1424
 
1425
  // Defaults no cover image.
1426
  $response = array(
bp-core/bp-core-avatars.php CHANGED
@@ -313,7 +313,7 @@ function bp_core_fetch_avatar( $args = '' ) {
313
  break;
314
 
315
  case 'group' :
316
- $item_name = bp_get_group_name( groups_get_group( $params['item_id'] ) );
317
  break;
318
 
319
  case 'user' :
@@ -542,9 +542,9 @@ function bp_core_fetch_avatar( $args = '' ) {
542
  * @param string $value Subdirectory where the requested avatar should be found.
543
  * @param string $html_css_id ID attribute for avatar.
544
  * @param string $html_width Width attribute for avatar.
545
- * @param string $html_height Height attribute for avatar.
546
  * @param string $avatar_folder_url Avatar URL path.
547
- * @param string $avatar_folder_dir Avatar DIR path.
548
  */
549
  return apply_filters( 'bp_core_fetch_avatar', '<img src="' . $avatar_url . '"' . $html_class . $html_css_id . $html_width . $html_height . $html_alt . $html_title . $extra_attr . ' />', $params, $params['item_id'], $params['avatar_dir'], $html_css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
550
 
@@ -648,7 +648,7 @@ function bp_core_fetch_avatar( $args = '' ) {
648
  * @since 2.6.0
649
  *
650
  * @param string $default_grav The avatar default.
651
- * @param array $params The avatar's data.
652
  */
653
  $default_grav = apply_filters( 'bp_core_avatar_default', $default_grav, $params );
654
 
@@ -726,7 +726,7 @@ function bp_core_delete_existing_avatar( $args = '' ) {
726
  *
727
  * @since 2.5.1
728
  *
729
- * @param bool $value Whether or not to delete the avatar.
730
  * @param array $args {
731
  * Array of function parameters.
732
  *
@@ -805,7 +805,7 @@ function bp_core_delete_existing_avatar( $args = '' ) {
805
  *
806
  * @since 2.3.0
807
  *
808
- * @return string|null A JSON object containing success data if the avatar was deleted,
809
  * error message otherwise.
810
  */
811
  function bp_avatar_ajax_delete() {
@@ -948,8 +948,8 @@ function bp_core_avatar_handle_upload( $file, $upload_dir_filter ) {
948
  *
949
  * @since 2.3.0
950
  *
951
- * @return string|null A JSON object containing success data if the upload succeeded
952
- * error message otherwise.
953
  */
954
  function bp_avatar_ajax_upload() {
955
  // Bail if not a POST action.
@@ -959,7 +959,7 @@ function bp_avatar_ajax_upload() {
959
 
960
  /**
961
  * Sending the json response will be different if
962
- * the current Plupload runtime is html4.
963
  */
964
  $is_html4 = false;
965
  if ( ! empty( $_POST['html4' ] ) ) {
@@ -1005,7 +1005,10 @@ function bp_avatar_ajax_upload() {
1005
 
1006
  if ( ! bp_get_current_group_id() && ! empty( $bp_params['item_id'] ) ) {
1007
  $needs_reset = array( 'component' => 'groups', 'key' => 'current_group', 'value' => $bp->groups->current_group );
1008
- $bp->groups->current_group = groups_get_group( $bp_params['item_id'] );
 
 
 
1009
  }
1010
  } else {
1011
  /**
@@ -1094,15 +1097,15 @@ function bp_avatar_ajax_upload() {
1094
  }
1095
  add_action( 'wp_ajax_bp_avatar_upload', 'bp_avatar_ajax_upload' );
1096
 
1097
- /**
1098
- * Handle avatar webcam capture.
1099
- *
1100
- * @since 2.3.0
1101
- *
1102
- * @param string $data Base64 encoded image.
1103
- * @param int $item_id Item to associate.
1104
- * @return bool True on success, false on failure.
1105
- */
1106
  function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
1107
  if ( empty( $data ) || empty( $item_id ) ) {
1108
  return false;
@@ -1168,6 +1171,16 @@ function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
1168
  /**
1169
  * Crop an uploaded avatar.
1170
  *
 
 
 
 
 
 
 
 
 
 
1171
  * @since 1.1.0
1172
  *
1173
  * @param array|string $args {
@@ -1233,8 +1246,8 @@ function bp_core_avatar_handle_crop( $args = '' ) {
1233
  *
1234
  * @since 2.3.0
1235
  *
1236
- * @return string|null A JSON object containing success data if the crop/capture succeeded
1237
- * error message otherwise.
1238
  */
1239
  function bp_avatar_ajax_set() {
1240
  // Bail if not a POST action.
@@ -1293,13 +1306,11 @@ function bp_avatar_ajax_set() {
1293
  * @since 2.3.4 Add two new parameters to inform about the user id and
1294
  * about the way the avatar was set (eg: 'crop' or 'camera')
1295
  * Move the action at the right place, once the avatar is set
1296
- * @since 2.8.0 Added the `$avatar_data` parameter.
1297
  *
1298
- * @param string $item_id Inform about the user id the avatar was set for.
1299
- * @param string $type Inform about the way the avatar was set ('camera').
1300
- * @param array $avatar_data Array of parameters passed to the avatar handler.
1301
  */
1302
- do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $avatar_data );
1303
 
1304
  wp_send_json_success( $return );
1305
  }
@@ -1344,11 +1355,18 @@ function bp_avatar_ajax_set() {
1344
  );
1345
 
1346
  if ( 'user' === $avatar_data['object'] ) {
1347
- /** This action is documented in bp-core/bp-core-avatars.php */
1348
- do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r );
1349
- } elseif ( 'group' === $avatar_data['object'] ) {
1350
- /** This action is documented in bp-groups/bp-groups-screens.php */
1351
- do_action( 'groups_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r );
 
 
 
 
 
 
 
1352
  }
1353
 
1354
  wp_send_json_success( $return );
@@ -1361,58 +1379,103 @@ function bp_avatar_ajax_set() {
1361
  add_action( 'wp_ajax_bp_avatar_set', 'bp_avatar_ajax_set' );
1362
 
1363
  /**
1364
- * Filter {@link get_avatar_url()} to use the BuddyPress user avatar URL.
1365
  *
1366
- * @since 2.9.0
1367
  *
1368
- * @param string $retval The URL of the avatar.
1369
- * @param mixed $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
1370
- * user email, WP_User object, WP_Post object, or WP_Comment object.
1371
- * @param array $args Arguments passed to get_avatar_data(), after processing.
1372
- * @return string
 
 
 
 
 
1373
  */
1374
- function bp_core_get_avatar_data_url_filter( $retval, $id_or_email, $args ) {
1375
- $user = null;
1376
-
1377
- // Ugh, hate duplicating code; process the user identifier.
1378
- if ( is_numeric( $id_or_email ) ) {
1379
- $user = get_user_by( 'id', absint( $id_or_email ) );
1380
- } elseif ( $id_or_email instanceof WP_User ) {
1381
- // User Object
1382
- $user = $id_or_email;
1383
- } elseif ( $id_or_email instanceof WP_Post ) {
1384
- // Post Object
1385
- $user = get_user_by( 'id', (int) $id_or_email->post_author );
1386
- } elseif ( $id_or_email instanceof WP_Comment ) {
1387
- if ( ! empty( $id_or_email->user_id ) ) {
1388
- $user = get_user_by( 'id', (int) $id_or_email->user_id );
1389
  }
1390
- } elseif ( is_email( $id_or_email ) ) {
1391
- $user = get_user_by( 'email', $id_or_email );
 
 
 
 
 
 
1392
  }
1393
 
1394
- // No user, so bail.
1395
- if ( false === $user instanceof WP_User ) {
1396
- return $retval;
1397
  }
1398
 
1399
- // Set BuddyPress-specific avatar args.
1400
- $args['item_id'] = $user->ID;
1401
- $args['html'] = false;
 
1402
 
1403
- // Use the 'full' type if size is larger than BP's thumb width.
1404
- if ( (int) $args['size'] > bp_core_avatar_thumb_width() ) {
1405
- $args['type'] = 'full';
 
 
1406
  }
1407
 
1408
- // Get the BuddyPress avatar URL.
1409
- if ( $bp_avatar = bp_core_fetch_avatar( $args ) ) {
1410
- return $bp_avatar;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1411
  }
1412
 
1413
- return $retval;
 
 
 
 
1414
  }
1415
- add_filter( 'get_avatar_url', 'bp_core_get_avatar_data_url_filter', 10, 3 );
1416
 
1417
  /**
1418
  * Is the current avatar upload error-free?
@@ -1448,8 +1511,6 @@ function bp_core_check_avatar_size( $file ) {
1448
  * Get allowed avatar types.
1449
  *
1450
  * @since 2.3.0
1451
- *
1452
- * @return array
1453
  */
1454
  function bp_core_get_allowed_avatar_types() {
1455
  $allowed_types = bp_attachments_get_allowed_types( 'avatar' );
@@ -1476,8 +1537,6 @@ function bp_core_get_allowed_avatar_types() {
1476
  * Get allowed avatar mime types.
1477
  *
1478
  * @since 2.3.0
1479
- *
1480
- * @return array
1481
  */
1482
  function bp_core_get_allowed_avatar_mimes() {
1483
  $allowed_types = bp_core_get_allowed_avatar_types();
@@ -1884,7 +1943,7 @@ function bp_core_avatar_default_thumb( $type = 'gravatar', $params = array() ) {
1884
  * parameter of the WordPress main query to this posted var. To avoid
1885
  * notices, we need to make sure this 'week' query var is reset to 0.
1886
  *
1887
- * @since 2.2.0
1888
  *
1889
  * @param WP_Query|null $posts_query The main query object.
1890
  */
@@ -1918,7 +1977,7 @@ add_action( 'bp_parse_query', 'bp_core_avatar_reset_query', 10, 1 );
1918
  /**
1919
  * Checks whether Avatar UI should be loaded.
1920
  *
1921
- * @since 2.3.0
1922
  *
1923
  * @return bool True if Avatar UI should load, false otherwise.
1924
  */
@@ -1950,7 +2009,7 @@ function bp_avatar_is_front_edit() {
1950
  * - Load the avatar UI for a component that is !groups or !user (return true regarding your conditions)
1951
  * - Completely disable the avatar UI introduced in 2.3 (eg: __return_false())
1952
  *
1953
- * @since 2.3.0
1954
  *
1955
  * @param bool $retval Whether or not to load the Avatar UI.
1956
  */
@@ -1960,7 +2019,7 @@ function bp_avatar_is_front_edit() {
1960
  /**
1961
  * Checks whether the Webcam Avatar UI part should be loaded.
1962
  *
1963
- * @since 2.3.0
1964
  *
1965
  * @global $is_safari
1966
  * @global $is_IE
@@ -1981,7 +2040,7 @@ function bp_avatar_use_webcam() {
1981
  /**
1982
  * Bail when the browser does not support getUserMedia.
1983
  *
1984
- * @see http://caniuse.com/#feat=stream
1985
  */
1986
  if ( $is_safari || $is_IE || ( $is_chrome && ! is_ssl() ) ) {
1987
  return false;
@@ -2001,7 +2060,7 @@ function bp_avatar_use_webcam() {
2001
  /**
2002
  * Template function to load the Avatar UI javascript templates.
2003
  *
2004
- * @since 2.3.0
2005
  */
2006
  function bp_avatar_get_templates() {
2007
  if ( ! bp_avatar_is_front_edit() ) {
@@ -2017,7 +2076,7 @@ function bp_avatar_get_templates() {
2017
  * If the "avatar templates" are not including the new template tag, this will
2018
  * help users to get the avatar UI.
2019
  *
2020
- * @since 2.3.0
2021
  */
2022
  function bp_avatar_template_check() {
2023
  if ( ! bp_avatar_is_front_edit() ) {
313
  break;
314
 
315
  case 'group' :
316
+ $item_name = bp_get_group_name( groups_get_group( array( 'group_id' => $params['item_id'] ) ) );
317
  break;
318
 
319
  case 'user' :
542
  * @param string $value Subdirectory where the requested avatar should be found.
543
  * @param string $html_css_id ID attribute for avatar.
544
  * @param string $html_width Width attribute for avatar.
545
+ * @param string $html_height Height attribtue for avatar.
546
  * @param string $avatar_folder_url Avatar URL path.
547
+ * @param string $avatar_folder_dir Avatar dir path.
548
  */
549
  return apply_filters( 'bp_core_fetch_avatar', '<img src="' . $avatar_url . '"' . $html_class . $html_css_id . $html_width . $html_height . $html_alt . $html_title . $extra_attr . ' />', $params, $params['item_id'], $params['avatar_dir'], $html_css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
550
 
648
  * @since 2.6.0
649
  *
650
  * @param string $default_grav The avatar default.
651
+ * @param array $params The avatar's data.
652
  */
653
  $default_grav = apply_filters( 'bp_core_avatar_default', $default_grav, $params );
654
 
726
  *
727
  * @since 2.5.1
728
  *
729
+ * @param bool $value Whether or not to delete the avatar.
730
  * @param array $args {
731
  * Array of function parameters.
732
  *
805
  *
806
  * @since 2.3.0
807
  *
808
+ * @return string|null A json object containing success data if the avatar was deleted
809
  * error message otherwise.
810
  */
811
  function bp_avatar_ajax_delete() {
948
  *
949
  * @since 2.3.0
950
  *
951
+ * @return string|null A json object containing success data if the upload succeeded
952
+ * error message otherwise.
953
  */
954
  function bp_avatar_ajax_upload() {
955
  // Bail if not a POST action.
959
 
960
  /**
961
  * Sending the json response will be different if
962
+ * the current Plupload runtime is html4
963
  */
964
  $is_html4 = false;
965
  if ( ! empty( $_POST['html4' ] ) ) {
1005
 
1006
  if ( ! bp_get_current_group_id() && ! empty( $bp_params['item_id'] ) ) {
1007
  $needs_reset = array( 'component' => 'groups', 'key' => 'current_group', 'value' => $bp->groups->current_group );
1008
+ $bp->groups->current_group = groups_get_group( array(
1009
+ 'group_id' => $bp_params['item_id'],
1010
+ 'populate_extras' => false,
1011
+ ) );
1012
  }
1013
  } else {
1014
  /**
1097
  }
1098
  add_action( 'wp_ajax_bp_avatar_upload', 'bp_avatar_ajax_upload' );
1099
 
1100
+ /**
1101
+ * Handle avatar webcam capture.
1102
+ *
1103
+ * @since 2.3.0
1104
+ *
1105
+ * @param string $data Base64 encoded image.
1106
+ * @param int $item_id Item to associate.
1107
+ * @return bool True on success, false on failure.
1108
+ */
1109
  function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
1110
  if ( empty( $data ) || empty( $item_id ) ) {
1111
  return false;
1171
  /**
1172
  * Crop an uploaded avatar.
1173
  *
1174
+ * $args has the following parameters:
1175
+ * object - What component the avatar is for, e.g. "user"
1176
+ * avatar_dir The absolute path to the avatar
1177
+ * item_id - Item ID
1178
+ * original_file - The absolute path to the original avatar file
1179
+ * crop_w - Crop width
1180
+ * crop_h - Crop height
1181
+ * crop_x - The horizontal starting point of the crop
1182
+ * crop_y - The vertical starting point of the crop
1183
+ *
1184
  * @since 1.1.0
1185
  *
1186
  * @param array|string $args {
1246
  *
1247
  * @since 2.3.0
1248
  *
1249
+ * @return string|null A json object containing success data if the crop/capture succeeded
1250
+ * error message otherwise.
1251
  */
1252
  function bp_avatar_ajax_set() {
1253
  // Bail if not a POST action.
1306
  * @since 2.3.4 Add two new parameters to inform about the user id and
1307
  * about the way the avatar was set (eg: 'crop' or 'camera')
1308
  * Move the action at the right place, once the avatar is set
 
1309
  *
1310
+ * @param string $item_id Inform about the user id the avatar was set for
1311
+ * @param string $type Inform about the way the avatar was set ('camera')
 
1312
  */
1313
+ do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'] );
1314
 
1315
  wp_send_json_success( $return );
1316
  }
1355
  );
1356
 
1357
  if ( 'user' === $avatar_data['object'] ) {
1358
+ /**
1359
+ * Fires if the new avatar was successfully cropped.
1360
+ *
1361
+ * @since 1.1.0 Used to inform the avatar was successfully cropped
1362
+ * @since 2.3.4 Add two new parameters to inform about the user id and
1363
+ * about the way the avatar was set (eg: 'crop' or 'camera')
1364
+ * Move the action at the right place, once the avatar is set
1365
+ *
1366
+ * @param string $item_id Inform about the user id the avatar was set for
1367
+ * @param string $type Inform about the way the avatar was set ('crop')
1368
+ */
1369
+ do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'] );
1370
  }
1371
 
1372
  wp_send_json_success( $return );
1379
  add_action( 'wp_ajax_bp_avatar_set', 'bp_avatar_ajax_set' );
1380
 
1381
  /**
1382
+ * Replace default WordPress avatars with BP avatars, if available.
1383
  *
1384
+ * See 'get_avatar' filter description in wp-includes/pluggable.php.
1385
  *
1386
+ * @since 1.1.0
1387
+ * @since 2.4.0 Added $args parameter to coincide with WordPress 4.2.0.
1388
+ *
1389
+ * @param string $avatar The avatar path passed to 'get_avatar'.
1390
+ * @param int|string|object $user A user ID, email address, or comment object.
1391
+ * @param int $size Size of the avatar image ('thumb' or 'full').
1392
+ * @param string $default URL to a default image to use if no avatar is available.
1393
+ * @param string $alt Alternate text to use in image tag. Default: ''.
1394
+ * @param array $args Arguments passed to get_avatar_data(), after processing.
1395
+ * @return string BP avatar path, if found; else the original avatar path.
1396
  */
1397
+ function bp_core_fetch_avatar_filter( $avatar, $user, $size, $default, $alt = '', $args = array() ) {
1398
+ global $pagenow;
1399
+
1400
+ // Do not filter if inside WordPress options page.
1401
+ if ( 'options-discussion.php' == $pagenow )
1402
+ return $avatar;
1403
+
1404
+ // If passed an object, assume $user->user_id.
1405
+ if ( is_object( $user ) ) {
1406
+ if ( isset( $user->user_id ) ) {
1407
+ $id = $user->user_id;
1408
+ } else {
1409
+ $id = $user->ID;
 
 
1410
  }
1411
+
1412
+ // If passed a number, assume it was a $user_id.
1413
+ } elseif ( is_numeric( $user ) ) {
1414
+ $id = $user;
1415
+
1416
+ // If passed a string and that string returns a user, get the $id.
1417
+ } elseif ( is_string( $user ) && ( $user_by_email = get_user_by( 'email', $user ) ) ) {
1418
+ $id = $user_by_email->ID;
1419
  }
1420
 
1421
+ // If somehow $id hasn't been assigned, return the result of get_avatar.
1422
+ if ( empty( $id ) ) {
1423
+ return !empty( $avatar ) ? $avatar : $default;
1424
  }
1425
 
1426
+ // Image alt tag.
1427
+ if ( empty( $alt ) ) {
1428
+ $alt = sprintf( __( 'Profile photo of %s', 'buddypress' ), bp_core_get_user_displayname( $id ) );
1429
+ }
1430
 
1431
+ // Use the 'thumb' type, unless the requested width is bigger than
1432
+ // BP's thumb width.
1433
+ $type = 'thumb';
1434
+ if ( (int) $size > bp_core_avatar_thumb_width() ) {
1435
+ $type = 'full';
1436
  }
1437
 
1438
+ $avatar_args = array(
1439
+ 'item_id' => $id,
1440
+ 'type' => $type,
1441
+ 'width' => $size,
1442
+ 'height' => $size,
1443
+ 'alt' => $alt,
1444
+ );
1445
+
1446
+ // Support new arguments as of WordPress 4.2.0.
1447
+ if ( ! empty( $args['width'] ) ) {
1448
+ $avatar_args['width'] = $args['width'];
1449
+ }
1450
+ if ( ! empty( $args['height'] ) ) {
1451
+ $avatar_args['height'] = $args['height'];
1452
+ }
1453
+ if ( ! empty( $args['class'] ) ) {
1454
+ $avatar_args['class'] = $args['class'];
1455
+ }
1456
+ if ( ! empty( $args['class'] ) ) {
1457
+ $avatar_args['class'] = $args['class'];
1458
+ }
1459
+ if ( ! empty( $args['extra_attr'] ) ) {
1460
+ $avatar_args['extra_attr'] = $args['extra_attr'];
1461
+ }
1462
+ if ( ! empty( $args['scheme'] ) ) {
1463
+ $avatar_args['scheme'] = $args['scheme'];
1464
+ }
1465
+ if ( ! empty( $args['force_default'] ) ) {
1466
+ $avatar_args['force_default'] = $args['force_default'];
1467
+ }
1468
+ if ( ! empty( $args['rating'] ) ) {
1469
+ $avatar_args['rating'] = $args['rating'];
1470
  }
1471
 
1472
+ // Let BuddyPress handle the fetching of the avatar.
1473
+ $bp_avatar = bp_core_fetch_avatar( $avatar_args );
1474
+
1475
+ // If BuddyPress found an avatar, use it. If not, use the result of get_avatar.
1476
+ return ( !$bp_avatar ) ? $avatar : $bp_avatar;
1477
  }
1478
+ add_filter( 'get_avatar', 'bp_core_fetch_avatar_filter', 10, 6 );
1479
 
1480
  /**
1481
  * Is the current avatar upload error-free?
1511
  * Get allowed avatar types.
1512
  *
1513
  * @since 2.3.0
 
 
1514
  */
1515
  function bp_core_get_allowed_avatar_types() {
1516
  $allowed_types = bp_attachments_get_allowed_types( 'avatar' );
1537
  * Get allowed avatar mime types.
1538
  *
1539
  * @since 2.3.0
 
 
1540
  */
1541
  function bp_core_get_allowed_avatar_mimes() {
1542
  $allowed_types = bp_core_get_allowed_avatar_types();
1943
  * parameter of the WordPress main query to this posted var. To avoid
1944
  * notices, we need to make sure this 'week' query var is reset to 0.
1945
  *
1946
+ * @since 2.2.0
1947
  *
1948
  * @param WP_Query|null $posts_query The main query object.
1949
  */
1977
  /**
1978
  * Checks whether Avatar UI should be loaded.
1979
  *
1980
+ * @since 2.3.0
1981
  *
1982
  * @return bool True if Avatar UI should load, false otherwise.
1983
  */
2009
  * - Load the avatar UI for a component that is !groups or !user (return true regarding your conditions)
2010
  * - Completely disable the avatar UI introduced in 2.3 (eg: __return_false())
2011
  *
2012
+ * @since 2.3.0
2013
  *
2014
  * @param bool $retval Whether or not to load the Avatar UI.
2015
  */
2019
  /**
2020
  * Checks whether the Webcam Avatar UI part should be loaded.
2021
  *
2022
+ * @since 2.3.0
2023
  *
2024
  * @global $is_safari
2025
  * @global $is_IE
2040
  /**
2041
  * Bail when the browser does not support getUserMedia.
2042
  *
2043
+ * @see http://caniuse.com/#feat=stream
2044
  */
2045
  if ( $is_safari || $is_IE || ( $is_chrome && ! is_ssl() ) ) {
2046
  return false;
2060
  /**
2061
  * Template function to load the Avatar UI javascript templates.
2062
  *
2063
+ * @since 2.3.0
2064
  */
2065
  function bp_avatar_get_templates() {
2066
  if ( ! bp_avatar_is_front_edit() ) {
2076
  * If the "avatar templates" are not including the new template tag, this will
2077
  * help users to get the avatar UI.
2078
  *
2079
+ * @since 2.3.0
2080
  */
2081
  function bp_avatar_template_check() {
2082
  if ( ! bp_avatar_is_front_edit() ) {
bp-core/bp-core-buddybar.php CHANGED
@@ -33,8 +33,8 @@ defined( 'ABSPATH' ) || exit;
33
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
34
  * item is clicked.
35
  * }
36
- * @param string $component The component the navigation is attached to. Defaults to 'members'.
37
- * @return null|false Returns false on failure.
38
  */
39
  function bp_core_new_nav_item( $args, $component = 'members' ) {
40
  if ( ! bp_is_active( $component ) ) {
@@ -90,7 +90,7 @@ function bp_core_new_nav_item( $args, $component = 'members' ) {
90
  * Add a link to the main BuddyPress navigation.
91
  *
92
  * @since 2.4.0
93
- * @since 2.6.0 Introduced the `$component` parameter. Began returning a BP_Core_Nav_Item object on success.
94
  *
95
  * @param array|string $args {
96
  * Array describing the new nav item.
@@ -107,8 +107,8 @@ function bp_core_new_nav_item( $args, $component = 'members' ) {
107
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
108
  * item is clicked.
109
  * }
110
- * @param string $component Optional. Component that the nav belongs to.
111
- * @return false|array Returns false on failure, new nav item on success.
112
  */
113
  function bp_core_create_nav_link( $args = '', $component = 'members' ) {
114
  $bp = buddypress();
@@ -152,7 +152,7 @@ function bp_core_create_nav_link( $args = '', $component = 'members' ) {
152
  );
153
 
154
  // Add the item to the nav.
155
- buddypress()->{$component}->nav->add_nav( $nav_item );
156
 
157
  /**
158
  * Fires after a link is added to the main BuddyPress nav.
@@ -167,7 +167,7 @@ function bp_core_create_nav_link( $args = '', $component = 'members' ) {
167
  */
168
  do_action( 'bp_core_create_nav_link', $r, $args, $defaults, $component );
169
 
170
- return $nav_item;
171
  }
172
 
173
  /**
@@ -190,7 +190,7 @@ function bp_core_create_nav_link( $args = '', $component = 'members' ) {
190
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
191
  * item is clicked.
192
  * }
193
- * @return false|null Returns false on failure.
194
  */
195
  function bp_core_register_nav_screen_function( $args = '' ) {
196
  $bp = buddypress();
@@ -214,9 +214,9 @@ function bp_core_register_nav_screen_function( $args = '' ) {
214
  }
215
 
216
  /**
217
- * If this is for site admins only and the user is not one,
218
- * don't register this screen function.
219
- */
220
  if ( ! empty( $r['site_admin_only'] ) && ! bp_current_user_can( 'bp_moderate' ) ) {
221
  return false;
222
  }
@@ -321,7 +321,7 @@ function bp_core_new_nav_default( $args = '' ) {
321
  }
322
  }
323
 
324
- // Edit the screen function for the parent nav.
325
  $bp->members->nav->edit_nav( array(
326
  'screen_function' => &$r['screen_function'],
327
  'default_subnav_slug' => $r['subnav_slug'],
@@ -394,8 +394,8 @@ function bp_core_new_nav_default( $args = '' ) {
394
  * @type bool $show_in_admin_bar Optional. Whether the nav item should be added into the group's "Edit"
395
  * Admin Bar menu for group admins. Default: false.
396
  * }
397
- * @param string|null $component The component the navigation is attached to. Defaults to 'members'.
398
- * @return null|false Returns false on failure.
399
  */
400
  function bp_core_new_subnav_item( $args, $component = null ) {
401
  // Backward compatibility for plugins using `bp_core_new_subnav_item()` without `$component`
@@ -405,7 +405,7 @@ function bp_core_new_subnav_item( $args, $component = null ) {
405
  * Assume that this item is intended to belong to the current group if:
406
  * a) the 'parent_slug' is the same as the slug of the current group, or
407
  * b) the 'parent_slug' starts with the slug of the current group, and the members nav doesn't have
408
- * a primary item with that slug.
409
  */
410
  $group_slug = bp_get_current_group_slug();
411
  if (
@@ -446,7 +446,7 @@ function bp_core_new_subnav_item( $args, $component = null ) {
446
  * Add a subnav link to the BuddyPress navigation.
447
  *
448
  * @since 2.4.0
449
- * @since 2.6.0 Introduced the `$component` parameter. Began returning a BP_Core_Nav_Item object on success.
450
  *
451
  * @param array|string $args {
452
  * Array describing the new subnav item.
@@ -474,8 +474,8 @@ function bp_core_new_subnav_item( $args, $component = null ) {
474
  * the group's "Edit" Admin Bar menu for group admins.
475
  * Default: false.
476
  * }
477
- * @param string $component The component the navigation is attached to. Defaults to 'members'.
478
- * @return false|array Returns false on failure, new BP_Core_Nav_Item instance on success.
479
  */
480
  function bp_core_create_subnav_link( $args = '', $component = 'members' ) {
481
  $bp = buddypress();
@@ -536,9 +536,7 @@ function bp_core_create_subnav_link( $args = '', $component = 'members' ) {
536
  'show_in_admin_bar' => (bool) $r['show_in_admin_bar'],
537
  );
538
 
539
- buddypress()->{$component}->nav->add_nav( $subnav_item );
540
-
541
- return $subnav_item;
542
  }
543
 
544
  /**
@@ -570,8 +568,8 @@ function bp_core_create_subnav_link( $args = '', $component = 'members' ) {
570
  * the group's "Edit" Admin Bar menu for group admins.
571
  * Default: false.
572
  * }
573
- * @param string $component The component the navigation is attached to. Defaults to 'members'.
574
- * @return null|false Returns false on failure.
575
  */
576
  function bp_core_register_subnav_screen_function( $args = '', $component = 'members' ) {
577
  $bp = buddypress();
@@ -775,8 +773,8 @@ function bp_nav_item_has_subnav( $nav_item = '', $component = 'members' ) {
775
  * @since 1.0.0
776
  * @since 2.6.0 Introduced the `$component` parameter.
777
  *
778
- * @param string $slug The slug of the primary navigation item.
779
- * @param string|null $component The component the navigation is attached to. Defaults to 'members'.
780
  * @return bool Returns false on failure, True on success.
781
  */
782
  function bp_core_remove_nav_item( $slug, $component = null ) {
@@ -785,7 +783,7 @@ function bp_core_remove_nav_item( $slug, $component = null ) {
785
  // Backward compatibility for removing group nav items using the group slug as `$parent_slug`.
786
  if ( ! $component && bp_is_active( 'groups' ) && isset( $bp->groups->nav ) ) {
787
  if ( $bp->groups->nav->get_primary( array( 'slug' => $slug ) ) ) {
788
- $component = 'groups';
789
  }
790
  }
791
 
@@ -800,8 +798,10 @@ function bp_core_remove_nav_item( $slug, $component = null ) {
800
  $screen_functions = $bp->{$component}->nav->delete_nav( $slug );
801
 
802
  // Reset backcompat nav items so that subsequent references will be correct.
803
- $bp->bp_nav->reset();
804
- $bp->bp_options_nav->reset();
 
 
805
 
806
  if ( ! is_array( $screen_functions ) ) {
807
  return false;
@@ -823,9 +823,9 @@ function bp_core_remove_nav_item( $slug, $component = null ) {
823
  * @since 1.0.0
824
  * @since 2.6.0 Introduced the `$component` parameter.
825
  *
826
- * @param string $parent_slug The slug of the primary navigation item.
827
- * @param string $slug The slug of the secondary item to be removed.
828
- * @param string|null $component The component the navigation is attached to. Defaults to 'members'.
829
  * @return bool Returns false on failure, True on success.
830
  */
831
  function bp_core_remove_subnav_item( $parent_slug, $slug, $component = null ) {
@@ -834,7 +834,7 @@ function bp_core_remove_subnav_item( $parent_slug, $slug, $component = null ) {
834
  // Backward compatibility for removing group nav items using the group slug as `$parent_slug`.
835
  if ( ! $component && bp_is_active( 'groups' ) && isset( $bp->groups->nav ) ) {
836
  if ( $bp->groups->nav->get_primary( array( 'slug' => $parent_slug ) ) ) {
837
- $component = 'groups';
838
  }
839
  }
840
 
@@ -849,8 +849,10 @@ function bp_core_remove_subnav_item( $parent_slug, $slug, $component = null ) {
849
  $screen_functions = $bp->{$component}->nav->delete_nav( $slug, $parent_slug );
850
 
851
  // Reset backcompat nav items so that subsequent references will be correct.
852
- $bp->bp_nav->reset();
853
- $bp->bp_options_nav->reset();
 
 
854
 
855
  if ( ! is_array( $screen_functions ) ) {
856
  return false;
33
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
34
  * item is clicked.
35
  * }
36
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
37
+ * @return bool|null Returns false on failure.
38
  */
39
  function bp_core_new_nav_item( $args, $component = 'members' ) {
40
  if ( ! bp_is_active( $component ) ) {
90
  * Add a link to the main BuddyPress navigation.
91
  *
92
  * @since 2.4.0
93
+ * @since 2.6.0 Introduced the `$component` parameter. Began returning a BP_Nav_Item object on success.
94
  *
95
  * @param array|string $args {
96
  * Array describing the new nav item.
107
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
108
  * item is clicked.
109
  * }
110
+ * @param string $component Optional. Component that the nav belongs to.
111
+ * @return bool|BP_Nav_Item Returns false on failure, new nav item on success.
112
  */
113
  function bp_core_create_nav_link( $args = '', $component = 'members' ) {
114
  $bp = buddypress();
152
  );
153
 
154
  // Add the item to the nav.
155
+ $retval = buddypress()->{$component}->nav->add_nav( $nav_item );
156
 
157
  /**
158
  * Fires after a link is added to the main BuddyPress nav.
167
  */
168
  do_action( 'bp_core_create_nav_link', $r, $args, $defaults, $component );
169
 
170
+ return $retval;
171
  }
172
 
173
  /**
190
  * @type bool|string $default_subnav_slug Optional. The slug of the default subnav item to select when the nav
191
  * item is clicked.
192
  * }
193
+ * @return bool|null Returns false on failure.
194
  */
195
  function bp_core_register_nav_screen_function( $args = '' ) {
196
  $bp = buddypress();
214
  }
215
 
216
  /**
217
+ * If this is for site admins only and the user is not one,
218
+ * don't register this screen function.
219
+ */
220
  if ( ! empty( $r['site_admin_only'] ) && ! bp_current_user_can( 'bp_moderate' ) ) {
221
  return false;
222
  }
321
  }
322
  }
323
 
324
+ // Edit the screen function for the parent nav
325
  $bp->members->nav->edit_nav( array(
326
  'screen_function' => &$r['screen_function'],
327
  'default_subnav_slug' => $r['subnav_slug'],
394
  * @type bool $show_in_admin_bar Optional. Whether the nav item should be added into the group's "Edit"
395
  * Admin Bar menu for group admins. Default: false.
396
  * }
397
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
398
+ * @return bool|null Returns false on failure.
399
  */
400
  function bp_core_new_subnav_item( $args, $component = null ) {
401
  // Backward compatibility for plugins using `bp_core_new_subnav_item()` without `$component`
405
  * Assume that this item is intended to belong to the current group if:
406
  * a) the 'parent_slug' is the same as the slug of the current group, or
407
  * b) the 'parent_slug' starts with the slug of the current group, and the members nav doesn't have
408
+ * a primary item with that slug
409
  */
410
  $group_slug = bp_get_current_group_slug();
411
  if (
446
  * Add a subnav link to the BuddyPress navigation.
447
  *
448
  * @since 2.4.0
449
+ * @since 2.6.0 Introduced the `$component` parameter. Began returning a BP_Nav_Item object on success.
450
  *
451
  * @param array|string $args {
452
  * Array describing the new subnav item.
474
  * the group's "Edit" Admin Bar menu for group admins.
475
  * Default: false.
476
  * }
477
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
478
+ * @return bool|BP_Nav_Item Returns false on failure, new nav item on success.
479
  */
480
  function bp_core_create_subnav_link( $args = '', $component = 'members' ) {
481
  $bp = buddypress();
536
  'show_in_admin_bar' => (bool) $r['show_in_admin_bar'],
537
  );
538
 
539
+ return buddypress()->{$component}->nav->add_nav( $subnav_item );
 
 
540
  }
541
 
542
  /**
568
  * the group's "Edit" Admin Bar menu for group admins.
569
  * Default: false.
570
  * }
571
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
572
+ * @return bool|null Returns false on failure.
573
  */
574
  function bp_core_register_subnav_screen_function( $args = '', $component = 'members' ) {
575
  $bp = buddypress();
773
  * @since 1.0.0
774
  * @since 2.6.0 Introduced the `$component` parameter.
775
  *
776
+ * @param string $slug The slug of the primary navigation item.
777
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
778
  * @return bool Returns false on failure, True on success.
779
  */
780
  function bp_core_remove_nav_item( $slug, $component = null ) {
783
  // Backward compatibility for removing group nav items using the group slug as `$parent_slug`.
784
  if ( ! $component && bp_is_active( 'groups' ) && isset( $bp->groups->nav ) ) {
785
  if ( $bp->groups->nav->get_primary( array( 'slug' => $slug ) ) ) {
786
+ return bp_core_remove_nav_item( $slug, 'groups' );
787
  }
788
  }
789
 
798
  $screen_functions = $bp->{$component}->nav->delete_nav( $slug );
799
 
800
  // Reset backcompat nav items so that subsequent references will be correct.
801
+ if ( buddypress()->do_nav_backcompat ) {
802
+ $bp->bp_nav->reset();
803
+ $bp->bp_options_nav->reset();
804
+ }
805
 
806
  if ( ! is_array( $screen_functions ) ) {
807
  return false;
823
  * @since 1.0.0
824
  * @since 2.6.0 Introduced the `$component` parameter.
825
  *
826
+ * @param string $parent_slug The slug of the primary navigation item.
827
+ * @param string $slug The slug of the secondary item to be removed.
828
+ * @param string $component The component the navigation is attached to. Defaults to 'members'.
829
  * @return bool Returns false on failure, True on success.
830
  */
831
  function bp_core_remove_subnav_item( $parent_slug, $slug, $component = null ) {
834
  // Backward compatibility for removing group nav items using the group slug as `$parent_slug`.
835
  if ( ! $component && bp_is_active( 'groups' ) && isset( $bp->groups->nav ) ) {
836
  if ( $bp->groups->nav->get_primary( array( 'slug' => $parent_slug ) ) ) {
837
+ return bp_core_remove_subnav_item( $slug, $parent_slug, 'groups' );
838
  }
839
  }
840
 
849
  $screen_functions = $bp->{$component}->nav->delete_nav( $slug, $parent_slug );
850
 
851
  // Reset backcompat nav items so that subsequent references will be correct.
852
+ if ( buddypress()->do_nav_backcompat ) {
853
+ $bp->bp_nav->reset();
854
+ $bp->bp_options_nav->reset();
855
+ }
856
 
857
  if ( ! is_array( $screen_functions ) ) {
858
  return false;
bp-core/bp-core-cache.php CHANGED
@@ -73,22 +73,19 @@ add_action( 'deleted_user', 'bp_core_clear_member_count_caches
73
  *
74
  * @param int $post_id ID of the page that was saved.
75
  */
76
- function bp_core_clear_directory_pages_cache_page_edit( $post_id = 0 ) {
77
-
78
- // Bail if BP is not defined here.
79
- if ( ! buddypress() ) {
80
  return;
81
  }
82
 
83
- // Bail if not on the root blog
84
- if ( ! bp_is_root_blog() ) {
85
  return;
86
  }
87
 
88
  $page_ids = bp_core_get_directory_page_ids( 'all' );
89
 
90
- // Bail if post ID is not a directory page
91
- if ( ! in_array( $post_id, $page_ids ) ) {
92
  return;
93
  }
94
 
@@ -118,17 +115,7 @@ add_action( 'update_option', 'bp_core_clear_directory_pages_cache_settings_edit'
118
  * @param string $option Option name.
119
  */
120
  function bp_core_clear_root_options_cache( $option ) {
121
- foreach ( array( 'add_option', 'add_site_option', 'update_option', 'update_site_option' ) as $action ) {
122
- remove_action( $action, 'bp_core_clear_root_options_cache' );
123
- }
124
-
125
- // Surrounding code prevents infinite loops on WP < 4.4.
126
  $keys = array_keys( bp_get_default_options() );
127
-
128
- foreach ( array( 'add_option', 'add_site_option', 'update_option', 'update_site_option' ) as $action ) {
129
- add_action( $action, 'bp_core_clear_root_options_cache' );
130
- }
131
-
132
  $keys = array_merge( $keys, array(
133
  'registration',
134
  'avatar_default',
@@ -194,7 +181,7 @@ function bp_get_non_cached_ids( $item_ids, $cache_group ) {
194
  * @type string $cache_key_prefix Optional. The prefix to use when creating
195
  * cache key names. Default: the value of $meta_table.
196
  * }
197
- * @return false|array Metadata cache for the specified objects, or false on failure.
198
  */
199
  function bp_update_meta_cache( $args = array() ) {
200
  global $wpdb;
@@ -265,100 +252,3 @@ function bp_update_meta_cache( $args = array() ) {
265
 
266
  return $cache;
267
  }
268
-
269
- /**
270
- * Gets a value that has been cached using an incremented key.
271
- *
272
- * A utility function for use by query methods like BP_Activity_Activity::get().
273
- *
274
- * @since 2.7.0
275
- * @see bp_core_set_incremented_cache()
276
- *
277
- * @param string $key Unique key for the query. Usually a SQL string.
278
- * @param string $group Cache group. Eg 'bp_activity'.
279
- * @return array|bool False if no cached values are found, otherwise an array of IDs.
280
- */
281
- function bp_core_get_incremented_cache( $key, $group ) {
282
- $cache_key = bp_core_get_incremented_cache_key( $key, $group );
283
- return wp_cache_get( $cache_key, $group );
284
- }
285
-
286
- /**
287
- * Caches a value using an incremented key.
288
- *
289
- * An "incremented key" is a cache key that is hashed with a unique incrementor,
290
- * allowing for bulk invalidation.
291
- *
292
- * Use this method when caching data that should be invalidated whenever any
293
- * object of a given type is created, updated, or deleted. This usually means
294
- * data related to object queries, which can only reliably cached until the
295
- * underlying set of objects has been modified. See, eg, BP_Activity_Activity::get().
296
- *
297
- * @since 2.7.0
298
- *
299
- * @param string $key Unique key for the query. Usually a SQL string.
300
- * @param string $group Cache group. Eg 'bp_activity'.
301
- * @param array $ids Array of IDs.
302
- * @return bool
303
- */
304
- function bp_core_set_incremented_cache( $key, $group, $ids ) {
305
- $cache_key = bp_core_get_incremented_cache_key( $key, $group );
306
- return wp_cache_set( $cache_key, $ids, $group );
307
- }
308
-
309
- /**
310
- * Gets the key to be used when caching a value using an incremented cache key.
311
- *
312
- * The $key is hashed with a component-specific incrementor, which is used to
313
- * invalidate multiple caches at once.
314
-
315
- * @since 2.7.0
316
- *
317
- * @param string $key Unique key for the query. Usually a SQL string.
318
- * @param string $group Cache group. Eg 'bp_activity'.
319
- * @return string
320
- */
321
- function bp_core_get_incremented_cache_key( $key, $group ) {
322
- $incrementor = bp_core_get_incrementor( $group );
323
- $cache_key = md5( $key . $incrementor );
324
- return $cache_key;
325
- }
326
-
327
- /**
328
- * Gets a group-specific cache incrementor.
329
- *
330
- * The incrementor is paired with query identifiers (like SQL strings) to
331
- * create cache keys that can be invalidated en masse.
332
- *
333
- * If an incrementor does not yet exist for the given `$group`, one will
334
- * be created.
335
- *
336
- * @since 2.7.0
337
- *
338
- * @param string $group Cache group. Eg 'bp_activity'.
339
- * @return string
340
- */
341
- function bp_core_get_incrementor( $group ) {
342
- $incrementor = wp_cache_get( 'incrementor', $group );
343
- if ( ! $incrementor ) {
344
- $incrementor = microtime();
345
- wp_cache_set( 'incrementor', $incrementor, $group );
346
- }
347
-
348
- return $incrementor;
349
- }
350
-
351
- /**
352
- * Reset a group-specific cache incrementor.
353
- *
354
- * Call this function when all incrementor-based caches associated with a given
355
- * cache group should be invalidated.
356
- *
357
- * @since 2.7.0
358
- *
359
- * @param string $group Cache group. Eg 'bp_activity'.
360
- * @return bool True on success, false on failure.
361
- */
362
- function bp_core_reset_incrementor( $group ) {
363
- return wp_cache_delete( 'incrementor', $group );
364
- }
73
  *
74
  * @param int $post_id ID of the page that was saved.
75
  */
76
+ function bp_core_clear_directory_pages_cache_page_edit( $post_id ) {
77
+ if ( ! bp_is_root_blog() ) {
 
 
78
  return;
79
  }
80
 
81
+ // Bail if BP is not defined here.
82
+ if ( ! buddypress() ) {
83
  return;
84
  }
85
 
86
  $page_ids = bp_core_get_directory_page_ids( 'all' );
87
 
88
+ if ( ! in_array( $post_id, (array) $page_ids ) ) {
 
89
  return;
90
  }
91
 
115
  * @param string $option Option name.
116
  */
117
  function bp_core_clear_root_options_cache( $option ) {
 
 
 
 
 
118
  $keys = array_keys( bp_get_default_options() );
 
 
 
 
 
119
  $keys = array_merge( $keys, array(
120
  'registration',
121
  'avatar_default',
181
  * @type string $cache_key_prefix Optional. The prefix to use when creating
182
  * cache key names. Default: the value of $meta_table.
183
  * }
184
+ * @return array|bool Metadata cache for the specified objects, or false on failure.
185
  */
186
  function bp_update_meta_cache( $args = array() ) {
187
  global $wpdb;
252
 
253
  return $cache;
254
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/bp-core-caps.php CHANGED
@@ -20,7 +20,7 @@ defined( 'ABSPATH' ) || exit;
20
  *
21
  * @since 2.1.0
22
  *
23
- * @return object
24
  */
25
  function bp_get_current_blog_roles() {
26
  global $wp_roles;
@@ -56,6 +56,7 @@ function bp_get_current_blog_roles() {
56
  * This is called on plugin activation.
57
  *
58
  * @since 1.6.0
 
59
  */
60
  function bp_add_caps() {
61
  global $wp_roles;
@@ -88,6 +89,7 @@ function bp_add_caps() {
88
  * This is called on plugin deactivation.
89
  *
90
  * @since 1.6.0
 
91
  */
92
  function bp_remove_caps() {
93
  global $wp_roles;
@@ -216,6 +218,9 @@ function bp_get_caps_for_role( $role = '' ) {
216
  * already have a role or capability on.
217
  *
218
  * @since 1.6.0
 
 
 
219
  */
220
  function bp_set_current_user_default_role() {
221
 
@@ -243,105 +248,55 @@ function bp_set_current_user_default_role() {
243
  *
244
  * @since 1.6.0
245
  * @since 2.4.0 Second argument modified to accept an array, rather than `$blog_id`.
246
- * @since 2.7.0 Deprecated $args['blog_id'] in favor of $args['site_id'].
247
  *
248
  * @param string $capability Capability or role name.
249
  * @param array|int $args {
250
  * Array of extra arguments applicable to the capability check.
251
- * @type int $site_id Optional. Blog ID. Defaults to the BP root blog.
252
- * @type int $blog_id Deprecated. Use $site_id instead.
253
  * @type mixed $a,... Optional. Extra arguments applicable to the capability check.
254
  * }
255
  * @return bool True if the user has the cap for the given parameters.
256
  */
257
  function bp_current_user_can( $capability, $args = array() ) {
 
 
258
  // Backward compatibility for older $blog_id parameter.
259
  if ( is_int( $args ) ) {
260
- $site_id = $args;
261
  $args = array();
262
- $args['site_id'] = $site_id;
263
 
264
  // New format for second parameter.
265
  } elseif ( is_array( $args ) && isset( $args['blog_id'] ) ) {
266
  // Get the blog ID if set, but don't pass along to `current_user_can_for_blog()`.
267
- $args['site_id'] = (int) $args['blog_id'];
268
  unset( $args['blog_id'] );
269
  }
270
 
271
- // Cast $args as an array.
272
- $args = (array) $args;
 
 
273
 
274
  // Use root blog if no ID passed.
275
- if ( empty( $args['site_id'] ) ) {
276
- $args['site_id'] = bp_get_root_blog_id();
277
  }
278
 
279
- /** This filter is documented in /bp-core/bp-core-template.php */
280
- $current_user_id = apply_filters( 'bp_loggedin_user_id', get_current_user_id() );
281
-
282
- // Call bp_user_can().
283
- $retval = bp_user_can( $current_user_id, $capability, $args );
284
 
285
  /**
286
  * Filters whether or not the current user has a given capability.
287
  *
288
  * @since 1.6.0
289
  * @since 2.4.0 Pass `$args` variable.
290
- * @since 2.7.0 Change format of $args variable array.
291
  *
292
  * @param bool $retval Whether or not the current user has the capability.
293
  * @param string $capability The capability being checked for.
294
  * @param int $blog_id Blog ID. Defaults to the BP root blog.
295
- * @param array $args Array of extra arguments as originally passed.
296
- */
297
- return (bool) apply_filters( 'bp_current_user_can', $retval, $capability, $args['site_id'], $args );
298
- }
299
-
300
- /**
301
- * Check whether the specified user has a given capability on a given site.
302
- *
303
- * @since 2.7.0
304
- *
305
- * @param int $user_id
306
- * @param string $capability Capability or role name.
307
- * @param array|int $args {
308
- * Array of extra arguments applicable to the capability check.
309
- *
310
- * @type int $site_id Optional. Site ID. Defaults to the BP root blog.
311
- * @type mixed $a,... Optional. Extra arguments applicable to the capability check.
312
- * }
313
- * @return bool True if the user has the cap for the given parameters.
314
- */
315
- function bp_user_can( $user_id, $capability, $args = array() ) {
316
- $site_id = bp_get_root_blog_id();
317
-
318
- // Get the site ID if set, but don't pass along to user_can().
319
- if ( isset( $args['site_id'] ) ) {
320
- $site_id = (int) $args['site_id'];
321
- unset( $args['site_id'] );
322
- }
323
-
324
- $switched = is_multisite() ? switch_to_blog( $site_id ) : false;
325
- $retval = call_user_func_array( 'user_can', array( $user_id, $capability, $args ) );
326
-
327
- /**
328
- * Filters whether or not the specified user has a given capability on a given site.
329
- *
330
- * @since 2.7.0
331
- *
332
- * @param bool $retval Whether or not the current user has the capability.
333
- * @param int $user_id
334
- * @param string $capability The capability being checked for.
335
- * @param int $site_id Site ID. Defaults to the BP root blog.
336
  * @param array $args Array of extra arguments passed.
337
  */
338
- $retval = (bool) apply_filters( 'bp_user_can', $retval, $user_id, $capability, $site_id, $args );
339
-
340
- if ( $switched ) {
341
- restore_current_blog();
342
- }
343
-
344
- return $retval;
345
  }
346
 
347
  /**
20
  *
21
  * @since 2.1.0
22
  *
23
+ * @return array
24
  */
25
  function bp_get_current_blog_roles() {
26
  global $wp_roles;
56
  * This is called on plugin activation.
57
  *
58
  * @since 1.6.0
59
+ *
60
  */
61
  function bp_add_caps() {
62
  global $wp_roles;
89
  * This is called on plugin deactivation.
90
  *
91
  * @since 1.6.0
92
+ *
93
  */
94
  function bp_remove_caps() {
95
  global $wp_roles;
218
  * already have a role or capability on.
219
  *
220
  * @since 1.6.0
221
+ *
222
+ * @global BuddyPress $bp Global BuddyPress settings object.
223
+ *
224
  */
225
  function bp_set_current_user_default_role() {
226
 
248
  *
249
  * @since 1.6.0
250
  * @since 2.4.0 Second argument modified to accept an array, rather than `$blog_id`.
 
251
  *
252
  * @param string $capability Capability or role name.
253
  * @param array|int $args {
254
  * Array of extra arguments applicable to the capability check.
255
+ * @type int $blog_id Optional. Blog ID. Defaults to the BP root blog.
 
256
  * @type mixed $a,... Optional. Extra arguments applicable to the capability check.
257
  * }
258
  * @return bool True if the user has the cap for the given parameters.
259
  */
260
  function bp_current_user_can( $capability, $args = array() ) {
261
+ $blog_id = 0;
262
+
263
  // Backward compatibility for older $blog_id parameter.
264
  if ( is_int( $args ) ) {
265
+ $blog_id = $args;
266
  $args = array();
 
267
 
268
  // New format for second parameter.
269
  } elseif ( is_array( $args ) && isset( $args['blog_id'] ) ) {
270
  // Get the blog ID if set, but don't pass along to `current_user_can_for_blog()`.
271
+ $blog_id = (int) $args['blog_id'];
272
  unset( $args['blog_id'] );
273
  }
274
 
275
+ // Backward compatibility for older bp_current_user_can() checks
276
+ if ( empty( $args ) ) {
277
+ $args = null;
278
+ }
279
 
280
  // Use root blog if no ID passed.
281
+ if ( empty( $blog_id ) ) {
282
+ $blog_id = bp_get_root_blog_id();
283
  }
284
 
285
+ $args = array( $blog_id, $capability, $args );
286
+ $retval = call_user_func_array( 'current_user_can_for_blog', $args );
 
 
 
287
 
288
  /**
289
  * Filters whether or not the current user has a given capability.
290
  *
291
  * @since 1.6.0
292
  * @since 2.4.0 Pass `$args` variable.
 
293
  *
294
  * @param bool $retval Whether or not the current user has the capability.
295
  * @param string $capability The capability being checked for.
296
  * @param int $blog_id Blog ID. Defaults to the BP root blog.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  * @param array $args Array of extra arguments passed.
298
  */
299
+ return (bool) apply_filters( 'bp_current_user_can', $retval, $capability, $blog_id, $args );
 
 
 
 
 
 
300
  }
301
 
302
  /**
bp-core/bp-core-catchuri.php CHANGED
@@ -218,7 +218,7 @@ function bp_core_set_uri_globals() {
218
  /**
219
  * Filter the portion of the URI that is the displayed user's slug.
220
  *
221
- * Eg. example.com/ADMIN (when root profiles is enabled)
222
  * example.com/members/ADMIN (when root profiles isn't enabled)
223
  *
224
  * ADMIN would be the displayed user's slug.
@@ -456,17 +456,6 @@ function bp_core_load_template( $templates ) {
456
  * @param array $filtered_templates Array of templates to attempt to load.
457
  */
458
  $located_template = apply_filters( 'bp_located_template', $template, $filtered_templates );
459
-
460
- /*
461
- * If current page is an embed, wipe out bp-default template.
462
- *
463
- * Wiping out the bp-default template allows WordPress to use their special
464
- * embed template, which is what we want.
465
- */
466
- if ( function_exists( 'is_embed' ) && is_embed() ) {
467
- $located_template = '';
468
- }
469
-
470
  if ( !empty( $located_template ) ) {
471
  // Template was located, lets set this as a valid page and not a 404.
472
  status_header( 200 );
@@ -553,18 +542,16 @@ function bp_core_catch_profile_uri() {
553
  * @since 2.6.0
554
  *
555
  * @param string $member_slug The current member slug.
556
- * @return string $member_slug The current member slug.
557
  */
558
  function bp_core_members_shortlink_redirector( $member_slug ) {
559
-
560
  /**
561
  * Shortlink slug to redirect to logged-in user.
562
  *
563
- * The x.com/members/me/* url will redirect to x.com/members/{LOGGED_IN_USER_SLUG}/*
564
  *
565
  * @since 2.6.0
566
  *
567
- * @param string $slug Defaults to 'me'.
568
  */
569
  $me_slug = apply_filters( 'bp_core_members_shortlink_slug', 'me' );
570
 
@@ -637,9 +624,9 @@ function bp_core_no_access( $args = '' ) {
637
  $redirect_url .= $_SERVER['REQUEST_URI'];
638
 
639
  $defaults = array(
640
- 'mode' => 2, // 1 = $root, 2 = wp-login.php.
641
- 'redirect' => $redirect_url, // the URL you get redirected to when a user successfully logs in.
642
- 'root' => bp_get_root_domain(), // the landing page you get redirected to when a user doesn't have access.
643
  'message' => __( 'You must log in to access the page you requested.', 'buddypress' )
644
  );
645
 
@@ -656,7 +643,7 @@ function bp_core_no_access( $args = '' ) {
656
  extract( $r, EXTR_SKIP );
657
 
658
  /*
659
- * @ignore Ignore these filters and use 'bp_core_no_access' above.
660
  */
661
  $mode = apply_filters( 'bp_no_access_mode', $mode, $root, $redirect, $message );
662
  $redirect = apply_filters( 'bp_no_access_redirect', $redirect, $root, $message, $mode );
@@ -666,21 +653,18 @@ function bp_core_no_access( $args = '' ) {
666
 
667
  switch ( $mode ) {
668
 
669
- // Option to redirect to wp-login.php.
670
  // Error message is displayed with bp_core_no_access_wp_login_error().
671
  case 2 :
672
  if ( !empty( $redirect ) ) {
673
- bp_core_redirect( add_query_arg( array(
674
- 'bp-auth' => 1,
675
- 'action' => 'bpnoaccess'
676
- ), wp_login_url( $redirect ) ) );
677
  } else {
678
  bp_core_redirect( $root );
679
  }
680
 
681
  break;
682
 
683
- // Redirect to root with "redirect_to" parameter.
684
  // Error message is displayed with bp_core_add_message().
685
  case 1 :
686
  default :
@@ -701,47 +685,16 @@ function bp_core_no_access( $args = '' ) {
701
  }
702
 
703
  /**
704
- * Login redirector.
705
- *
706
- * If a link is not publicly available, we can send members from external
707
- * locations, like following links in an email, through the login screen.
708
- *
709
- * If a user clicks on this link and is already logged in, we should attempt
710
- * to redirect the user to the authorized content instead of forcing the user
711
- * to re-authenticate.
712
  *
713
- * @since 2.9.0
714
- */
715
- function bp_login_redirector() {
716
- // Redirect links must include the `redirect_to` and `bp-auth` parameters.
717
- if ( empty( $_GET['redirect_to'] ) || empty( $_GET['bp-auth'] ) ) {
718
- return;
719
- }
720
-
721
- /*
722
- * If the user is already logged in,
723
- * skip the login form and redirect them to the content.
724
- */
725
- if ( bp_loggedin_user_id() ) {
726
- wp_safe_redirect( esc_url_raw( $_GET['redirect_to'] ) );
727
- exit;
728
- }
729
- }
730
- add_action( 'login_init', 'bp_login_redirector', 1 );
731
-
732
- /**
733
- * Add a custom BuddyPress no access error message to wp-login.php.
734
  *
735
  * @since 1.5.0
736
- * @since 2.7.0 Hook moved to 'wp_login_errors' made available since WP 3.6.0.
737
  *
738
- * @param WP_Error $errors Current error container.
739
- * @return WP_Error
740
  */
741
- function bp_core_no_access_wp_login_error( $errors ) {
742
- if ( empty( $_GET['action'] ) || 'bpnoaccess' !== $_GET['action'] ) {
743
- return $errors;
744
- }
745
 
746
  /**
747
  * Filters the error message for wp-login.php when needing to log in before accessing.
@@ -751,27 +704,12 @@ function bp_core_no_access_wp_login_error( $errors ) {
751
  * @param string $value Error message to display.
752
  * @param string $value URL to redirect user to after successful login.
753
  */
754
- $message = apply_filters( 'bp_wp_login_error', __( 'You must log in to access the page you requested.', 'buddypress' ), $_REQUEST['redirect_to'] );
755
 
756
- $errors->add( 'bp_no_access', $message );
757
-
758
- return $errors;
759
  }
760
- add_filter( 'wp_login_errors', 'bp_core_no_access_wp_login_error' );
761
-
762
- /**
763
- * Add our custom error code to WP login's shake error codes.
764
- *
765
- * @since 2.7.0
766
- *
767
- * @param array $codes Array of WP error codes.
768
- * @return array
769
- */
770
- function bp_core_login_filter_shake_codes( $codes ) {
771
- $codes[] = 'bp_no_access';
772
- return $codes;
773
- }
774
- add_filter( 'shake_error_codes', 'bp_core_login_filter_shake_codes' );
775
 
776
  /**
777
  * Canonicalize BuddyPress URLs.
@@ -884,14 +822,11 @@ function bp_get_canonical_url( $args = array() ) {
884
  if ( 'page' == get_option( 'show_on_front' ) && $page_on_front = (int) get_option( 'page_on_front' ) ) {
885
  $front_page_component = array_search( $page_on_front, bp_core_get_directory_page_ids() );
886
 
887
- /*
888
- * If requesting the front page component directory, canonical
889
- * URL is the front page. We detect whether we're detecting a
890
- * component *directory* by checking that bp_current_action()
891
- * is empty - ie, this not a single item, a feed, or an item
892
- * type directory.
893
- */
894
- if ( false !== $front_page_component && bp_is_current_component( $front_page_component ) && ! bp_current_action() && ! bp_get_current_member_type() ) {
895
  $bp->canonical_stack['canonical_url'] = trailingslashit( bp_get_root_domain() );
896
 
897
  // Except when the front page is set to the registration page
@@ -993,6 +928,7 @@ function bp_get_requested_url() {
993
  * notice in future versions of BuddyPress.
994
  *
995
  * @since 1.6.0
 
996
  */
997
  function _bp_maybe_remove_redirect_canonical() {
998
  if ( ! bp_is_blog_page() )
@@ -1028,7 +964,7 @@ add_action( 'bp_init', '_bp_maybe_remove_redirect_canonical' );
1028
  * @link https://buddypress.trac.wordpress.org/ticket/4415
1029
  */
1030
  function _bp_rehook_maybe_redirect_404() {
1031
- if ( defined( 'NOBLOGREDIRECT' ) && is_multisite() ) {
1032
  remove_action( 'template_redirect', 'maybe_redirect_404' );
1033
  add_action( 'template_redirect', 'maybe_redirect_404', 100 );
1034
  }
@@ -1050,36 +986,3 @@ function _bp_maybe_remove_rel_canonical() {
1050
  }
1051
  }
1052
  add_action( 'wp_head', '_bp_maybe_remove_rel_canonical', 8 );
1053
-
1054
- /**
1055
- * Stop WordPress performing a DB query for its main loop.
1056
- *
1057
- * As of WordPress 4.6, it is possible to bypass the main WP_Query entirely.
1058
- * This saves us one unnecessary database query! :)
1059
- *
1060
- * @since 2.7.0
1061
- *
1062
- * @param null $retval Current return value for filter.
1063
- * @param WP_Query $query Current WordPress query object.
1064
- * @return null|array
1065
- */
1066
- function bp_core_filter_wp_query( $retval, $query ) {
1067
- if ( ! $query->is_main_query() ) {
1068
- return $retval;
1069
- }
1070
-
1071
- /*
1072
- * If not on a BP single page, bail.
1073
- * Too early to use bp_is_single_item(), so use BP conditionals.
1074
- */
1075
- if ( false === ( bp_is_group() || bp_is_user() || bp_is_single_activity() ) ) {
1076
- return $retval;
1077
- }
1078
-
1079
- // Set default properties as recommended in the 'posts_pre_query' DocBlock.
1080
- $query->found_posts = 0;
1081
- $query->max_num_pages = 0;
1082
-
1083
- // Return something other than a null value to bypass WP_Query.
1084
- return array();
1085
- }
218
  /**
219
  * Filter the portion of the URI that is the displayed user's slug.
220
  *
221
+ * eg. example.com/ADMIN (when root profiles is enabled)
222
  * example.com/members/ADMIN (when root profiles isn't enabled)
223
  *
224
  * ADMIN would be the displayed user's slug.
456
  * @param array $filtered_templates Array of templates to attempt to load.
457
  */
458
  $located_template = apply_filters( 'bp_located_template', $template, $filtered_templates );
 
 
 
 
 
 
 
 
 
 
 
459
  if ( !empty( $located_template ) ) {
460
  // Template was located, lets set this as a valid page and not a 404.
461
  status_header( 200 );
542
  * @since 2.6.0
543
  *
544
  * @param string $member_slug The current member slug.
 
545
  */
546
  function bp_core_members_shortlink_redirector( $member_slug ) {
 
547
  /**
548
  * Shortlink slug to redirect to logged-in user.
549
  *
550
+ * x.com/members/me/* will redirect to x.com/members/{LOGGED_IN_USER_SLUG}/*
551
  *
552
  * @since 2.6.0
553
  *
554
+ * @var string $slug Defaults to 'me'.
555
  */
556
  $me_slug = apply_filters( 'bp_core_members_shortlink_slug', 'me' );
557
 
624
  $redirect_url .= $_SERVER['REQUEST_URI'];
625
 
626
  $defaults = array(
627
+ 'mode' => 2, // 1 = $root, 2 = wp-login.php
628
+ 'redirect' => $redirect_url, // the URL you get redirected to when a user successfully logs in
629
+ 'root' => bp_get_root_domain(), // the landing page you get redirected to when a user doesn't have access
630
  'message' => __( 'You must log in to access the page you requested.', 'buddypress' )
631
  );
632
 
643
  extract( $r, EXTR_SKIP );
644
 
645
  /*
646
+ * @ignore Ignore these filters and use 'bp_core_no_access' above
647
  */
648
  $mode = apply_filters( 'bp_no_access_mode', $mode, $root, $redirect, $message );
649
  $redirect = apply_filters( 'bp_no_access_redirect', $redirect, $root, $message, $mode );
653
 
654
  switch ( $mode ) {
655
 
656
+ // Option to redirect to wp-login.php
657
  // Error message is displayed with bp_core_no_access_wp_login_error().
658
  case 2 :
659
  if ( !empty( $redirect ) ) {
660
+ bp_core_redirect( add_query_arg( array( 'action' => 'bpnoaccess' ), wp_login_url( $redirect ) ) );
 
 
 
661
  } else {
662
  bp_core_redirect( $root );
663
  }
664
 
665
  break;
666
 
667
+ // Redirect to root with "redirect_to" parameter
668
  // Error message is displayed with bp_core_add_message().
669
  case 1 :
670
  default :
685
  }
686
 
687
  /**
688
+ * Add an error message to wp-login.php.
 
 
 
 
 
 
 
689
  *
690
+ * Hooks into the "bpnoaccess" action defined in bp_core_no_access().
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
691
  *
692
  * @since 1.5.0
 
693
  *
694
+ * @global string $error Error message to pass to wp-login.php.
 
695
  */
696
+ function bp_core_no_access_wp_login_error() {
697
+ global $error;
 
 
698
 
699
  /**
700
  * Filters the error message for wp-login.php when needing to log in before accessing.
704
  * @param string $value Error message to display.
705
  * @param string $value URL to redirect user to after successful login.
706
  */
707
+ $error = apply_filters( 'bp_wp_login_error', __( 'You must log in to access the page you requested.', 'buddypress' ), $_REQUEST['redirect_to'] );
708
 
709
+ // Shake shake shake!.
710
+ add_action( 'login_head', 'wp_shake_js', 12 );
 
711
  }
712
+ add_action( 'login_form_bpnoaccess', 'bp_core_no_access_wp_login_error' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
713
 
714
  /**
715
  * Canonicalize BuddyPress URLs.
822
  if ( 'page' == get_option( 'show_on_front' ) && $page_on_front = (int) get_option( 'page_on_front' ) ) {
823
  $front_page_component = array_search( $page_on_front, bp_core_get_directory_page_ids() );
824
 
825
+ // If requesting the front page component directory, canonical
826
+ // URL is the front page. We detect whether we're detecting a
827
+ // component *directory* by checking that bp_current_action()
828
+ // is empty - ie, this not a single item or a feed.
829
+ if ( false !== $front_page_component && bp_is_current_component( $front_page_component ) && ! bp_current_action() ) {
 
 
 
830
  $bp->canonical_stack['canonical_url'] = trailingslashit( bp_get_root_domain() );
831
 
832
  // Except when the front page is set to the registration page
928
  * notice in future versions of BuddyPress.
929
  *
930
  * @since 1.6.0
931
+ *
932
  */
933
  function _bp_maybe_remove_redirect_canonical() {
934
  if ( ! bp_is_blog_page() )
964
  * @link https://buddypress.trac.wordpress.org/ticket/4415
965
  */
966
  function _bp_rehook_maybe_redirect_404() {
967
+ if ( defined( 'NOBLOGREDIRECT' ) ) {
968
  remove_action( 'template_redirect', 'maybe_redirect_404' );
969
  add_action( 'template_redirect', 'maybe_redirect_404', 100 );
970
  }
986
  }
987
  }
988
  add_action( 'wp_head', '_bp_maybe_remove_rel_canonical', 8 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/bp-core-classes.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Core component classes.
4
+ *
5
+ * @package BuddyPress
6
+ * @subpackage Core
7
+ * @since 1.0.0
8
+ */
9
+
10
+ // Exit if accessed directly.
11
+ defined( 'ABSPATH' ) || exit;
12
+
13
+ require dirname( __FILE__ ) . '/classes/class-bp-user-query.php';
14
+ require dirname( __FILE__ ) . '/classes/class-bp-core-user.php';
15
+ require dirname( __FILE__ ) . '/classes/class-bp-date-query.php';
16
+ require dirname( __FILE__ ) . '/classes/class-bp-core-notification.php';
17
+ require dirname( __FILE__ ) . '/classes/class-bp-button.php';
18
+ require dirname( __FILE__ ) . '/classes/class-bp-embed.php';
19
+ require dirname( __FILE__ ) . '/classes/class-bp-walker-nav-menu.php';
20
+ require dirname( __FILE__ ) . '/classes/class-bp-walker-nav-menu-checklist.php';
21
+ require dirname( __FILE__ ) . '/classes/class-bp-suggestions.php';
22
+ require dirname( __FILE__ ) . '/classes/class-bp-members-suggestions.php';
23
+ require dirname( __FILE__ ) . '/classes/class-bp-recursive-query.php';
24
+ require dirname( __FILE__ ) . '/classes/class-bp-core-sort-by-key-callback.php';
25
+ require dirname( __FILE__ ) . '/classes/class-bp-media-extractor.php';
26
+ require dirname( __FILE__ ) . '/classes/class-bp-attachment.php';
27
+ require dirname( __FILE__ ) . '/classes/class-bp-attachment-avatar.php';
28
+ require dirname( __FILE__ ) . '/classes/class-bp-attachment-cover-image.php';
29
+ require dirname( __FILE__ ) . '/classes/class-bp-email-recipient.php';
30
+ require dirname( __FILE__ ) . '/classes/class-bp-email.php';
31
+ require dirname( __FILE__ ) . '/classes/class-bp-email-delivery.php';
32
+ require dirname( __FILE__ ) . '/classes/class-bp-phpmailer.php';
33
+ require dirname( __FILE__ ) . '/classes/class-bp-core-nav.php';
34
+ require dirname( __FILE__ ) . '/classes/class-bp-core-nav-item.php';
35
+ require dirname( __FILE__ ) . '/classes/class-bp-core-oembed-extension.php';
36
+
37
+ if ( buddypress()->do_nav_backcompat ) {
38
+ require dirname( __FILE__ ) . '/classes/class-bp-core-bp-nav-backcompat.php';
39
+ require dirname( __FILE__ ) . '/classes/class-bp-core-bp-options-nav-backcompat.php';
40
+ }
bp-core/bp-core-cssjs.php CHANGED
@@ -19,79 +19,35 @@ function bp_core_register_common_scripts() {
19
  $min = bp_core_get_minified_asset_suffix();
20
  $url = buddypress()->plugin_url . 'bp-core/js/';
21
 
22
- /*
23
- * Moment.js locale.
24
- *
25
- * Try to map current WordPress locale to a moment.js locale file for loading.
26
  *
27
- * eg. French (France) locale for WP is fr_FR. Here, we try to find fr-fr.js
28
- * (this file doesn't exist).
29
- */
30
- $locale = sanitize_file_name( strtolower( get_locale() ) );
31
- $locale = str_replace( '_', '-', $locale );
32
- if ( file_exists( buddypress()->core->path . "bp-core/js/vendor/moment-js/locale/{$locale}{$min}.js" ) ) {
33
- $moment_locale_url = $url . "vendor/moment-js/locale/{$locale}{$min}.js";
34
-
35
- /*
36
- * Try to find the short-form locale.
37
  *
38
- * eg. French (France) locale for WP is fr_FR. Here, we try to find fr.js
39
- * (this exists).
40
  */
41
- } else {
42
- $locale = substr( $locale, 0, strpos( $locale, '-' ) );
43
- if ( file_exists( buddypress()->core->path . "bp-core/js/vendor/moment-js/locale/{$locale}{$min}.js" ) ) {
44
- $moment_locale_url = $url . "vendor/moment-js/locale/{$locale}{$min}.js";
45
- }
46
- }
47
 
48
- // Set up default scripts to register.
49
- $scripts = array(
50
  // Legacy.
51
- 'bp-confirm' => array( 'file' => "{$url}confirm{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
52
  'bp-widget-members' => array( 'file' => "{$url}widget-members{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
53
- 'bp-jquery-query' => array( 'file' => "{$url}jquery-query{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
54
- 'bp-jquery-cookie' => array( 'file' => "{$url}vendor/jquery-cookie{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
55
- 'bp-jquery-scroll-to' => array( 'file' => "{$url}vendor/jquery-scroll-to{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
56
 
57
- // Version 2.1.
58
- 'jquery-caret' => array( 'file' => "{$url}vendor/jquery.caret{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => true ),
59
- 'jquery-atwho' => array( 'file' => "{$url}vendor/jquery.atwho{$min}.js", 'dependencies' => array( 'jquery', 'jquery-caret' ), 'footer' => true ),
60
 
61
- // Version 2.3.
62
  'bp-plupload' => array( 'file' => "{$url}bp-plupload{$min}.js", 'dependencies' => array( 'plupload', 'jquery', 'json2', 'wp-backbone' ), 'footer' => true ),
63
  'bp-avatar' => array( 'file' => "{$url}avatar{$min}.js", 'dependencies' => array( 'jcrop' ), 'footer' => true ),
64
  'bp-webcam' => array( 'file' => "{$url}webcam{$min}.js", 'dependencies' => array( 'bp-avatar' ), 'footer' => true ),
65
 
66
- // Version 2.4.
67
  'bp-cover-image' => array( 'file' => "{$url}cover-image{$min}.js", 'dependencies' => array(), 'footer' => true ),
68
 
69
- // Version 2.7.
70
- 'bp-moment' => array( 'file' => "{$url}vendor/moment-js/moment{$min}.js", 'dependencies' => array(), 'footer' => true ),
71
- 'bp-livestamp' => array( 'file' => "{$url}vendor/livestamp{$min}.js", 'dependencies' => array( 'jquery', 'bp-moment' ), 'footer' => true ),
72
- );
73
-
74
- // Version 2.7 - Add Moment.js locale to our $scripts array if we found one.
75
- if ( isset( $moment_locale_url ) ) {
76
- $scripts['bp-moment-locale'] = array( 'file' => esc_url( $moment_locale_url ), 'dependencies' => array( 'bp-moment' ), 'footer' => true );
77
- }
78
-
79
- /**
80
- * Filters the BuddyPress Core javascript files to register.
81
- *
82
- * Default handles include 'bp-confirm', 'bp-widget-members',
83
- * 'bp-jquery-query', 'bp-jquery-cookie', and 'bp-jquery-scroll-to'.
84
- *
85
- * @since 2.1.0 'jquery-caret', 'jquery-atwho' added.
86
- * @since 2.3.0 'bp-plupload', 'bp-avatar', 'bp-webcam' added.
87
- * @since 2.4.0 'bp-cover-image' added.
88
- * @since 2.7.0 'bp-moment', 'bp-livestamp' added.
89
- * 'bp-moment-locale' is added conditionally if a moment.js locale file is found.
90
- *
91
- * @param array $value Array of javascript file information to register.
92
- */
93
- $scripts = apply_filters( 'bp_core_register_common_scripts', $scripts );
94
-
95
 
96
  $version = bp_get_version();
97
  foreach ( $scripts as $id => $script ) {
@@ -150,7 +106,7 @@ add_action( 'bp_enqueue_scripts', 'bp_core_register_common_styles', 1 );
150
  add_action( 'bp_admin_enqueue_scripts', 'bp_core_register_common_styles', 1 );
151
 
152
  /**
153
- * Load the JS for "Are you sure?" confirm links.
154
  *
155
  * @since 1.1.0
156
  */
@@ -172,7 +128,7 @@ add_action( 'bp_admin_enqueue_scripts', 'bp_core_confirmation_js' );
172
  /**
173
  * Enqueues the css and js required by the Avatar UI.
174
  *
175
- * @since 2.3.0
176
  */
177
  function bp_core_avatar_scripts() {
178
  if ( ! bp_avatar_is_front_edit() ) {
@@ -192,7 +148,7 @@ add_action( 'bp_enqueue_scripts', 'bp_core_avatar_scripts' );
192
  /**
193
  * Enqueues the css and js required by the Cover Image UI.
194
  *
195
- * @since 2.4.0
196
  */
197
  function bp_core_cover_image_scripts() {
198
  if ( ! bp_attachments_cover_image_is_edit() ) {
@@ -405,13 +361,13 @@ function bp_core_get_js_dependencies() {
405
  }
406
 
407
  /**
408
- * Add inline css to display the component's single item cover image.
409
  *
410
  * @since 2.4.0
411
  *
412
- * @param bool $return True to get the inline css.
413
- * @return null|array|false The inline css or an associative array containing
414
- * the css rules and the style handle.
415
  */
416
  function bp_add_cover_image_inline_css( $return = false ) {
417
  $bp = buddypress();
@@ -504,84 +460,3 @@ function bp_add_cover_image_inline_css( $return = false ) {
504
  }
505
  }
506
  add_action( 'bp_enqueue_scripts', 'bp_add_cover_image_inline_css', 11 );
507
-
508
- /**
509
- * Enqueues livestamp.js on BuddyPress pages.
510
- *
511
- * @since 2.7.0
512
- */
513
- function bp_core_add_livestamp() {
514
- if ( ! is_buddypress() ) {
515
- return;
516
- }
517
-
518
- bp_core_enqueue_livestamp();
519
- }
520
- add_action( 'bp_enqueue_scripts', 'bp_core_add_livestamp' );
521
-
522
- /**
523
- * Enqueue and localize livestamp.js script.
524
- *
525
- * @since 2.7.0
526
- */
527
- function bp_core_enqueue_livestamp() {
528
- // If bp-livestamp isn't enqueued, do it now.
529
- if ( wp_script_is( 'bp-livestamp' ) ) {
530
- return;
531
- }
532
-
533
- /*
534
- * Only enqueue Moment.js locale if we registered it in
535
- * bp_core_register_common_scripts().
536
- */
537
- if ( wp_script_is( 'bp-moment-locale', 'registered' ) ) {
538
- wp_enqueue_script( 'bp-moment-locale' );
539
-
540
- if ( function_exists( 'wp_add_inline_script' ) ) {
541
- wp_add_inline_script ( 'bp-livestamp', bp_core_moment_js_config() );
542
- } else {
543
- add_action( 'wp_footer', '_bp_core_moment_js_config_footer', 20 );
544
- }
545
- }
546
-
547
- wp_enqueue_script( 'bp-livestamp' );
548
- }
549
-
550
- /**
551
- * Return moment.js config.
552
- *
553
- * @since 2.7.0
554
- *
555
- * @return string
556
- */
557
- function bp_core_moment_js_config() {
558
- // Grab the locale from the enqueued JS.
559
- $moment_locale = wp_scripts()->query( 'bp-moment-locale' );
560
- $moment_locale = substr( $moment_locale->src, strpos( $moment_locale->src, '/moment-js/locale/' ) + 18 );
561
- $moment_locale = str_replace( '.js', '', $moment_locale );
562
-
563
- $inline_js = <<<EOD
564
- jQuery(function() {
565
- moment.locale( '{$moment_locale}' );
566
- });
567
- EOD;
568
-
569
- return $inline_js;
570
- }
571
-
572
- /**
573
- * Print moment.js config in page footer.
574
- *
575
- * Will be removed once we set our minimum version of WP 4.5.
576
- *
577
- * @since 2.7.0
578
- *
579
- * @access private
580
- */
581
- function _bp_core_moment_js_config_footer() {
582
- if ( ! wp_script_is( 'bp-moment-locale' ) ) {
583
- return;
584
- }
585
-
586
- printf( '<script>%s</script>', bp_core_moment_js_config() );
587
- }
19
  $min = bp_core_get_minified_asset_suffix();
20
  $url = buddypress()->plugin_url . 'bp-core/js/';
21
 
22
+ /**
23
+ * Filters the BuddyPress Core javascript files to register.
 
 
24
  *
25
+ * @since 2.1.0
 
 
 
 
 
 
 
 
 
26
  *
27
+ * @param array $value Array of javascript file information to register.
 
28
  */
29
+ $scripts = apply_filters( 'bp_core_register_common_scripts', array(
 
 
 
 
 
30
 
 
 
31
  // Legacy.
32
+ 'bp-confirm' => array( 'file' => "{$url}confirm{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
33
  'bp-widget-members' => array( 'file' => "{$url}widget-members{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
34
+ 'bp-jquery-query' => array( 'file' => "{$url}jquery-query{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
35
+ 'bp-jquery-cookie' => array( 'file' => "{$url}jquery-cookie{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
36
+ 'bp-jquery-scroll-to' => array( 'file' => "{$url}jquery-scroll-to{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => false ),
37
 
38
+ // 2.1
39
+ 'jquery-caret' => array( 'file' => "{$url}jquery.caret{$min}.js", 'dependencies' => array( 'jquery' ), 'footer' => true ),
40
+ 'jquery-atwho' => array( 'file' => "{$url}jquery.atwho{$min}.js", 'dependencies' => array( 'jquery', 'jquery-caret' ), 'footer' => true ),
41
 
42
+ // 2.3
43
  'bp-plupload' => array( 'file' => "{$url}bp-plupload{$min}.js", 'dependencies' => array( 'plupload', 'jquery', 'json2', 'wp-backbone' ), 'footer' => true ),
44
  'bp-avatar' => array( 'file' => "{$url}avatar{$min}.js", 'dependencies' => array( 'jcrop' ), 'footer' => true ),
45
  'bp-webcam' => array( 'file' => "{$url}webcam{$min}.js", 'dependencies' => array( 'bp-avatar' ), 'footer' => true ),
46
 
47
+ // 2.4
48
  'bp-cover-image' => array( 'file' => "{$url}cover-image{$min}.js", 'dependencies' => array(), 'footer' => true ),
49
 
50
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  $version = bp_get_version();
53
  foreach ( $scripts as $id => $script ) {
106
  add_action( 'bp_admin_enqueue_scripts', 'bp_core_register_common_styles', 1 );
107
 
108
  /**
109
+ * Load the JS for "Are you sure?" .confirm links.
110
  *
111
  * @since 1.1.0
112
  */
128
  /**
129
  * Enqueues the css and js required by the Avatar UI.
130
  *
131
+ * @since 2.3.0
132
  */
133
  function bp_core_avatar_scripts() {
134
  if ( ! bp_avatar_is_front_edit() ) {
148
  /**
149
  * Enqueues the css and js required by the Cover Image UI.
150
  *
151
+ * @since 2.4.0
152
  */
153
  function bp_core_cover_image_scripts() {
154
  if ( ! bp_attachments_cover_image_is_edit() ) {
361
  }
362
 
363
  /**
364
+ * Add inline css to display the component's single item cover image
365
  *
366
  * @since 2.4.0
367
  *
368
+ * @param bool $return True to get the inline css.
369
+ * @return string|array the inline css or an associative array containing
370
+ * the css rules and the style handle
371
  */
372
  function bp_add_cover_image_inline_css( $return = false ) {
373
  $bp = buddypress();
460
  }
461
  }
462
  add_action( 'bp_enqueue_scripts', 'bp_add_cover_image_inline_css', 11 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/bp-core-customizer-email.php CHANGED
@@ -2,9 +2,10 @@
2
  /**
3
  * BuddyPress Customizer implementation for email.
4
  *
 
 
5
  * @package BuddyPress
6
  * @subpackage Core
7
- * @since 2.5.0
8
  */
9
 
10
  // Exit if accessed directly.
@@ -43,6 +44,13 @@ function bp_email_init_customizer( WP_Customize_Manager $wp_customize ) {
43
  $wp_customize->add_setting( $setting_id, $args );
44
  }
45
 
 
 
 
 
 
 
 
46
  /**
47
  * Fires to let plugins register extra Customizer controls for emails.
48
  *
@@ -57,6 +65,7 @@ function bp_email_init_customizer( WP_Customize_Manager $wp_customize ) {
57
  $wp_customize->add_control( new $args['class']( $wp_customize, $control_id, $args ) );
58
  }
59
 
 
60
  /*
61
  * Hook actions/filters for further configuration.
62
  */
@@ -81,7 +90,7 @@ function bp_email_init_customizer( WP_Customize_Manager $wp_customize ) {
81
  true
82
  );
83
 
84
- // Include the preview loading style.
85
  add_action( 'wp_footer', array( $wp_customize, 'customize_preview_loading_style' ) );
86
  }
87
  }
@@ -103,7 +112,7 @@ function bp_is_email_customizer() {
103
  *
104
  * @since 2.5.0
105
  *
106
- * @param bool $active Whether the Customizer section is active.
107
  * @param WP_Customize_Section $section {@see WP_Customize_Section} instance.
108
  * @return bool
109
  */
2
  /**
3
  * BuddyPress Customizer implementation for email.
4
  *
5
+ * @since 2.5.0
6
+ *
7
  * @package BuddyPress
8
  * @subpackage Core
 
9
  */
10
 
11
  // Exit if accessed directly.
44
  $wp_customize->add_setting( $setting_id, $args );
45
  }
46
 
47
+ /**
48
+ * BP_Customizer_Control_Range class.
49
+ */
50
+ if ( ! buddypress()->do_autoload ) {
51
+ require_once dirname( __FILE__ ) . '/classes/class-bp-customizer-control-range.php';
52
+ }
53
+
54
  /**
55
  * Fires to let plugins register extra Customizer controls for emails.
56
  *
65
  $wp_customize->add_control( new $args['class']( $wp_customize, $control_id, $args ) );
66
  }
67
 
68
+
69
  /*
70
  * Hook actions/filters for further configuration.
71
  */
90
  true
91
  );
92
 
93
+ // Include the preview loading style
94
  add_action( 'wp_footer', array( $wp_customize, 'customize_preview_loading_style' ) );
95
  }
96
  }
112
  *
113
  * @since 2.5.0
114
  *
115
+ * @param $active Whether the Customizer section is active.
116
  * @param WP_Customize_Section $section {@see WP_Customize_Section} instance.
117
  * @return bool
118
  */
bp-core/bp-core-dependency.php CHANGED
@@ -13,6 +13,8 @@
13
  * The following functions are wrappers for hooks, allowing them to be
14
  * manually called and/or piggy-backed on top of other hooks if needed.
15
  *
 
 
16
  * @package BuddyPress
17
  * @subpackage Core
18
  * @since 1.7.0
@@ -138,7 +140,7 @@ function bp_setup_admin_bar() {
138
  *
139
  * @since 1.5.0
140
  */
141
- do_action( 'bp_setup_admin_bar', array() );
142
  }
143
  }
144
 
@@ -205,12 +207,28 @@ function bp_setup_cache_groups() {
205
  /**
206
  * Set up the currently logged-in user.
207
  *
 
 
 
 
208
  * @since 1.7.0
209
  *
210
  * @link https://buddypress.trac.wordpress.org/ticket/6046
211
  * @link https://core.trac.wordpress.org/ticket/24169
 
212
  */
213
  function bp_setup_current_user() {
 
 
 
 
 
 
 
 
 
 
 
214
 
215
  /**
216
  * Fires to set up the current user setup process.
@@ -388,6 +406,7 @@ function bp_head() {
388
  * who do not have the proper permission to access certain content.
389
  *
390
  * @since 1.6.0
 
391
  */
392
  function bp_template_redirect() {
393
 
@@ -407,6 +426,7 @@ function bp_template_redirect() {
407
  * The main action used registering theme directories.
408
  *
409
  * @since 1.5.0
 
410
  */
411
  function bp_register_theme_directory() {
412
 
@@ -426,6 +446,7 @@ function bp_register_theme_directory() {
426
  * The main action used registering theme packages.
427
  *
428
  * @since 1.7.0
 
429
  */
430
  function bp_register_theme_packages() {
431
 
@@ -441,6 +462,7 @@ function bp_register_theme_packages() {
441
  * Fire the 'bp_enqueue_scripts' action, where BP enqueues its CSS and JS.
442
  *
443
  * @since 1.6.0
 
444
  */
445
  function bp_enqueue_scripts() {
446
 
@@ -474,6 +496,7 @@ function bp_enqueue_embed_scripts() {
474
  * Fire the 'bp_add_rewrite_tag' action, where BP adds its custom rewrite tags.
475
  *
476
  * @since 1.8.0
 
477
  */
478
  function bp_add_rewrite_tags() {
479
 
@@ -489,6 +512,7 @@ function bp_add_rewrite_tags() {
489
  * Fire the 'bp_add_rewrite_rules' action, where BP adds its custom rewrite rules.
490
  *
491
  * @since 1.9.0
 
492
  */
493
  function bp_add_rewrite_rules() {
494
 
@@ -504,6 +528,7 @@ function bp_add_rewrite_rules() {
504
  * Fire the 'bp_add_permastructs' action, where BP adds its BP-specific permalink structure.
505
  *
506
  * @since 1.9.0
 
507
  */
508
  function bp_add_permastructs() {
509
 
@@ -522,6 +547,7 @@ function bp_add_permastructs() {
522
  * BuddyPress-specific functionality.
523
  *
524
  * @since 1.6.0
 
525
  */
526
  function bp_setup_theme() {
527
 
@@ -544,6 +570,7 @@ function bp_setup_theme() {
544
  * before our theme compatibility layer kicks in.
545
  *
546
  * @since 1.6.0
 
547
  */
548
  function bp_after_setup_theme() {
549
 
@@ -672,6 +699,7 @@ function bp_allowed_themes( $themes ) {
672
  * The main action used for handling theme-side POST requests.
673
  *
674
  * @since 1.9.0
 
675
  */
676
  function bp_post_request() {
677
 
@@ -714,6 +742,7 @@ function bp_post_request() {
714
  * The main action used for handling theme-side GET requests.
715
  *
716
  * @since 1.9.0
 
717
  */
718
  function bp_get_request() {
719
 
13
  * The following functions are wrappers for hooks, allowing them to be
14
  * manually called and/or piggy-backed on top of other hooks if needed.
15
  *
16
+ * @todo use anonymous functions when PHP minimum requirement allows (5.3)
17
+ *
18
  * @package BuddyPress
19
  * @subpackage Core
20
  * @since 1.7.0
140
  *
141
  * @since 1.5.0
142
  */
143
+ do_action( 'bp_setup_admin_bar' );
144
  }
145
  }
146
 
207
  /**
208
  * Set up the currently logged-in user.
209
  *
210
+ * We white-list the WordPress Customizer which purposely loads the user early.
211
+ * If the current user is being setup before the "init" action has fired,
212
+ * strange (and difficult to debug) role/capability issues will occur.
213
+ *
214
  * @since 1.7.0
215
  *
216
  * @link https://buddypress.trac.wordpress.org/ticket/6046
217
  * @link https://core.trac.wordpress.org/ticket/24169
218
+ *
219
  */
220
  function bp_setup_current_user() {
221
+ $skip_warning = (
222
+ ( isset( $_REQUEST['wp_customize'] ) && 'on' === $_REQUEST['wp_customize'] ) ||
223
+ ( is_admin() && 'customize.php' === basename( $_SERVER['PHP_SELF'] ) )
224
+ );
225
+
226
+ if ( ! $skip_warning && ! did_action( 'after_setup_theme' ) ) {
227
+ $e = new Exception;
228
+ $trace = $e->getTraceAsString();
229
+
230
+ _doing_it_wrong( __FUNCTION__, __( 'The current user is being initialized without using $wp->init().', 'buddypress' ) . "\n===\nTrace:\n" . substr( $trace, strpos( $trace, '#6' ) ) . "\n===\n", '1.7' );
231
+ }
232
 
233
  /**
234
  * Fires to set up the current user setup process.
406
  * who do not have the proper permission to access certain content.
407
  *
408
  * @since 1.6.0
409
+ *
410
  */
411
  function bp_template_redirect() {
412
 
426
  * The main action used registering theme directories.
427
  *
428
  * @since 1.5.0
429
+ *
430
  */
431
  function bp_register_theme_directory() {
432
 
446
  * The main action used registering theme packages.
447
  *
448
  * @since 1.7.0
449
+ *
450
  */
451
  function bp_register_theme_packages() {
452
 
462
  * Fire the 'bp_enqueue_scripts' action, where BP enqueues its CSS and JS.
463
  *
464
  * @since 1.6.0
465
+ *
466
  */
467
  function bp_enqueue_scripts() {
468
 
496
  * Fire the 'bp_add_rewrite_tag' action, where BP adds its custom rewrite tags.
497
  *
498
  * @since 1.8.0
499
+ *
500
  */
501
  function bp_add_rewrite_tags() {
502
 
512
  * Fire the 'bp_add_rewrite_rules' action, where BP adds its custom rewrite rules.
513
  *
514
  * @since 1.9.0
515
+ *
516
  */
517
  function bp_add_rewrite_rules() {
518
 
528
  * Fire the 'bp_add_permastructs' action, where BP adds its BP-specific permalink structure.
529
  *
530
  * @since 1.9.0
531
+ *
532
  */
533
  function bp_add_permastructs() {
534
 
547
  * BuddyPress-specific functionality.
548
  *
549
  * @since 1.6.0
550
+ *
551
  */
552
  function bp_setup_theme() {
553
 
570
  * before our theme compatibility layer kicks in.
571
  *
572
  * @since 1.6.0
573
+ *
574
  */
575
  function bp_after_setup_theme() {
576
 
699
  * The main action used for handling theme-side POST requests.
700
  *
701
  * @since 1.9.0
702
+ *
703
  */
704
  function bp_post_request() {
705
 
742
  * The main action used for handling theme-side GET requests.
743
  *
744
  * @since 1.9.0
745
+ *
746
  */
747
  function bp_get_request() {
748
 
bp-core/bp-core-filters.php CHANGED
@@ -75,9 +75,6 @@ add_filter( 'bp_get_template_stack', 'bp_add_template_stack_locations' );
75
  // Turn comments off for BuddyPress pages.
76
  add_filter( 'comments_open', 'bp_comments_open', 10, 2 );
77
 
78
- // Prevent DB query for WP's main loop.
79
- add_filter( 'posts_pre_query', 'bp_core_filter_wp_query', 10, 2 );
80
-
81
  /**
82
  * Prevent specific pages (eg 'Activate') from showing on page listings.
83
  *
@@ -178,7 +175,7 @@ function bp_core_menu_highlight_parent_page( $retval, $page ) {
178
  foreach ( (array) buddypress()->pages as $component => $bp_page ) {
179
  // Handles the majority of components.
180
  if ( bp_is_current_component( $component ) ) {
181
- $page_id = (int) $bp_page->id;
182
  }
183
 
184
  // Stop if not on a user page.
@@ -311,7 +308,7 @@ function bp_core_login_redirect( $redirect_to, $redirect_to_raw, $user ) {
311
  *
312
  * @since 1.6.0
313
  *
314
- * @param bool $value Whether or not to redirect.
315
  * @param string $redirect_to Sanitized URL to be redirected to.
316
  * @param string $redirect_to_raw Unsanitized URL to be redirected to.
317
  * @param WP_User $user The WP_User object corresponding to a
@@ -352,7 +349,6 @@ add_filter( 'bp_login_redirect', 'bp_core_login_redirect', 10, 3 );
352
  * @param string $retval Current email content.
353
  * @param string $prop Email property to check against.
354
  * @param string $transform Either 'raw' or 'replace-tokens'.
355
- * @return string|null $retval Modified email content.
356
  */
357
  function bp_email_plaintext_entity_decode( $retval, $prop, $transform ) {
358
  switch ( $prop ) {
@@ -467,7 +463,7 @@ function bp_core_activation_signup_blog_notification( $domain, $path, $title, $u
467
  'domain' => $domain,
468
  'key_blog' => $key,
469
  'path' => $path,
470
- 'user-site.url' => esc_url( set_url_scheme( "http://{$domain}{$path}" ) ),
471
  'title' => $title,
472
  'user.email' => $user_email,
473
  ),
@@ -490,7 +486,7 @@ add_filter( 'wpmu_signup_blog_notification', 'bp_core_activation_signup_blog_not
490
  * @param string $user_email The user's email address.
491
  * @param string $key The activation key created in wpmu_signup_user().
492
  * @param array $meta By default, an empty array.
493
- * @return false|string Returns false to stop original WPMU function from continuing.
494
  */
495
  function bp_core_activation_signup_user_notification( $user, $user_email, $key, $meta ) {
496
  if ( is_admin() ) {
@@ -549,9 +545,9 @@ add_filter( 'wpmu_signup_user_notification', 'bp_core_activation_signup_user_not
549
  * @see wp_title()
550
  * @global object $bp BuddyPress global settings.
551
  *
552
- * @param string $title Original page title.
553
- * @param string $sep How to separate the various items within the page title.
554
- * @param string $seplocation Direction to display title.
555
  * @return string New page title.
556
  */
557
  function bp_modify_page_title( $title = '', $sep = '&raquo;', $seplocation = 'right' ) {
@@ -574,7 +570,7 @@ function bp_modify_page_title( $title = '', $sep = '&raquo;', $seplocation = 'ri
574
  * @link https://buddypress.trac.wordpress.org/ticket/6107
575
  * @see wp_title()
576
  */
577
- $title_tag_compatibility = (bool) ( ! empty( $_wp_theme_features['title-tag'] ) || ( $blogname && strstr( $title, $blogname ) ) );
578
 
579
  // Append the site title to title parts if theme supports title tag.
580
  if ( true === $title_tag_compatibility ) {
@@ -599,12 +595,12 @@ function bp_modify_page_title( $title = '', $sep = '&raquo;', $seplocation = 'ri
599
  /**
600
  * Filters the older 'wp_title' page title for BuddyPress pages.
601
  *
602
- * @since 1.5.0
603
  *
604
- * @param string $new_title The BuddyPress page title.
605
- * @param string $title The original WordPress page title.
606
- * @param string $sep The title parts separator.
607
- * @param string $seplocation Location of the separator (left or right).
608
  */
609
  return apply_filters( 'bp_modify_page_title', $new_title, $title, $sep, $seplocation );
610
  }
@@ -652,10 +648,10 @@ function bp_modify_document_title_parts( $title = array() ) {
652
  /**
653
  * Filters BuddyPress title parts that will be used into the document title.
654
  *
655
- * @since 2.4.3
656
  *
657
- * @param array $bp_title The BuddyPress page title parts.
658
- * @param array $title The original WordPress title parts.
659
  */
660
  return apply_filters( 'bp_modify_document_title_parts', $bp_title, $title );
661
  }
@@ -753,13 +749,13 @@ add_filter( 'wp_setup_nav_menu_item', 'bp_setup_nav_menu_item', 10, 1 );
753
  /**
754
  * Populate BuddyPress user nav items for the customizer.
755
  *
756
- * @since 2.3.3
757
  *
758
- * @param array $items The array of menu items.
759
- * @param string $type The requested type.
760
- * @param string $object The requested object name.
761
- * @param integer $page The page num being requested.
762
- * @return array The paginated BuddyPress user nav items.
763
  */
764
  function bp_customizer_nav_menus_get_items( $items = array(), $type = '', $object = '', $page = 0 ) {
765
  if ( 'bp_loggedin_nav' === $object ) {
@@ -790,9 +786,9 @@ add_filter( 'customize_nav_menu_available_items', 'bp_customizer_nav_menus_get_i
790
  /**
791
  * Set BuddyPress item navs for the customizer.
792
  *
793
- * @since 2.3.3
794
  *
795
- * @param array $item_types An associative array structured for the customizer.
796
  * @return array $item_types An associative array structured for the customizer.
797
  */
798
  function bp_customizer_nav_menus_set_item_types( $item_types = array() ) {
@@ -856,10 +852,10 @@ function bp_filter_metaid_column_name( $q ) {
856
  *
857
  * @since 2.1.0
858
  *
859
- * @param string $edit_link The edit link.
860
- * @param int $post_id Post ID.
861
- * @return false|string Will be a boolean (false) if $post_id is 0. Will be a string (the unchanged edit link)
862
- * otherwise
863
  */
864
  function bp_core_filter_edit_post_link( $edit_link = '', $post_id = 0 ) {
865
  if ( 0 === $post_id ) {
@@ -903,8 +899,7 @@ add_filter( 'bp_activity_maybe_load_mentions_scripts', 'bp_maybe_load_mentions_s
903
  * @access private
904
  *
905
  * @global array $wp_registered_widgets Current registered widgets.
906
- *
907
- * @param array $params Current sidebar params.
908
  * @return array
909
  */
910
  function _bp_core_inject_bp_widget_css_class( $params ) {
@@ -956,9 +951,9 @@ add_filter( 'dynamic_sidebar_params', '_bp_core_inject_bp_widget_css_class' );
956
  *
957
  * @since 2.5.0
958
  *
959
- * @param string $value Property value.
960
- * @param string $property_name Email template property name.
961
- * @param string $transform How the return value was transformed.
962
  * @return string Updated value.
963
  */
964
  function bp_email_add_link_color_to_template( $value, $property_name, $transform ) {
@@ -995,32 +990,16 @@ add_filter( 'bp_email_get_property', 'bp_email_add_link_color_to_template', 6, 3
995
  *
996
  * @since 2.5.0
997
  *
998
- * @param array $headers Array of email headers.
999
- * @param string $property Name of property. Unused.
1000
- * @param string $transform Return value transformation. Unused.
1001
- * @param BP_Email $email Email object reference.
1002
  * @return array
1003
  */
1004
  function bp_email_set_default_headers( $headers, $property, $transform, $email ) {
1005
  $headers['X-BuddyPress'] = bp_get_version();
1006
  $headers['X-BuddyPress-Type'] = $email->get( 'type' );
1007
 
1008
- $tokens = $email->get_tokens();
1009
-
1010
- // Add 'List-Unsubscribe' header if applicable.
1011
- if ( ! empty( $tokens['unsubscribe'] ) && $tokens['unsubscribe'] !== site_url( 'wp-login.php' ) ) {
1012
- $user = get_user_by( 'email', $tokens['recipient.email'] );
1013
-
1014
- $link = bp_email_get_unsubscribe_link( array(
1015
- 'user_id' => $user->ID,
1016
- 'notification_type' => $email->get( 'type' ),
1017
- ) );
1018
-
1019
- if ( ! empty( $link ) ) {
1020
- $headers['List-Unsubscribe'] = sprintf( '<%s>', esc_url_raw( $link ) );
1021
- }
1022
- }
1023
-
1024
  return $headers;
1025
  }
1026
  add_filter( 'bp_email_get_headers', 'bp_email_set_default_headers', 6, 4 );
@@ -1030,10 +1009,10 @@ add_filter( 'bp_email_get_headers', 'bp_email_set_default_headers', 6, 4 );
1030
  *
1031
  * @since 2.5.0
1032
  *
1033
- * @param array $tokens Email tokens.
1034
- * @param string $property_name Unused.
1035
- * @param string $transform Unused.
1036
- * @param BP_Email $email Email being sent.
1037
  * @return array
1038
  */
1039
  function bp_email_set_default_tokens( $tokens, $property_name, $transform, $email ) {
@@ -1049,6 +1028,7 @@ function bp_email_set_default_tokens( $tokens, $property_name, $transform, $emai
1049
  $tokens['recipient.email'] = '';
1050
  $tokens['recipient.name'] = '';
1051
  $tokens['recipient.username'] = '';
 
1052
 
1053
 
1054
  // Who is the email going to?
@@ -1065,22 +1045,16 @@ function bp_email_set_default_tokens( $tokens, $property_name, $transform, $emai
1065
  }
1066
 
1067
  if ( $user_obj ) {
 
 
 
 
 
 
1068
  $tokens['recipient.username'] = $user_obj->user_login;
1069
- if ( bp_is_active( 'settings' ) && empty( $tokens['unsubscribe'] ) ) {
1070
- $tokens['unsubscribe'] = esc_url( sprintf(
1071
- '%s%s/notifications/',
1072
- bp_core_get_user_domain( $user_obj->ID ),
1073
- bp_get_settings_slug()
1074
- ) );
1075
- }
1076
  }
1077
  }
1078
 
1079
- // Set default unsubscribe link if not passed.
1080
- if ( empty( $tokens['unsubscribe'] ) ) {
1081
- $tokens['unsubscribe'] = site_url( 'wp-login.php' );
1082
- }
1083
-
1084
  // Email preheader.
1085
  $post = $email->get_post_object();
1086
  if ( $post ) {
75
  // Turn comments off for BuddyPress pages.
76
  add_filter( 'comments_open', 'bp_comments_open', 10, 2 );
77
 
 
 
 
78
  /**
79
  * Prevent specific pages (eg 'Activate') from showing on page listings.
80
  *
175
  foreach ( (array) buddypress()->pages as $component => $bp_page ) {
176
  // Handles the majority of components.
177
  if ( bp_is_current_component( $component ) ) {
178
+ $page_id = (int) $bp_page->id;
179
  }
180
 
181
  // Stop if not on a user page.
308
  *
309
  * @since 1.6.0
310
  *
311
+ * @param bool $value Whether or not to redirect.
312
  * @param string $redirect_to Sanitized URL to be redirected to.
313
  * @param string $redirect_to_raw Unsanitized URL to be redirected to.
314
  * @param WP_User $user The WP_User object corresponding to a
349
  * @param string $retval Current email content.
350
  * @param string $prop Email property to check against.
351
  * @param string $transform Either 'raw' or 'replace-tokens'.
 
352
  */
353
  function bp_email_plaintext_entity_decode( $retval, $prop, $transform ) {
354
  switch ( $prop ) {
463
  'domain' => $domain,
464
  'key_blog' => $key,
465
  'path' => $path,
466
+ 'user-site.url' => esc_url( "http://{$domain}{$path}" ),
467
  'title' => $title,
468
  'user.email' => $user_email,
469
  ),
486
  * @param string $user_email The user's email address.
487
  * @param string $key The activation key created in wpmu_signup_user().
488
  * @param array $meta By default, an empty array.
489
+ * @return bool|string Returns false to stop original WPMU function from continuing.
490
  */
491
  function bp_core_activation_signup_user_notification( $user, $user_email, $key, $meta ) {
492
  if ( is_admin() ) {
545
  * @see wp_title()
546
  * @global object $bp BuddyPress global settings.
547
  *
548
+ * @param string $title Original page title.
549
+ * @param string $sep How to separate the various items within the page title.
550
+ * @param string $seplocation Direction to display title.
551
  * @return string New page title.
552
  */
553
  function bp_modify_page_title( $title = '', $sep = '&raquo;', $seplocation = 'right' ) {
570
  * @link https://buddypress.trac.wordpress.org/ticket/6107
571
  * @see wp_title()
572
  */
573
+ $title_tag_compatibility = (bool) ( ! empty( $_wp_theme_features['title-tag'] ) || strstr( $title, $blogname ) );
574
 
575
  // Append the site title to title parts if theme supports title tag.
576
  if ( true === $title_tag_compatibility ) {
595
  /**
596
  * Filters the older 'wp_title' page title for BuddyPress pages.
597
  *
598
+ * @since 1.5.0
599
  *
600
+ * @param string $new_title The BuddyPress page title.
601
+ * @param string $title The original WordPress page title.
602
+ * @param string $sep The title parts separator.
603
+ * @param string $seplocation Location of the separator (left or right).
604
  */
605
  return apply_filters( 'bp_modify_page_title', $new_title, $title, $sep, $seplocation );
606
  }
648
  /**
649
  * Filters BuddyPress title parts that will be used into the document title.
650
  *
651
+ * @since 2.4.3
652
  *
653
+ * @param array $bp_title The BuddyPress page title parts.
654
+ * @param array $title The original WordPress title parts.
655
  */
656
  return apply_filters( 'bp_modify_document_title_parts', $bp_title, $title );
657
  }
749
  /**
750
  * Populate BuddyPress user nav items for the customizer.
751
  *
752
+ * @since 2.3.3
753
  *
754
+ * @param array $items The array of menu items.
755
+ * @param string $type The requested type.
756
+ * @param string $object The requested object name.
757
+ * @param integer $page The page num being requested.
758
+ * @return array The paginated BuddyPress user nav items.
759
  */
760
  function bp_customizer_nav_menus_get_items( $items = array(), $type = '', $object = '', $page = 0 ) {
761
  if ( 'bp_loggedin_nav' === $object ) {
786
  /**
787
  * Set BuddyPress item navs for the customizer.
788
  *
789
+ * @since 2.3.3
790
  *
791
+ * @param array $item_types An associative array structured for the customizer.
792
  * @return array $item_types An associative array structured for the customizer.
793
  */
794
  function bp_customizer_nav_menus_set_item_types( $item_types = array() ) {
852
  *
853
  * @since 2.1.0
854
  *
855
+ * @param string $edit_link The edit link.
856
+ * @param int $post_id Post ID.
857
+ * @return bool|string Will be a boolean (false) if $post_id is 0. Will be a string (the unchanged edit link)
858
+ * otherwise
859
  */
860
  function bp_core_filter_edit_post_link( $edit_link = '', $post_id = 0 ) {
861
  if ( 0 === $post_id ) {
899
  * @access private
900
  *
901
  * @global array $wp_registered_widgets Current registered widgets.
902
+ * @param array $params Current sidebar params.
 
903
  * @return array
904
  */
905
  function _bp_core_inject_bp_widget_css_class( $params ) {
951
  *
952
  * @since 2.5.0
953
  *
954
+ * @param string $value Property value.
955
+ * @param string $property_name
956
+ * @param string $transform How the return value was transformed.
957
  * @return string Updated value.
958
  */
959
  function bp_email_add_link_color_to_template( $value, $property_name, $transform ) {
990
  *
991
  * @since 2.5.0
992
  *
993
+ * @param array $headers
994
+ * @param string $property Name of property. Unused.
995
+ * @param string $transform Return value transformation. Unused.
996
+ * @param BP_Email $email Email object reference.
997
  * @return array
998
  */
999
  function bp_email_set_default_headers( $headers, $property, $transform, $email ) {
1000
  $headers['X-BuddyPress'] = bp_get_version();
1001
  $headers['X-BuddyPress-Type'] = $email->get( 'type' );
1002
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1003
  return $headers;
1004
  }
1005
  add_filter( 'bp_email_get_headers', 'bp_email_set_default_headers', 6, 4 );
1009
  *
1010
  * @since 2.5.0
1011
  *
1012
+ * @param array $tokens Email tokens.
1013
+ * @param string $property_name Unused.
1014
+ * @param string $transform Unused.
1015
+ * @param BP_Email $email Email being sent.
1016
  * @return array
1017
  */
1018
  function bp_email_set_default_tokens( $tokens, $property_name, $transform, $email ) {
1028
  $tokens['recipient.email'] = '';
1029
  $tokens['recipient.name'] = '';
1030
  $tokens['recipient.username'] = '';
1031
+ $tokens['unsubscribe'] = site_url( 'wp-login.php' );
1032
 
1033
 
1034
  // Who is the email going to?
1045
  }
1046
 
1047
  if ( $user_obj ) {
1048
+ // Unsubscribe link.
1049
+ $tokens['unsubscribe'] = esc_url( sprintf(
1050
+ '%s%s/notifications/',
1051
+ bp_core_get_user_domain( $user_obj->ID ),
1052
+ function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'
1053
+ ) );
1054
  $tokens['recipient.username'] = $user_obj->user_login;
 
 
 
 
 
 
 
1055
  }
1056
  }
1057
 
 
 
 
 
 
1058
  // Email preheader.
1059
  $post = $email->get_post_object();
1060
  if ( $post ) {
bp-core/bp-core-functions.php CHANGED
@@ -108,53 +108,14 @@ function bp_core_get_table_prefix() {
108
  * your own awkward callback function for usort().
109
  *
110
  * @since 2.2.0
111
- * @since 2.7.0 Added $preserve_keys parameter.
112
- *
113
- * @param array $items The items to be sorted. Its constituent items
114
- * can be either associative arrays or objects.
115
- * @param string|int $key The array index or property name to sort by.
116
- * @param string $type Sort type. 'alpha' for alphabetical, 'num'
117
- * for numeric. Default: 'alpha'.
118
- * @param bool $preserve_keys Whether to keep the keys or not.
119
  *
 
 
 
120
  * @return array $items The sorted array.
121
  */
122
- function bp_sort_by_key( $items, $key, $type = 'alpha', $preserve_keys = false ) {
123
- $callback = function( $a, $b ) use ( $key, $type ) {
124
- $values = array( 0 => false, 1 => false );
125
- foreach ( func_get_args() as $indexi => $index ) {
126
- if ( isset( $index->{$key} ) ) {
127
- $values[ $indexi ] = $index->{$key};
128
- } elseif ( isset( $index[ $key ] ) ) {
129
- $values[ $indexi ] = $index[ $key ];
130
- }
131
- }
132
-
133
- if ( isset( $values[0], $values[1] ) ) {
134
- if ( 'num' === $type ) {
135
- $cmp = $values[0] - $values[1];
136
- } else {
137
- $cmp = strcmp( $values[0], $values[1] );
138
- }
139
-
140
- if ( 0 > $cmp ) {
141
- $retval = -1;
142
- } elseif ( 0 < $cmp ) {
143
- $retval = 1;
144
- } else {
145
- $retval = 0;
146
- }
147
- return $retval;
148
- } else {
149
- return 0;
150
- }
151
- };
152
-
153
- if ( true === $preserve_keys ) {
154
- uasort( $items, $callback );
155
- } else {
156
- usort( $items, $callback );
157
- }
158
 
159
  return $items;
160
  }
@@ -488,29 +449,30 @@ function bp_core_get_packaged_component_ids() {
488
  * empty string if the list is not found.
489
  */
490
  function bp_core_get_directory_page_ids( $status = 'active' ) {
491
- $page_ids = bp_get_option( 'bp-pages', array() );
492
 
493
- // Loop through pages
494
- foreach ( $page_ids as $component_name => $page_id ) {
 
 
 
 
495
 
496
- // Ensure that empty indexes are unset. Should only matter in edge cases.
497
- if ( empty( $component_name ) || empty( $page_id ) ) {
498
- unset( $page_ids[ $component_name ] );
499
- }
500
 
501
- // Trashed pages should never appear in results.
502
- if ( 'trash' == get_post_status( $page_id ) ) {
503
- unset( $page_ids[ $component_name ] );
504
- }
505
 
506
- // 'register' and 'activate' do not have components, but should be whitelisted.
507
- if ( in_array( $component_name, array( 'register', 'activate' ), true ) ) {
508
- continue;
509
- }
510
 
511
- // Remove inactive component pages.
512
- if ( ( 'active' === $status ) && ! bp_is_active( $component_name ) ) {
513
- unset( $page_ids[ $component_name ] );
 
514
  }
515
  }
516
 
@@ -518,12 +480,10 @@ function bp_core_get_directory_page_ids( $status = 'active' ) {
518
  * Filters the list of BP directory pages from the appropriate meta table.
519
  *
520
  * @since 1.5.0
521
- * @since 2.9.0 Add $status parameter
522
  *
523
- * @param array $page_ids Array of directory pages.
524
- * @param string $status Page status to limit results to
525
  */
526
- return (array) apply_filters( 'bp_core_get_directory_page_ids', $page_ids, $status );
527
  }
528
 
529
  /**
@@ -531,8 +491,8 @@ function bp_core_get_directory_page_ids( $status = 'active' ) {
531
  *
532
  * @since 2.6.0
533
  *
534
- * @param string|null $component The slug representing the component. Defaults to the current component.
535
- * @return int|false The ID of the directory page associated with the component. False if none is found.
536
  */
537
  function bp_core_get_directory_page_id( $component = null ) {
538
  if ( ! $component ) {
@@ -663,14 +623,21 @@ function bp_core_add_page_mappings( $components, $existing = 'keep' ) {
663
 
664
  // Delete any existing pages.
665
  if ( 'delete' === $existing ) {
666
- foreach ( $pages as $page_id ) {
667
  wp_delete_post( $page_id, true );
668
  }
669
 
670
  $pages = array();
671
  }
672
 
673
- $page_titles = bp_core_get_directory_page_default_titles();
 
 
 
 
 
 
 
674
 
675
  $pages_to_create = array();
676
  foreach ( array_keys( $components ) as $component_name ) {
@@ -690,8 +657,8 @@ function bp_core_add_page_mappings( $components, $existing = 'keep' ) {
690
  }
691
 
692
  // No need for a Sites directory unless we're on multisite.
693
- if ( ! is_multisite() && isset( $pages_to_create['blogs'] ) ) {
694
- unset( $pages_to_create['blogs'] );
695
  }
696
 
697
  // Members must always have a page, no matter what.
@@ -726,33 +693,6 @@ function bp_core_add_page_mappings( $components, $existing = 'keep' ) {
726
  }
727
  }
728
 
729
- /**
730
- * Get the default page titles for BP directory pages.
731
- *
732
- * @since 2.7.0
733
- *
734
- * @return array
735
- */
736
- function bp_core_get_directory_page_default_titles() {
737
- $page_default_titles = array(
738
- 'activity' => _x( 'Activity', 'Page title for the Activity directory.', 'buddypress' ),
739
- 'groups' => _x( 'Groups', 'Page title for the Groups directory.', 'buddypress' ),
740
- 'blogs' => _x( 'Sites', 'Page title for the Sites directory.', 'buddypress' ),
741
- 'members' => _x( 'Members', 'Page title for the Members directory.', 'buddypress' ),
742
- 'activate' => _x( 'Activate', 'Page title for the user activation screen.', 'buddypress' ),
743
- 'register' => _x( 'Register', 'Page title for the user registration screen.', 'buddypress' ),
744
- );
745
-
746
- /**
747
- * Filters the default page titles array
748
- *
749
- * @since 2.7.0
750
- *
751
- * @param array $page_default_titles the array of default WP (post_title) titles.
752
- */
753
- return apply_filters( 'bp_core_get_directory_page_default_titles', $page_default_titles );
754
- }
755
-
756
  /**
757
  * Remove the entry from bp_pages when the corresponding WP page is deleted.
758
  *
@@ -855,7 +795,7 @@ function bp_core_add_root_component( $slug ) {
855
 
856
  // If there was no match, add a page for this root component.
857
  if ( empty( $match ) ) {
858
- $add_root_items = $bp->add_root;
859
  $add_root_items[] = $slug;
860
  $bp->add_root = $add_root_items;
861
  }
@@ -889,7 +829,7 @@ function bp_core_create_root_component_page() {
889
  ) );
890
  }
891
 
892
- $page_ids = array_merge( $new_page_ids, bp_core_get_directory_page_ids( 'all' ) );
893
  bp_core_update_directory_page_ids( $page_ids );
894
  }
895
 
@@ -910,17 +850,11 @@ function bp_core_add_illegal_names() {
910
  * Get the 'search' query argument for a given component.
911
  *
912
  * @since 2.4.0
913
- * @since 2.7.0 The `$component` parameter was made optional, with the current component
914
- * as the fallback value.
915
  *
916
- * @param string|null $component Optional. Component name. Defaults to current component.
917
  * @return string|bool Query argument on success. False on failure.
918
  */
919
- function bp_core_get_component_search_query_arg( $component = null ) {
920
- if ( ! $component ) {
921
- $component = bp_current_component();
922
- }
923
-
924
  $query_arg = false;
925
  if ( isset( buddypress()->{$component}->search_query_arg ) ) {
926
  $query_arg = sanitize_title( buddypress()->{$component}->search_query_arg );
@@ -1324,41 +1258,6 @@ function bp_core_time_since( $older_date, $newer_date = false ) {
1324
  return apply_filters( 'bp_core_time_since', $output, $older_date, $newer_date );
1325
  }
1326
 
1327
- /**
1328
- * Output an ISO-8601 date from a date string.
1329
- *
1330
- * @since 2.7.0
1331
- *
1332
- * @param string String of date to convert. Timezone should be UTC before using this.
1333
- * @return string|null
1334
- */
1335
- function bp_core_iso8601_date( $timestamp = '' ) {
1336
- echo bp_core_get_iso8601_date( $timestamp );
1337
- }
1338
- /**
1339
- * Return an ISO-8601 date from a date string.
1340
- *
1341
- * @since 2.7.0
1342
- *
1343
- * @param string String of date to convert. Timezone should be UTC before using this.
1344
- * @return string
1345
- */
1346
- function bp_core_get_iso8601_date( $timestamp = '' ) {
1347
- if ( ! $timestamp ) {
1348
- return '';
1349
- }
1350
-
1351
- try {
1352
- $date = new DateTime( $timestamp, new DateTimeZone( 'UTC' ) );
1353
-
1354
- // Not a valid date, so return blank string.
1355
- } catch( Exception $e ) {
1356
- return '';
1357
- }
1358
-
1359
- return $date->format( DateTime::ISO8601 );
1360
- }
1361
-
1362
  /** Messages ******************************************************************/
1363
 
1364
  /**
@@ -1489,7 +1388,7 @@ function bp_core_render_message() {
1489
  *
1490
  * usermeta table.
1491
  *
1492
- * @return false|null Returns false if there is nothing to do.
1493
  */
1494
  function bp_core_record_activity() {
1495
 
@@ -1515,7 +1414,7 @@ function bp_core_record_activity() {
1515
  }
1516
 
1517
  // Get current time.
1518
- $current_time = bp_core_current_time( true, 'timestamp' );
1519
 
1520
  // Use this action to detect the very first activity for a given member.
1521
  if ( empty( $activity ) ) {
@@ -1533,8 +1432,8 @@ function bp_core_record_activity() {
1533
  }
1534
 
1535
  // If it's been more than 5 minutes, record a newer last-activity time.
1536
- if ( empty( $activity ) || ( $current_time >= strtotime( '+5 minutes', $activity ) ) ) {
1537
- bp_update_user_last_activity( $user_id, date( 'Y-m-d H:i:s', $current_time ) );
1538
  }
1539
  }
1540
  add_action( 'wp_head', 'bp_core_record_activity' );
@@ -1774,10 +1673,10 @@ function bp_use_embed_in_private_messages() {
1774
  *
1775
  * @since 2.6.0
1776
  *
1777
- * @param string $content The content to check.
1778
- * @param string|int $type The type to check. Can also use a bitmask. See the class constants in the
1779
  * BP_Media_Extractor class for more info.
1780
- * @return false|array If media exists, will return array of media metadata. Else, boolean false.
1781
  */
1782
  function bp_core_extract_media_from_content( $content = '', $type = 'all' ) {
1783
  if ( is_string( $type ) ) {
@@ -2403,7 +2302,7 @@ function bp_remove_adjacent_posts_rel_link() {
2403
  return;
2404
  }
2405
 
2406
- remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10 );
2407
  }
2408
  add_action( 'bp_init', 'bp_remove_adjacent_posts_rel_link' );
2409
 
@@ -2792,7 +2691,7 @@ function bp_core_get_suggestions( $args ) {
2792
  *
2793
  * @since 2.3.0
2794
  *
2795
- * @return bool|array
2796
  */
2797
  function bp_upload_dir() {
2798
  $bp = buddypress();
@@ -3090,7 +2989,7 @@ function bp_get_email( $email_type ) {
3090
  * @param string|array|int|WP_User $to Either a email address, user ID, WP_User object,
3091
  * or an array containg the address and name.
3092
  * @param array $args {
3093
- * Optional. Array of extra parameters.
3094
  *
3095
  * @type array $tokens Optional. Assocative arrays of string replacements for the email.
3096
  * }
@@ -3136,23 +3035,6 @@ function bp_send_email( $email_type, $to, $args = array() ) {
3136
  $email->set_to( $to );
3137
  $email->set_tokens( $args['tokens'] );
3138
 
3139
- /**
3140
- * Gives access to an email before it is sent.
3141
- *
3142
- * @since 2.8.0
3143
- *
3144
- * @param BP_Email $email The email (object) about to be sent.
3145
- * @param string $email_type Type of email being sent.
3146
- * @param string|array|int|WP_User $to Either a email address, user ID, WP_User object,
3147
- * or an array containg the address and name.
3148
- * @param array $args {
3149
- * Optional. Array of extra parameters.
3150
- *
3151
- * @type array $tokens Optional. Assocative arrays of string replacements for the email.
3152
- * }
3153
- */
3154
- do_action_ref_array( 'bp_send_email', array( &$email, $email_type, $to, $args ) );
3155
-
3156
  $status = $email->validate();
3157
  if ( is_wp_error( $status ) ) {
3158
  return $status;
@@ -3307,8 +3189,8 @@ function bp_email_get_template( WP_Post $object ) {
3307
  *
3308
  * @since 2.5.0
3309
  *
3310
- * @param string $text Text to replace tokens in.
3311
- * @param array $tokens Token names and replacement values for the $text.
3312
  * @return string
3313
  */
3314
  function bp_core_replace_tokens_in_text( $text, $tokens ) {
@@ -3345,7 +3227,7 @@ function bp_core_replace_tokens_in_text( $text, $tokens ) {
3345
 
3346
  /**
3347
  * Get a list of emails for populating the email post type.
3348
- *
3349
  * @since 2.5.1
3350
  *
3351
  * @return array
@@ -3422,7 +3304,7 @@ function bp_email_get_schema() {
3422
  /* translators: do not remove {} brackets or translate its contents. */
3423
  'post_content' => __( "Group details for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; were updated:\n<blockquote>{{changed_text}}</blockquote>", 'buddypress' ),
3424
  /* translators: do not remove {} brackets or translate its contents. */
3425
- 'post_excerpt' => __( "Group details for the group \"{{group.name}}\" were updated:\n\n{{changed_text}}\n\nTo view the group, visit: {{{group.url}}}", 'buddypress' ),
3426
  ),
3427
  'groups-invitation' => array(
3428
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3430,7 +3312,7 @@ function bp_email_get_schema() {
3430
  /* translators: do not remove {} brackets or translate its contents. */
3431
  'post_content' => __( "<a href=\"{{{inviter.url}}}\">{{inviter.name}}</a> has invited you to join the group: &quot;{{group.name}}&quot;.\n<a href=\"{{{invites.url}}}\">Go here to accept your invitation</a> or <a href=\"{{{group.url}}}\">visit the group</a> to learn more.", 'buddypress' ),
3432
  /* translators: do not remove {} brackets or translate its contents. */
3433
- 'post_excerpt' => __( "{{inviter.name}} has invited you to join the group: \"{{group.name}}\".\n\nTo accept your invitation, visit: {{{invites.url}}}\n\nTo learn more about the group, visit: {{{group.url}}}.\nTo view {{inviter.name}}'s profile, visit: {{{inviter.url}}}", 'buddypress' ),
3434
  ),
3435
  'groups-member-promoted' => array(
3436
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3438,7 +3320,7 @@ function bp_email_get_schema() {
3438
  /* translators: do not remove {} brackets or translate its contents. */
3439
  'post_content' => __( "You have been promoted to <b>{{promoted_to}}</b> in the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot;.", 'buddypress' ),
3440
  /* translators: do not remove {} brackets or translate its contents. */
3441
- 'post_excerpt' => __( "You have been promoted to {{promoted_to}} in the group: \"{{group.name}}\".\n\nTo visit the group, go to: {{{group.url}}}", 'buddypress' ),
3442
  ),
3443
  'groups-membership-request' => array(
3444
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3446,7 +3328,7 @@ function bp_email_get_schema() {
3446
  /* translators: do not remove {} brackets or translate its contents. */
3447
  'post_content' => __( "<a href=\"{{{profile.url}}}\">{{requesting-user.name}}</a> wants to join the group &quot;{{group.name}}&quot;. As you are an administrator of this group, you must either accept or reject the membership request.\n\n<a href=\"{{{group-requests.url}}}\">Go here to manage this</a> and all other pending requests.", 'buddypress' ),
3448
  /* translators: do not remove {} brackets or translate its contents. */
3449
- 'post_excerpt' => __( "{{requesting-user.name}} wants to join the group \"{{group.name}}\". As you are the administrator of this group, you must either accept or reject the membership request.\n\nTo manage this and all other pending requests, visit: {{{group-requests.url}}}\n\nTo view {{requesting-user.name}}'s profile, visit: {{{profile.url}}}", 'buddypress' ),
3450
  ),
3451
  'messages-unread' => array(
3452
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3454,7 +3336,7 @@ function bp_email_get_schema() {
3454
  /* translators: do not remove {} brackets or translate its contents. */
3455
  'post_content' => __( "{{sender.name}} sent you a new message: &quot;{{usersubject}}&quot;\n\n<blockquote>&quot;{{usermessage}}&quot;</blockquote>\n\n<a href=\"{{{message.url}}}\">Go to the discussion</a> to reply or catch up on the conversation.", 'buddypress' ),
3456
  /* translators: do not remove {} brackets or translate its contents. */
3457
- 'post_excerpt' => __( "{{sender.name}} sent you a new message: \"{{usersubject}}\"\n\n\"{{usermessage}}\"\n\nGo to the discussion to reply or catch up on the conversation: {{{message.url}}}", 'buddypress' ),
3458
  ),
3459
  'settings-verify-email-change' => array(
3460
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3470,7 +3352,7 @@ function bp_email_get_schema() {
3470
  /* translators: do not remove {} brackets or translate its contents. */
3471
  'post_content' => __( "Your membership request for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; has been accepted.", 'buddypress' ),
3472
  /* translators: do not remove {} brackets or translate its contents. */
3473
- 'post_excerpt' => __( "Your membership request for the group \"{{group.name}}\" has been accepted.\n\nTo view the group, visit: {{{group.url}}}", 'buddypress' ),
3474
  ),
3475
  'groups-membership-request-rejected' => array(
3476
  /* translators: do not remove {} brackets or translate its contents. */
@@ -3478,7 +3360,7 @@ function bp_email_get_schema() {
3478
  /* translators: do not remove {} brackets or translate its contents. */
3479
  'post_content' => __( "Your membership request for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; has been rejected.", 'buddypress' ),
3480
  /* translators: do not remove {} brackets or translate its contents. */
3481
- 'post_excerpt' => __( "Your membership request for the group \"{{group.name}}\" has been rejected.\n\nTo request membership again, visit: {{{group.url}}}", 'buddypress' ),
3482
  ),
3483
  );
3484
  }
@@ -3487,332 +3369,26 @@ function bp_email_get_schema() {
3487
  * Get a list of emails for populating email type taxonomy terms.
3488
  *
3489
  * @since 2.5.1
3490
- * @since 2.7.0 $field argument added.
3491
- *
3492
- * @param string $field Optional; defaults to "description" for backwards compatibility. Other values: "all".
3493
- * @return array {
3494
- * The array of email types and their schema.
3495
- *
3496
- * @type string $description The description of the action which causes this to trigger.
3497
- * @type array $unsubscribe {
3498
- * Replacing this with false indicates that a user cannot unsubscribe from this type.
3499
- *
3500
- * @type string $meta_key The meta_key used to toggle the email setting for this notification.
3501
- * @type string $message The message shown when the user has successfully unsubscribed.
3502
- * }
3503
- */
3504
- function bp_email_get_type_schema( $field = 'description' ) {
3505
- $activity_comment = array(
3506
- 'description' => __( 'A member has replied to an activity update that the recipient posted.', 'buddypress' ),
3507
- 'unsubscribe' => array(
3508
- 'meta_key' => 'notification_activity_new_reply',
3509
- 'message' => __( 'You will no longer receive emails when someone replies to an update or comment you posted.', 'buddypress' ),
3510
- ),
3511
- );
3512
-
3513
- $activity_comment_author = array(
3514
- 'description' => __( 'A member has replied to a comment on an activity update that the recipient posted.', 'buddypress' ),
3515
- 'unsubscribe' => array(
3516
- 'meta_key' => 'notification_activity_new_reply',
3517
- 'message' => __( 'You will no longer receive emails when someone replies to an update or comment you posted.', 'buddypress' ),
3518
- ),
3519
- );
3520
-
3521
- $activity_at_message = array(
3522
- 'description' => __( 'Recipient was mentioned in an activity update.', 'buddypress' ),
3523
- 'unsubscribe' => array(
3524
- 'meta_key' => 'notification_activity_new_mention',
3525
- 'message' => __( 'You will no longer receive emails when someone mentions you in an update.', 'buddypress' ),
3526
- ),
3527
- );
3528
-
3529
- $groups_at_message = array(
3530
- 'description' => __( 'Recipient was mentioned in a group activity update.', 'buddypress' ),
3531
- 'unsubscribe' => array(
3532
- 'meta_key' => 'notification_activity_new_mention',
3533
- 'message' => __( 'You will no longer receive emails when someone mentions you in an update.', 'buddypress' ),
3534
- ),
3535
- );
3536
-
3537
- $core_user_registration = array(
3538
- 'description' => __( 'Recipient has registered for an account.', 'buddypress' ),
3539
- 'unsubscribe' => false,
3540
- );
3541
-
3542
- $core_user_registration_with_blog = array(
3543
- 'description' => __( 'Recipient has registered for an account and site.', 'buddypress' ),
3544
- 'unsubscribe' => false,
3545
- );
3546
-
3547
- $friends_request = array(
3548
- 'description' => __( 'A member has sent a friend request to the recipient.', 'buddypress' ),
3549
- 'unsubscribe' => array(
3550
- 'meta_key' => 'notification_friends_friendship_request',
3551
- 'message' => __( 'You will no longer receive emails when someone sends you a friend request.', 'buddypress' ),
3552
- ),
3553
- );
3554
-
3555
- $friends_request_accepted = array(
3556
- 'description' => __( 'Recipient has had a friend request accepted by a member.', 'buddypress' ),
3557
- 'unsubscribe' => array(
3558
- 'meta_key' => 'notification_friends_friendship_accepted',
3559
- 'message' => __( 'You will no longer receive emails when someone accepts your friendship request.', 'buddypress' ),
3560
- ),
3561
- );
3562
-
3563
- $groups_details_updated = array(
3564
- 'description' => __( "A group's details were updated.", 'buddypress' ),
3565
- 'unsubscribe' => array(
3566
- 'meta_key' => 'notification_groups_group_updated',
3567
- 'message' => __( 'You will no longer receive emails when one of your groups is updated.', 'buddypress' ),
3568
- ),
3569
- );
3570
-
3571
- $groups_details_updated = array(
3572
- 'description' => __( "A group's details were updated.", 'buddypress' ),
3573
- 'unsubscribe' => array(
3574
- 'meta_key' => 'notification_groups_group_updated',
3575
- 'message' => __( 'You will no longer receive emails when one of your groups is updated.', 'buddypress' ),
3576
- ),
3577
- );
3578
-
3579
- $groups_invitation = array(
3580
- 'description' => __( 'A member has sent a group invitation to the recipient.', 'buddypress' ),
3581
- 'unsubscribe' => array(
3582
- 'meta_key' => 'notification_groups_invite',
3583
- 'message' => __( 'You will no longer receive emails when you are invited to join a group.', 'buddypress' ),
3584
- ),
3585
- );
3586
-
3587
- $groups_member_promoted = array(
3588
- 'description' => __( "Recipient's status within a group has changed.", 'buddypress' ),
3589
- 'unsubscribe' => array(
3590
- 'meta_key' => 'notification_groups_admin_promotion',
3591
- 'message' => __( 'You will no longer receive emails when you have been promoted in a group.', 'buddypress' ),
3592
- ),
3593
- );
3594
-
3595
- $groups_member_promoted = array(
3596
- 'description' => __( "Recipient's status within a group has changed.", 'buddypress' ),
3597
- 'unsubscribe' => array(
3598
- 'meta_key' => 'notification_groups_admin_promotion',
3599
- 'message' => __( 'You will no longer receive emails when you have been promoted in a group.', 'buddypress' ),
3600
- ),
3601
- );
3602
-
3603
- $groups_membership_request = array(
3604
- 'description' => __( 'A member has requested permission to join a group.', 'buddypress' ),
3605
- 'unsubscribe' => array(
3606
- 'meta_key' => 'notification_groups_membership_request',
3607
- 'message' => __( 'You will no longer receive emails when someone requests to be a member of your group.', 'buddypress' ),
3608
- ),
3609
- );
3610
-
3611
- $messages_unread = array(
3612
- 'description' => __( 'Recipient has received a private message.', 'buddypress' ),
3613
- 'unsubscribe' => array(
3614
- 'meta_key' => 'notification_messages_new_message',
3615
- 'message' => __( 'You will no longer receive emails when someone sends you a message.', 'buddypress' ),
3616
- ),
3617
- );
3618
-
3619
- $settings_verify_email_change = array(
3620
- 'description' => __( 'Recipient has changed their email address.', 'buddypress' ),
3621
- 'unsubscribe' => false,
3622
- );
3623
-
3624
- $groups_membership_request_accepted = array(
3625
- 'description' => __( 'Recipient had requested to join a group, which was accepted.', 'buddypress' ),
3626
- 'unsubscribe' => array(
3627
- 'meta_key' => 'notification_membership_request_completed',
3628
- 'message' => __( 'You will no longer receive emails when your request to join a group has been accepted or denied.', 'buddypress' ),
3629
- ),
3630
- );
3631
-
3632
- $groups_membership_request_rejected = array(
3633
- 'description' => __( 'Recipient had requested to join a group, which was rejected.', 'buddypress' ),
3634
- 'unsubscribe' => array(
3635
- 'meta_key' => 'notification_membership_request_completed',
3636
- 'message' => __( 'You will no longer receive emails when your request to join a group has been accepted or denied.', 'buddypress' ),
3637
- ),
3638
- );
3639
-
3640
- $types = array(
3641
- 'activity-comment' => $activity_comment,
3642
- 'activity-comment-author' => $activity_comment_author,
3643
- 'activity-at-message' => $activity_at_message,
3644
- 'groups-at-message' => $groups_at_message,
3645
- 'core-user-registration' => $core_user_registration,
3646
- 'core-user-registration-with-blog' => $core_user_registration_with_blog,
3647
- 'friends-request' => $friends_request,
3648
- 'friends-request-accepted' => $friends_request_accepted,
3649
- 'groups-details-updated' => $groups_details_updated,
3650
- 'groups-invitation' => $groups_invitation,
3651
- 'groups-member-promoted' => $groups_member_promoted,
3652
- 'groups-membership-request' => $groups_membership_request,
3653
- 'messages-unread' => $messages_unread,
3654
- 'settings-verify-email-change' => $settings_verify_email_change,
3655
- 'groups-membership-request-accepted' => $groups_membership_request_accepted,
3656
- 'groups-membership-request-rejected' => $groups_membership_request_rejected,
3657
- );
3658
-
3659
- if ( $field !== 'all' ) {
3660
- return wp_list_pluck( $types, $field );
3661
- } else {
3662
- return $types;
3663
- }
3664
- }
3665
-
3666
- /**
3667
- * Handles unsubscribing user from notification emails.
3668
- *
3669
- * @since 2.7.0
3670
- */
3671
- function bp_email_unsubscribe_handler() {
3672
- $emails = bp_email_get_unsubscribe_type_schema();
3673
- $raw_email_type = ! empty( $_GET['nt'] ) ? $_GET['nt'] : '';
3674
- $raw_hash = ! empty( $_GET['nh'] ) ? $_GET['nh'] : '';
3675
- $raw_user_id = ! empty( $_GET['uid'] ) ? absint( $_GET['uid'] ) : 0;
3676
- $new_hash = hash_hmac( 'sha1', "{$raw_email_type}:{$raw_user_id}", bp_email_get_salt() );
3677
-
3678
- // Check required values.
3679
- if ( ! $raw_user_id || ! $raw_email_type || ! $raw_hash || ! array_key_exists( $raw_email_type, $emails ) ) {
3680
- $redirect_to = site_url( 'wp-login.php' );
3681
- $result_msg = __( 'Something has gone wrong.', 'buddypress' );
3682
- $unsub_msg = __( 'Please log in and go to your settings to unsubscribe from notification emails.', 'buddypress' );
3683
-
3684
- // Check valid hash.
3685
- } elseif ( ! hash_equals( $new_hash, $raw_hash ) ) {
3686
- $redirect_to = site_url( 'wp-login.php' );
3687
- $result_msg = __( 'Something has gone wrong.', 'buddypress' );
3688
- $unsub_msg = __( 'Please log in and go to your settings to unsubscribe from notification emails.', 'buddypress' );
3689
-
3690
- // Don't let authenticated users unsubscribe other users' email notifications.
3691
- } elseif ( is_user_logged_in() && get_current_user_id() !== $raw_user_id ) {
3692
- $result_msg = __( 'Something has gone wrong.', 'buddypress' );
3693
- $unsub_msg = __( 'Please go to your notifications settings to unsubscribe from emails.', 'buddypress' );
3694
-
3695
- if ( bp_is_active( 'settings' ) ) {
3696
- $redirect_to = sprintf(
3697
- '%s%s/notifications/',
3698
- bp_core_get_user_domain( get_current_user_id() ),
3699
- bp_get_settings_slug()
3700
- );
3701
- } else {
3702
- $redirect_to = bp_core_get_user_domain( get_current_user_id() );
3703
- }
3704
-
3705
- } else {
3706
- if ( bp_is_active( 'settings' ) ) {
3707
- $redirect_to = sprintf(
3708
- '%s%s/notifications/',
3709
- bp_core_get_user_domain( $raw_user_id ),
3710
- bp_get_settings_slug()
3711
- );
3712
- } else {
3713
- $redirect_to = bp_core_get_user_domain( $raw_user_id );
3714
- }
3715
-
3716
- // Unsubscribe.
3717
- $meta_key = $emails[ $raw_email_type ]['unsubscribe']['meta_key'];
3718
- bp_update_user_meta( $raw_user_id, $meta_key, 'no' );
3719
-
3720
- $result_msg = $emails[ $raw_email_type ]['unsubscribe']['message'];
3721
- $unsub_msg = __( 'You can change this or any other email notification preferences in your email settings.', 'buddypress' );
3722
- }
3723
-
3724
- $message = sprintf(
3725
- '%1$s <a href="%2$s">%3$s</a>',
3726
- $result_msg,
3727
- esc_url( $redirect_to ),
3728
- esc_html( $unsub_msg )
3729
- );
3730
-
3731
- bp_core_add_message( $message );
3732
- bp_core_redirect( bp_core_get_user_domain( $raw_user_id ) );
3733
-
3734
- exit;
3735
- }
3736
-
3737
- /**
3738
- * Creates unsubscribe link for notification emails.
3739
- *
3740
- * @since 2.7.0
3741
  *
3742
- * @param string $redirect_to The URL to which the unsubscribe query string is appended.
3743
- * @param array $args {
3744
- * Used to build unsubscribe query string.
3745
- *
3746
- * @type string $notification_type Which notification type is being sent.
3747
- * @type string $user_id The ID of the user to whom the notification is sent.
3748
- * @type string $redirect_to Optional. The url to which the user will be redirected. Default is the activity directory.
3749
- * }
3750
- * @return string The unsubscribe link.
3751
  */
3752
- function bp_email_get_unsubscribe_link( $args ) {
3753
- $emails = bp_email_get_unsubscribe_type_schema();
3754
-
3755
- if ( empty( $args['notification_type'] ) || ! array_key_exists( $args['notification_type'], $emails ) ) {
3756
- return site_url( 'wp-login.php' );
3757
- }
3758
-
3759
- $email_type = $args['notification_type'];
3760
- $redirect_to = ! empty( $args['redirect_to'] ) ? $args['redirect_to'] : site_url();
3761
- $user_id = (int) $args['user_id'];
3762
-
3763
- // Bail out if the activity type is not un-unsubscribable.
3764
- if ( empty( $emails[ $email_type ]['unsubscribe'] ) ) {
3765
- return '';
3766
- }
3767
-
3768
- $link = add_query_arg(
3769
- array(
3770
- 'action' => 'unsubscribe',
3771
- 'nh' => hash_hmac( 'sha1', "{$email_type}:{$user_id}", bp_email_get_salt() ),
3772
- 'nt' => $args['notification_type'],
3773
- 'uid' => $user_id,
3774
- ),
3775
- $redirect_to
3776
  );
3777
-
3778
- /**
3779
- * Filters the unsubscribe link.
3780
- *
3781
- * @since 2.7.0
3782
- */
3783
- return apply_filters( 'bp_email_get_link', $link, $redirect_to, $args );
3784
- }
3785
-
3786
- /**
3787
- * Get a persistent salt for email unsubscribe links.
3788
- *
3789
- * @since 2.7.0
3790
- *
3791
- * @return string|null Returns null if value isn't set, otherwise string.
3792
- */
3793
- function bp_email_get_salt() {
3794
- return bp_get_option( 'bp-emails-unsubscribe-salt', null );
3795
- }
3796
-
3797
- /**
3798
- * Get a list of emails for use in our unsubscribe functions.
3799
- *
3800
- * @since 2.8.0
3801
- *
3802
- * @see https://buddypress.trac.wordpress.org/ticket/7431
3803
- *
3804
- * @return array The array of email types and their schema.
3805
- */
3806
- function bp_email_get_unsubscribe_type_schema() {
3807
- $emails = bp_email_get_type_schema( 'all' );
3808
-
3809
- /**
3810
- * Filters the return of `bp_email_get_type_schema( 'all' )` for use with
3811
- * our unsubscribe functionality.
3812
- *
3813
- * @since 2.8.0
3814
- *
3815
- * @param array $emails The array of email types and their schema.
3816
- */
3817
- return (array) apply_filters( 'bp_email_get_unsubscribe_type_schema', $emails );
3818
  }
108
  * your own awkward callback function for usort().
109
  *
110
  * @since 2.2.0
 
 
 
 
 
 
 
 
111
  *
112
+ * @param array $items The items to be sorted. Its constituent items can be either associative arrays or objects.
113
+ * @param string|int $key The array index or property name to sort by.
114
+ * @param string $type Sort type. 'alpha' for alphabetical, 'num' for numeric. Default: 'alpha'.
115
  * @return array $items The sorted array.
116
  */
117
+ function bp_sort_by_key( $items, $key, $type = 'alpha' ) {
118
+ usort( $items, array( new BP_Core_Sort_By_Key_Callback( $key, $type ), 'sort_callback' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
 
120
  return $items;
121
  }
449
  * empty string if the list is not found.
450
  */
451
  function bp_core_get_directory_page_ids( $status = 'active' ) {
452
+ $page_ids = bp_get_option( 'bp-pages' );
453
 
454
+ // Ensure that empty indexes are unset. Should only matter in edge cases.
455
+ if ( !empty( $page_ids ) && is_array( $page_ids ) ) {
456
+ foreach( (array) $page_ids as $component_name => $page_id ) {
457
+ if ( empty( $component_name ) || empty( $page_id ) ) {
458
+ unset( $page_ids[ $component_name ] );
459
+ }
460
 
461
+ // 'register' and 'activate' do not have components, but should be whitelisted.
462
+ if ( 'register' === $component_name || 'activate' === $component_name ) {
463
+ continue;
464
+ }
465
 
466
+ // Trashed pages should not appear in results.
467
+ if ( 'trash' == get_post_status( $page_id ) ) {
468
+ unset( $page_ids[ $component_name ] );
 
469
 
470
+ }
 
 
 
471
 
472
+ // Remove inactive component pages, if required.
473
+ if ( 'active' === $status && ! bp_is_active( $component_name ) ) {
474
+ unset( $page_ids[ $component_name ] );
475
+ }
476
  }
477
  }
478
 
480
  * Filters the list of BP directory pages from the appropriate meta table.
481
  *
482
  * @since 1.5.0
 
483
  *
484
+ * @param array $page_ids Array of directory pages.
 
485
  */
486
+ return apply_filters( 'bp_core_get_directory_page_ids', $page_ids );
487
  }
488
 
489
  /**
491
  *
492
  * @since 2.6.0
493
  *
494
+ * @param string $component The slug representing the component. Defaults to the current component.
495
+ * @return int|bool The ID of the directory page associated with the component. False if none is found.
496
  */
497
  function bp_core_get_directory_page_id( $component = null ) {
498
  if ( ! $component ) {
623
 
624
  // Delete any existing pages.
625
  if ( 'delete' === $existing ) {
626
+ foreach ( (array) $pages as $page_id ) {
627
  wp_delete_post( $page_id, true );
628
  }
629
 
630
  $pages = array();
631
  }
632
 
633
+ $page_titles = array(
634
+ 'activity' => _x( 'Activity', 'Page title for the Activity directory.', 'buddypress' ),
635
+ 'groups' => _x( 'Groups', 'Page title for the Groups directory.', 'buddypress' ),
636
+ 'sites' => _x( 'Sites', 'Page title for the Sites directory.', 'buddypress' ),
637
+ 'members' => _x( 'Members', 'Page title for the Members directory.', 'buddypress' ),
638
+ 'activate' => _x( 'Activate', 'Page title for the user activation screen.', 'buddypress' ),
639
+ 'register' => _x( 'Register', 'Page title for the user registration screen.', 'buddypress' ),
640
+ );
641
 
642
  $pages_to_create = array();
643
  foreach ( array_keys( $components ) as $component_name ) {
657
  }
658
 
659
  // No need for a Sites directory unless we're on multisite.
660
+ if ( ! is_multisite() && isset( $pages_to_create['sites'] ) ) {
661
+ unset( $pages_to_create['sites'] );
662
  }
663
 
664
  // Members must always have a page, no matter what.
693
  }
694
  }
695
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
696
  /**
697
  * Remove the entry from bp_pages when the corresponding WP page is deleted.
698
  *
795
 
796
  // If there was no match, add a page for this root component.
797
  if ( empty( $match ) ) {
798
+ $add_root_items = $bp->add_root();
799
  $add_root_items[] = $slug;
800
  $bp->add_root = $add_root_items;
801
  }
829
  ) );
830
  }
831
 
832
+ $page_ids = array_merge( (array) $new_page_ids, (array) bp_core_get_directory_page_ids( 'all' ) );
833
  bp_core_update_directory_page_ids( $page_ids );
834
  }
835
 
850
  * Get the 'search' query argument for a given component.
851
  *
852
  * @since 2.4.0
 
 
853
  *
854
+ * @param string $component Component name.
855
  * @return string|bool Query argument on success. False on failure.
856
  */
857
+ function bp_core_get_component_search_query_arg( $component ) {
 
 
 
 
858
  $query_arg = false;
859
  if ( isset( buddypress()->{$component}->search_query_arg ) ) {
860
  $query_arg = sanitize_title( buddypress()->{$component}->search_query_arg );
1258
  return apply_filters( 'bp_core_time_since', $output, $older_date, $newer_date );
1259
  }
1260
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1261
  /** Messages ******************************************************************/
1262
 
1263
  /**
1388
  *
1389
  * usermeta table.
1390
  *
1391
+ * @return bool|null Returns false if there is nothing to do.
1392
  */
1393
  function bp_core_record_activity() {
1394
 
1414
  }
1415
 
1416
  // Get current time.
1417
+ $current_time = bp_core_current_time();
1418
 
1419
  // Use this action to detect the very first activity for a given member.
1420
  if ( empty( $activity ) ) {
1432
  }
1433
 
1434
  // If it's been more than 5 minutes, record a newer last-activity time.
1435
+ if ( empty( $activity ) || ( strtotime( $current_time ) >= strtotime( '+5 minutes', $activity ) ) ) {
1436
+ bp_update_user_last_activity( $user_id, $current_time );
1437
  }
1438
  }
1439
  add_action( 'wp_head', 'bp_core_record_activity' );
1673
  *
1674
  * @since 2.6.0
1675
  *
1676
+ * @param string $content The content to check.
1677
+ * @param string|int $type The type to check. Can also use a bitmask. See the class constants in the
1678
  * BP_Media_Extractor class for more info.
1679
+ * @return array|bool If media exists, will return array of media metadata. Else, boolean false.
1680
  */
1681
  function bp_core_extract_media_from_content( $content = '', $type = 'all' ) {
1682
  if ( is_string( $type ) ) {
2302
  return;
2303
  }
2304
 
2305
+ remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
2306
  }
2307
  add_action( 'bp_init', 'bp_remove_adjacent_posts_rel_link' );
2308
 
2691
  *
2692
  * @since 2.3.0
2693
  *
2694
+ * @return string
2695
  */
2696
  function bp_upload_dir() {
2697
  $bp = buddypress();
2989
  * @param string|array|int|WP_User $to Either a email address, user ID, WP_User object,
2990
  * or an array containg the address and name.
2991
  * @param array $args {
2992
+ * Optional. Array of extra. parameters.
2993
  *
2994
  * @type array $tokens Optional. Assocative arrays of string replacements for the email.
2995
  * }
3035
  $email->set_to( $to );
3036
  $email->set_tokens( $args['tokens'] );
3037
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3038
  $status = $email->validate();
3039
  if ( is_wp_error( $status ) ) {
3040
  return $status;
3189
  *
3190
  * @since 2.5.0
3191
  *
3192
+ * @param string $text
3193
+ * @param array $tokens Token names and replacement values for the $text.
3194
  * @return string
3195
  */
3196
  function bp_core_replace_tokens_in_text( $text, $tokens ) {
3227
 
3228
  /**
3229
  * Get a list of emails for populating the email post type.
3230
+ *t
3231
  * @since 2.5.1
3232
  *
3233
  * @return array
3304
  /* translators: do not remove {} brackets or translate its contents. */
3305
  'post_content' => __( "Group details for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; were updated:\n<blockquote>{{changed_text}}</blockquote>", 'buddypress' ),
3306
  /* translators: do not remove {} brackets or translate its contents. */
3307
+ 'post_excerpt' => __( "Group details for the group &quot;{{group.name}}&quot; were updated:\n\n{{changed_text}}\n\nTo view the group, visit: {{{group.url}}}", 'buddypress' ),
3308
  ),
3309
  'groups-invitation' => array(
3310
  /* translators: do not remove {} brackets or translate its contents. */
3312
  /* translators: do not remove {} brackets or translate its contents. */
3313
  'post_content' => __( "<a href=\"{{{inviter.url}}}\">{{inviter.name}}</a> has invited you to join the group: &quot;{{group.name}}&quot;.\n<a href=\"{{{invites.url}}}\">Go here to accept your invitation</a> or <a href=\"{{{group.url}}}\">visit the group</a> to learn more.", 'buddypress' ),
3314
  /* translators: do not remove {} brackets or translate its contents. */
3315
+ 'post_excerpt' => __( "{{inviter.name}} has invited you to join the group: &quot;{{group.name}}&quot;.\n\nTo accept your invitation, visit: {{{invites.url}}}\n\nTo learn more about the group, visit {{{group.url}}}.\nTo view {{inviter.name}}'s profile, visit: {{{inviter.url}}}", 'buddypress' ),
3316
  ),
3317
  'groups-member-promoted' => array(
3318
  /* translators: do not remove {} brackets or translate its contents. */
3320
  /* translators: do not remove {} brackets or translate its contents. */
3321
  'post_content' => __( "You have been promoted to <b>{{promoted_to}}</b> in the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot;.", 'buddypress' ),
3322
  /* translators: do not remove {} brackets or translate its contents. */
3323
+ 'post_excerpt' => __( "You have been promoted to {{promoted_to}} in the group: &quot;{{group.name}}&quot;.\n\nTo visit the group, go to: {{{group.url}}}", 'buddypress' ),
3324
  ),
3325
  'groups-membership-request' => array(
3326
  /* translators: do not remove {} brackets or translate its contents. */
3328
  /* translators: do not remove {} brackets or translate its contents. */
3329
  'post_content' => __( "<a href=\"{{{profile.url}}}\">{{requesting-user.name}}</a> wants to join the group &quot;{{group.name}}&quot;. As you are an administrator of this group, you must either accept or reject the membership request.\n\n<a href=\"{{{group-requests.url}}}\">Go here to manage this</a> and all other pending requests.", 'buddypress' ),
3330
  /* translators: do not remove {} brackets or translate its contents. */
3331
+ 'post_excerpt' => __( "{{requesting-user.name}} wants to join the group &quot;{{group.name}}&quot;. As you are the administrator of this group, you must either accept or reject the membership request.\n\nTo manage this and all other pending requests, visit: {{{group-requests.url}}}\n\nTo view {{requesting-user.name}}'s profile, visit: {{{profile.url}}}", 'buddypress' ),
3332
  ),
3333
  'messages-unread' => array(
3334
  /* translators: do not remove {} brackets or translate its contents. */
3336
  /* translators: do not remove {} brackets or translate its contents. */
3337
  'post_content' => __( "{{sender.name}} sent you a new message: &quot;{{usersubject}}&quot;\n\n<blockquote>&quot;{{usermessage}}&quot;</blockquote>\n\n<a href=\"{{{message.url}}}\">Go to the discussion</a> to reply or catch up on the conversation.", 'buddypress' ),
3338
  /* translators: do not remove {} brackets or translate its contents. */
3339
+ 'post_excerpt' => __( "{{sender.name}} sent you a new message: &quot;{{usersubject}}&quot;\n\n&quot;{{usermessage}}&quot;\n\nGo to the discussion to reply or catch up on the conversation: {{{message.url}}}", 'buddypress' ),
3340
  ),
3341
  'settings-verify-email-change' => array(
3342
  /* translators: do not remove {} brackets or translate its contents. */
3352
  /* translators: do not remove {} brackets or translate its contents. */
3353
  'post_content' => __( "Your membership request for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; has been accepted.", 'buddypress' ),
3354
  /* translators: do not remove {} brackets or translate its contents. */
3355
+ 'post_excerpt' => __( "Your membership request for the group &quot;{{group.name}}&quot; has been accepted.\n\nTo view the group, visit: {{{group.url}}}", 'buddypress' ),
3356
  ),
3357
  'groups-membership-request-rejected' => array(
3358
  /* translators: do not remove {} brackets or translate its contents. */
3360
  /* translators: do not remove {} brackets or translate its contents. */
3361
  'post_content' => __( "Your membership request for the group &quot;<a href=\"{{{group.url}}}\">{{group.name}}</a>&quot; has been rejected.", 'buddypress' ),
3362
  /* translators: do not remove {} brackets or translate its contents. */
3363
+ 'post_excerpt' => __( "Your membership request for the group &quot;{{group.name}}&quot; has been rejected.\n\nTo request membership again, visit: {{{group.url}}}", 'buddypress' ),
3364
  ),
3365
  );
3366
  }
3369
  * Get a list of emails for populating email type taxonomy terms.
3370
  *
3371
  * @since 2.5.1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3372
  *
3373
+ * @return array
 
 
 
 
 
 
 
 
3374
  */
3375
+ function bp_email_get_type_schema() {
3376
+ return array(
3377
+ 'activity-comment' => __( 'A member has replied to an activity update that the recipient posted.', 'buddypress' ),
3378
+ 'activity-comment-author' => __( 'A member has replied to a comment on an activity update that the recipient posted.', 'buddypress' ),
3379
+ 'activity-at-message' => __( 'Recipient was mentioned in an activity update.', 'buddypress' ),
3380
+ 'groups-at-message' => __( 'Recipient was mentioned in a group activity update.', 'buddypress' ),
3381
+ 'core-user-registration' => __( 'Recipient has registered for an account.', 'buddypress' ),
3382
+ 'core-user-registration-with-blog' => __( 'Recipient has registered for an account and site.', 'buddypress' ),
3383
+ 'friends-request' => __( 'A member has sent a friend request to the recipient.', 'buddypress' ),
3384
+ 'friends-request-accepted' => __( 'Recipient has had a friend request accepted by a member.', 'buddypress' ),
3385
+ 'groups-details-updated' => __( "A group's details were updated.", 'buddypress' ),
3386
+ 'groups-invitation' => __( 'A member has sent a group invitation to the recipient.', 'buddypress' ),
3387
+ 'groups-member-promoted' => __( "Recipient's status within a group has changed.", 'buddypress' ),
3388
+ 'groups-membership-request' => __( 'A member has requested permission to join a group.', 'buddypress' ),
3389
+ 'messages-unread' => __( 'Recipient has received a private message.', 'buddypress' ),
3390
+ 'settings-verify-email-change' => __( 'Recipient has changed their email address.', 'buddypress' ),
3391
+ 'groups-membership-request-accepted' => __( 'Recipient had requested to join a group, which was accepted.', 'buddypress' ),
3392
+ 'groups-membership-request-rejected' => __( 'Recipient had requested to join a group, which was rejected.', 'buddypress' ),
 
 
 
 
 
 
3393
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3394
  }
bp-core/bp-core-loader.php CHANGED
@@ -12,10 +12,17 @@
12
  // Exit if accessed directly.
13
  defined( 'ABSPATH' ) || exit;
14
 
 
 
 
 
 
15
  /**
16
- * Set up the bp-core component.
17
  *
18
  * @since 1.6.0
 
 
19
  */
20
  function bp_setup_core() {
21
  buddypress()->core = new BP_Core();
12
  // Exit if accessed directly.
13
  defined( 'ABSPATH' ) || exit;
14
 
15
+ if ( ! buddypress()->do_autoload ) {
16
+ require dirname( __FILE__ ) . '/classes/class-bp-component.php';
17
+ require dirname( __FILE__ ) . '/classes/class-bp-core.php';
18
+ }
19
+
20
  /**
21
+ * Set up the BuddyPress Core component.
22
  *
23
  * @since 1.6.0
24
+ *
25
+ * @global BuddyPress $bp BuddyPress global settings object.
26
  */
27
  function bp_setup_core() {
28
  buddypress()->core = new BP_Core();
bp-core/bp-core-moderation.php CHANGED
@@ -53,7 +53,7 @@ function bp_core_check_for_flood( $user_id = 0 ) {
53
  * @param string $title The title of the content.
54
  * @param string $content The content being posted.
55
  * @param string $error_type The error type to return. Either 'bool' or 'wp_error'.
56
- * @return bool|WP_Error True if test is passed, false if fail.
57
  */
58
  function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '', $error_type = 'bool' ) {
59
 
@@ -132,7 +132,7 @@ function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '',
132
  if ( 'bool' === $error_type ) {
133
  return false;
134
  } else {
135
- return new WP_Error( 'bp_moderation_too_many_links', __( 'You have posted too many links', 'buddypress' ) );
136
  }
137
  }
138
  }
@@ -173,7 +173,7 @@ function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '',
173
  if ( 'bool' === $error_type ) {
174
  return false;
175
  } else {
176
- return new WP_Error( 'bp_moderation_word_match', _x( 'You have posted an inappropriate word.', 'Comment moderation', 'buddypress' ) );
177
  }
178
  }
179
  }
@@ -196,7 +196,7 @@ function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '',
196
  * @param string $title The title of the content.
197
  * @param string $content The content being posted.
198
  * @param string $error_type The error type to return. Either 'bool' or 'wp_error'.
199
- * @return bool|WP_Error True if test is passed, false if fail.
200
  */
201
  function bp_core_check_for_blacklist( $user_id = 0, $title = '', $content = '', $error_type = 'bool' ) {
202
 
@@ -286,7 +286,7 @@ function bp_core_check_for_blacklist( $user_id = 0, $title = '', $content = '',
286
  if ( 'bool' === $error_type ) {
287
  return false;
288
  } else {
289
- return new WP_Error( 'bp_moderation_blacklist_match', _x( 'You have posted an inappropriate word.', 'Comment blacklist', 'buddypress' ) );
290
  }
291
  }
292
  }
53
  * @param string $title The title of the content.
54
  * @param string $content The content being posted.
55
  * @param string $error_type The error type to return. Either 'bool' or 'wp_error'.
56
+ * @return bool True if test is passed, false if fail.
57
  */
58
  function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '', $error_type = 'bool' ) {
59
 
132
  if ( 'bool' === $error_type ) {
133
  return false;
134
  } else {
135
+ return new WP_Error( 'bp_moderation_too_many_links', __( 'You have inputted too many links', 'buddypress' ) );
136
  }
137
  }
138
  }
173
  if ( 'bool' === $error_type ) {
174
  return false;
175
  } else {
176
+ return new WP_Error( 'bp_moderation_word_match', _x( 'You have inputted an inappropriate word.', 'Comment moderation', 'buddypress' ) );
177
  }
178
  }
179
  }
196
  * @param string $title The title of the content.
197
  * @param string $content The content being posted.
198
  * @param string $error_type The error type to return. Either 'bool' or 'wp_error'.
199
+ * @return bool True if test is passed, false if fail.
200
  */
201
  function bp_core_check_for_blacklist( $user_id = 0, $title = '', $content = '', $error_type = 'bool' ) {
202
 
286
  if ( 'bool' === $error_type ) {
287
  return false;
288
  } else {
289
+ return new WP_Error( 'bp_moderation_blacklist_match', _x( 'You have inputted an inappropriate word.', 'Comment blacklist', 'buddypress' ) );
290
  }
291
  }
292
  }
bp-core/bp-core-options.php CHANGED
@@ -13,9 +13,6 @@ defined( 'ABSPATH' ) || exit;
13
  /**
14
  * Get the default site options and their values.
15
  *
16
- * Default values should not be set by calls to `get_option()` or `get_site_option()` due to
17
- * these causing load order problems with `bp_core_clear_root_options_cache()`; see #BP7227.
18
- *
19
  * @since 1.6.0
20
  *
21
  * @return array Filtered option names and values.
@@ -76,9 +73,6 @@ function bp_get_default_options() {
76
  // The ID for the current theme package.
77
  '_bp_theme_package_id' => 'legacy',
78
 
79
- // Email unsubscribe salt.
80
- 'bp-emails-unsubscribe-salt' => '',
81
-
82
  /* Groups ************************************************************/
83
 
84
  // @todo Move this into the groups component
@@ -100,14 +94,11 @@ function bp_get_default_options() {
100
  // Force the BuddyBar.
101
  '_bp_force_buddybar' => false,
102
 
103
- /* Legacy *********************************************/
104
 
105
- // Do not register the bp-default themes directory.
106
  '_bp_retain_bp_default' => false,
107
 
108
- // Ignore deprecated code.
109
- '_bp_ignore_deprecated_code' => true,
110
-
111
  /* Widgets **************************************************/
112
  'widget_bp_core_login_widget' => false,
113
  'widget_bp_core_members_widget' => false,
@@ -134,6 +125,7 @@ function bp_get_default_options() {
134
  * Non-destructive, so existing settings will not be overridden.
135
  *
136
  * @since 1.6.0
 
137
  */
138
  function bp_add_options() {
139
 
@@ -164,6 +156,7 @@ function bp_add_options() {
164
  * Currently unused.
165
  *
166
  * @since 1.6.0
 
167
  */
168
  function bp_delete_options() {
169
 
@@ -188,7 +181,10 @@ function bp_delete_options() {
188
  /**
189
  * Add filters to each BP option, allowing them to be overloaded from inside the $bp->options array.
190
  *
 
 
191
  * @since 1.6.0
 
192
  */
193
  function bp_setup_option_filters() {
194
 
@@ -213,6 +209,8 @@ function bp_setup_option_filters() {
213
  /**
214
  * Filter default options and allow them to be overloaded from inside the $bp->options array.
215
  *
 
 
216
  * @since 1.6.0
217
  *
218
  * @param bool $value Optional. Default value false.
@@ -221,8 +219,11 @@ function bp_setup_option_filters() {
221
  function bp_pre_get_option( $value = false ) {
222
  $bp = buddypress();
223
 
 
 
 
224
  // Remove the filter prefix.
225
- $option = str_replace( 'pre_option_', '', current_filter() );
226
 
227
  // Check the options global for preset value.
228
  if ( ! empty( $bp->options[ $option ] ) ) {
@@ -241,7 +242,7 @@ function bp_pre_get_option( $value = false ) {
241
  *
242
  * The 'bp_get_option' filter is primarily for backward-compatibility.
243
  *
244
- * @since 1.5.0
245
  *
246
  * @param string $option_name The option to be retrieved.
247
  * @param string $default Optional. Default value to be returned if the option
@@ -254,7 +255,7 @@ function bp_get_option( $option_name, $default = '' ) {
254
  /**
255
  * Filters the option value for the requested option.
256
  *
257
- * @since 1.5.0
258
  *
259
  * @param mixed $value The value for the option.
260
  */
@@ -287,7 +288,7 @@ function bp_add_option( $option_name, $value ) {
287
  * @since 1.5.0
288
  *
289
  * @param string $option_name The option key to be set.
290
- * @param mixed $value The value to be set.
291
  * @return bool True on success, false on failure.
292
  */
293
  function bp_update_option( $option_name, $value ) {
@@ -410,16 +411,61 @@ function bp_core_get_root_options() {
410
  $root_blog_options_meta = array_merge( $root_blog_options_meta, $network_options_meta );
411
  }
412
 
413
- // Loop through our results and make them usable.
414
- foreach ( $root_blog_options_meta as $root_blog_option ) {
415
- $root_blog_options[$root_blog_option->name] = $root_blog_option->value;
416
- }
 
 
 
 
417
 
418
- // Copy the options no the return val.
419
- $root_blog_options_meta = $root_blog_options;
420
 
421
- // Clean up our temporary copy.
422
- unset( $root_blog_options );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
423
 
424
  wp_cache_set( 'root_blog_options', $root_blog_options_meta, 'bp' );
425
  }
@@ -443,7 +489,7 @@ function bp_core_get_root_options() {
443
  *
444
  * @since 2.3.0
445
  *
446
- * @param string $option Name of the option key.
447
  * @return mixed Value, if found.
448
  */
449
  function bp_core_get_root_option( $option ) {
@@ -708,6 +754,7 @@ function bp_group_forums_root_id( $default = '0' ) {
708
  *
709
  * @since 1.6.0
710
  *
 
711
  * @param bool|string $default Optional. Default: '0'.
712
  * @return int The ID of the group forums root forum.
713
  */
13
  /**
14
  * Get the default site options and their values.
15
  *
 
 
 
16
  * @since 1.6.0
17
  *
18
  * @return array Filtered option names and values.
73
  // The ID for the current theme package.
74
  '_bp_theme_package_id' => 'legacy',
75
 
 
 
 
76
  /* Groups ************************************************************/
77
 
78
  // @todo Move this into the groups component
94
  // Force the BuddyBar.
95
  '_bp_force_buddybar' => false,
96
 
97
+ /* Legacy theme *********************************************/
98
 
99
+ // Whether to register the bp-default themes directory.
100
  '_bp_retain_bp_default' => false,
101
 
 
 
 
102
  /* Widgets **************************************************/
103
  'widget_bp_core_login_widget' => false,
104
  'widget_bp_core_members_widget' => false,
125
  * Non-destructive, so existing settings will not be overridden.
126
  *
127
  * @since 1.6.0
128
+ *
129
  */
130
  function bp_add_options() {
131
 
156
  * Currently unused.
157
  *
158
  * @since 1.6.0
159
+ *
160
  */
161
  function bp_delete_options() {
162
 
181
  /**
182
  * Add filters to each BP option, allowing them to be overloaded from inside the $bp->options array.
183
  *
184
+ * Currently unused.
185
+ *
186
  * @since 1.6.0
187
+ *
188
  */
189
  function bp_setup_option_filters() {
190
 
209
  /**
210
  * Filter default options and allow them to be overloaded from inside the $bp->options array.
211
  *
212
+ * Currently unused.
213
+ *
214
  * @since 1.6.0
215
  *
216
  * @param bool $value Optional. Default value false.
219
  function bp_pre_get_option( $value = false ) {
220
  $bp = buddypress();
221
 
222
+ // Get the name of the current filter so we can manipulate it.
223
+ $filter = current_filter();
224
+
225
  // Remove the filter prefix.
226
+ $option = str_replace( 'pre_option_', '', $filter );
227
 
228
  // Check the options global for preset value.
229
  if ( ! empty( $bp->options[ $option ] ) ) {
242
  *
243
  * The 'bp_get_option' filter is primarily for backward-compatibility.
244
  *
245
+ * @since 1.2.0
246
  *
247
  * @param string $option_name The option to be retrieved.
248
  * @param string $default Optional. Default value to be returned if the option
255
  /**
256
  * Filters the option value for the requested option.
257
  *
258
+ * @since 1.2.0
259
  *
260
  * @param mixed $value The value for the option.
261
  */
288
  * @since 1.5.0
289
  *
290
  * @param string $option_name The option key to be set.
291
+ * @param string $value The value to be set.
292
  * @return bool True on success, false on failure.
293
  */
294
  function bp_update_option( $option_name, $value ) {
411
  $root_blog_options_meta = array_merge( $root_blog_options_meta, $network_options_meta );
412
  }
413
 
414
+ // Missing some options, so do some one-time fixing.
415
+ if ( empty( $root_blog_options_meta ) || ( count( $root_blog_options_meta ) < count( $root_blog_option_keys ) ) ) {
416
+
417
+ // Get a list of the keys that are already populated.
418
+ $existing_options = array();
419
+ foreach( $root_blog_options_meta as $already_option ) {
420
+ $existing_options[$already_option->name] = $already_option->value;
421
+ }
422
 
423
+ // Unset the query - We'll be resetting it soon.
424
+ unset( $root_blog_options_meta );
425
 
426
+ // Loop through options.
427
+ foreach ( $root_blog_options as $old_meta_key => $old_meta_default ) {
428
+
429
+ if ( isset( $existing_options[$old_meta_key] ) ) {
430
+ continue;
431
+ }
432
+
433
+ // Get old site option.
434
+ if ( is_multisite() ) {
435
+ $old_meta_value = get_site_option( $old_meta_key );
436
+ }
437
+
438
+ // No site option so look in root blog.
439
+ if ( empty( $old_meta_value ) ) {
440
+ $old_meta_value = bp_get_option( $old_meta_key, $old_meta_default );
441
+ }
442
+
443
+ // Update the root blog option.
444
+ bp_update_option( $old_meta_key, $old_meta_value );
445
+
446
+ // Update the global array.
447
+ $root_blog_options_meta[$old_meta_key] = $old_meta_value;
448
+
449
+ // Clear out the value for the next time around.
450
+ unset( $old_meta_value );
451
+ }
452
+
453
+ $root_blog_options_meta = array_merge( $root_blog_options_meta, $existing_options );
454
+ unset( $existing_options );
455
+
456
+ // We're all matched up.
457
+ } else {
458
+ // Loop through our results and make them usable.
459
+ foreach ( $root_blog_options_meta as $root_blog_option ) {
460
+ $root_blog_options[$root_blog_option->name] = $root_blog_option->value;
461
+ }
462
+
463
+ // Copy the options no the return val.
464
+ $root_blog_options_meta = $root_blog_options;
465
+
466
+ // Clean up our temporary copy.
467
+ unset( $root_blog_options );
468
+ }
469
 
470
  wp_cache_set( 'root_blog_options', $root_blog_options_meta, 'bp' );
471
  }
489
  *
490
  * @since 2.3.0
491
  *
492
+ * @param string $option Name of the option key.
493
  * @return mixed Value, if found.
494
  */
495
  function bp_core_get_root_option( $option ) {
754
  *
755
  * @since 1.6.0
756
  *
757
+ *
758
  * @param bool|string $default Optional. Default: '0'.
759
  * @return int The ID of the group forums root forum.
760
  */
bp-core/bp-core-taxonomy.php CHANGED
@@ -21,7 +21,7 @@ defined( 'ABSPATH' ) || exit;
21
  */
22
  function bp_register_default_taxonomies() {
23
  // Member Type.
24
- register_taxonomy( bp_get_member_type_tax_name(), 'user', array(
25
  'public' => false,
26
  ) );
27
 
@@ -51,7 +51,6 @@ add_action( 'bp_register_taxonomies', 'bp_register_default_taxonomies' );
51
  *
52
  * @since 2.6.0
53
  *
54
- * @param string $taxonomy Taxonomy slug to check for.
55
  * @return int
56
  */
57
  function bp_get_taxonomy_term_site_id( $taxonomy = '' ) {
@@ -62,8 +61,8 @@ function bp_get_taxonomy_term_site_id( $taxonomy = '' ) {
62
  *
63
  * @since 2.6.0
64
  *
65
- * @param int $site_id Site ID to cehck for.
66
- * @param string $taxonomy Taxonomy slug to check for.
67
  */
68
  return (int) apply_filters( 'bp_get_taxonomy_term_site_id', $site_id, $taxonomy );
69
  }
@@ -91,25 +90,13 @@ function bp_set_object_terms( $object_id, $terms, $taxonomy, $append = false ) {
91
  $switched = true;
92
  }
93
 
94
- $tt_ids = wp_set_object_terms( $object_id, $terms, $taxonomy, $append );
95
 
96
- if ( $switched ) {
97
  restore_current_blog();
98
  }
99
 
100
- /**
101
- * Fires when taxonomy terms have been set on BuddyPress objects.
102
- *
103
- * @since 2.7.0
104
- *
105
- * @param int $object_id Object ID.
106
- * @param array $terms Term or terms to remove.
107
- * @param array $tt_ids Array of term taxonomy IDs.
108
- * @param string $taxonomy Taxonomy name.
109
- */
110
- do_action( 'bp_set_object_terms', $object_id, $terms, $tt_ids, $taxonomy );
111
-
112
- return $tt_ids;
113
  }
114
 
115
  /**
@@ -144,7 +131,7 @@ function bp_get_object_terms( $object_ids, $taxonomies, $args = array() ) {
144
  $site_terms = wp_get_object_terms( $object_ids, $site_taxonomies, $args );
145
  $retval = array_merge( $retval, $site_terms );
146
 
147
- if ( $switched ) {
148
  restore_current_blog();
149
  }
150
  }
@@ -176,104 +163,9 @@ function bp_remove_object_terms( $object_id, $terms, $taxonomy ) {
176
 
177
  $retval = wp_remove_object_terms( $object_id, $terms, $taxonomy );
178
 
179
- if ( $switched ) {
180
  restore_current_blog();
181
  }
182
 
183
- /**
184
- * Fires when taxonomy terms have been removed from BuddyPress objects.
185
- *
186
- * @since 2.7.0
187
- *
188
- * @param int $object_id Object ID.
189
- * @param array $terms Term or terms to remove.
190
- * @param string $taxonomy Taxonomy name.
191
- */
192
- do_action( 'bp_remove_object_terms', $object_id, $terms, $taxonomy );
193
-
194
  return $retval;
195
  }
196
-
197
- /**
198
- * Retrieve IDs of objects in valid taxonomies and terms for BuddyPress-related taxonomies.
199
- *
200
- * Note that object IDs are from the `bp_get_taxonomy_term_site_id()`, which on some
201
- * multisite configurations may not be the same as the current site.
202
- *
203
- * @since 2.7.0
204
- *
205
- * @see get_objects_in_term() for a full description of function and parameters.
206
- *
207
- * @param int|array $term_ids Term id or array of term ids of terms that will be used.
208
- * @param string|array $taxonomies String of taxonomy name or Array of string values of taxonomy names.
209
- * @param array|string $args Change the order of the object_ids, either ASC or DESC.
210
- *
211
- * @return WP_Error|array If the taxonomy does not exist, then WP_Error will be returned. On success,
212
- * the array can be empty, meaning that there are no $object_ids found. When
213
- * object IDs are found, an array of those IDs will be returned.
214
- */
215
- function bp_get_objects_in_term( $term_ids, $taxonomies, $args = array() ) {
216
- // Different taxonomies may be stored on different sites.
217
- $taxonomy_site_map = array();
218
- foreach ( (array) $taxonomies as $taxonomy ) {
219
- $taxonomy_site_id = bp_get_taxonomy_term_site_id( $taxonomy );
220
- $taxonomy_site_map[ $taxonomy_site_id ][] = $taxonomy;
221
- }
222
-
223
- $retval = array();
224
- foreach ( $taxonomy_site_map as $taxonomy_site_id => $site_taxonomies ) {
225
- $switched = false;
226
- if ( $taxonomy_site_id !== get_current_blog_id() ) {
227
- switch_to_blog( $taxonomy_site_id );
228
- bp_register_taxonomies();
229
- $switched = true;
230
- }
231
-
232
- $site_objects = get_objects_in_term( $term_ids, $site_taxonomies, $args );
233
- $retval = array_merge( $retval, $site_objects );
234
-
235
- if ( $switched ) {
236
- restore_current_blog();
237
- }
238
- }
239
-
240
- return $retval;
241
- }
242
-
243
- /**
244
- * Get term data for terms in BuddyPress taxonomies.
245
- *
246
- * Note that term data is from the `bp_get_taxonomy_term_site_id()`, which on some
247
- * multisite configurations may not be the same as the current site.
248
- *
249
- * @since 2.7.0
250
- *
251
- * @see get_term_by() for a full description of function and parameters.
252
- *
253
- * @param string $field Either 'slug', 'name', 'id' (term_id), or 'term_taxonomy_id'
254
- * @param string|int $value Search for this term value
255
- * @param string $taxonomy Taxonomy name. Optional, if `$field` is 'term_taxonomy_id'.
256
- * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N
257
- * @param string $filter Optional, default is raw or no WordPress defined filter will applied.
258
- *
259
- * @return WP_Term|bool WP_Term instance on success. Will return false if `$taxonomy` does not exist
260
- * or `$term` was not found.
261
- */
262
- function bp_get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) {
263
- $site_id = bp_get_taxonomy_term_site_id( $taxonomy );
264
-
265
- $switched = false;
266
- if ( $site_id !== get_current_blog_id() ) {
267
- switch_to_blog( $site_id );
268
- bp_register_taxonomies();
269
- $switched = true;
270
- }
271
-
272
- $term = get_term_by( $field, $value, $taxonomy, $output, $filter );
273
-
274
- if ( $switched ) {
275
- restore_current_blog();
276
- }
277
-
278
- return $term;
279
- }
21
  */
22
  function bp_register_default_taxonomies() {
23
  // Member Type.
24
+ register_taxonomy( 'bp_member_type', 'user', array(
25
  'public' => false,
26
  ) );
27
 
51
  *
52
  * @since 2.6.0
53
  *
 
54
  * @return int
55
  */
56
  function bp_get_taxonomy_term_site_id( $taxonomy = '' ) {
61
  *
62
  * @since 2.6.0
63
  *
64
+ * @param int $site_id
65
+ * @param string $taxonomy
66
  */
67
  return (int) apply_filters( 'bp_get_taxonomy_term_site_id', $site_id, $taxonomy );
68
  }
90
  $switched = true;
91
  }
92
 
93
+ $retval = wp_set_object_terms( $object_id, $terms, $taxonomy, $append );
94
 
95
+ if ( ! $switched ) {
96
  restore_current_blog();
97
  }
98
 
99
+ return $retval;
 
 
 
 
 
 
 
 
 
 
 
 
100
  }
101
 
102
  /**
131
  $site_terms = wp_get_object_terms( $object_ids, $site_taxonomies, $args );
132
  $retval = array_merge( $retval, $site_terms );
133
 
134
+ if ( ! $switched ) {
135
  restore_current_blog();
136
  }
137
  }
163
 
164
  $retval = wp_remove_object_terms( $object_id, $terms, $taxonomy );
165
 
166
+ if ( ! $switched ) {
167
  restore_current_blog();
168
  }
169
 
 
 
 
 
 
 
 
 
 
 
 
170
  return $retval;
171
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/bp-core-template-loader.php CHANGED
@@ -23,7 +23,7 @@ defined( 'ABSPATH' ) || exit;
23
  * eg 'friends' for 'friends.php'.
24
  * @param string|null $name Optional. Template part name. Used to generate
25
  * secondary filenames, eg 'personal' for 'activity-personal.php'.
26
- * @return false|string Path to located template. See {@link bp_locate_template()}.
27
  */
28
  function bp_get_template_part( $slug, $name = null ) {
29
 
@@ -70,10 +70,6 @@ function bp_get_template_part( $slug, $name = null ) {
70
  * @since 2.6.0
71
  *
72
  * @see bp_get_template_part() for full documentation.
73
- *
74
- * @param string $slug Template slug.
75
- * @param string|null $name Template name.
76
- * @return false|string
77
  */
78
  function bp_get_asset_template_part( $slug, $name = null ) {
79
  return bp_get_template_part( "assets/{$slug}", $name );
@@ -97,11 +93,6 @@ function bp_get_asset_template_part( $slug, $name = null ) {
97
  */
98
  function bp_locate_template( $template_names, $load = false, $require_once = true ) {
99
 
100
- // Bail when there are no templates to locate
101
- if ( empty( $template_names ) ) {
102
- return false;
103
- }
104
-
105
  // No file found yet.
106
  $located = false;
107
  $template_locations = bp_get_template_stack();
@@ -165,9 +156,9 @@ function bp_locate_template( $template_names, $load = false, $require_once = tru
165
  *
166
  * @since 2.6.0
167
  *
168
- * @param string $filename Relative filename to search for.
169
- * @return false|array Array of asset data if one is located (includes absolute filepath and URI).
170
- * Boolean false on failure.
171
  */
172
  function bp_locate_template_asset( $filename ) {
173
  // Ensure assets can be located when running from /src/.
@@ -187,12 +178,12 @@ function bp_locate_template_asset( $filename ) {
187
 
188
  $find = array(
189
  get_theme_root(),
190
- bp_get_theme_compat_dir()
191
  );
192
 
193
  $replace = array(
194
  get_theme_root_uri(),
195
- bp_get_theme_compat_url()
196
  );
197
 
198
  // Make sure URI path is relative to site URL.
@@ -605,7 +596,7 @@ function bp_load_theme_functions() {
605
  * @since 1.7.0
606
  * @since 2.4.0 Added singular.php to stack
607
  *
608
- * @return string Possible root level wrapper template files.
609
  */
610
  function bp_get_theme_compat_templates() {
611
  return bp_get_query_template( 'buddypress', array(
23
  * eg 'friends' for 'friends.php'.
24
  * @param string|null $name Optional. Template part name. Used to generate
25
  * secondary filenames, eg 'personal' for 'activity-personal.php'.
26
+ * @return string Path to located template. See {@link bp_locate_template()}.
27
  */
28
  function bp_get_template_part( $slug, $name = null ) {
29
 
70
  * @since 2.6.0
71
  *
72
  * @see bp_get_template_part() for full documentation.
 
 
 
 
73
  */
74
  function bp_get_asset_template_part( $slug, $name = null ) {
75
  return bp_get_template_part( "assets/{$slug}", $name );
93
  */
94
  function bp_locate_template( $template_names, $load = false, $require_once = true ) {
95
 
 
 
 
 
 
96
  // No file found yet.
97
  $located = false;
98
  $template_locations = bp_get_template_stack();
156
  *
157
  * @since 2.6.0
158
  *
159
+ * @param string Relative filename to search for.
160
+ * @return array|bool Array of asset data if one is located (includes absolute filepath and URI).
161
+ * Boolean false on failure.
162
  */
163
  function bp_locate_template_asset( $filename ) {
164
  // Ensure assets can be located when running from /src/.
178
 
179
  $find = array(
180
  get_theme_root(),
181
+ buddypress()->plugin_dir
182
  );
183
 
184
  $replace = array(
185
  get_theme_root_uri(),
186
+ buddypress()->plugin_url
187
  );
188
 
189
  // Make sure URI path is relative to site URL.
596
  * @since 1.7.0
597
  * @since 2.4.0 Added singular.php to stack
598
  *
599
+ * @return array Array of possible root level wrapper template files.
600
  */
601
  function bp_get_theme_compat_templates() {
602
  return bp_get_query_template( 'buddypress', array(
bp-core/bp-core-template.php CHANGED
@@ -584,71 +584,6 @@ function bp_search_form_type_select() {
584
  return apply_filters( 'bp_search_form_type_select', $selection_box );
585
  }
586
 
587
- /**
588
- * Output the 'name' attribute for search form input element.
589
- *
590
- * @since 2.7.0
591
- *
592
- * @param string $component See bp_get_search_input_name().
593
- */
594
- function bp_search_input_name( $component = '' ) {
595
- echo esc_attr( bp_get_search_input_name( $component ) );
596
- }
597
-
598
- /**
599
- * Get the 'name' attribute for the search form input element.
600
- *
601
- * @since 2.7.0
602
- *
603
- * @param string $component Component name. Defaults to current component.
604
- * @return string Text for the 'name' attribute.
605
- */
606
- function bp_get_search_input_name( $component = '' ) {
607
- if ( ! $component ) {
608
- $component = bp_current_component();
609
- }
610
-
611
- $bp = buddypress();
612
-
613
- $name = '';
614
- if ( isset( $bp->{$component}->id ) ) {
615
- $name = $bp->{$component}->id . '_search';
616
- }
617
-
618
- return $name;
619
- }
620
-
621
- /**
622
- * Output the placeholder text for the search box for a given component.
623
- *
624
- * @since 2.7.0
625
- *
626
- * @param string $component See bp_get_search_placeholder().
627
- */
628
- function bp_search_placeholder( $component = '' ) {
629
- echo esc_attr( bp_get_search_placeholder( $component ) );
630
- }
631
-
632
- /**
633
- * Get the placeholder text for the search box for a given component.
634
- *
635
- * @since 2.7.0
636
- *
637
- * @param string $component Component name. Defaults to current component.
638
- * @return string Placeholder text for the search field.
639
- */
640
- function bp_get_search_placeholder( $component = '' ) {
641
- $query_arg = bp_core_get_component_search_query_arg( $component );
642
-
643
- if ( $query_arg && ! empty( $_REQUEST[ $query_arg ] ) ) {
644
- $placeholder = wp_unslash( $_REQUEST[ $query_arg ] );
645
- } else {
646
- $placeholder = bp_get_search_default_text( $component );
647
- }
648
-
649
- return $placeholder;
650
- }
651
-
652
  /**
653
  * Output the default text for the search box for a given component.
654
  *
@@ -2464,7 +2399,7 @@ function bp_is_user_change_avatar() {
2464
  *
2465
  * Eg http://example.com/members/joe/profile/change-cover-image/ (or a subpage thereof).
2466
  *
2467
- * @since 2.4.0
2468
  *
2469
  * @return bool True if the current page is a user's profile edit cover image page.
2470
  */
@@ -2683,10 +2618,10 @@ function bp_is_user_settings_profile() {
2683
  *
2684
  * @since 2.0.0
2685
  *
2686
- * @return bool True if the current page is the groups directory.
2687
  */
2688
  function bp_is_groups_directory() {
2689
- if ( bp_is_groups_component() && ! bp_is_group() && ( ! bp_current_action() || ( bp_action_variable() && bp_is_current_action( bp_get_groups_group_type_base() ) ) ) ) {
2690
  return true;
2691
  }
2692
 
@@ -2785,7 +2720,7 @@ function bp_is_group_forum() {
2785
  *
2786
  * @since 1.2.1
2787
  *
2788
- * @return bool True if the current page is a group's activity page.
2789
  */
2790
  function bp_is_group_activity() {
2791
  $retval = false;
@@ -2930,7 +2865,7 @@ function bp_is_create_blog() {
2930
  *
2931
  * @since 2.0.0
2932
  *
2933
- * @return bool True if the current page is the blogs directory.
2934
  */
2935
  function bp_is_blogs_directory() {
2936
  if ( is_multisite() && bp_is_blogs_component() && ! bp_current_action() ) {
@@ -3219,7 +3154,7 @@ function bp_get_title_parts( $seplocation = 'right' ) {
3219
  *
3220
  * @since 2.4.3
3221
  *
3222
- * @param array $bp_title_parts Current BuddyPress title parts.
3223
  * @return array
3224
  */
3225
  return (array) apply_filters( 'bp_get_title_parts', $bp_title_parts );
@@ -3298,13 +3233,6 @@ function bp_the_body_class() {
3298
 
3299
  if ( bp_is_user() ) {
3300
  $bp_classes[] = 'bp-user';
3301
-
3302
- // Add current user member types.
3303
- if ( $member_types = bp_get_member_type( bp_displayed_user_id(), false ) ) {
3304
- foreach( $member_types as $member_type ) {
3305
- $bp_classes[] = sprintf( 'member-type-%s', esc_attr( $member_type ) );
3306
- }
3307
- }
3308
  }
3309
 
3310
  if ( ! bp_is_directory() ) {
@@ -3319,10 +3247,6 @@ function bp_the_body_class() {
3319
  if ( bp_is_user_activity() ) {
3320
  $bp_classes[] = 'my-activity';
3321
  }
3322
- } else {
3323
- if ( bp_get_current_member_type() ) {
3324
- $bp_classes[] = 'type';
3325
- }
3326
  }
3327
 
3328
  if ( bp_is_my_profile() ) {
@@ -3395,13 +3319,6 @@ function bp_the_body_class() {
3395
 
3396
  if ( bp_is_group() ) {
3397
  $bp_classes[] = 'group-' . groups_get_current_group()->slug;
3398
-
3399
- // Add current group types.
3400
- if ( $group_types = bp_groups_get_group_type( bp_get_current_group_id(), false ) ) {
3401
- foreach ( $group_types as $group_type ) {
3402
- $bp_classes[] = sprintf( 'group-type-%s', esc_attr( $group_type ) );
3403
- }
3404
- }
3405
  }
3406
 
3407
  if ( bp_is_group_leave() ) {
@@ -3470,9 +3387,6 @@ function bp_the_body_class() {
3470
  $bp_classes[] = 'buddypress';
3471
  }
3472
 
3473
- // Add the theme name/id to the body classes
3474
- $bp_classes[] = 'bp-' . bp_get_theme_compat_id();
3475
-
3476
  // Merge WP classes with BuddyPress classes and remove any duplicates.
3477
  $classes = array_unique( array_merge( (array) $bp_classes, (array) $wp_classes ) );
3478
 
@@ -3595,7 +3509,7 @@ function bp_get_nav_menu_items( $component = 'members' ) {
3595
  $menu = new stdClass;
3596
  $menu->class = array( 'menu-parent' );
3597
  $menu->css_id = $nav_menu->css_id;
3598
- $menu->link = $link;
3599
  $menu->name = $nav_menu->name;
3600
  $menu->parent = 0;
3601
 
@@ -3611,7 +3525,7 @@ function bp_get_nav_menu_items( $component = 'members' ) {
3611
  $submenu->parent = $nav_menu->slug;
3612
 
3613
  // If we're viewing this item's screen, record that we need to mark its parent menu to be selected.
3614
- if ( bp_is_current_action( $sub_menu->slug ) && bp_is_current_component( $nav_menu->slug ) ) {
3615
  $menu->class[] = 'current-menu-parent';
3616
  $submenu->class[] = 'current-menu-item';
3617
  }
@@ -3810,9 +3724,9 @@ function bp_nav_menu( $args = array() ) {
3810
  /**
3811
  * Prints the Recipient Salutation.
3812
  *
3813
- * @since 2.5.0
3814
  *
3815
- * @param array $settings Email Settings.
3816
  */
3817
  function bp_email_the_salutation( $settings = array() ) {
3818
  echo bp_email_get_salutation( $settings );
@@ -3821,9 +3735,9 @@ function bp_email_the_salutation( $settings = array() ) {
3821
  /**
3822
  * Gets the Recipient Salutation.
3823
  *
3824
- * @since 2.5.0
3825
  *
3826
- * @param array $settings Email Settings.
3827
  * @return string The Recipient Salutation.
3828
  */
3829
  function bp_email_get_salutation( $settings = array() ) {
@@ -3832,7 +3746,7 @@ function bp_email_the_salutation( $settings = array() ) {
3832
  /**
3833
  * Filters The Recipient Salutation inside the Email Template.
3834
  *
3835
- * @since 2.5.0
3836
  *
3837
  * @param string $value The Recipient Salutation.
3838
  * @param array $settings Email Settings.
584
  return apply_filters( 'bp_search_form_type_select', $selection_box );
585
  }
586
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
587
  /**
588
  * Output the default text for the search box for a given component.
589
  *
2399
  *
2400
  * Eg http://example.com/members/joe/profile/change-cover-image/ (or a subpage thereof).
2401
  *
2402
+ * @since 2.4.0
2403
  *
2404
  * @return bool True if the current page is a user's profile edit cover image page.
2405
  */
2618
  *
2619
  * @since 2.0.0
2620
  *
2621
+ * @return True if the current page is the groups directory.
2622
  */
2623
  function bp_is_groups_directory() {
2624
+ if ( bp_is_groups_component() && ! bp_current_action() && ! bp_current_item() ) {
2625
  return true;
2626
  }
2627
 
2720
  *
2721
  * @since 1.2.1
2722
  *
2723
+ * @return True if the current page is a group's activity page.
2724
  */
2725
  function bp_is_group_activity() {
2726
  $retval = false;
2865
  *
2866
  * @since 2.0.0
2867
  *
2868
+ * @return True if the current page is the blogs directory.
2869
  */
2870
  function bp_is_blogs_directory() {
2871
  if ( is_multisite() && bp_is_blogs_component() && ! bp_current_action() ) {
3154
  *
3155
  * @since 2.4.3
3156
  *
3157
+ * @param array $bp_title_parts Current BuddyPress title parts
3158
  * @return array
3159
  */
3160
  return (array) apply_filters( 'bp_get_title_parts', $bp_title_parts );
3233
 
3234
  if ( bp_is_user() ) {
3235
  $bp_classes[] = 'bp-user';
 
 
 
 
 
 
 
3236
  }
3237
 
3238
  if ( ! bp_is_directory() ) {
3247
  if ( bp_is_user_activity() ) {
3248
  $bp_classes[] = 'my-activity';
3249
  }
 
 
 
 
3250
  }
3251
 
3252
  if ( bp_is_my_profile() ) {
3319
 
3320
  if ( bp_is_group() ) {
3321
  $bp_classes[] = 'group-' . groups_get_current_group()->slug;
 
 
 
 
 
 
 
3322
  }
3323
 
3324
  if ( bp_is_group_leave() ) {
3387
  $bp_classes[] = 'buddypress';
3388
  }
3389
 
 
 
 
3390
  // Merge WP classes with BuddyPress classes and remove any duplicates.
3391
  $classes = array_unique( array_merge( (array) $bp_classes, (array) $wp_classes ) );
3392
 
3509
  $menu = new stdClass;
3510
  $menu->class = array( 'menu-parent' );
3511
  $menu->css_id = $nav_menu->css_id;
3512
+ $menu->link = $nav_menu->link;
3513
  $menu->name = $nav_menu->name;
3514
  $menu->parent = 0;
3515
 
3525
  $submenu->parent = $nav_menu->slug;
3526
 
3527
  // If we're viewing this item's screen, record that we need to mark its parent menu to be selected.
3528
+ if ( $sub_menu->slug == bp_current_action() ) {
3529
  $menu->class[] = 'current-menu-parent';
3530
  $submenu->class[] = 'current-menu-item';
3531
  }
3724
  /**
3725
  * Prints the Recipient Salutation.
3726
  *
3727
+ * @since 2.5.0
3728
  *
3729
+ * @param array $settings Email Settings.
3730
  */
3731
  function bp_email_the_salutation( $settings = array() ) {
3732
  echo bp_email_get_salutation( $settings );
3735
  /**
3736
  * Gets the Recipient Salutation.
3737
  *
3738
+ * @since 2.5.0
3739
  *
3740
+ * @param array $settings Email Settings.
3741
  * @return string The Recipient Salutation.
3742
  */
3743
  function bp_email_get_salutation( $settings = array() ) {
3746
  /**
3747
  * Filters The Recipient Salutation inside the Email Template.
3748
  *
3749
+ * @since 2.5.0
3750
  *
3751
  * @param string $value The Recipient Salutation.
3752
  * @param array $settings Email Settings.
bp-core/bp-core-theme-compatibility.php CHANGED
@@ -22,6 +22,12 @@ defined( 'ABSPATH' ) || exit;
22
  * Don't try anything you're about to witness here, at home. Ever.
23
  */
24
 
 
 
 
 
 
 
25
  /** Functions *****************************************************************/
26
 
27
  /**
@@ -313,8 +319,8 @@ function bp_set_theme_compat_original_template( $template = '' ) {
313
  *
314
  * @since 2.4.0
315
  *
316
- * @param string $theme_id The theme id (eg: legacy).
317
- * @param array $feature An associative array (eg: array( name => 'feature_name', 'settings' => array() )).
318
  */
319
  function bp_set_theme_compat_feature( $theme_id, $feature = array() ) {
320
  if ( empty( $theme_id ) || empty( $feature['name'] ) ) {
@@ -373,8 +379,8 @@ function bp_set_theme_compat_feature( $theme_id, $feature = array() ) {
373
  *
374
  * @since 2.4.0
375
  *
376
- * @param string $feature The feature (eg: cover_image).
377
- * @return object The feature settings.
378
  */
379
  function bp_get_theme_compat_feature( $feature = '' ) {
380
  // Get current theme compat theme.
@@ -391,7 +397,7 @@ function bp_get_theme_compat_feature( $feature = '' ) {
391
  }
392
 
393
  /**
394
- * Setup the theme's features.
395
  *
396
  * Note: BP Legacy's buddypress-functions.php is not loaded in WP Administration
397
  * as it's loaded using bp_locate_template(). That's why this function is here.
@@ -640,7 +646,7 @@ function bp_theme_compat_reset_post( $args = array() ) {
640
  unset( $dummy );
641
 
642
  /**
643
- * Force the header back to 200 status if not a deliberate 404.
644
  *
645
  * @see https://bbpress.trac.wordpress.org/ticket/1973
646
  */
@@ -951,12 +957,10 @@ function bp_comments_open( $open, $post_id = 0 ) {
951
  function bp_theme_compat_toggle_is_page( $retval = '' ) {
952
  global $wp_query;
953
 
954
- if ( $wp_query->is_page ) {
955
- $wp_query->is_page = false;
956
 
957
- // Set a switch so we know that we've toggled these WP_Query properties.
958
- buddypress()->theme_compat->is_page_toggled = true;
959
- }
960
 
961
  return $retval;
962
  }
22
  * Don't try anything you're about to witness here, at home. Ever.
23
  */
24
 
25
+ /** Base Class ****************************************************************/
26
+
27
+ if ( ! buddypress()->do_autoload ) {
28
+ require dirname( __FILE__ ) . '/classes/class-bp-theme-compat.php';
29
+ }
30
+
31
  /** Functions *****************************************************************/
32
 
33
  /**
319
  *
320
  * @since 2.4.0
321
  *
322
+ * @param string $theme_id The theme id (eg: legacy).
323
+ * @param array $feature An associative array (eg: array( name => 'feature_name', 'settings' => array() )).
324
  */
325
  function bp_set_theme_compat_feature( $theme_id, $feature = array() ) {
326
  if ( empty( $theme_id ) || empty( $feature['name'] ) ) {
379
  *
380
  * @since 2.4.0
381
  *
382
+ * @param string $feature The feature (eg: cover_image).
383
+ * @return object The feature settings.
384
  */
385
  function bp_get_theme_compat_feature( $feature = '' ) {
386
  // Get current theme compat theme.
397
  }
398
 
399
  /**
400
+ * Setup the theme's features
401
  *
402
  * Note: BP Legacy's buddypress-functions.php is not loaded in WP Administration
403
  * as it's loaded using bp_locate_template(). That's why this function is here.
646
  unset( $dummy );
647
 
648
  /**
649
+ * Force the header back to 200 status if not a deliberate 404
650
  *
651
  * @see https://bbpress.trac.wordpress.org/ticket/1973
652
  */
957
  function bp_theme_compat_toggle_is_page( $retval = '' ) {
958
  global $wp_query;
959
 
960
+ $wp_query->is_page = false;
 
961
 
962
+ // Set a switch so we know that we've toggled these WP_Query properties.
963
+ buddypress()->theme_compat->is_page_toggled = true;
 
964
 
965
  return $retval;
966
  }
bp-core/bp-core-update.php CHANGED
@@ -139,6 +139,7 @@ function bp_is_deactivation( $basename = '' ) {
139
  * Update the BP version stored in the database to the current version.
140
  *
141
  * @since 1.6.0
 
142
  */
143
  function bp_version_bump() {
144
  bp_update_option( '_bp_db_version', bp_get_db_version() );
@@ -191,11 +192,10 @@ function bp_version_updater() {
191
  'notifications' => 1,
192
  ) );
193
 
194
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
195
  require_once( buddypress()->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php' );
196
  $switched_to_root_blog = false;
197
 
198
- // Make sure the current blog is set to the root blog.
199
  if ( ! bp_is_root_blog() ) {
200
  switch_to_blog( bp_get_root_blog_id() );
201
  bp_register_taxonomies();
@@ -218,56 +218,51 @@ function bp_version_updater() {
218
  // Run the schema install to update tables.
219
  bp_core_install();
220
 
221
- // Version 1.5.0.
222
  if ( $raw_db_version < 1801 ) {
223
  bp_update_to_1_5();
224
  bp_core_add_page_mappings( $default_components, 'delete' );
225
  }
226
 
227
- // Version 1.6.0.
228
  if ( $raw_db_version < 6067 ) {
229
  bp_update_to_1_6();
230
  }
231
 
232
- // Version 1.9.0.
233
  if ( $raw_db_version < 7553 ) {
234
  bp_update_to_1_9();
235
  }
236
 
237
- // Version 1.9.2.
238
  if ( $raw_db_version < 7731 ) {
239
  bp_update_to_1_9_2();
240
  }
241
 
242
- // Version 2.0.0.
243
  if ( $raw_db_version < 7892 ) {
244
  bp_update_to_2_0();
245
  }
246
 
247
- // Version 2.0.1.
248
  if ( $raw_db_version < 8311 ) {
249
  bp_update_to_2_0_1();
250
  }
251
 
252
- // Version 2.2.0.
253
  if ( $raw_db_version < 9181 ) {
254
  bp_update_to_2_2();
255
  }
256
 
257
- // Version 2.3.0.
258
  if ( $raw_db_version < 9615 ) {
259
  bp_update_to_2_3();
260
  }
261
 
262
- // Version 2.5.0.
263
  if ( $raw_db_version < 10440 ) {
264
  bp_update_to_2_5();
265
  }
266
-
267
- // Version 2.7.0.
268
- if ( $raw_db_version < 11105 ) {
269
- bp_update_to_2_7();
270
- }
271
  }
272
 
273
  /* All done! *************************************************************/
@@ -336,7 +331,7 @@ function bp_update_to_1_5() {
336
  }
337
 
338
  /**
339
- * Remove unused metadata from database when upgrading from < 1.6.0.
340
  *
341
  * Database update methods based on version numbers.
342
  *
@@ -385,7 +380,7 @@ function bp_update_to_1_9() {
385
  }
386
 
387
  /**
388
- * Perform database updates for BP 1.9.2.
389
  *
390
  * In 1.9, BuddyPress stopped registering its theme directory when it detected
391
  * that bp-default (or a child theme) was not currently being used, in effect
@@ -394,7 +389,6 @@ function bp_update_to_1_9() {
394
  * bp-default would no longer be available, with no obvious way (outside of
395
  * a manual filter) to restore it. In 1.9.2, we add an option that flags
396
  * whether bp-default or a child theme is active at the time of upgrade; if so,
397
- *
398
  * the theme directory will continue to be registered even if the theme is
399
  * deactivated temporarily. Thus, new installations will not see bp-default,
400
  * but legacy installations using the theme will continue to see it.
@@ -446,6 +440,8 @@ function bp_update_to_2_0() {
446
  * 2.0.1 database upgrade routine.
447
  *
448
  * @since 2.0.1
 
 
449
  */
450
  function bp_update_to_2_0_1() {
451
 
@@ -505,43 +501,6 @@ function bp_update_to_2_5() {
505
  bp_core_install_emails();
506
  }
507
 
508
- /**
509
- * 2.7.0 update routine.
510
- *
511
- * - Add email unsubscribe salt.
512
- * - Save legacy directory titles to the corresponding WP pages.
513
- * - Add ignore deprecated code option (false for updates).
514
- *
515
- * @since 2.7.0
516
- */
517
- function bp_update_to_2_7() {
518
- bp_add_option( 'bp-emails-unsubscribe-salt', base64_encode( wp_generate_password( 64, true, true ) ) );
519
-
520
- // Update post_titles
521
- bp_migrate_directory_page_titles();
522
-
523
- /*
524
- * Add `parent_id` column to groups table.
525
- * Also handled by `bp_core_install()`.
526
- */
527
- if ( bp_is_active( 'groups' ) ) {
528
- bp_core_install_groups();
529
-
530
- // Invalidate all cached group objects.
531
- global $wpdb;
532
- $bp = buddypress();
533
-
534
- $group_ids = $wpdb->get_col( "SELECT id FROM {$bp->groups->table_name}" );
535
-
536
- foreach ( $group_ids as $group_id ) {
537
- wp_cache_delete( $group_id, 'bp_groups' );
538
- }
539
- }
540
-
541
- // Do not ignore deprecated code for existing installs.
542
- bp_add_option( '_bp_ignore_deprecated_code', false );
543
- }
544
-
545
  /**
546
  * Updates the component field for new_members type.
547
  *
@@ -580,6 +539,7 @@ function bp_migrate_new_member_activity_component() {
580
  * Remove all hidden friendship activities.
581
  *
582
  * @since 2.2.0
 
583
  */
584
  function bp_cleanup_friendship_activities() {
585
  bp_activity_delete( array(
@@ -589,61 +549,13 @@ function bp_cleanup_friendship_activities() {
589
  ) );
590
  }
591
 
592
- /**
593
- * Update WP pages so that their post_title matches the legacy component directory title.
594
- *
595
- * As of 2.7.0, component directory titles come from the `post_title` attribute of the corresponding WP post object,
596
- * instead of being hardcoded. To ensure that directory titles don't change for existing installations, we update these
597
- * WP posts with the formerly hardcoded titles.
598
- *
599
- * @since 2.7.0
600
- */
601
- function bp_migrate_directory_page_titles() {
602
- $bp_pages = bp_core_get_directory_page_ids( 'all' );
603
-
604
- $default_titles = bp_core_get_directory_page_default_titles();
605
-
606
- $legacy_titles = array(
607
- 'activity' => _x( 'Site-Wide Activity', 'component directory title', 'buddypress' ),
608
- 'blogs' => _x( 'Sites', 'component directory title', 'buddypress' ),
609
- 'groups' => _x( 'Groups', 'component directory title', 'buddypress' ),
610
- 'members' => _x( 'Members', 'component directory title', 'buddypress' ),
611
- );
612
-
613
- foreach ( $bp_pages as $component => $page_id ) {
614
- if ( ! isset( $legacy_titles[ $component ] ) ) {
615
- continue;
616
- }
617
-
618
- $page = get_post( $page_id );
619
- if ( ! $page ) {
620
- continue;
621
- }
622
-
623
- // If the admin has changed the default title, don't touch it.
624
- if ( isset( $default_titles[ $component ] ) && $default_titles[ $component ] !== $page->post_title ) {
625
- continue;
626
- }
627
-
628
- // If the saved page title is the same as the legacy title, there's nothing to do.
629
- if ( $legacy_titles[ $component ] == $page->post_title ) {
630
- continue;
631
- }
632
-
633
- // Update the page with the legacy title.
634
- wp_update_post( array(
635
- 'ID' => $page_id,
636
- 'post_title' => $legacy_titles[ $component ],
637
- ) );
638
- }
639
- }
640
-
641
  /**
642
  * Redirect user to BP's What's New page on first page load after activation.
643
  *
644
  * @since 1.7.0
645
  *
646
  * @internal Used internally to redirect BuddyPress to the about page on activation.
 
647
  */
648
  function bp_add_activation_redirect() {
649
 
@@ -712,6 +624,7 @@ function bp_core_maybe_install_signups() {
712
  * Runs on BuddyPress activation.
713
  *
714
  * @since 1.6.0
 
715
  */
716
  function bp_activation() {
717
 
@@ -724,13 +637,13 @@ function bp_activation() {
724
  /**
725
  * Fires during the activation of BuddyPress.
726
  *
727
- * Use as of 1.6.0.
728
  *
729
  * @since 1.6.0
730
  */
731
  do_action( 'bp_activation' );
732
 
733
- // @deprecated as of 1.6.0
734
  do_action( 'bp_loader_activate' );
735
  }
736
 
@@ -740,6 +653,7 @@ function bp_activation() {
740
  * Runs on BuddyPress deactivation.
741
  *
742
  * @since 1.6.0
 
743
  */
744
  function bp_deactivation() {
745
 
@@ -757,13 +671,13 @@ function bp_deactivation() {
757
  /**
758
  * Fires during the deactivation of BuddyPress.
759
  *
760
- * Use as of 1.6.0.
761
  *
762
  * @since 1.6.0
763
  */
764
  do_action( 'bp_deactivation' );
765
 
766
- // @deprecated as of 1.6.0
767
  do_action( 'bp_loader_deactivate' );
768
  }
769
 
@@ -773,6 +687,7 @@ function bp_deactivation() {
773
  * Runs when uninstalling BuddyPress.
774
  *
775
  * @since 1.6.0
 
776
  */
777
  function bp_uninstall() {
778
 
139
  * Update the BP version stored in the database to the current version.
140
  *
141
  * @since 1.6.0
142
+ *
143
  */
144
  function bp_version_bump() {
145
  bp_update_option( '_bp_db_version', bp_get_db_version() );
192
  'notifications' => 1,
193
  ) );
194
 
 
195
  require_once( buddypress()->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php' );
196
  $switched_to_root_blog = false;
197
 
198
+ // Make sure the current blog is set to the root blog
199
  if ( ! bp_is_root_blog() ) {
200
  switch_to_blog( bp_get_root_blog_id() );
201
  bp_register_taxonomies();
218
  // Run the schema install to update tables.
219
  bp_core_install();
220
 
221
+ // 1.5.0
222
  if ( $raw_db_version < 1801 ) {
223
  bp_update_to_1_5();
224
  bp_core_add_page_mappings( $default_components, 'delete' );
225
  }
226
 
227
+ // 1.6.0
228
  if ( $raw_db_version < 6067 ) {
229
  bp_update_to_1_6();
230
  }
231
 
232
+ // 1.9.0
233
  if ( $raw_db_version < 7553 ) {
234
  bp_update_to_1_9();
235
  }
236
 
237
+ // 1.9.2
238
  if ( $raw_db_version < 7731 ) {
239
  bp_update_to_1_9_2();
240
  }
241
 
242
+ // 2.0.0
243
  if ( $raw_db_version < 7892 ) {
244
  bp_update_to_2_0();
245
  }
246
 
247
+ // 2.0.1
248
  if ( $raw_db_version < 8311 ) {
249
  bp_update_to_2_0_1();
250
  }
251
 
252
+ // 2.2.0
253
  if ( $raw_db_version < 9181 ) {
254
  bp_update_to_2_2();
255
  }
256
 
257
+ // 2.3.0
258
  if ( $raw_db_version < 9615 ) {
259
  bp_update_to_2_3();
260
  }
261
 
262
+ // 2.5.0
263
  if ( $raw_db_version < 10440 ) {
264
  bp_update_to_2_5();
265
  }
 
 
 
 
 
266
  }
267
 
268
  /* All done! *************************************************************/
331
  }
332
 
333
  /**
334
+ * Remove unused metadata from database when upgrading from < 1.6.
335
  *
336
  * Database update methods based on version numbers.
337
  *
380
  }
381
 
382
  /**
383
+ * Perform database updates for BP 1.9.2
384
  *
385
  * In 1.9, BuddyPress stopped registering its theme directory when it detected
386
  * that bp-default (or a child theme) was not currently being used, in effect
389
  * bp-default would no longer be available, with no obvious way (outside of
390
  * a manual filter) to restore it. In 1.9.2, we add an option that flags
391
  * whether bp-default or a child theme is active at the time of upgrade; if so,
 
392
  * the theme directory will continue to be registered even if the theme is
393
  * deactivated temporarily. Thus, new installations will not see bp-default,
394
  * but legacy installations using the theme will continue to see it.
440
  * 2.0.1 database upgrade routine.
441
  *
442
  * @since 2.0.1
443
+ *
444
+ * @return void
445
  */
446
  function bp_update_to_2_0_1() {
447
 
501
  bp_core_install_emails();
502
  }
503
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  /**
505
  * Updates the component field for new_members type.
506
  *
539
  * Remove all hidden friendship activities.
540
  *
541
  * @since 2.2.0
542
+ *
543
  */
544
  function bp_cleanup_friendship_activities() {
545
  bp_activity_delete( array(
549
  ) );
550
  }
551
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552
  /**
553
  * Redirect user to BP's What's New page on first page load after activation.
554
  *
555
  * @since 1.7.0
556
  *
557
  * @internal Used internally to redirect BuddyPress to the about page on activation.
558
+ *
559
  */
560
  function bp_add_activation_redirect() {
561
 
624
  * Runs on BuddyPress activation.
625
  *
626
  * @since 1.6.0
627
+ *
628
  */
629
  function bp_activation() {
630
 
637
  /**
638
  * Fires during the activation of BuddyPress.
639
  *
640
+ * Use as of (1.6.0)
641
  *
642
  * @since 1.6.0
643
  */
644
  do_action( 'bp_activation' );
645
 
646
+ // @deprecated as of (1.6)
647
  do_action( 'bp_loader_activate' );
648
  }
649
 
653
  * Runs on BuddyPress deactivation.
654
  *
655
  * @since 1.6.0
656
+ *
657
  */
658
  function bp_deactivation() {
659
 
671
  /**
672
  * Fires during the deactivation of BuddyPress.
673
  *
674
+ * Use as of (1.6.0)
675
  *
676
  * @since 1.6.0
677
  */
678
  do_action( 'bp_deactivation' );
679
 
680
+ // @deprecated as of (1.6)
681
  do_action( 'bp_loader_deactivate' );
682
  }
683
 
687
  * Runs when uninstalling BuddyPress.
688
  *
689
  * @since 1.6.0
690
+ *
691
  */
692
  function bp_uninstall() {
693
 
bp-core/bp-core-widgets.php CHANGED
@@ -10,12 +10,16 @@
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
 
 
 
 
13
  /**
14
  * Register bp-core widgets.
15
  *
16
  * @since 1.0.0
17
  */
18
  function bp_core_register_widgets() {
19
- add_action( 'widgets_init', function() { register_widget( 'BP_Core_Login_Widget' ); } );
20
  }
21
  add_action( 'bp_register_widgets', 'bp_core_register_widgets' );
10
  // Exit if accessed directly.
11
  defined( 'ABSPATH' ) || exit;
12
 
13
+ if ( ! buddypress()->do_autoload ) {
14
+ require dirname( __FILE__ ) . '/classes/class-bp-core-login-widget.php';
15
+ }
16
+
17
  /**
18
  * Register bp-core widgets.
19
  *
20
  * @since 1.0.0
21
  */
22
  function bp_core_register_widgets() {
23
+ add_action('widgets_init', create_function('', 'return register_widget("BP_Core_Login_Widget");') );
24
  }
25
  add_action( 'bp_register_widgets', 'bp_core_register_widgets' );
bp-core/bp-core-wpabstraction.php CHANGED
@@ -23,7 +23,7 @@ defined( 'ABSPATH' ) || exit;
23
  *
24
  * @global string $wp_version
25
  *
26
- * @return double $wp_version
27
  */
28
  function bp_get_major_wp_version() {
29
  global $wp_version;
@@ -52,6 +52,7 @@ if ( !is_multisite() ) {
52
  * @param int $blog_id Blog ID to fetch for. Not used.
53
  * @param string $option_name Option name to fetch.
54
  * @param bool $default Whether or not default.
 
55
  * @return mixed
56
  */
57
  function get_blog_option( $blog_id, $option_name, $default = false ) {
@@ -71,6 +72,7 @@ if ( !is_multisite() ) {
71
  * @param int $blog_id Blog ID to add for. Not used.
72
  * @param string $option_name Option name to add.
73
  * @param mixed $option_value Option value to add.
 
74
  * @return mixed
75
  */
76
  function add_blog_option( $blog_id, $option_name, $option_value ) {
@@ -90,6 +92,7 @@ if ( !is_multisite() ) {
90
  * @param int $blog_id Blog ID to update for. Not used.
91
  * @param string $option_name Option name to update.
92
  * @param mixed $value Option value to update.
 
93
  * @return mixed
94
  */
95
  function update_blog_option( $blog_id, $option_name, $value ) {
@@ -108,6 +111,7 @@ if ( !is_multisite() ) {
108
  *
109
  * @param int $blog_id Blog ID to delete for. Not used.
110
  * @param string $option_name Option name to delete.
 
111
  * @return mixed
112
  */
113
  function delete_blog_option( $blog_id, $option_name ) {
@@ -126,6 +130,7 @@ if ( !is_multisite() ) {
126
  *
127
  * @param mixed $new_blog New blog to switch to. Not used.
128
  * @param null $deprecated Whether or not deprecated. Not used.
 
129
  * @return int
130
  */
131
  function switch_to_blog( $new_blog, $deprecated = null ) {
@@ -160,7 +165,8 @@ if ( !is_multisite() ) {
160
  *
161
  * @param int $user_id ID of the user. Not used.
162
  * @param bool $all Whether or not to return all. Not used.
163
- * @return bool
 
164
  */
165
  function get_blogs_of_user( $user_id, $all = false ) {
166
  return false;
@@ -180,7 +186,8 @@ if ( !is_multisite() ) {
180
  * @param mixed $pref Preference. Not used.
181
  * @param string $value Value. Not used.
182
  * @param null $deprecated Whether or not deprecated. Not used.
183
- * @return bool
 
184
  */
185
  function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) {
186
  return true;
@@ -266,7 +273,7 @@ if ( !function_exists( 'mb_strpos' ) ) {
266
  * @param string $needle String to search for.
267
  * @param int $offset Optional. Start position for the search. Default: 0.
268
  * @param string $encoding Optional. Encoding type. Ignored.
269
- * @return int|false Position of needle in haystack if found, else false.
270
  */
271
  function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
272
  $needle = preg_quote( $needle, '/' );
@@ -291,7 +298,7 @@ if ( !function_exists( 'mb_strrpos' ) ) {
291
  * @param string $needle String to search for.
292
  * @param int $offset Optional. Start position for the search. Default: 0.
293
  * @param string $encoding Optional. Encoding type. Ignored.
294
- * @return string|false Position of last needle in haystack if found, else false.
295
  */
296
  function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
297
  $needle = preg_quote( $needle, '/' );
23
  *
24
  * @global string $wp_version
25
  *
26
+ * @return string $wp_version
27
  */
28
  function bp_get_major_wp_version() {
29
  global $wp_version;
52
  * @param int $blog_id Blog ID to fetch for. Not used.
53
  * @param string $option_name Option name to fetch.
54
  * @param bool $default Whether or not default.
55
+ *
56
  * @return mixed
57
  */
58
  function get_blog_option( $blog_id, $option_name, $default = false ) {
72
  * @param int $blog_id Blog ID to add for. Not used.
73
  * @param string $option_name Option name to add.
74
  * @param mixed $option_value Option value to add.
75
+ *
76
  * @return mixed
77
  */
78
  function add_blog_option( $blog_id, $option_name, $option_value ) {
92
  * @param int $blog_id Blog ID to update for. Not used.
93
  * @param string $option_name Option name to update.
94
  * @param mixed $value Option value to update.
95
+ *
96
  * @return mixed
97
  */
98
  function update_blog_option( $blog_id, $option_name, $value ) {
111
  *
112
  * @param int $blog_id Blog ID to delete for. Not used.
113
  * @param string $option_name Option name to delete.
114
+ *
115
  * @return mixed
116
  */
117
  function delete_blog_option( $blog_id, $option_name ) {
130
  *
131
  * @param mixed $new_blog New blog to switch to. Not used.
132
  * @param null $deprecated Whether or not deprecated. Not used.
133
+ *
134
  * @return int
135
  */
136
  function switch_to_blog( $new_blog, $deprecated = null ) {
165
  *
166
  * @param int $user_id ID of the user. Not used.
167
  * @param bool $all Whether or not to return all. Not used.
168
+ *
169
+ * @return false
170
  */
171
  function get_blogs_of_user( $user_id, $all = false ) {
172
  return false;
186
  * @param mixed $pref Preference. Not used.
187
  * @param string $value Value. Not used.
188
  * @param null $deprecated Whether or not deprecated. Not used.
189
+ *
190
+ * @return true
191
  */
192
  function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) {
193
  return true;
273
  * @param string $needle String to search for.
274
  * @param int $offset Optional. Start position for the search. Default: 0.
275
  * @param string $encoding Optional. Encoding type. Ignored.
276
+ * @return int|bool Position of needle in haystack if found, else false.
277
  */
278
  function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
279
  $needle = preg_quote( $needle, '/' );
298
  * @param string $needle String to search for.
299
  * @param int $offset Optional. Start position for the search. Default: 0.
300
  * @param string $encoding Optional. Encoding type. Ignored.
301
+ * @return int Position of last needle in haystack if found, else false.
302
  */
303
  function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
304
  $needle = preg_quote( $needle, '/' );
bp-core/classes/class-bp-admin.php CHANGED
@@ -117,6 +117,10 @@ class BP_Admin {
117
  * @since 1.6.0
118
  */
119
  private function includes() {
 
 
 
 
120
  require( $this->admin_dir . 'bp-core-admin-actions.php' );
121
  require( $this->admin_dir . 'bp-core-admin-settings.php' );
122
  require( $this->admin_dir . 'bp-core-admin-functions.php' );
@@ -189,6 +193,8 @@ class BP_Admin {
189
  * Contextually hooked to site or network-admin depending on current configuration.
190
  *
191
  * @since 1.6.0
 
 
192
  */
193
  public function admin_menus() {
194
 
@@ -382,11 +388,6 @@ class BP_Admin {
382
 
383
  // Only show 'switch to Toolbar' option if the user chose to retain the BuddyBar during the 1.6 upgrade.
384
  if ( (bool) bp_get_option( '_bp_force_buddybar', false ) ) {
385
- // Load deprecated code if not available.
386
- if ( ! function_exists( 'bp_admin_setting_callback_force_buddybar' ) ) {
387
- require buddypress()->plugin_dir . 'bp-core/deprecated/2.1.php';
388
- }
389
-
390
  add_settings_field( '_bp_force_buddybar', __( 'Toolbar', 'buddypress' ), 'bp_admin_setting_callback_force_buddybar', 'buddypress', 'bp_main' );
391
  register_setting( 'buddypress', '_bp_force_buddybar', 'bp_admin_sanitize_callback_force_buddybar' );
392
  }
@@ -395,10 +396,6 @@ class BP_Admin {
395
  add_settings_field( 'bp-disable-account-deletion', __( 'Account Deletion', 'buddypress' ), 'bp_admin_setting_callback_account_deletion', 'buddypress', 'bp_main' );
396
  register_setting( 'buddypress', 'bp-disable-account-deletion', 'intval' );
397
 
398
- // Template pack picker.
399
- add_settings_field( '_bp_theme_package_id', __( 'Template Pack', 'buddypress' ), 'bp_admin_setting_callback_theme_package_id', 'buddypress', 'bp_main' );
400
- register_setting( 'buddypress', '_bp_theme_package_id', 'sanitize_text_field' );
401
-
402
  /* XProfile Section **************************************************/
403
 
404
  if ( bp_is_active( 'xprofile' ) ) {
@@ -567,7 +564,7 @@ class BP_Admin {
567
 
568
  <div id="welcome-panel" class="welcome-panel">
569
  <div class="welcome-panel-content">
570
- <h3 style="margin:0;"><?php _e( 'Getting Started with BuddyPress', 'buddypress' ); ?></h3>
571
  <div class="welcome-panel-column-container">
572
  <div class="welcome-panel-column">
573
  <h4><?php _e( 'Configure BuddyPress', 'buddypress' ); ?></h4>
@@ -612,88 +609,76 @@ class BP_Admin {
612
 
613
  <?php endif; ?>
614
 
615
- <div class="bp-features-section">
616
-
617
- <h3 class="headline-title"><?php esc_html_e( 'For Developers &amp; Site Builders', 'buddypress' ); ?></h3>
618
-
619
- <div class="bp-feature">
620
- <span class="dashicons dashicons-groups" aria-hidden="true"></span>
621
- <h4 class="feature-title"><?php esc_html_e( 'Edit Group Slug', 'buddypress' ); ?></h4>
622
- <p><?php esc_html_e( 'Allow administrators to change group names and permalinks. Navigate to the Groups screen in the wp-admin dashboard, click on the Edit link under the Group name, and adjust as needed.', 'buddypress' ); ?></p>
623
- </div>
624
-
625
- <div class="bp-feature opposite">
626
- <span class="dashicons dashicons-admin-users" aria-hidden="true"></span>
627
- <h4 class="feature-title"><?php esc_html_e( 'Improve accessibility of Extended Profile Fields', 'buddypress' ); ?></h4>
628
- <p><?php esc_html_e( 'Related form fields are grouped together in fieldsets and all interactive form controls are associated with necessary ARIA states and properties.', 'buddypress' ); ?></p>
629
- </div>
630
 
631
- <div class="bp-feature">
632
- <span class="dashicons dashicons-email" aria-hidden="true"></span>
633
- <h4 class="feature-title"><?php esc_html_e( 'Send group invitation only once per user', 'buddypress' ); ?></h4>
634
- <p><?php esc_html_e( 'Prevent duplicate group invitations from being sent to a user by double-checking if a group invitation has already been sent to that user.', 'buddypress' ); ?></p>
635
  </div>
636
 
637
- <div class="bp-feature opposite">
638
- <span class="dashicons dashicons-testimonial" aria-hidden="true"></span>
639
- <h4 class="feature-title"><?php esc_html_e( 'Tooltips Usable for All Devices', 'buddypress' ); ?></h4>
640
-
641
- <p><?php esc_html_e( 'Replaced HTML title attributes with tooltips which provide additional information and visual cues where needed on mouse hover and keyboard focus events.', 'buddypress' );
642
- ?></p>
643
- </div>
644
 
 
645
  </div>
646
 
647
- <div class="bp-changelog-section">
 
 
648
 
649
- <h3 class="changelog-title"><?php esc_html_e( 'More under the hood &#8230;', 'buddypress' ); ?></h3>
650
- <div class="bp-changelog bp-three-column">
651
- <div class="bp-column">
652
- <h4 class="title"><?php esc_html_e( 'Better support for private message thread links in emails', 'buddypress' ); ?></h4>
653
- <p><?php esc_html_e( 'Redirect non-authenticated users to the login screen and authenticated users to the message linked.', 'buddypress' ); ?></p>
654
  </div>
655
- <div class="bp-column">
656
- <h4 class="title"><?php esc_html_e( 'Compatibility with Bootstrap themes', 'buddypress' ); ?></h4>
657
- <p><?php esc_html_e( 'Removed issues with BuddyPress-generated content being hidden in the Groups loop and Activity comments in Bootstrap themes.', 'buddypress' ); ?></p>
 
658
  </div>
 
 
 
 
 
 
 
659
 
660
- <div class="bp-column">
661
- <h4 class="title"><?php esc_html_e( 'Improve profile image uploads', 'buddypress' ); ?></h4>
662
- <p><?php esc_html_e( 'Fixed issues with uploading in iOS Safari and uploading files with non-ASCII filenames.', 'buddypress' ); ?></p>
 
 
663
  </div>
664
  </div>
665
 
666
- <div class="bp-changelog bp-three-column">
667
- <div class="bp-column">
668
- <h4 class="title"><?php esc_html_e( 'URL compatibility for LightSpeed Servers', 'buddypress' ); ?></h4>
669
- <p><?php
670
- /* translators: %s: trailingslashit() */
671
- printf( __( 'Audited and changed template link functions to use %s where necessary.', 'buddypress' ),
672
- '<code>trailingslashit()</code>' );
673
- ?></p>
674
- </div>
675
- <div class="bp-column">
676
- <h4 class="title"><?php esc_html_e( 'Template Packs UI in BuddyPress > Settings.', 'buddypress' ); ?></h4>
677
- <p><?php esc_html_e( 'Register your new BuddyPress theme package and allow the user to select which template pack to use.', 'buddypress' ); ?></p>
678
  </div>
679
 
680
- <div class="bp-column">
681
- <h4 class="title"><?php
682
- /* translators: %s: bp_group_link() */
683
- printf( __( 'New template function %s', 'buddypress' ),
684
- '<code>bp_group_link()</code>' );
685
- ?></h4>
686
- <p><?php esc_html_e( 'Output a group name as a text hyperlink where appropriate.', 'buddypress' ); ?></p>
687
  </div>
688
  </div>
689
 
690
  </div>
691
 
692
- <div class="bp-assets">
693
- <p><?php _ex( 'Learn more:', 'About screen, website links', 'buddypress' ); ?> <a href="https://buddypress.org/blog/"><?php _ex( 'News', 'About screen, link to project blog', 'buddypress' ); ?></a> &bullet; <a href="https://buddypress.org/support/"><?php _ex( 'Support', 'About screen, link to support site', 'buddypress' ); ?></a> &bullet; <a href="https://codex.buddypress.org/"><?php _ex( 'Documentation', 'About screen, link to documentation', 'buddypress' ); ?></a> &bullet; <a href="https://bpdevel.wordpress.com/"><?php _ex( 'Development Blog', 'About screen, link to development blog', 'buddypress' ); ?></a></p>
694
 
695
- <p><?php _ex( 'Twitter:', 'official Twitter accounts:', 'buddypress' ); ?> <a href="https://twitter.com/buddypress/"><?php _ex( 'BuddyPress', '@buddypress twitter account name', 'buddypress' ); ?></a> &bullet; <a href="https://twitter.com/bptrac/"><?php _ex( 'Trac', '@bptrac twitter account name', 'buddypress' ); ?></a> &bullet; <a href="https://twitter.com/buddypressdev/"><?php _ex( 'Development', '@buddypressdev twitter account name', 'buddypress' ); ?></a></p>
696
- </div>
697
 
698
  </div>
699
 
@@ -722,7 +707,7 @@ class BP_Admin {
722
  <h3 class="wp-people-group"><?php _e( 'Project Leaders', 'buddypress' ); ?></h3>
723
  <ul class="wp-people-group " id="wp-people-group-project-leaders">
724
  <li class="wp-person" id="wp-person-johnjamesjacoby">
725
- <a class="web" href="https://profiles.wordpress.org/johnjamesjacoby"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7a2644fb53ae2f7bfd7143b504af396c?s=60">
726
  John James Jacoby</a>
727
  <span class="title"><?php _e( 'Project Lead', 'buddypress' ); ?></span>
728
  </li>
@@ -738,13 +723,8 @@ class BP_Admin {
738
  </li>
739
  </ul>
740
 
741
- <h3 class="wp-people-group"><?php _e( 'BuddyPress Team', 'buddypress' ); ?></h3>
742
  <ul class="wp-people-group " id="wp-people-group-core-team">
743
- <li class="wp-person" id="wp-person-hnla">
744
- <a class="web" href="https://profiles.wordpress.org/hnla"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3860c955aa3f79f13b92826ae47d07fe?s=60">
745
- Hugo Ashmore</a>
746
- <span class="title"><?php _e( '2.9 Release Lead', 'buddypress' ); ?></span>
747
- </li>
748
  <li class="wp-person" id="wp-person-r-a-y">
749
  <a class="web" href="https://profiles.wordpress.org/r-a-y"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3bfa556a62b5bfac1012b6ba5f42ebfa?s=60">
750
  Ray</a>
@@ -770,106 +750,74 @@ class BP_Admin {
770
  Michael Beckwith</a>
771
  <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
772
  </li>
 
 
 
 
 
 
 
 
 
773
  <li class="wp-person" id="wp-person-henry-wright">
774
  <a class="web" href="https://profiles.wordpress.org/henry.wright"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0da2f1a9340d6af196b870f6c107a248?s=60">
775
  Henry Wright</a>
776
- <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span>
777
  </li>
778
  <li class="wp-person" id="wp-person-danbp">
779
  <a class="web" href="https://profiles.wordpress.org/danbp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0deae2e7003027fbf153500cd3fa5501?s=60">
780
  danbp</a>
781
- <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span>
782
  </li>
783
  <li class="wp-person" id="wp-person-shanebp">
784
  <a class="web" href="https://profiles.wordpress.org/shanebp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ffd294ab5833ba14aaf175f9acc71cc4?s=60">
785
  shanebp</a>
786
- <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span>
787
- </li>
788
- <li class="wp-person" id="wp-person-slaffik">
789
- <a class="web" href="https://profiles.wordpress.org/r-a-y"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/61fb07ede3247b63f19015f200b3eb2c?s=60">
790
- Slava Abakumov</a>
791
- <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
792
- </li>
793
- <li class="wp-person" id="wp-person-offereins">
794
- <a class="web" href="https://profiles.wordpress.org/Offereins"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/2404ed0a35bb41aedefd42b0a7be61c1?s=60">
795
- Laurens Offereins</a>
796
- <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
797
  </li>
798
  <li class="wp-person" id="wp-person-netweb">
799
  <a class="web" href="https://profiles.wordpress.org/netweb"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/97e1620b501da675315ba7cfb740e80f?s=60">
800
  Stephen Edgar</a>
801
- <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
802
  </li>
803
- </ul>
804
-
805
- <h3 class="wp-people-group"><?php _e( '&#x1f31f;Recent Rockstars&#x1f31f;', 'buddypress' ); ?></h3>
806
- <ul class="wp-people-group " id="wp-people-group-rockstars">
807
  <li class="wp-person" id="wp-person-dimensionmedia">
808
  <a class="web" href="https://profiles.wordpress.org/dimensionmedia"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7735aada1ec39d0c1118bd92ed4551f1?s=60">
809
  David Bisset</a>
810
  </li>
811
- <li class="wp-person" id="wp-person-garrett-eclipse">
812
- <a class="web" href="https://profiles.wordpress.org/garrett-eclipse"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7f68f24441c61514d5d0e1451bb5bc9d?s=60">
813
- Garrett Hyder</a>
814
- </li>
815
- <li class="wp-person" id="wp-person-thebrandonallen">
816
- <a class="web" href="https://profiles.wordpress.org/thebrandonallen"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/6d3f77bf3c9ca94c406dea401b566950?s=60">
817
- Brandon Allen</a>
818
- </li>
819
- <li class="wp-person" id="wp-person-ramiy">
820
- <a class="web" href="https://profiles.wordpress.org/ramiy"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ce2a269e424156d79cb0c4e1d4d82db1?s=60">
821
- Rami Yushuvaev</a>
822
- </li>
823
  </ul>
824
 
825
  <h3 class="wp-people-group"><?php printf( esc_html__( 'Contributors to BuddyPress %s', 'buddypress' ), self::display_version() ); ?></h3>
826
  <p class="wp-credits-list">
827
- <a href="https://profiles.wordpress.org/55don/">55don</a>,
828
- <a href="https://profiles.wordpress.org/aaronoftomorrow/">AaronOfTomorrow</a>,
829
- <a href="https://profiles.wordpress.org/allianse/">allianse</a>,
830
- <a href="https://profiles.wordpress.org/antonioeatgoat/">Antonio Mangiacapra (antonioeatgoat)</a>,
831
- <a href="https://profiles.wordpress.org/benjlipchak/">Benj (benjlipchak)</a>,
832
  <a href="https://profiles.wordpress.org/boonebgorges/">Boone B Gorges (boonebgorges)</a>,
833
- <a href="https://profiles.wordpress.org/bhargavbhandari90/">Bunty (bhargavbhandari90)</a>,
834
  <a href="https://profiles.wordpress.org/sbrajesh/">Brajesh Singh (sbrajesh)</a>,
 
835
  <a href="https://profiles.wordpress.org/needle/">Christian Wach (needle)</a>,
836
- <a href="https://profiles.wordpress.org/brandonliles/">brandonliles</a>,
837
- <a href="https://profiles.wordpress.org/danbp/">danbp</a>,
838
  <a href="https://profiles.wordpress.org/dcavins/">David Cavins (dcavins)</a>,
839
- <a href="https://profiles.wordpress.org/dkelm/">dkelm</a>,
840
- <a href="https://profiles.wordpress.org/dsar/">dsar</a>,
841
- <a href="https://profiles.wordpress.org/dsided/">dsided</a>,
842
- <a href="https://profiles.wordpress.org/henry.wright">Henry Wright (henry.wright)</a>,
 
843
  <a href="https://profiles.wordpress.org/hnla/">Hugo (hnla)</a>,
844
- <a href="https://profiles.wordpress.org/idofri/">Ido Friedlander (idofri)</a>,
845
- <a href="https://profiles.wordpress.org/uscore713/">Jay (uscore713)</a>,
846
- <a href="https://profiles.wordpress.org/johnbillion/">John Blackbourn (johnbillion)</a>,
847
  <a href="https://profiles.wordpress.org/johnjamesjacoby/">John James Jacoby (johnjamesjacoby)</a>,
848
- <a href="https://profiles.wordpress.org/juanho/">Juanho</a>,
849
- <a href="https://profiles.wordpress.org/lakrisgubben/">lakrisgubben</a>,
 
 
850
  <a href="https://profiles.wordpress.org/Offereins">Laurens Offereins (Offereins)</a>,
851
- <a href="https://profiles.wordpress.org/lne1030/">lne1030</a>,
852
- <a href="https://profiles.wordpress.org/lenasterg/">lenasterg</a>,
853
- <a href="https://profiles.wordpress.org/maniou/">Maniou</a>,
854
  <a href="https://profiles.wordpress.org/imath/">Mathieu Viet (imath)</a>,
855
  <a href="https://profiles.wordpress.org/mercime/">mercime</a>,
856
  <a href="https://profiles.wordpress.org/tw2113/">Michael Beckwith (tw2113)</a>,
857
- <a href="https://profiles.wordpress.org/mikegillihan/">Mike Gillihan (MikeGillihan)</a>,
858
- <a href="https://profiles.wordpress.org/milindmore22/">Milind More (milindmore22)</a>,
859
  <a href="https://profiles.wordpress.org/modemlooper/">modemlooper</a>,
860
- <a href="https://profiles.wordpress.org/mrjarbenne/">mrjarbenne</a>,
861
- <a href="https://profiles.wordpress.org/nicolaskulka/">Nicolas Kulka (NicolasKulka)</a>,
862
- <a href="https://profiles.wordpress.org/oelita/">Oelita</a>,
863
  <a href="https://profiles.wordpress.org/DJPaul/">Paul Gibbs (DJPaul)</a>,
864
- <a href="https://profiles.wordpress.org/pareshradadiya/">paresh.radadiya (pareshradadiya)</a>,
865
  <a href="https://profiles.wordpress.org/r-a-y/">r-a-y</a>,
866
- <a href="https://profiles.wordpress.org/espellcaste/">Renato Alves (espellcaste)</a>,
867
- <a href="https://profiles.wordpress.org/rianrietveld/">Rian Rietveld (rianrietvelde)</a>,
868
- <a href="https://profiles.wordpress.org/elhardoum/">Samuel Elh (elhardoum)</a>,
869
- <a href="https://profiles.wordpress.org/seventhqueen/">seventhqueen</a>,
870
- <a href="https://profiles.wordpress.org/slaffik/">Slava Abakumov (slaffik)</a>,
871
  <a href="https://profiles.wordpress.org/netweb/">Stephen Edgar (netweb)</a>,
872
- <a href="https://profiles.wordpress.org/vishalkakadiya/">Vishal Kakadiya (vishalkakadiya)</a>
 
873
  </p>
874
 
875
  <h3 class="wp-people-group"><?php _e( '&#x1f496;With our thanks to these Open Source projects&#x1f496;', 'buddypress' ); ?></h3>
@@ -877,12 +825,10 @@ class BP_Admin {
877
  <a href="https://github.com/ichord/At.js">At.js</a>,
878
  <a href="https://bbpress.org">bbPress</a>,
879
  <a href="https://github.com/ichord/Caret.js">Caret.js</a>,
880
- <a href="https://tedgoas.github.io/Cerberus/">Cerberus</a>,
881
- <a href="https://ionicons.com/">Ionicons</a>,
882
  <a href="https://github.com/carhartl/jquery-cookie">jquery.cookie</a>,
883
- <a href="https://mattbradley.github.io/livestampjs/">Livestamp.js</a>,
884
  <a href="https://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>,
885
- <a href="http://momentjs.com/">Moment.js</a>,
886
  <a href="https://wordpress.org">WordPress</a>.
887
  </p>
888
 
@@ -900,8 +846,8 @@ class BP_Admin {
900
 
901
  // Switch welcome text based on whether this is a new installation or not.
902
  $welcome_text = ( self::is_new_install() )
903
- ? __( 'Thank you for installing BuddyPress! BuddyPress adds community features to WordPress. Member Profiles, Activity Streams, Direct Messaging, Notifications, and more!', 'buddypress' )
904
- : __( 'Thank you for updating! BuddyPress %s has many new improvements that you will enjoy.', 'buddypress' );
905
 
906
  ?>
907
 
@@ -950,7 +896,7 @@ class BP_Admin {
950
  *
951
  * @since 2.6.0
952
  *
953
- * @param array $columns Current column data.
954
  * @return array
955
  */
956
  public function emails_register_situation_column( $columns = array() ) {
117
  * @since 1.6.0
118
  */
119
  private function includes() {
120
+ if ( ! buddypress()->do_autoload ) {
121
+ require( $this->admin_dir . 'bp-core-admin-classes.php' );
122
+ }
123
+
124
  require( $this->admin_dir . 'bp-core-admin-actions.php' );
125
  require( $this->admin_dir . 'bp-core-admin-settings.php' );
126
  require( $this->admin_dir . 'bp-core-admin-functions.php' );
193
  * Contextually hooked to site or network-admin depending on current configuration.
194
  *
195
  * @since 1.6.0
196
+ *
197
+ * section.
198
  */
199
  public function admin_menus() {
200
 
388
 
389
  // Only show 'switch to Toolbar' option if the user chose to retain the BuddyBar during the 1.6 upgrade.
390
  if ( (bool) bp_get_option( '_bp_force_buddybar', false ) ) {
 
 
 
 
 
391
  add_settings_field( '_bp_force_buddybar', __( 'Toolbar', 'buddypress' ), 'bp_admin_setting_callback_force_buddybar', 'buddypress', 'bp_main' );
392
  register_setting( 'buddypress', '_bp_force_buddybar', 'bp_admin_sanitize_callback_force_buddybar' );
393
  }
396
  add_settings_field( 'bp-disable-account-deletion', __( 'Account Deletion', 'buddypress' ), 'bp_admin_setting_callback_account_deletion', 'buddypress', 'bp_main' );
397
  register_setting( 'buddypress', 'bp-disable-account-deletion', 'intval' );
398
 
 
 
 
 
399
  /* XProfile Section **************************************************/
400
 
401
  if ( bp_is_active( 'xprofile' ) ) {
564
 
565
  <div id="welcome-panel" class="welcome-panel">
566
  <div class="welcome-panel-content">
567
+ <h3 style="margin:0"><?php _e( 'Getting Started with BuddyPress', 'buddypress' ); ?></h3>
568
  <div class="welcome-panel-column-container">
569
  <div class="welcome-panel-column">
570
  <h4><?php _e( 'Configure BuddyPress', 'buddypress' ); ?></h4>
609
 
610
  <?php endif; ?>
611
 
612
+ <div class="headline-feature">
613
+ <h3 class="headline-title"><?php esc_html_e( 'Customizable BuddyPress Emails', 'buddypress' ); ?></h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
614
 
615
+ <div class="featured-image">
616
+ <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/bp-emails-feature.png' ); ?>" alt="<?php esc_html_e( 'Change colors of the email template using the Customizer.', 'buddypress' ); ?>">
 
 
617
  </div>
618
 
619
+ <p class="introduction"><?php _e( 'Keep your users coming back with beautiful and flexible email notifications.', 'buddypress' ); ?> </p>
620
+ <p><?php _e( 'Edit the content of your emails, create new email templates, or change the design of the template in the Customizer. These are just a few of the customizations you can make to engage your users and increase their participation in your community with the new email features.', 'buddypress' ); ?> <a href="https://codex.buddypress.org/emails/"><?php esc_html_e( 'Learn more &rarr;', 'buddypress' ); ?></a></p>
 
 
 
 
 
621
 
622
+ <div class="clear"></div>
623
  </div>
624
 
625
+ <hr />
626
+
627
+ <div class="bp-features-section">
628
 
629
+ <div class="feature-section two-col">
630
+ <div>
631
+ <h3 class="feature-title"><?php esc_html_e( 'Post Type Comments Tracking', 'buddypress' ); ?></h3>
632
+ <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/post-type.png' ); ?>" alt="<?php esc_attr_e( 'Registered post types', 'buddypress' ); ?>">
633
+ <p><?php esc_html_e( 'New Activity functions help you track post type comments in sync with the Blogs component when activated.', 'buddypress' ); ?></p>
634
  </div>
635
+ <div class="last-feature">
636
+ <h3 class="feature-title"><?php esc_html_e( 'Twenty Twelve Companion Stylesheet', 'buddypress' ); ?></h3>
637
+ <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/twentytwelve.png' ); ?>" alt="<?php esc_attr_e( 'BuddyPress styles Twenty Twelve', 'buddypress' ); ?>">
638
+ <p><?php esc_html_e( 'BuddyPress components never looked so fine as they do now in the Twenty Twelve theme.', 'buddypress' ); ?></p>
639
  </div>
640
+ </div>
641
+
642
+ <div class="feature-section two-col">
643
+ <div>
644
+ <h3 class="feature-title"><?php esc_html_e( 'Support for emoji', 'buddypress' ); ?></h3>
645
+ <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/emoji-feature.png' ); ?>" alt="<?php esc_attr_e( 'Fun with emoji', 'buddypress' ); ?>">
646
+ <p><?php esc_html_e( 'Have fun and be merry! You can now use emoji in activity updates, messages, and group descriptions.', 'buddypress' ); ?></p>
647
 
648
+ </div>
649
+ <div class="last-feature">
650
+ <h3 class="feature-title"><?php esc_html_e( 'Autolink Settings for Profile Fields', 'buddypress' ); ?></h3>
651
+ <img src="<?php echo esc_url( buddypress()->plugin_url . 'bp-core/admin/images/autolink-feature.png' ); ?>" alt="<?php esc_attr_e( 'Autolink settings in the profile fields panel', 'buddypress' ); ?>">
652
+ <p><?php _e( 'Administrators can enable or disable autolink settings for each new profile field type.', 'buddypress' ); ?></p>
653
  </div>
654
  </div>
655
 
656
+ </div>
657
+
658
+ <div class="changelog">
659
+ <h3 class="changelog-title"><?php esc_html_e( 'Under The Hood', 'buddypress' ); ?></h3>
660
+
661
+ <div class="feature-section col two-col">
662
+ <div>
663
+ <h4 class="title"><?php esc_html_e( 'Localization Improvements', 'buddypress' ); ?></h4>
664
+ <p><?php esc_html_e( 'We continue to improve on localization for translation editors so that BuddyPress will be available for everyone in their own language.', 'buddypress' ); ?></p>
665
+ <h4 class="title"><?php esc_html_e( 'Accessibility Upgrades', 'buddypress' ); ?></h4>
666
+ <p><?php esc_html_e( 'Continued improvements in the frontend and backend to make BuddyPress usable for everyone.', 'buddypress' ); ?></p>
 
667
  </div>
668
 
669
+ <div class="last-feature">
670
+ <h4 class="title"><?php esc_html_e( 'Enhanced Multisite Support', 'buddypress' ); ?></h4>
671
+ <p><?php esc_html_e( 'BuddyPress is already primed for all multisite configurations available. We just made it better.', 'buddypress' ); ?></p>
672
+ <h4 class="title"><?php esc_html_e( 'Developer Reference', 'buddypress' ); ?></h4>
673
+ <p><?php esc_html_e( 'Regular updates to inline code documentation make it easier for developers to understand how BuddyPress works.', 'buddypress' ); ?></p>
 
 
674
  </div>
675
  </div>
676
 
677
  </div>
678
 
679
+ <p><?php _ex( 'Learn more:', 'About screen, website links', 'buddypress' ); ?> <a href="https://buddypress.org/blog/"><?php _ex( 'News', 'About screen, link to project blog', 'buddypress' ); ?></a> &bullet; <a href="https://buddypress.org/support/"><?php _ex( 'Support', 'About screen, link to support site', 'buddypress' ); ?></a> &bullet; <a href="https://codex.buddypress.org/"><?php _ex( 'Documentation', 'About screen, link to documentation', 'buddypress' ); ?></a> &bullet; <a href="https://bpdevel.wordpress.com/"><?php _ex( 'Development Blog', 'About screen, link to development blog', 'buddypress' ); ?></a></p>
 
680
 
681
+ <p><?php _ex( 'Twitter:', 'official Twitter accounts:', 'buddypress' ); ?> <a href="https://twitter.com/buddypress/"><?php _ex( 'BuddyPress', '@buddypress twitter account name', 'buddypress' ); ?></a> &bullet; <a href="https://twitter.com/bptrac/"><?php _ex( 'Trac', '@bptrac twitter account name', 'buddypress' ); ?></a> &bullet; <a href="https://twitter.com/buddypressdev/"><?php _ex( 'Development', '@buddypressdev twitter account name', 'buddypress' ); ?></a></p>
 
682
 
683
  </div>
684
 
707
  <h3 class="wp-people-group"><?php _e( 'Project Leaders', 'buddypress' ); ?></h3>
708
  <ul class="wp-people-group " id="wp-people-group-project-leaders">
709
  <li class="wp-person" id="wp-person-johnjamesjacoby">
710
+ <a class="web" href="https://profiles.wordpress.org/johnjamesjacoby"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/81ec16063d89b162d55efe72165c105f?s=60">
711
  John James Jacoby</a>
712
  <span class="title"><?php _e( 'Project Lead', 'buddypress' ); ?></span>
713
  </li>
723
  </li>
724
  </ul>
725
 
726
+ <h3 class="wp-people-group"><?php _e( 'Core Team', 'buddypress' ); ?></h3>
727
  <ul class="wp-people-group " id="wp-people-group-core-team">
 
 
 
 
 
728
  <li class="wp-person" id="wp-person-r-a-y">
729
  <a class="web" href="https://profiles.wordpress.org/r-a-y"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3bfa556a62b5bfac1012b6ba5f42ebfa?s=60">
730
  Ray</a>
750
  Michael Beckwith</a>
751
  <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
752
  </li>
753
+ <li class="wp-person" id="wp-person-hnla">
754
+ <a class="web" href="https://profiles.wordpress.org/hnla"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3860c955aa3f79f13b92826ae47d07fe?s=60">
755
+ Hugo</a>
756
+ <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span>
757
+ </li>
758
+ </ul>
759
+
760
+ <h3 class="wp-people-group"><?php _e( '&#x1f31f;Recent Rockstars&#x1f31f;', 'buddypress' ); ?></h3>
761
+ <ul class="wp-people-group " id="wp-people-group-rockstars">
762
  <li class="wp-person" id="wp-person-henry-wright">
763
  <a class="web" href="https://profiles.wordpress.org/henry.wright"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0da2f1a9340d6af196b870f6c107a248?s=60">
764
  Henry Wright</a>
 
765
  </li>
766
  <li class="wp-person" id="wp-person-danbp">
767
  <a class="web" href="https://profiles.wordpress.org/danbp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0deae2e7003027fbf153500cd3fa5501?s=60">
768
  danbp</a>
 
769
  </li>
770
  <li class="wp-person" id="wp-person-shanebp">
771
  <a class="web" href="https://profiles.wordpress.org/shanebp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ffd294ab5833ba14aaf175f9acc71cc4?s=60">
772
  shanebp</a>
 
 
 
 
 
 
 
 
 
 
 
773
  </li>
774
  <li class="wp-person" id="wp-person-netweb">
775
  <a class="web" href="https://profiles.wordpress.org/netweb"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/97e1620b501da675315ba7cfb740e80f?s=60">
776
  Stephen Edgar</a>
 
777
  </li>
 
 
 
 
778
  <li class="wp-person" id="wp-person-dimensionmedia">
779
  <a class="web" href="https://profiles.wordpress.org/dimensionmedia"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7735aada1ec39d0c1118bd92ed4551f1?s=60">
780
  David Bisset</a>
781
  </li>
782
+
 
 
 
 
 
 
 
 
 
 
 
783
  </ul>
784
 
785
  <h3 class="wp-people-group"><?php printf( esc_html__( 'Contributors to BuddyPress %s', 'buddypress' ), self::display_version() ); ?></h3>
786
  <p class="wp-credits-list">
 
 
 
 
 
787
  <a href="https://profiles.wordpress.org/boonebgorges/">Boone B Gorges (boonebgorges)</a>,
 
788
  <a href="https://profiles.wordpress.org/sbrajesh/">Brajesh Singh (sbrajesh)</a>,
789
+ <a href="https://profiles.wordpress.org/thebrandonallen/">Brandon Allen (thebrandonallen)</a>,
790
  <a href="https://profiles.wordpress.org/needle/">Christian Wach (needle)</a>,
791
+ <a href="https://profiles.wordpress.org/timersys/">Damian (timersys)</a>,
792
+ <a href="https://profiles.wordpress.org/danbrellis/">danbrellis</a>,
793
  <a href="https://profiles.wordpress.org/dcavins/">David Cavins (dcavins)</a>,
794
+ <a href="https://profiles.wordpress.org/wpdennis/">Dennis (wpdennis)</a>,
795
+ <a href="https://profiles.wordpress.org/wdfee/">Fee (wdfee)</a>,
796
+ <a href="https://profiles.wordpress.org/garrett-eclipse/">Garrett Hyder (garrett-eclipse)</a>,
797
+ <a href="https://profiles.wordpress.org/Mamaduka/">George Mamadashvili (Mamaduka)</a>,
798
+ <a href="https://profiles.wordpress.org/henrywright/">Henry Wright (henry.wright)</a>,
799
  <a href="https://profiles.wordpress.org/hnla/">Hugo (hnla)</a>,
800
+ <a href="https://profiles.wordpress.org/jeffsayre/">Jeff Sayre (jeffsayre)</a>,
 
 
801
  <a href="https://profiles.wordpress.org/johnjamesjacoby/">John James Jacoby (johnjamesjacoby)</a>,
802
+ <a href="https://profiles.wordpress.org/Jonnyauk/">Jonnyauk</a>,
803
+ <a href="https://profiles.wordpress.org/joost-abrahams/">Joost Abrahams (joost-abrahams)</a>,
804
+ <a href="https://profiles.wordpress.org/kennibc/">kennibc</a>,
805
+ <a href="https://profiles.wordpress.org/sooskriszta/">OC2PS (sooskriszta)</a>,
806
  <a href="https://profiles.wordpress.org/Offereins">Laurens Offereins (Offereins)</a>,
807
+ <a href="https://profiles.wordpress.org/LenLay/">LenLay</a>,
 
 
808
  <a href="https://profiles.wordpress.org/imath/">Mathieu Viet (imath)</a>,
809
  <a href="https://profiles.wordpress.org/mercime/">mercime</a>,
810
  <a href="https://profiles.wordpress.org/tw2113/">Michael Beckwith (tw2113)</a>,
 
 
811
  <a href="https://profiles.wordpress.org/modemlooper/">modemlooper</a>,
 
 
 
812
  <a href="https://profiles.wordpress.org/DJPaul/">Paul Gibbs (DJPaul)</a>,
813
+ <a href="https://profiles.wordpress.org/ramiy/">Rami Yushuvaev (ramiy)</a>,
814
  <a href="https://profiles.wordpress.org/r-a-y/">r-a-y</a>,
815
+ <a href="https://profiles.wordpress.org/shanebp/">shanebp</a>,
816
+ <a href="https://profiles.wordpress.org/slaffik/">Slava UA (slaffik)</a>,
817
+ <a href="https://profiles.wordpress.org/jozik/">Srdjan (jozik)</a>,
 
 
818
  <a href="https://profiles.wordpress.org/netweb/">Stephen Edgar (netweb)</a>,
819
+ <a href="https://profiles.wordpress.org/timeuser/">timeuser</a>,
820
+ <a href="https://profiles.wordpress.org/vnd/">vnd</a>.
821
  </p>
822
 
823
  <h3 class="wp-people-group"><?php _e( '&#x1f496;With our thanks to these Open Source projects&#x1f496;', 'buddypress' ); ?></h3>
825
  <a href="https://github.com/ichord/At.js">At.js</a>,
826
  <a href="https://bbpress.org">bbPress</a>,
827
  <a href="https://github.com/ichord/Caret.js">Caret.js</a>,
828
+ <a href="http://tedgoas.github.io/Cerberus/">Cerberus</a>,
829
+ <a href="http://ionicons.com/">Ionicons</a>,
830
  <a href="https://github.com/carhartl/jquery-cookie">jquery.cookie</a>,
 
831
  <a href="https://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>,
 
832
  <a href="https://wordpress.org">WordPress</a>.
833
  </p>
834
 
846
 
847
  // Switch welcome text based on whether this is a new installation or not.
848
  $welcome_text = ( self::is_new_install() )
849
+ ? __( 'Thank you for installing BuddyPress! BuddyPress helps you build any type of community website using WordPress, with member profiles, activity streams, user groups, messaging, and more.', 'buddypress' )
850
+ : __( 'Thank you for updating! BuddyPress %s has many new features that you will enjoy.', 'buddypress' );
851
 
852
  ?>
853
 
896
  *
897
  * @since 2.6.0
898
  *
899
+ * @param array $columns Current column data.
900
  * @return array
901
  */
902
  public function emails_register_situation_column( $columns = array() ) {
bp-core/classes/class-bp-attachment-avatar.php CHANGED
@@ -61,6 +61,7 @@ class BP_Attachment_Avatar extends BP_Attachment {
61
  * Set Upload Dir data for avatars.
62
  *
63
  * @since 2.3.0
 
64
  */
65
  public function set_upload_dir() {
66
  if ( bp_core_avatar_upload_path() && bp_core_avatar_url() ) {
@@ -80,7 +81,8 @@ class BP_Attachment_Avatar extends BP_Attachment {
80
  *
81
  * @since 2.3.0
82
  *
83
- * @param array $file the temporary file attributes (before it has been moved).
 
84
  * @return array the file with extra errors if needed.
85
  */
86
  public function validate_upload( $file = array() ) {
@@ -108,9 +110,10 @@ class BP_Attachment_Avatar extends BP_Attachment {
108
  * @since 2.3.0
109
  * @since 2.4.0 Add the $ui_available_width parameter, to inform about the Avatar UI width.
110
  *
 
111
  * @param string $file The absolute path to the file.
112
  * @param int $ui_available_width Available width for the UI.
113
- * @return false|string|WP_Image_Editor|WP_Error
114
  */
115
  public static function shrink( $file = '', $ui_available_width = 0 ) {
116
  // Get image size.
@@ -204,23 +207,11 @@ class BP_Attachment_Avatar extends BP_Attachment {
204
  return false;
205
  }
206
 
207
- if ( ! bp_attachments_current_user_can( 'edit_avatar', $args ) ) {
208
- return false;
209
- }
210
-
211
- if ( 'user' === $args['object'] ) {
212
- $avatar_dir = 'avatars';
213
- } else {
214
- $avatar_dir = sanitize_key( $args['object'] ) . '-avatars';
215
- }
216
-
217
- $args['item_id'] = (int) $args['item_id'];
218
-
219
  /**
220
  * Original file is a relative path to the image
221
  * eg: /avatars/1/avatar.jpg
222
  */
223
- $relative_path = sprintf( '/%s/%s/%s', $avatar_dir, $args['item_id'], basename( $args['original_file'] ) );
224
  $absolute_path = $this->upload_path . $relative_path;
225
 
226
  // Bail if the avatar is not available.
61
  * Set Upload Dir data for avatars.
62
  *
63
  * @since 2.3.0
64
+ *
65
  */
66
  public function set_upload_dir() {
67
  if ( bp_core_avatar_upload_path() && bp_core_avatar_url() ) {
81
  *
82
  * @since 2.3.0
83
  *
84
+ *
85
+ * @param array $file the temporary file attributes (before it has been moved).
86
  * @return array the file with extra errors if needed.
87
  */
88
  public function validate_upload( $file = array() ) {
110
  * @since 2.3.0
111
  * @since 2.4.0 Add the $ui_available_width parameter, to inform about the Avatar UI width.
112
  *
113
+ *
114
  * @param string $file The absolute path to the file.
115
  * @param int $ui_available_width Available width for the UI.
116
+ * @return mixed
117
  */
118
  public static function shrink( $file = '', $ui_available_width = 0 ) {
119
  // Get image size.
207
  return false;
208
  }
209
 
 
 
 
 
 
 
 
 
 
 
 
 
210
  /**
211
  * Original file is a relative path to the image
212
  * eg: /avatars/1/avatar.jpg
213
  */
214
+ $relative_path = $args['original_file'];
215
  $absolute_path = $this->upload_path . $relative_path;
216
 
217
  // Bail if the avatar is not available.
bp-core/classes/class-bp-attachment-cover-image.php CHANGED
@@ -201,7 +201,7 @@ class BP_Attachment_Cover_Image extends BP_Attachment {
201
  * @since 2.4.0
202
  *
203
  * @param string $file The absolute path to the file.
204
- * @return false|string $value The absolute path to the new file name.
205
  */
206
  public function generate_filename( $file = '' ) {
207
  if ( empty( $file ) || ! file_exists( $file ) ) {
201
  * @since 2.4.0
202
  *
203
  * @param string $file The absolute path to the file.
204
+ * @return string $value The absolute path to the new file name.
205
  */
206
  public function generate_filename( $file = '' ) {
207
  if ( empty( $file ) || ! file_exists( $file ) ) {
bp-core/classes/class-bp-attachment.php CHANGED
@@ -197,17 +197,17 @@ abstract class BP_Attachment {
197
  *
198
  * @since 2.3.0
199
  *
200
- * @param array $file The appropriate entry the from $_FILES superglobal.
201
- * @param string $upload_dir_filter A specific filter to be applied to 'upload_dir' (optional).
202
- * @param string|null $time Optional. Time formatted in 'yyyy/mm'. Default null.
 
203
  * @return array On success, returns an associative array of file attributes.
204
  * On failure, returns an array containing the error message
205
  * (eg: array( 'error' => $message ) )
206
  */
207
  public function upload( $file, $upload_dir_filter = '', $time = null ) {
208
  /**
209
- * Upload action and the file input name are required parameters.
210
- *
211
  * @see BP_Attachment:__construct()
212
  */
213
  if ( empty( $this->action ) || empty( $this->file_input ) ) {
@@ -219,6 +219,13 @@ abstract class BP_Attachment {
219
  */
220
  add_filter( "{$this->action}_prefilter", array( $this, 'validate_upload' ), 10, 1 );
221
 
 
 
 
 
 
 
 
222
  // Set Default overrides.
223
  $overrides = array(
224
  'action' => $this->action,
@@ -261,50 +268,21 @@ abstract class BP_Attachment {
261
  add_filter( 'upload_dir', $upload_dir_filter, 10, $this->upload_dir_filter_args );
262
  }
263
 
264
- // Helper for utf-8 filenames.
265
- add_filter( 'sanitize_file_name', array( $this, 'sanitize_utf8_filename' ) );
266
-
267
  // Upload the attachment.
268
  $this->attachment = wp_handle_upload( $file[ $this->file_input ], $overrides, $time );
269
 
270
- remove_filter( 'sanitize_file_name', array( $this, 'sanitize_utf8_filename' ) );
271
-
272
  // Restore WordPress Uploads data.
273
  if ( ! empty( $upload_dir_filter ) ) {
274
- remove_filter( 'upload_dir', $upload_dir_filter, 10 );
275
  }
276
 
 
 
 
277
  // Finally return the uploaded file or the error.
278
  return $this->attachment;
279
  }
280
 
281
- /**
282
- * Helper to convert utf-8 characters in filenames to their ASCII equivalent.
283
- *
284
- * @since 2.9.0
285
- *
286
- * @param string $retval Filename.
287
- * @return string
288
- */
289
- public function sanitize_utf8_filename( $retval ) {
290
- // PHP 5.4+ or with PECL intl 2.0+
291
- if ( function_exists( 'transliterator_transliterate' ) && seems_utf8( $retval ) ) {
292
- $retval = transliterator_transliterate( 'Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove', $retval );
293
-
294
- // Older.
295
- } else {
296
- // Use WP's built-in function to convert accents to their ASCII equivalent.
297
- $retval = remove_accents( $retval );
298
-
299
- // Still here? use iconv().
300
- if ( function_exists( 'iconv' ) && seems_utf8( $retval ) ) {
301
- $retval = iconv( 'UTF-8', 'ASCII//TRANSLIT//IGNORE', $retval );
302
- }
303
- }
304
-
305
- return $retval;
306
- }
307
-
308
  /**
309
  * Validate the allowed mime types using WordPress allowed mime types.
310
  *
@@ -342,7 +320,7 @@ abstract class BP_Attachment {
342
  *
343
  * @since 2.3.0
344
  *
345
- * @param array $file The temporary file attributes (before it has been moved).
346
  * @return array The file.
347
  */
348
  public function validate_upload( $file = array() ) {
@@ -367,7 +345,7 @@ abstract class BP_Attachment {
367
  *
368
  * regarding to context
369
  *
370
- * @param array $upload_dir The original Uploads dir.
371
  * @return array The upload directory data.
372
  */
373
  public function upload_dir_filter( $upload_dir = array() ) {
@@ -544,9 +522,9 @@ abstract class BP_Attachment {
544
  /**
545
  * Get full data for an image
546
  *
547
- * @since 2.4.0
548
  *
549
- * @param string $file Absolute path to the uploaded image.
550
  * @return bool|array An associate array containing the width, height and metadatas.
551
  * False in case an important image attribute is missing.
552
  */
@@ -575,16 +553,30 @@ abstract class BP_Attachment {
575
 
576
  // Now try to get image's meta data.
577
  $meta = wp_read_image_metadata( $file );
 
578
  if ( ! empty( $meta ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
579
  $image_data['meta'] = $meta;
580
  }
581
 
582
  /**
583
  * Filter here to add/remove/edit data to the image full data
584
  *
585
- * @since 2.4.0
586
  *
587
- * @param array $image_data An associate array containing the width, height and metadatas.
588
  */
589
  return apply_filters( 'bp_attachments_get_image_data', $image_data );
590
  }
@@ -592,7 +584,7 @@ abstract class BP_Attachment {
592
  /**
593
  * Edit an image file to resize it or rotate it
594
  *
595
- * @since 2.4.0
596
  *
597
  * @param string $attachment_type The attachment type (eg: avatar or cover_image). Required.
598
  * @param array $args {
197
  *
198
  * @since 2.3.0
199
  *
200
+ *
201
+ * @param array $file The appropriate entry the from $_FILES superglobal.
202
+ * @param string $upload_dir_filter A specific filter to be applied to 'upload_dir' (optional).
203
+ * @param string|null $time Optional. Time formatted in 'yyyy/mm'. Default null.
204
  * @return array On success, returns an associative array of file attributes.
205
  * On failure, returns an array containing the error message
206
  * (eg: array( 'error' => $message ) )
207
  */
208
  public function upload( $file, $upload_dir_filter = '', $time = null ) {
209
  /**
210
+ * Upload action and the file input name are required parameters
 
211
  * @see BP_Attachment:__construct()
212
  */
213
  if ( empty( $this->action ) || empty( $this->file_input ) ) {
219
  */
220
  add_filter( "{$this->action}_prefilter", array( $this, 'validate_upload' ), 10, 1 );
221
 
222
+ /**
223
+ * The above dynamic filter was introduced in WordPress 4.0, as we support WordPress
224
+ * back to 3.6, we need to also use the pre 4.0 static filter and remove it after
225
+ * the upload was processed.
226
+ */
227
+ add_filter( 'wp_handle_upload_prefilter', array( $this, 'validate_upload' ), 10, 1 );
228
+
229
  // Set Default overrides.
230
  $overrides = array(
231
  'action' => $this->action,
268
  add_filter( 'upload_dir', $upload_dir_filter, 10, $this->upload_dir_filter_args );
269
  }
270
 
 
 
 
271
  // Upload the attachment.
272
  $this->attachment = wp_handle_upload( $file[ $this->file_input ], $overrides, $time );
273
 
 
 
274
  // Restore WordPress Uploads data.
275
  if ( ! empty( $upload_dir_filter ) ) {
276
+ remove_filter( 'upload_dir', $upload_dir_filter, 10, $this->upload_dir_filter_args );
277
  }
278
 
279
+ // Remove the pre WordPress 4.0 static filter.
280
+ remove_filter( 'wp_handle_upload_prefilter', array( $this, 'validate_upload' ), 10, 1 );
281
+
282
  // Finally return the uploaded file or the error.
283
  return $this->attachment;
284
  }
285
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  /**
287
  * Validate the allowed mime types using WordPress allowed mime types.
288
  *
320
  *
321
  * @since 2.3.0
322
  *
323
+ * @param array $file The temporary file attributes (before it has been moved).
324
  * @return array The file.
325
  */
326
  public function validate_upload( $file = array() ) {
345
  *
346
  * regarding to context
347
  *
348
+ * @param array $upload_dir The original Uploads dir.
349
  * @return array The upload directory data.
350
  */
351
  public function upload_dir_filter( $upload_dir = array() ) {
522
  /**
523
  * Get full data for an image
524
  *
525
+ * @since 2.4.0
526
  *
527
+ * @param string $file Absolute path to the uploaded image.
528
  * @return bool|array An associate array containing the width, height and metadatas.
529
  * False in case an important image attribute is missing.
530
  */
553
 
554
  // Now try to get image's meta data.
555
  $meta = wp_read_image_metadata( $file );
556
+
557
  if ( ! empty( $meta ) ) {
558
+ // Before 4.0 the Orientation wasn't included.
559
+ if ( ! isset( $meta['orientation'] ) &&
560
+ is_callable( 'exif_read_data' ) &&
561
+ in_array( $sourceImageType, apply_filters( 'wp_read_image_metadata_types', array( IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM ) ) )
562
+ ) {
563
+ $exif = exif_read_data( $file );
564
+
565
+ if ( ! empty( $exif['Orientation'] ) ) {
566
+ $meta['orientation'] = $exif['Orientation'];
567
+ }
568
+ }
569
+
570
+ // Now add the metas to image data.
571
  $image_data['meta'] = $meta;
572
  }
573
 
574
  /**
575
  * Filter here to add/remove/edit data to the image full data
576
  *
577
+ * @since 2.4.0
578
  *
579
+ * @param array $image_data An associate array containing the width, height and metadatas.
580
  */
581
  return apply_filters( 'bp_attachments_get_image_data', $image_data );
582
  }
584
  /**
585
  * Edit an image file to resize it or rotate it
586
  *
587
+ * @since 2.4.0
588
  *
589
  * @param string $attachment_type The attachment type (eg: avatar or cover_image). Required.
590
  * @param array $args {
bp-core/classes/class-bp-button.php CHANGED
@@ -14,35 +14,35 @@ defined( 'ABSPATH' ) || exit;
14
  * API to create BuddyPress buttons.
15
  *
16
  * @since 1.2.6
17
- * @since 2.7.0 Introduced $parent_element, $parent_attr, $button_element, $button_attr as
18
- * $args parameters.
19
- * Deprecated $wrapper, $wrapper_id, $wrapper_class, $link_href, $link_class,
20
- * $link_id, $link_rel, $link_title as $args params.
21
  *
22
  * @param array $args {
23
  * Array of arguments.
24
  *
25
  * @type string $id String describing the button type.
26
- * @type string $component The name of the component the button belongs to. Default: 'core'.
27
- * @type bool $must_be_logged_in Optional. Does the user need to be logged in to see this button? Default:
28
- * true.
29
- * @type bool $block_self Optional. True if the button should be hidden when a user is viewing his
30
- * own profile. Default: true.
31
- * @type string $parent_element Optional. Parent element to wrap button around. Default: 'div'.
32
- * @type array $parent_attr Optional. Element attributes for parent element. Set whatever attributes
33
- * like 'id', 'class' as array keys.
34
- * @type string $button_element Optional. Button element. Default: 'a'.
35
- * @type array $button_attr Optional. Button attributes. Set whatever attributes like 'id', 'class' as
36
- * array keys.
37
- * @type string $link_text Optional. Text to appear on the button. Default: ''.
38
- * @type string|bool $wrapper Deprecated. Use $parent_element instead.
39
- * @type string $wrapper_id Deprecated. Use $parent_attr and set 'id' as array key.
40
- * @type string $wrapper_class Deprecated. Use $parent_attr and set 'class' as array key.
41
- * @type string $link_href Deprecated. Use $button_attr and set 'href' as array key.
42
- * @type string $link_class Deprecated. Use $button_attr and set 'class' as array key.
43
- * @type string $link_id Deprecated. Use $button_attr and set 'id' as array key.
44
- * @type string $link_rel Deprecated. Use $button_attr and set 'rel' as array key.
45
- * @type string $link_title Deprecated. Use $button_attr and set 'title' as array key.
 
 
 
 
46
  * }
47
  */
48
  class BP_Button {
@@ -52,8 +52,6 @@ class BP_Button {
52
  /**
53
  * The button ID.
54
  *
55
- * @since 1.2.6
56
- *
57
  * @var string
58
  */
59
  public $id = '';
@@ -61,8 +59,6 @@ class BP_Button {
61
  /**
62
  * The name of the component that the button belongs to.
63
  *
64
- * @since 1.2.6
65
- *
66
  * @var string
67
  */
68
  public $component = 'core';
@@ -70,8 +66,6 @@ class BP_Button {
70
  /**
71
  * Does the user need to be logged in to see this button?
72
  *
73
- * @since 1.2.6
74
- *
75
  * @var bool
76
  */
77
  public $must_be_logged_in = true;
@@ -79,88 +73,22 @@ class BP_Button {
79
  /**
80
  * Whether the button should be hidden when viewing your own profile.
81
  *
82
- * @since 1.2.6
83
- *
84
  * @var bool
85
  */
86
  public $block_self = true;
87
 
88
  /** Wrapper ***************************************************************/
89
 
90
- /**
91
- * Parent element to wrap button around.
92
- *
93
- * @since 2.7.0
94
- *
95
- * @var string Default: 'div'.
96
- */
97
- public $parent_element = '';
98
-
99
- /**
100
- * Element attributes for parent element.
101
- *
102
- * @since 2.7.0
103
- *
104
- * @var array Set whatever attributes like 'id', 'class' as array key.
105
- */
106
- public $parent_attr = array();
107
-
108
- /** Button ****************************************************************/
109
-
110
- /**
111
- * Button element.
112
- *
113
- * @since 2.7.0
114
- *
115
- * @var string Default: 'a'.
116
- */
117
- public $button_element = 'a';
118
-
119
- /**
120
- * Button attributes.
121
- *
122
- * @since 2.7.0
123
- *
124
- * @var array Set whatever attributes like 'id', 'href' as array key.
125
- */
126
- public $button_attr = array();
127
-
128
- /**
129
- * The contents of the button link.
130
- *
131
- * @since 1.2.6
132
- *
133
- * @var string
134
- */
135
- public $link_text = '';
136
-
137
- /**
138
- * HTML result.
139
- *
140
- * @since 1.2.6
141
- *
142
- * @var string
143
- */
144
- public $contents = '';
145
-
146
- /** Deprecated ***********************************************************/
147
-
148
  /**
149
  * The type of DOM element to use for a wrapper.
150
  *
151
- * @since 1.2.6
152
- * @deprecated 2.7.0 Use $parent_element instead.
153
- *
154
- * @var string|bool
155
  */
156
  public $wrapper = 'div';
157
 
158
  /**
159
  * The DOM class of the button wrapper.
160
  *
161
- * @since 1.2.6
162
- * @deprecated 2.7.0 Set 'class' key in $parent_attr instead.
163
- *
164
  * @var string
165
  */
166
  public $wrapper_class = '';
@@ -168,19 +96,15 @@ class BP_Button {
168
  /**
169
  * The DOM ID of the button wrapper.
170
  *
171
- * @since 1.2.6
172
- * @deprecated 2.7.0 Set 'id' key in $parent_attr instead.
173
- *
174
  * @var string
175
  */
176
  public $wrapper_id = '';
177
 
 
 
178
  /**
179
  * The destination link of the button.
180
  *
181
- * @since 1.2.6
182
- * @deprecated 2.7.0 Set 'href' key in $button_attr instead.
183
- *
184
  * @var string
185
  */
186
  public $link_href = '';
@@ -188,9 +112,6 @@ class BP_Button {
188
  /**
189
  * The DOM class of the button link.
190
  *
191
- * @since 1.2.6
192
- * @deprecated 2.7.0 Set 'class' key in $button_attr instead.
193
- *
194
  * @var string
195
  */
196
  public $link_class = '';
@@ -198,9 +119,6 @@ class BP_Button {
198
  /**
199
  * The DOM ID of the button link.
200
  *
201
- * @since 1.2.6
202
- * @deprecated 2.7.0 Set 'id' key in $button_attr instead.
203
- *
204
  * @var string
205
  */
206
  public $link_id = '';
@@ -208,9 +126,6 @@ class BP_Button {
208
  /**
209
  * The DOM rel value of the button link.
210
  *
211
- * @since 1.2.6
212
- * @deprecated 2.7.0 Set 'rel' key in $button_attr instead.
213
- *
214
  * @var string
215
  */
216
  public $link_rel = '';
@@ -218,13 +133,23 @@ class BP_Button {
218
  /**
219
  * Title of the button link.
220
  *
221
- * @since 1.2.6
222
- * @deprecated 2.7.0 Set 'title' key in $button_attr instead.
223
- *
224
  * @var string
225
  */
226
  public $link_title = '';
227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  /** Methods ***************************************************************/
229
 
230
  /**
@@ -238,102 +163,76 @@ class BP_Button {
238
 
239
  $r = wp_parse_args( $args, get_class_vars( __CLASS__ ) );
240
 
241
- // Backward compatibility with deprecated parameters.
242
- $r = $this->backward_compatibility_args( $r );
243
-
244
- // Deprecated. Subject to removal in a future release.
245
- $this->wrapper = $r['wrapper'];
246
- if ( !empty( $r['link_id'] ) ) $this->link_id = ' id="' . $r['link_id'] . '"';
247
- if ( !empty( $r['link_href'] ) ) $this->link_href = ' href="' . $r['link_href'] . '"';
248
- if ( !empty( $r['link_title'] ) ) $this->link_title = ' title="' . $r['link_title'] . '"';
249
- if ( !empty( $r['link_rel'] ) ) $this->link_rel = ' rel="' . $r['link_rel'] . '"';
250
- if ( !empty( $r['link_class'] ) ) $this->link_class = ' class="' . $r['link_class'] . '"';
251
- if ( !empty( $r['link_text'] ) ) $this->link_text = $r['link_text'];
252
-
253
  // Required button properties.
254
  $this->id = $r['id'];
255
  $this->component = $r['component'];
256
  $this->must_be_logged_in = (bool) $r['must_be_logged_in'];
257
  $this->block_self = (bool) $r['block_self'];
 
258
 
259
- // $id and $component are required and component must be active.
260
- if ( empty( $r['id'] ) || empty( $r['component'] ) || ! bp_is_active( $this->component ) ) {
 
 
 
 
261
  return false;
262
- }
263
 
264
  // No button for guests if must be logged in.
265
- if ( true == $this->must_be_logged_in && ! is_user_logged_in() ) {
266
  return false;
267
- }
268
 
269
  // The block_self property.
270
  if ( true == $this->block_self ) {
271
- /*
272
- * No button if you are the current user in a members loop.
273
- *
274
- * This condition takes precedence, because members loops can be found on user
275
- * profiles.
276
- */
277
  if ( bp_get_member_user_id() ) {
278
  if ( is_user_logged_in() && bp_loggedin_user_id() == bp_get_member_user_id() ) {
279
  return false;
280
  }
281
 
282
- // No button if viewing your own profile (and not in a members loop).
 
283
  } elseif ( bp_is_my_profile() ) {
284
  return false;
285
  }
286
  }
287
 
288
- // Should we use a parent element?
289
- if ( ! empty( $r['parent_element'] ) ) {
290
- if ( ! isset( $r['parent_attr']['class'] ) ) {
291
- $r['parent_attr']['class'] = '';
292
- }
293
 
294
- // Always add 'generic-button' class.
295
- if ( false === strpos( $r['parent_attr']['class'], 'generic-button' ) ) {
296
- if ( ! is_array( $r['parent_attr'] ) ) {
297
- $r['parent_attr'] = array();
298
- }
299
- if ( ! empty( $r['parent_attr']['class'] ) ) {
300
- $r['parent_attr']['class'] .= ' ';
301
- }
302
- $r['parent_attr']['class'] .= 'generic-button';
303
  }
304
 
305
- // Set parent element props.
306
- $this->parent_element = $r['parent_element'];
307
- $this->parent_attr = $r['parent_attr'];
308
-
309
- // Render parent element attributes.
310
- $parent_elem = new BP_Core_HTML_Element( array(
311
- 'element' => $r['parent_element'],
312
- 'attr' => $r['parent_attr']
313
- ) );
314
 
315
  // Set before and after.
316
- $before = $parent_elem->get( 'open_tag' );
317
- $after = $parent_elem->get( 'close_tag' );
318
 
319
- // No parent element.
320
  } else {
321
  $before = $after = '';
322
  }
323
 
324
- // Button properties.
325
- $button = '';
326
- if ( ! empty( $r['button_element'] ) ) {
327
- $button = new BP_Core_HTML_Element( array(
328
- 'element' => $r['button_element'],
329
- 'attr' => $r['button_attr'],
330
- 'inner_html' => ! empty( $r['link_text'] ) ? $r['link_text'] : ''
331
- ) );
332
- $button = $button->contents();
333
- }
334
 
335
  // Build the button.
336
- $this->contents = $before . $button . $after;
337
 
338
  /**
339
  * Filters the button based on class parameters.
@@ -342,76 +241,15 @@ class BP_Button {
342
  * allows button to be manipulated externally.
343
  *
344
  * @since 1.2.6
345
- * @since 2.7.0 Added $r as a parameter.
346
  *
347
  * @param string $contents HTML being used for the button.
348
  * @param BP_Button $this Current BP_Button instance.
349
  * @param string $before HTML appended before the actual button.
350
  * @param string $after HTML appended after the actual button.
351
- * @param array $r Parsed button arguments.
352
  */
353
- $this->contents = apply_filters( 'bp_button_' . $this->component . '_' . $this->id, $this->contents, $this, $before, $after, $r );
354
  }
355
 
356
-
357
- /**
358
- * Provide backward compatibility for deprecated button arguments.
359
- *
360
- * @since 2.7.0.
361
- *
362
- * @param array $r See {@link BP_Button} class for full documentation.
363
- * @return array
364
- */
365
- protected function backward_compatibility_args( $r = array() ) {
366
- // Array of deprecated arguments.
367
- $backpat_args = array(
368
- 'wrapper', 'wrapper_class', 'wrapper_id',
369
- 'link_href', 'link_class', 'link_id', 'link_rel', 'link_title'
370
- );
371
-
372
- foreach ( $backpat_args as $prop ) {
373
- if ( empty( $r[ $prop ] ) ) {
374
- continue;
375
- }
376
-
377
- $parent = $child = false;
378
- $sep = strpos( $prop, '_' );
379
-
380
- // Check if this is an attribute.
381
- if ( false !== $sep ) {
382
- $child = true;
383
- $parent = substr( $prop, 0, $sep );
384
- } else {
385
- $parent = $prop;
386
- }
387
-
388
- if ( 'wrapper' === $parent ) {
389
- $parent = 'parent';
390
- } else {
391
- $parent = 'button';
392
- }
393
-
394
- // Set element.
395
- if ( false === $child && empty( $r[ "{$parent}_element" ] ) ) {
396
- $r[ "{$parent}_element" ] = $r[ $prop ];
397
-
398
- // Set attributes.
399
- } elseif ( true === $child ) {
400
- $new_prop = substr( $prop, strpos( $prop, '_' ) +1 );
401
- if ( empty( $r[ "{$parent}_attr" ] ) ) {
402
- $r[ "{$parent}_attr" ] = array();
403
- }
404
-
405
- if ( empty( $r[ "{$parent}_attr" ][ $new_prop ] ) ) {
406
- $r[ "{$parent}_attr" ][ $new_prop ] = $r[ $prop ];
407
- }
408
- }
409
- }
410
-
411
- return $r;
412
- }
413
-
414
-
415
  /**
416
  * Return the markup for the generated button.
417
  *
14
  * API to create BuddyPress buttons.
15
  *
16
  * @since 1.2.6
 
 
 
 
17
  *
18
  * @param array $args {
19
  * Array of arguments.
20
  *
21
  * @type string $id String describing the button type.
22
+ * @type string $component The name of the component the button belongs to.
23
+ * Default: 'core'.
24
+ * @type bool $must_be_logged_in Optional. Does the user need to be logged
25
+ * in to see this button? Default: true.
26
+ * @type bool $block_self Optional. True if the button should be hidden
27
+ * when a user is viewing his own profile.
28
+ * Default: true.
29
+ * @type string|bool $wrapper Optional. HTML element type that should wrap
30
+ * the button: 'div', 'span', 'p', or 'li'.
31
+ * False for no wrapper at all. Default: 'div'.
32
+ * @type string $wrapper_id Optional. DOM ID of the button wrapper element.
33
+ * Default: ''.
34
+ * @type string $wrapper_class Optional. DOM class of the button wrapper
35
+ * element. Default: ''.
36
+ * @type string $link_href Optional. Destination link of the button.
37
+ * Default: ''.
38
+ * @type string $link_class Optional. DOM class of the button. Default: ''.
39
+ * @type string $link_id Optional. DOM ID of the button. Default: ''.
40
+ * @type string $link_rel Optional. DOM 'rel' attribute of the button.
41
+ * Default: ''.
42
+ * @type string $link_title Optional. Title attribute of the button.
43
+ * Default: ''.
44
+ * @type string $link_text Optional. Text to appear on the button.
45
+ * Default: ''.
46
  * }
47
  */
48
  class BP_Button {
52
  /**
53
  * The button ID.
54
  *
 
 
55
  * @var string
56
  */
57
  public $id = '';
59
  /**
60
  * The name of the component that the button belongs to.
61
  *
 
 
62
  * @var string
63
  */
64
  public $component = 'core';
66
  /**
67
  * Does the user need to be logged in to see this button?
68
  *
 
 
69
  * @var bool
70
  */
71
  public $must_be_logged_in = true;
73
  /**
74
  * Whether the button should be hidden when viewing your own profile.
75
  *
 
 
76
  * @var bool
77
  */
78
  public $block_self = true;
79
 
80
  /** Wrapper ***************************************************************/
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  /**
83
  * The type of DOM element to use for a wrapper.
84
  *
85
+ * @var string|bool 'div', 'span', 'p', 'li', or false for no wrapper.
 
 
 
86
  */
87
  public $wrapper = 'div';
88
 
89
  /**
90
  * The DOM class of the button wrapper.
91
  *
 
 
 
92
  * @var string
93
  */
94
  public $wrapper_class = '';
96
  /**
97
  * The DOM ID of the button wrapper.
98
  *
 
 
 
99
  * @var string
100
  */
101
  public $wrapper_id = '';
102
 
103
+ /** Button ****************************************************************/
104
+
105
  /**
106
  * The destination link of the button.
107
  *
 
 
 
108
  * @var string
109
  */
110
  public $link_href = '';
112
  /**
113
  * The DOM class of the button link.
114
  *
 
 
 
115
  * @var string
116
  */
117
  public $link_class = '';
119
  /**
120
  * The DOM ID of the button link.
121
  *
 
 
 
122
  * @var string
123
  */
124
  public $link_id = '';
126
  /**
127
  * The DOM rel value of the button link.
128
  *
 
 
 
129
  * @var string
130
  */
131
  public $link_rel = '';
133
  /**
134
  * Title of the button link.
135
  *
 
 
 
136
  * @var string
137
  */
138
  public $link_title = '';
139
 
140
+ /**
141
+ * The contents of the button link.
142
+ *
143
+ * @var string
144
+ */
145
+ public $link_text = '';
146
+
147
+ /** HTML result
148
+ *
149
+ * @var string
150
+ */
151
+ public $contents = '';
152
+
153
  /** Methods ***************************************************************/
154
 
155
  /**
163
 
164
  $r = wp_parse_args( $args, get_class_vars( __CLASS__ ) );
165
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  // Required button properties.
167
  $this->id = $r['id'];
168
  $this->component = $r['component'];
169
  $this->must_be_logged_in = (bool) $r['must_be_logged_in'];
170
  $this->block_self = (bool) $r['block_self'];
171
+ $this->wrapper = $r['wrapper'];
172
 
173
+ // $id and $component are required
174
+ if ( empty( $r['id'] ) || empty( $r['component'] ) )
175
+ return false;
176
+
177
+ // No button if component is not active.
178
+ if ( ! bp_is_active( $this->component ) )
179
  return false;
 
180
 
181
  // No button for guests if must be logged in.
182
+ if ( true == $this->must_be_logged_in && ! is_user_logged_in() )
183
  return false;
 
184
 
185
  // The block_self property.
186
  if ( true == $this->block_self ) {
187
+ // No button if you are the current user in a members loop
188
+ // This condition takes precedence, because members loops
189
+ // can be found on user profiles.
 
 
 
190
  if ( bp_get_member_user_id() ) {
191
  if ( is_user_logged_in() && bp_loggedin_user_id() == bp_get_member_user_id() ) {
192
  return false;
193
  }
194
 
195
+ // No button if viewing your own profile (and not in
196
+ // a members loop).
197
  } elseif ( bp_is_my_profile() ) {
198
  return false;
199
  }
200
  }
201
 
202
+ // Wrapper properties.
203
+ if ( false !== $this->wrapper ) {
 
 
 
204
 
205
+ // Wrapper ID.
206
+ if ( !empty( $r['wrapper_id'] ) ) {
207
+ $this->wrapper_id = ' id="' . $r['wrapper_id'] . '"';
 
 
 
 
 
 
208
  }
209
 
210
+ // Wrapper class.
211
+ if ( !empty( $r['wrapper_class'] ) ) {
212
+ $this->wrapper_class = ' class="generic-button ' . $r['wrapper_class'] . '"';
213
+ } else {
214
+ $this->wrapper_class = ' class="generic-button"';
215
+ }
 
 
 
216
 
217
  // Set before and after.
218
+ $before = '<' . $r['wrapper'] . $this->wrapper_class . $this->wrapper_id . '>';
219
+ $after = '</' . $r['wrapper'] . '>';
220
 
221
+ // No wrapper.
222
  } else {
223
  $before = $after = '';
224
  }
225
 
226
+ // Link properties.
227
+ if ( !empty( $r['link_id'] ) ) $this->link_id = ' id="' . $r['link_id'] . '"';
228
+ if ( !empty( $r['link_href'] ) ) $this->link_href = ' href="' . $r['link_href'] . '"';
229
+ if ( !empty( $r['link_title'] ) ) $this->link_title = ' title="' . $r['link_title'] . '"';
230
+ if ( !empty( $r['link_rel'] ) ) $this->link_rel = ' rel="' . $r['link_rel'] . '"';
231
+ if ( !empty( $r['link_class'] ) ) $this->link_class = ' class="' . $r['link_class'] . '"';
232
+ if ( !empty( $r['link_text'] ) ) $this->link_text = $r['link_text'];
 
 
 
233
 
234
  // Build the button.
235
+ $this->contents = $before . '<a'. $this->link_href . $this->link_title . $this->link_id . $this->link_rel . $this->link_class . '>' . $this->link_text . '</a>' . $after;
236
 
237
  /**
238
  * Filters the button based on class parameters.
241
  * allows button to be manipulated externally.
242
  *
243
  * @since 1.2.6
 
244
  *
245
  * @param string $contents HTML being used for the button.
246
  * @param BP_Button $this Current BP_Button instance.
247
  * @param string $before HTML appended before the actual button.
248
  * @param string $after HTML appended after the actual button.
 
249
  */
250
+ $this->contents = apply_filters( 'bp_button_' . $this->component . '_' . $this->id, $this->contents, $this, $before, $after );
251
  }
252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  /**
254
  * Return the markup for the generated button.
255
  *
bp-core/classes/class-bp-core-bp-nav-backcompat.php CHANGED
@@ -180,7 +180,7 @@ class BP_Core_BP_Nav_BackCompat implements ArrayAccess {
180
  * @since 2.6.0
181
  *
182
  * @param mixed $offset Array offset.
183
- * @return string|array
184
  */
185
  public function get_component( $offset = '' ) {
186
  if ( ! isset( $this->component ) ) {
180
  * @since 2.6.0
181
  *
182
  * @param mixed $offset Array offset.
183
+ * @return string
184
  */
185
  public function get_component( $offset = '' ) {
186
  if ( ! isset( $this->component ) ) {
bp-core/classes/class-bp-core-html-element.php DELETED
@@ -1,127 +0,0 @@
1
- <?php
2
- /**
3
- * Core component classes.
4
- *
5
- * @package BuddyPress
6
- * @subpackage Core
7
- * @since 2.7.0
8
- */
9
-
10
- /**
11
- * Generate markup for an HTML element.
12
- *
13
- * @since 2.7.0
14
- */
15
- class BP_Core_HTML_Element {
16
- /**
17
- * Open tag for an element.
18
- *
19
- * This would include attributes if applicable. eg. '<a href="" class="">'
20
- *
21
- * @since 2.7.0
22
- *
23
- * @var string
24
- */
25
- public $open_tag = '';
26
-
27
- /**
28
- * Inner HTML for an element.
29
- *
30
- * For example, this could be anchor text within an <a> element.
31
- *
32
- * @since 2.7.0
33
- *
34
- * @var string
35
- */
36
- public $inner_html = '';
37
-
38
- /**
39
- * Closing tag for an element.
40
- *
41
- * For example, "</a>".
42
- *
43
- * @since 2.7.0
44
- *
45
- * @var string
46
- */
47
- public $close_tag = '';
48
-
49
- /**
50
- * Constructor.
51
- *
52
- * @since 2.7.0
53
- *
54
- * @param array $r {
55
- * An array of arguments.
56
- * @type string $element The element to render. eg. 'a' for the anchor element.
57
- * @type array $attr Optional. The element's attributes set as key/value pairs. eg.
58
- * array( 'href' => 'http://example.com', 'class' => 'my-class' )
59
- * @type string $inner_html Optional. The inner HTML for the element if applicable. Please note that
60
- * this isn't sanitized, so you should use your own sanitization routine
61
- * before using this parameter.
62
- * }
63
- */
64
- public function __construct( $r = array() ) {
65
- $elem = sanitize_html_class( $r['element'] );
66
- if ( empty( $elem ) ) {
67
- return;
68
- }
69
-
70
- // Render attributes.
71
- $attributes = '';
72
- foreach( (array) $r['attr'] as $attr => $val ) {
73
- // If attribute is empty, skip.
74
- if ( empty( $val ) ) {
75
- continue;
76
- }
77
-
78
- if ( 'href' === $attr || 'formaction' === $attr || 'src' === $attr ) {
79
- $val = esc_url( $val );
80
- } elseif ( 'id' === $attr ) {
81
- $val = sanitize_html_class( $val );
82
- } else {
83
- $val = esc_attr( $val );
84
- }
85
-
86
- $attributes .= sprintf( '%s="%s" ', sanitize_html_class( $attr ), $val );
87
- }
88
-
89
- // <input> / <img> is self-closing.
90
- if ( 'input' === $elem || 'img' === $elem ) {
91
- $this->open_tag = sprintf( '<%1$s %2$s />', $elem, $attributes );
92
-
93
- // All other elements.
94
- } else {
95
- $this->open_tag = sprintf( '<%1$s %2$s>', $elem, $attributes );
96
- $this->inner_html = ! empty( $r['inner_html'] ) ? $r['inner_html'] : '';
97
- $this->close_tag = sprintf( '</%1$s>', $elem );
98
- }
99
- }
100
-
101
- /**
102
- * Returns a property from this class.
103
- *
104
- * @since 2.7.0
105
- *
106
- * @param string $prop Property name. Either 'open_tag', 'inner_html', 'close_tag'.
107
- * @return string
108
- */
109
- public function get( $prop = '' ) {
110
- if ( ! isset( $this->{$prop} ) ) {
111
- return '';
112
- }
113
-
114
- return $this->{$prop};
115
- }
116
-
117
- /**
118
- * Returns full contents of HTML element.
119
- *
120
- * @since 2.7.0
121
- *
122
- * @return string
123
- */
124
- public function contents() {
125
- return $this->open_tag . $this->inner_html . $this->close_tag;
126
- }
127
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/classes/class-bp-core-login-widget.php CHANGED
@@ -117,7 +117,7 @@ class BP_Core_Login_Widget extends WP_Widget {
117
 
118
  <?php if ( bp_get_signup_allowed() ) : ?>
119
 
120
- <span class="bp-login-widget-register-link"><a href="<?php echo esc_url( bp_get_signup_page() ); ?>"><?php _e( 'Register', 'buddypress' ); ?></a></span>
121
 
122
  <?php endif; ?>
123
 
117
 
118
  <?php if ( bp_get_signup_allowed() ) : ?>
119
 
120
+ <span class="bp-login-widget-register-link"><a href="<?php echo esc_url( bp_get_signup_page() ); ?>" title="<?php esc_attr_e( 'Register for a new account', 'buddypress' ); ?>"><?php _e( 'Register', 'buddypress' ); ?></a></span>
121
 
122
  <?php endif; ?>
123
 
bp-core/classes/class-bp-core-nav-item.php CHANGED
@@ -3,6 +3,8 @@
3
  // Exit if accessed directly.
4
  defined( 'ABSPATH' ) || exit;
5
 
 
 
6
  /**
7
  * Navigation item.
8
  *
@@ -13,3 +15,20 @@ class BP_Core_Nav_Item extends ArrayObject {
13
  parent::__construct( $data, ArrayObject::ARRAY_AS_PROPS );
14
  }
15
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  // Exit if accessed directly.
4
  defined( 'ABSPATH' ) || exit;
5
 
6
+ if ( class_exists( 'ArrayObject' ) ) :
7
+
8
  /**
9
  * Navigation item.
10
  *
15
  parent::__construct( $data, ArrayObject::ARRAY_AS_PROPS );
16
  }
17
  }
18
+
19
+ else :
20
+
21
+ /**
22
+ * Navigation item.
23
+ *
24
+ * @since 2.6.0
25
+ */
26
+ class BP_Core_Nav_Item {
27
+ public function __construct( $data ) {
28
+ foreach ( $data as $key => $value ) {
29
+ $this->key = $value;
30
+ }
31
+ }
32
+ }
33
+
34
+ endif;
bp-core/classes/class-bp-core-nav.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @package BuddyPress
6
  * @subpackage Core
7
- * @since 2.6.0
8
  */
9
 
10
  // Exit if accessed directly.
@@ -56,7 +56,7 @@ class BP_Core_Nav {
56
  *
57
  * @since 2.6.0
58
  *
59
- * @param string $key The requested nav slug.
60
  * @return bool True if the nav item is set, false otherwise.
61
  */
62
  public function __isset( $key ) {
@@ -68,7 +68,7 @@ class BP_Core_Nav {
68
  *
69
  * @since 2.6.0
70
  *
71
- * @param string $key The requested nav slug.
72
  * @return mixed The value corresponding to the requested nav item.
73
  */
74
  public function __get( $key ) {
@@ -84,8 +84,8 @@ class BP_Core_Nav {
84
  *
85
  * @since 2.6.0
86
  *
87
- * @param string $key The requested nav slug.
88
- * @param mixed $value The value of the nav item.
89
  */
90
  public function __set( $key, $value ) {
91
  if ( is_array( $value ) ) {
@@ -100,7 +100,7 @@ class BP_Core_Nav {
100
  *
101
  * @since 2.6.0
102
  *
103
- * @param string $key The nav item slug to get. Optional.
104
  * @return mixed An array of nav item, a single nav item, or null if none found.
105
  */
106
  public function get( $key = '' ) {
@@ -210,13 +210,11 @@ class BP_Core_Nav {
210
  *
211
  * @since 2.6.0
212
  *
213
- * @param string $slug The slug of the main item.
214
- * @param string $parent_slug The slug of the sub item.
215
- * @return false|callable|array False on failure, the screen function(s) on success.
216
  */
217
- public function delete_nav( $slug = '', $parent_slug = '' ) {
218
-
219
- // Bail if slug is empty
220
  if ( empty( $slug ) ) {
221
  return false;
222
  }
@@ -276,7 +274,7 @@ class BP_Core_Nav {
276
  unset( $this->nav[ $this->object_id ][ $nav_item->slug ] );
277
 
278
  // Return the deleted item's screen functions.
279
- return $screen_functions;
280
  }
281
  }
282
 
@@ -320,14 +318,14 @@ class BP_Core_Nav {
320
  *
321
  * @since 2.6.0
322
  *
323
- * @param array $args Filters to select the specific primary items. See wp_list_filter().
324
- * @param bool $sort True to sort the nav items. False otherwise.
325
  * @return array The list of primary objects nav
326
  */
327
  public function get_primary( $args = array(), $sort = true ) {
328
  $params = wp_parse_args( $args, array( 'primary' => true ) );
329
 
330
- // This parameter is not overridable.
331
  if ( empty( $params['primary'] ) ) {
332
  return false;
333
  }
@@ -350,14 +348,14 @@ class BP_Core_Nav {
350
  *
351
  * @since 2.6.0
352
  *
353
- * @param array $args Filters to select the specific secondary items. See wp_list_filter().
354
- * @param bool $sort True to sort the nav items. False otherwise.
355
  * @return array The list of secondary objects nav
356
  */
357
  public function get_secondary( $args = array(), $sort = true ) {
358
  $params = wp_parse_args( $args, array( 'parent_slug' => '' ) );
359
 
360
- // No need to search children if the parent is not set.
361
  if ( empty( $params['parent_slug'] ) && empty( $params['secondary'] ) ) {
362
  return false;
363
  }
@@ -387,11 +385,11 @@ class BP_Core_Nav {
387
 
388
  if ( $primary_nav_items ) {
389
  foreach( $primary_nav_items as $key_nav => $primary_nav ) {
390
- // Try to get the children.
391
  $children = $this->get_secondary( array( 'parent_slug' => $primary_nav->slug, 'user_has_access' => true ) );
392
 
393
  if ( $children ) {
394
- $primary_nav_items[ $key_nav ] = clone $primary_nav;
395
  $primary_nav_items[ $key_nav ]->children = $children;
396
  }
397
  }
4
  *
5
  * @package BuddyPress
6
  * @subpackage Core
7
+ * @since 2.6.0
8
  */
9
 
10
  // Exit if accessed directly.
56
  *
57
  * @since 2.6.0
58
  *
59
+ * @param string $key The requested nav slug.
60
  * @return bool True if the nav item is set, false otherwise.
61
  */
62
  public function __isset( $key ) {
68
  *
69
  * @since 2.6.0
70
  *
71
+ * @param string $key The requested nav slug.
72
  * @return mixed The value corresponding to the requested nav item.
73
  */
74
  public function __get( $key ) {
84
  *
85
  * @since 2.6.0
86
  *
87
+ * @param string $key The requested nav slug.
88
+ * @param mixed $value The value of the nav item.
89
  */
90
  public function __set( $key, $value ) {
91
  if ( is_array( $value ) ) {
100
  *
101
  * @since 2.6.0
102
  *
103
+ * @param string $key The nav item slug to get. Optional.
104
  * @return mixed An array of nav item, a single nav item, or null if none found.
105
  */
106
  public function get( $key = '' ) {
210
  *
211
  * @since 2.6.0
212
  *
213
+ * @param string $key The slug of the main item.
214
+ * @param string $sub_key The slug of the sub item.
215
+ * @return bool|callable|array False on failure, the screen function(s) on success.
216
  */
217
+ public function delete_nav( $slug, $parent_slug = '' ) {
 
 
218
  if ( empty( $slug ) ) {
219
  return false;
220
  }
274
  unset( $this->nav[ $this->object_id ][ $nav_item->slug ] );
275
 
276
  // Return the deleted item's screen functions.
277
+ return array_unique( $screen_functions );
278
  }
279
  }
280
 
318
  *
319
  * @since 2.6.0
320
  *
321
+ * @param array $args Filters to select the specific primary items. See wp_list_filter().
322
+ * @param bool $sort True to sort the nav items. False otherwise.
323
  * @return array The list of primary objects nav
324
  */
325
  public function get_primary( $args = array(), $sort = true ) {
326
  $params = wp_parse_args( $args, array( 'primary' => true ) );
327
 
328
+ // This parameter is not overridable
329
  if ( empty( $params['primary'] ) ) {
330
  return false;
331
  }
348
  *
349
  * @since 2.6.0
350
  *
351
+ * @param array $args Filters to select the specific secondary items. See wp_list_filter().
352
+ * @param bool $sort True to sort the nav items. False otherwise.
353
  * @return array The list of secondary objects nav
354
  */
355
  public function get_secondary( $args = array(), $sort = true ) {
356
  $params = wp_parse_args( $args, array( 'parent_slug' => '' ) );
357
 
358
+ // No need to search children if the parent is not set
359
  if ( empty( $params['parent_slug'] ) && empty( $params['secondary'] ) ) {
360
  return false;
361
  }
385
 
386
  if ( $primary_nav_items ) {
387
  foreach( $primary_nav_items as $key_nav => $primary_nav ) {
388
+ // Try to get the children
389
  $children = $this->get_secondary( array( 'parent_slug' => $primary_nav->slug, 'user_has_access' => true ) );
390
 
391
  if ( $children ) {
392
+ $primary_nav_items[ $key_nav ] = clone( $primary_nav );
393
  $primary_nav_items[ $key_nav ]->children = $children;
394
  }
395
  }
bp-core/classes/class-bp-core-oembed-extension.php CHANGED
@@ -4,7 +4,6 @@
4
  *
5
  * @package BuddyPress
6
  * @subpackage Core
7
- * @since 2.6.0
8
  */
9
 
10
  // Exit if accessed directly.
@@ -53,8 +52,6 @@ abstract class BP_Core_oEmbed_Extension {
53
  * Add content for your oEmbed response here.
54
  *
55
  * @since 2.6.0
56
- *
57
- * @return null
58
  */
59
  abstract protected function content();
60
 
@@ -74,7 +71,6 @@ abstract class BP_Core_oEmbed_Extension {
74
  *
75
  * @since 2.6.0
76
  *
77
- * @param string $url URL to validate.
78
  * @return int Your item ID
79
  */
80
  abstract protected function validate_url_to_item_id( $url );
@@ -84,7 +80,7 @@ abstract class BP_Core_oEmbed_Extension {
84
  *
85
  * @since 2.6.0
86
  *
87
- * @param int $item_id Your item ID to do checks against.
88
  * @return array Should contain 'content', 'title', 'author_url', 'author_name' as array
89
  * keys. 'author_url' and 'author_name' is optional; the rest are required.
90
  */
@@ -98,7 +94,7 @@ abstract class BP_Core_oEmbed_Extension {
98
  *
99
  * @since 2.6.0
100
  *
101
- * @param int $item_id Your item ID to do checks against.
102
  * @return string Fallback HTML you want to output.
103
  */
104
  abstract protected function set_fallback_html( $item_id );
@@ -126,6 +122,7 @@ abstract class BP_Core_oEmbed_Extension {
126
  * @since 2.6.0
127
  *
128
  * @param int $item_id The item ID to do checks for.
 
129
  */
130
  protected function set_iframe_title( $item_id ) {}
131
 
@@ -148,7 +145,7 @@ abstract class BP_Core_oEmbed_Extension {
148
  protected function set_permalink() {
149
  $url = bp_get_requested_url();
150
 
151
- // Remove querystring from bp_get_requested_url().
152
  if ( false !== strpos( bp_get_requested_url(), '?' ) ) {
153
  $url = substr( bp_get_requested_url(), 0, strpos( bp_get_requested_url(), '?' ) );
154
  }
@@ -242,7 +239,7 @@ abstract class BP_Core_oEmbed_Extension {
242
  *
243
  * @since 2.6.0
244
  *
245
- * @param string $template File path to current embed template.
246
  * @return string
247
  */
248
  public function setup_template_parts( $template ) {
@@ -266,9 +263,6 @@ abstract class BP_Core_oEmbed_Extension {
266
  * and inject our own template for BuddyPress use.
267
  *
268
  * @since 2.6.0
269
- *
270
- * @param string $slug Template slug.
271
- * @param string $name Template name.
272
  */
273
  public function content_buffer_start( $slug, $name ) {
274
  if ( 'embed' !== $slug || 'content' !== $name ) {
@@ -286,8 +280,6 @@ abstract class BP_Core_oEmbed_Extension {
286
  * and inject our own template for BuddyPress use.
287
  *
288
  * @since 2.6.0
289
- *
290
- * @param string $name Template name.
291
  */
292
  public function content_buffer_end( $name ) {
293
  if ( 'embed' !== $name || is_404() ) {
@@ -326,7 +318,7 @@ abstract class BP_Core_oEmbed_Extension {
326
  *
327
  * @since 2.6.0
328
  *
329
- * @param string $retval Current discovery links.
330
  * @return string
331
  */
332
  public function add_oembed_discovery_links( $retval ) {
@@ -361,8 +353,8 @@ abstract class BP_Core_oEmbed_Extension {
361
  *
362
  * @link http://oembed.com/ View the 'Response parameters' section for more details.
363
  *
364
- * @param array $item Custom oEmbed response data.
365
- * @param int $width The requested width.
366
  * @return array
367
  */
368
  protected function get_oembed_response_data( $item, $width ) {
@@ -411,7 +403,7 @@ abstract class BP_Core_oEmbed_Extension {
411
  *
412
  * @since 2.6.0
413
  *
414
- * @param WP_REST_Request $request Full data about the request.
415
  * @return WP_Error|array oEmbed response data or WP_Error on failure.
416
  */
417
  public function get_item( $request ) {
@@ -516,7 +508,7 @@ abstract class BP_Core_oEmbed_Extension {
516
  *
517
  * @see bp_activity_embed_rest_route_callback()
518
  *
519
- * @param string $retval Current embed URL.
520
  * @return string
521
  */
522
  public function filter_embed_url( $retval ) {
@@ -528,7 +520,7 @@ abstract class BP_Core_oEmbed_Extension {
528
  $url = trailingslashit( $url );
529
 
530
  // This is for the 'WordPress Embed' block
531
- // @see bp_activity_embed_comments_button().
532
  if ( 'the_permalink' !== current_filter() ) {
533
  $url = add_query_arg( 'embed', 'true', trailingslashit( $url ) );
534
 
@@ -548,7 +540,7 @@ abstract class BP_Core_oEmbed_Extension {
548
  *
549
  * @since 2.6.0
550
  *
551
- * @param string $retval Current embed HTML.
552
  * @return string
553
  */
554
  public function filter_embed_html( $retval ) {
@@ -575,7 +567,7 @@ abstract class BP_Core_oEmbed_Extension {
575
  $retval = str_replace( '<iframe', '<iframe style="max-width:100%"', $retval );
576
  }
577
 
578
- // Remove default <blockquote>.
579
  $retval = substr( $retval, strpos( $retval, '</blockquote>' ) + 13 );
580
 
581
  // Set up new fallback HTML
@@ -602,7 +594,7 @@ abstract class BP_Core_oEmbed_Extension {
602
  *
603
  * @see add_oembed_discovery_links()
604
  *
605
- * @param string $retval Current oEmbed endpoint URL.
606
  * @return string
607
  */
608
  public function filter_rest_url( $retval = '' ) {
@@ -621,4 +613,4 @@ abstract class BP_Core_oEmbed_Extension {
621
 
622
  $this->content();
623
  }
624
- }
4
  *
5
  * @package BuddyPress
6
  * @subpackage Core
 
7
  */
8
 
9
  // Exit if accessed directly.
52
  * Add content for your oEmbed response here.
53
  *
54
  * @since 2.6.0
 
 
55
  */
56
  abstract protected function content();
57
 
71
  *
72
  * @since 2.6.0
73
  *
 
74
  * @return int Your item ID
75
  */
76
  abstract protected function validate_url_to_item_id( $url );
80
  *
81
  * @since 2.6.0
82
  *
83
+ * @param int $item_id Your item ID to do checks against.
84
  * @return array Should contain 'content', 'title', 'author_url', 'author_name' as array
85
  * keys. 'author_url' and 'author_name' is optional; the rest are required.
86
  */
94
  *
95
  * @since 2.6.0
96
  *
97
+ * @param int $item_id Your item ID to do checks against.
98
  * @return string Fallback HTML you want to output.
99
  */
100
  abstract protected function set_fallback_html( $item_id );
122
  * @since 2.6.0
123
  *
124
  * @param int $item_id The item ID to do checks for.
125
+ * @return string
126
  */
127
  protected function set_iframe_title( $item_id ) {}
128
 
145
  protected function set_permalink() {
146
  $url = bp_get_requested_url();
147
 
148
+ // Remove querystring from bp_get_requested_url()
149
  if ( false !== strpos( bp_get_requested_url(), '?' ) ) {
150
  $url = substr( bp_get_requested_url(), 0, strpos( bp_get_requested_url(), '?' ) );
151
  }
239
  *
240
  * @since 2.6.0
241
  *
242
+ * @param string $template File path to current embed template.
243
  * @return string
244
  */
245
  public function setup_template_parts( $template ) {
263
  * and inject our own template for BuddyPress use.
264
  *
265
  * @since 2.6.0
 
 
 
266
  */
267
  public function content_buffer_start( $slug, $name ) {
268
  if ( 'embed' !== $slug || 'content' !== $name ) {
280
  * and inject our own template for BuddyPress use.
281
  *
282
  * @since 2.6.0
 
 
283
  */
284
  public function content_buffer_end( $name ) {
285
  if ( 'embed' !== $name || is_404() ) {
318
  *
319
  * @since 2.6.0
320
  *
321
+ * @param string $retval Current discovery links.
322
  * @return string
323
  */
324
  public function add_oembed_discovery_links( $retval ) {
353
  *
354
  * @link http://oembed.com/ View the 'Response parameters' section for more details.
355
  *
356
+ * @param array $item Custom oEmbed response data.
357
+ * @param int $width The requested width.
358
  * @return array
359
  */
360
  protected function get_oembed_response_data( $item, $width ) {
403
  *
404
  * @since 2.6.0
405
  *
406
+ * @param WP_REST_Request $request Full data about the request.
407
  * @return WP_Error|array oEmbed response data or WP_Error on failure.
408
  */
409
  public function get_item( $request ) {
508
  *
509
  * @see bp_activity_embed_rest_route_callback()
510
  *
511
+ * @param string $retval Current embed URL
512
  * @return string
513
  */
514
  public function filter_embed_url( $retval ) {
520
  $url = trailingslashit( $url );
521
 
522
  // This is for the 'WordPress Embed' block
523
+ // @see bp_activity_embed_comments_button()
524
  if ( 'the_permalink' !== current_filter() ) {
525
  $url = add_query_arg( 'embed', 'true', trailingslashit( $url ) );
526
 
540
  *
541
  * @since 2.6.0
542
  *
543
+ * @param string $retval Current embed HTML
544
  * @return string
545
  */
546
  public function filter_embed_html( $retval ) {
567
  $retval = str_replace( '<iframe', '<iframe style="max-width:100%"', $retval );
568
  }
569
 
570
+ // Remove default <blockquote>
571
  $retval = substr( $retval, strpos( $retval, '</blockquote>' ) + 13 );
572
 
573
  // Set up new fallback HTML
594
  *
595
  * @see add_oembed_discovery_links()
596
  *
597
+ * @param string $retval Current oEmbed endpoint URL
598
  * @return string
599
  */
600
  public function filter_rest_url( $retval = '' ) {
613
 
614
  $this->content();
615
  }
616
+ }
bp-core/classes/class-bp-core-sort-by-key-callback.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Callback class for bp_sort_by_key().
5
+ *
6
+ * Used in place of an anonymous closure.
7
+ *
8
+ * Developers should not use this class directly, as it may be removed once support for PHP 5.2 is dropped.
9
+ *
10
+ * @ignore
11
+ *
12
+ * @since 2.5.0
13
+ */
14
+ class BP_Core_Sort_By_Key_Callback {
15
+ /**
16
+ * Object/array index to use for sorting.
17
+ *
18
+ * @since 2.5.0
19
+ * @var mixed
20
+ */
21
+ protected $key;
22
+
23
+ /**
24
+ * Sort type.
25
+ *
26
+ * @since 2.5.0
27
+ * @var string
28
+ */
29
+ protected $type;
30
+
31
+ /**
32
+ * Constructor.
33
+ *
34
+ * @since 2.5.0
35
+ *
36
+ * @param mixed $key Object or array index to use for sorting.
37
+ * @param string $type Sort type.
38
+ */
39
+ public function __construct( $key, $type ) {
40
+ $this->key = $key;
41
+ $this->type = $type;
42
+ }
43
+
44
+ /**
45
+ * Sort callback.
46
+ *
47
+ * @since 2.5.0
48
+ *
49
+ * @param $a object|array
50
+ * @param $b object|array
51
+ * @return int
52
+ */
53
+ public function sort_callback( $a, $b ) {
54
+ $values = array( 0 => false, 1 => false, );
55
+ $func_args = func_get_args();
56
+ foreach ( $func_args as $indexi => $index ) {
57
+ if ( isset( $index->{$this->key} ) ) {
58
+ $values[ $indexi ] = $index->{$this->key};
59
+ } elseif ( isset( $index[ $this->key ] ) ) {
60
+ $values[ $indexi ] = $index[ $this->key ];
61
+ }
62
+ }
63
+
64
+ if ( isset( $values[0], $values[1] ) ) {
65
+ if ( 'num' === $this->type ) {
66
+ $cmp = $values[0] - $values[1];
67
+ } else {
68
+ $cmp = strcmp( $values[0], $values[1] );
69
+ }
70
+
71
+ if ( 0 > $cmp ) {
72
+ $retval = -1;
73
+ } elseif ( 0 < $cmp ) {
74
+ $retval = 1;
75
+ } else {
76
+ $retval = 0;
77
+ }
78
+ return $retval;
79
+ } else {
80
+ return 0;
81
+ }
82
+ }
83
+ }
bp-core/classes/class-bp-core-user.php CHANGED
@@ -157,7 +157,7 @@ class BP_Core_User {
157
 
158
  $this->user_url = bp_core_get_user_domain( $this->id, $this->profile_data['user_nicename'], $this->profile_data['user_login'] );
159
  $this->fullname = esc_attr( $this->profile_data[$full_name_field_name]['field_data'] );
160
- $this->user_link = "<a href='{$this->user_url}'>{$this->fullname}</a>";
161
  $this->email = esc_attr( $this->profile_data['user_email'] );
162
  } else {
163
  $this->user_url = bp_core_get_user_domain( $this->id );
@@ -230,7 +230,7 @@ class BP_Core_User {
230
  * Default: false.
231
  * @param string|bool $meta_value See {@link BP_User_Query}.
232
  * Default: false.
233
- * @return false|array {
234
  * @type int $total_users Total number of users matched by query
235
  * params.
236
  * @type array $paged_users The current page of users matched by
@@ -439,7 +439,7 @@ class BP_Core_User {
439
  * @param bool $populate_extras If we should populate extra user fields.
440
  * @param string $exclude Comma-separated IDs of users whose results
441
  * aren't to be fetched.
442
- * @return false|array False on error, otherwise associative array of results.
443
  */
444
  public static function get_users_by_letter( $letter, $limit = null, $page = 1, $populate_extras = true, $exclude = '' ) {
445
  global $wpdb;
@@ -723,6 +723,16 @@ class BP_Core_User {
723
  }
724
  }
725
 
 
 
 
 
 
 
 
 
 
 
726
  // Fetch the user's last_activity.
727
  if ( 'active' != $type ) {
728
  $user_activity = $wpdb->get_results( $wpdb->prepare( "SELECT user_id as id, meta_value as last_activity FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} )", bp_get_user_meta_key( 'last_activity' ) ) );
@@ -767,7 +777,7 @@ class BP_Core_User {
767
  * Get last activity data for a user or set of users.
768
  *
769
  * @param int|array $user_id User IDs or multiple user IDs.
770
- * @return false|array
771
  */
772
  public static function get_last_activity( $user_id ) {
773
  global $wpdb;
@@ -801,13 +811,6 @@ class BP_Core_User {
801
  $retval = array();
802
  foreach ( $user_ids as $user_id ) {
803
  $retval[ $user_id ] = wp_cache_get( $user_id, 'bp_last_activity' );
804
-
805
- if ( isset( $retval['user_id'] ) ) {
806
- $retval[ $user_id ]['user_id'] = (int) $retval[ $user_id ]['user_id'];
807
- }
808
- if ( isset( $retval['activity_id'] ) ) {
809
- $retval[ $user_id ]['activity_id'] = (int) $retval[ $user_id ]['activity_id'];
810
- }
811
  }
812
 
813
  return $retval;
@@ -902,16 +905,6 @@ class BP_Core_User {
902
  // Set cache.
903
  wp_cache_set( $user_id, $activity[ $user_id ], 'bp_last_activity' );
904
 
905
- /**
906
- * Fires when a user's last_activity value has been updated.
907
- *
908
- * @since 2.7.0
909
- *
910
- * @param int $user_id ID of the user.
911
- * @param string $time Last activity timestamp, in 'Y-m-d H:i:s' format.
912
- */
913
- do_action( 'bp_core_user_updated_last_activity', $user_id, $time );
914
-
915
  return $updated;
916
  }
917
 
157
 
158
  $this->user_url = bp_core_get_user_domain( $this->id, $this->profile_data['user_nicename'], $this->profile_data['user_login'] );
159
  $this->fullname = esc_attr( $this->profile_data[$full_name_field_name]['field_data'] );
160
+ $this->user_link = "<a href='{$this->user_url}' title='{$this->fullname}'>{$this->fullname}</a>";
161
  $this->email = esc_attr( $this->profile_data['user_email'] );
162
  } else {
163
  $this->user_url = bp_core_get_user_domain( $this->id );
230
  * Default: false.
231
  * @param string|bool $meta_value See {@link BP_User_Query}.
232
  * Default: false.
233
+ * @return array {
234
  * @type int $total_users Total number of users matched by query
235
  * params.
236
  * @type array $paged_users The current page of users matched by
439
  * @param bool $populate_extras If we should populate extra user fields.
440
  * @param string $exclude Comma-separated IDs of users whose results
441
  * aren't to be fetched.
442
+ * @return mixed False on error, otherwise associative array of results.
443
  */
444
  public static function get_users_by_letter( $letter, $limit = null, $page = 1, $populate_extras = true, $exclude = '' ) {
445
  global $wpdb;
723
  }
724
  }
725
 
726
+ if ( 'active' != $type ) {
727
+ $user_activity = $wpdb->get_results( $wpdb->prepare( "SELECT user_id as id, meta_value as last_activity FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} )", bp_get_user_meta_key( 'last_activity' ) ) );
728
+ for ( $i = 0, $count = count( $paged_users ); $i < $count; ++$i ) {
729
+ foreach ( (array) $user_activity as $activity ) {
730
+ if ( $activity->id == $paged_users[$i]->id )
731
+ $paged_users[$i]->last_activity = $activity->last_activity;
732
+ }
733
+ }
734
+ }
735
+
736
  // Fetch the user's last_activity.
737
  if ( 'active' != $type ) {
738
  $user_activity = $wpdb->get_results( $wpdb->prepare( "SELECT user_id as id, meta_value as last_activity FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} )", bp_get_user_meta_key( 'last_activity' ) ) );
777
  * Get last activity data for a user or set of users.
778
  *
779
  * @param int|array $user_id User IDs or multiple user IDs.
780
+ * @return array
781
  */
782
  public static function get_last_activity( $user_id ) {
783
  global $wpdb;
811
  $retval = array();
812
  foreach ( $user_ids as $user_id ) {
813
  $retval[ $user_id ] = wp_cache_get( $user_id, 'bp_last_activity' );
 
 
 
 
 
 
 
814
  }
815
 
816
  return $retval;
905
  // Set cache.
906
  wp_cache_set( $user_id, $activity[ $user_id ], 'bp_last_activity' );
907
 
 
 
 
 
 
 
 
 
 
 
908
  return $updated;
909
  }
910
 
bp-core/classes/class-bp-core.php CHANGED
@@ -254,8 +254,10 @@ class BP_Core extends BP_Component {
254
  $bp->core->table_name_notifications = $bp->table_prefix . 'bp_notifications';
255
 
256
  // Backward compatibility for plugins modifying the legacy bp_nav and bp_options_nav global properties.
257
- $bp->bp_nav = new BP_Core_BP_Nav_BackCompat();
258
- $bp->bp_options_nav = new BP_Core_BP_Options_Nav_BackCompat();
 
 
259
 
260
  /**
261
  * Used to determine if user has admin rights on current content. If the
254
  $bp->core->table_name_notifications = $bp->table_prefix . 'bp_notifications';
255
 
256
  // Backward compatibility for plugins modifying the legacy bp_nav and bp_options_nav global properties.
257
+ if ( buddypress()->do_nav_backcompat ) {
258
+ $bp->bp_nav = new BP_Core_BP_Nav_BackCompat();
259
+ $bp->bp_options_nav = new BP_Core_BP_Options_Nav_BackCompat();
260
+ }
261
 
262
  /**
263
  * Used to determine if user has admin rights on current content. If the
bp-core/classes/class-bp-media-extractor.php CHANGED
@@ -469,7 +469,7 @@ class BP_Media_Extractor {
469
  if ( ! empty( $matches[2] ) ) {
470
  foreach ( $matches[2] as $i => $shortcode_name ) {
471
  $attrs = shortcode_parse_atts( $matches[3][ $i ] );
472
- $attrs = ( ! $attrs ) ? array() : (array) $attrs;
473
 
474
  $shortcode = array();
475
  $shortcode['attributes'] = $attrs; // Attributes.
469
  if ( ! empty( $matches[2] ) ) {
470
  foreach ( $matches[2] as $i => $shortcode_name ) {
471
  $attrs = shortcode_parse_atts( $matches[3][ $i ] );
472
+ $attrs = ( ! $attrs ) ? array() : $attrs;
473
 
474
  $shortcode = array();
475
  $shortcode['attributes'] = $attrs; // Attributes.
bp-core/classes/class-bp-phpmailer.php CHANGED
@@ -27,18 +27,7 @@ class BP_PHPMailer implements BP_Email_Delivery {
27
  public function bp_email( BP_Email $email ) {
28
  static $phpmailer = null;
29
 
30
- /**
31
- * Filter PHPMailer object to use.
32
- *
33
- * Specify an alternative version of PHPMailer to use instead of WordPress' default.
34
- *
35
- * @since 2.8.0
36
- *
37
- * @param null|PHPMailer $phpmailer The phpmailer class.
38
- */
39
- $phpmailer = apply_filters( 'bp_phpmailer_object', $phpmailer );
40
-
41
- if ( ! ( $phpmailer instanceof PHPMailer ) ) {
42
  if ( ! class_exists( 'PHPMailer' ) ) {
43
  require_once ABSPATH . WPINC . '/class-phpmailer.php';
44
  require_once ABSPATH . WPINC . '/class-smtp.php';
@@ -51,7 +40,7 @@ class BP_PHPMailer implements BP_Email_Delivery {
51
  /*
52
  * Resets.
53
  */
54
- $phpmailer->MessageDate = date( 'D, j M Y H:i:s O' );
55
  $phpmailer->clearAllRecipients();
56
  $phpmailer->clearAttachments();
57
  $phpmailer->clearCustomHeaders();
27
  public function bp_email( BP_Email $email ) {
28
  static $phpmailer = null;
29
 
30
+ if ( $phpmailer === null ) {
 
 
 
 
 
 
 
 
 
 
 
31
  if ( ! class_exists( 'PHPMailer' ) ) {
32
  require_once ABSPATH . WPINC . '/class-phpmailer.php';
33
  require_once ABSPATH . WPINC . '/class-smtp.php';
40
  /*
41
  * Resets.
42
  */
43
+
44
  $phpmailer->clearAllRecipients();
45
  $phpmailer->clearAttachments();
46
  $phpmailer->clearCustomHeaders();
bp-core/classes/class-bp-theme-compat.php CHANGED
@@ -50,7 +50,7 @@ class BP_Theme_Compat {
50
  *
51
  * @param array $properties Array of properties for BP_Theme_Compat.
52
  */
53
- public function __construct( Array $properties = array() ) {
54
  $this->_data = $properties;
55
  }
56
 
50
  *
51
  * @param array $properties Array of properties for BP_Theme_Compat.
52
  */
53
+ public function __construct( Array $properties = array() ) {
54
  $this->_data = $properties;
55
  }
56
 
bp-core/classes/class-bp-user-query.php CHANGED
@@ -247,7 +247,7 @@ class BP_User_Query {
247
  // Setup the main SQL query container.
248
  $sql = array(
249
  'select' => '',
250
- 'where' => array('1=1'),
251
  'orderby' => '',
252
  'order' => '',
253
  'limit' => ''
@@ -364,11 +364,7 @@ class BP_User_Query {
364
  // 'include' - User ids to include in the results.
365
  $include = false !== $include ? wp_parse_id_list( $include ) : array();
366
  $include_ids = $this->get_include_ids( $include );
367
-
368
- // An array containing nothing but 0 should always fail.
369
- if ( 1 === count( $include_ids ) && 0 == reset( $include_ids ) ) {
370
- $sql['where'][] = $this->no_results['where'];
371
- } elseif ( ! empty( $include_ids ) ) {
372
  $include_ids = implode( ',', wp_parse_id_list( $include_ids ) );
373
  $sql['where'][] = "u.{$this->uid_name} IN ({$include_ids})";
374
  }
@@ -595,14 +591,11 @@ class BP_User_Query {
595
  // Match up to the user ids from the main query.
596
  foreach ( $this->user_ids as $key => $uid ) {
597
  if ( isset( $r[ $uid ] ) ) {
598
- $r[ $uid ]->ID = (int) $uid;
599
- $r[ $uid ]->user_status = (int) $r[ $uid ]->user_status;
600
-
601
  $this->results[ $uid ] = $r[ $uid ];
602
 
603
  // The BP template functions expect an 'id'
604
  // (as opposed to 'ID') property.
605
- $this->results[ $uid ]->id = (int) $uid;
606
 
607
  // Remove user ID from original user_ids property.
608
  } else {
@@ -787,7 +780,7 @@ class BP_User_Query {
787
 
788
  $tax_query = new WP_Tax_Query( array(
789
  array(
790
- 'taxonomy' => bp_get_member_type_tax_name(),
791
  'field' => 'name',
792
  'operator' => $operator,
793
  'terms' => $types,
@@ -795,15 +788,18 @@ class BP_User_Query {
795
  ) );
796
 
797
  // Switch to the root blog, where member type taxonomies live.
798
- $site_id = bp_get_taxonomy_term_site_id( bp_get_member_type_tax_name() );
799
  $switched = false;
800
- if ( $site_id !== get_current_blog_id() ) {
801
- switch_to_blog( $site_id );
802
  $switched = true;
803
  }
804
 
805
  $sql_clauses = $tax_query->get_sql( 'u', $this->uid_name );
806
 
 
 
 
 
807
  $clause = '';
808
 
809
  // The no_results clauses are the same between IN and NOT IN.
@@ -819,10 +815,6 @@ class BP_User_Query {
819
  $clause = "u.{$this->uid_name} IN ( SELECT object_id FROM $wpdb->term_relationships WHERE {$matches[0]} )";
820
  }
821
 
822
- if ( $switched ) {
823
- restore_current_blog();
824
- }
825
-
826
  return $clause;
827
  }
828
  }
247
  // Setup the main SQL query container.
248
  $sql = array(
249
  'select' => '',
250
+ 'where' => array(),
251
  'orderby' => '',
252
  'order' => '',
253
  'limit' => ''
364
  // 'include' - User ids to include in the results.
365
  $include = false !== $include ? wp_parse_id_list( $include ) : array();
366
  $include_ids = $this->get_include_ids( $include );
367
+ if ( ! empty( $include_ids ) ) {
 
 
 
 
368
  $include_ids = implode( ',', wp_parse_id_list( $include_ids ) );
369
  $sql['where'][] = "u.{$this->uid_name} IN ({$include_ids})";
370
  }
591
  // Match up to the user ids from the main query.
592
  foreach ( $this->user_ids as $key => $uid ) {
593
  if ( isset( $r[ $uid ] ) ) {
 
 
 
594
  $this->results[ $uid ] = $r[ $uid ];
595
 
596
  // The BP template functions expect an 'id'
597
  // (as opposed to 'ID') property.
598
+ $this->results[ $uid ]->id = $uid;
599
 
600
  // Remove user ID from original user_ids property.
601
  } else {
780
 
781
  $tax_query = new WP_Tax_Query( array(
782
  array(
783
+ 'taxonomy' => 'bp_member_type',
784
  'field' => 'name',
785
  'operator' => $operator,
786
  'terms' => $types,
788
  ) );
789
 
790
  // Switch to the root blog, where member type taxonomies live.
 
791
  $switched = false;
792
+ if ( ! bp_is_root_blog() ) {
793
+ switch_to_blog( bp_get_root_blog_id() );
794
  $switched = true;
795
  }
796
 
797
  $sql_clauses = $tax_query->get_sql( 'u', $this->uid_name );
798
 
799
+ if ( $switched ) {
800
+ restore_current_blog();
801
+ }
802
+
803
  $clause = '';
804
 
805
  // The no_results clauses are the same between IN and NOT IN.
815
  $clause = "u.{$this->uid_name} IN ( SELECT object_id FROM $wpdb->term_relationships WHERE {$matches[0]} )";
816
  }
817
 
 
 
 
 
818
  return $clause;
819
  }
820
  }
bp-core/classes/class-bp-walker-nav-menu.php CHANGED
@@ -55,7 +55,9 @@ class BP_Walker_Nav_Menu extends Walker_Nav_Menu {
55
  * @return string See {@link Walker::walk()}.
56
  */
57
  public function walk( $elements, $max_depth ) {
58
- $args = array_slice( func_get_args(), 2 );
 
 
59
  $output = '';
60
 
61
  if ( $max_depth < -1 ) // Invalid parameter.
55
  * @return string See {@link Walker::walk()}.
56
  */
57
  public function walk( $elements, $max_depth ) {
58
+ $func_args = func_get_args();
59
+
60
+ $args = array_slice( $func_args, 2 );
61
  $output = '';
62
 
63
  if ( $max_depth < -1 ) // Invalid parameter.
bp-core/css/admin-bar-rtl.css CHANGED
@@ -16,7 +16,6 @@
16
  #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul {
17
  right: 0;
18
  }
19
-
20
  #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul {
21
  right: 0;
22
  }
@@ -25,13 +24,13 @@
25
  #wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,
26
  #wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count,
27
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications {
28
- background: #21759b;
29
  color: #fff;
30
  text-shadow: none;
31
  display: inline;
32
  padding: 2px 5px;
33
  font-size: 10px;
34
- font-weight: 700;
35
  -moz-border-radius: 10px;
36
  -khtml-border-radius: 10px;
37
  -webkit-border-radius: 10px;
@@ -41,33 +40,19 @@
41
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications {
42
  background: #ddd;
43
  color: #333;
44
- margin: 0;
45
  }
46
 
47
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert {
48
- background-color: #21759b;
49
  color: #fff;
50
  }
51
 
52
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications > a {
53
- padding: 0 0.5em;
54
  }
55
 
56
  #wp-admin-bar-user-info img.avatar {
57
  height: 64px;
58
  width: 64px;
59
  }
60
-
61
- /* Remove additional arrows from appearing on the BuddyPress' `my_account_menu`
62
- * on large screens. Add back arrows for screen widths 600px and lower.
63
- */
64
- #wpadminbar .wp-admin-bar-arrow-right {
65
- display: none;
66
- }
67
-
68
- @media screen and (max-width: 600px) {
69
-
70
- #wpadminbar .wp-admin-bar-arrow-right {
71
- display: block;
72
- }
73
- }
16
  #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul {
17
  right: 0;
18
  }
 
19
  #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul {
20
  right: 0;
21
  }
24
  #wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,
25
  #wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count,
26
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications {
27
+ background: #21759B;
28
  color: #fff;
29
  text-shadow: none;
30
  display: inline;
31
  padding: 2px 5px;
32
  font-size: 10px;
33
+ font-weight: bold;
34
  -moz-border-radius: 10px;
35
  -khtml-border-radius: 10px;
36
  -webkit-border-radius: 10px;
40
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications {
41
  background: #ddd;
42
  color: #333;
43
+ margin: 0
44
  }
45
 
46
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert {
47
+ background-color: #1fb3dd;
48
  color: #fff;
49
  }
50
 
51
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications > a {
52
+ padding: 0 .5em;
53
  }
54
 
55
  #wp-admin-bar-user-info img.avatar {
56
  height: 64px;
57
  width: 64px;
58
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/css/admin-bar-rtl.min.css CHANGED
@@ -1 +1 @@
1
- #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px -5px 0 10px;padding:0;background:#eee;float:none}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul{right:0}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{right:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications,#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count{background:#21759b;color:#fff;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#ddd;color:#333;margin:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert{background-color:#21759b;color:#fff}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications>a{padding:0 .5em}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}#wpadminbar .wp-admin-bar-arrow-right{display:none}@media screen and (max-width:600px){#wpadminbar .wp-admin-bar-arrow-right{display:block}}
1
+ #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px -5px 0 10px;padding:0;background:#eee;float:none}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{right:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications,#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count{background:#21759B;color:#fff;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#ddd;color:#333;margin:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert{background-color:#1fb3dd;color:#fff}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications>a{padding:0 .5em}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}
bp-core/css/admin-bar.css CHANGED
@@ -16,7 +16,6 @@
16
  #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul {
17
  left: 0;
18
  }
19
-
20
  #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul {
21
  left: 0;
22
  }
@@ -25,13 +24,13 @@
25
  #wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,
26
  #wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count,
27
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications {
28
- background: #21759b;
29
  color: #fff;
30
  text-shadow: none;
31
  display: inline;
32
  padding: 2px 5px;
33
  font-size: 10px;
34
- font-weight: 700;
35
  -moz-border-radius: 10px;
36
  -khtml-border-radius: 10px;
37
  -webkit-border-radius: 10px;
@@ -41,33 +40,19 @@
41
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications {
42
  background: #ddd;
43
  color: #333;
44
- margin: 0;
45
  }
46
 
47
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert {
48
- background-color: #21759b;
49
  color: #fff;
50
  }
51
 
52
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications > a {
53
- padding: 0 0.5em;
54
  }
55
 
56
  #wp-admin-bar-user-info img.avatar {
57
  height: 64px;
58
  width: 64px;
59
  }
60
-
61
- /* Remove additional arrows from appearing on the BuddyPress' `my_account_menu`
62
- * on large screens. Add back arrows for screen widths 600px and lower.
63
- */
64
- #wpadminbar .wp-admin-bar-arrow-right {
65
- display: none;
66
- }
67
-
68
- @media screen and (max-width: 600px) {
69
-
70
- #wpadminbar .wp-admin-bar-arrow-right {
71
- display: block;
72
- }
73
- }
16
  #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul {
17
  left: 0;
18
  }
 
19
  #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul {
20
  left: 0;
21
  }
24
  #wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,
25
  #wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count,
26
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications {
27
+ background: #21759B;
28
  color: #fff;
29
  text-shadow: none;
30
  display: inline;
31
  padding: 2px 5px;
32
  font-size: 10px;
33
+ font-weight: bold;
34
  -moz-border-radius: 10px;
35
  -khtml-border-radius: 10px;
36
  -webkit-border-radius: 10px;
40
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications {
41
  background: #ddd;
42
  color: #333;
43
+ margin: 0
44
  }
45
 
46
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert {
47
+ background-color: #1fb3dd;
48
  color: #fff;
49
  }
50
 
51
  #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications > a {
52
+ padding: 0 .5em;
53
  }
54
 
55
  #wp-admin-bar-user-info img.avatar {
56
  height: 64px;
57
  width: 64px;
58
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/css/admin-bar.min.css CHANGED
@@ -1 +1 @@
1
- #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px 10px 0 -5px;padding:0;background:#eee;float:none}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul{left:0}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{left:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications,#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count{background:#21759b;color:#fff;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#ddd;color:#333;margin:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert{background-color:#21759b;color:#fff}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications>a{padding:0 .5em}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}#wpadminbar .wp-admin-bar-arrow-right{display:none}@media screen and (max-width:600px){#wpadminbar .wp-admin-bar-arrow-right{display:block}}
1
+ #wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px 10px 0 -5px;padding:0;background:#eee;float:none}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{left:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications,#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count{background:#21759B;color:#fff;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#ddd;color:#333;margin:0}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications.alert{background-color:#1fb3dd;color:#fff}#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications>a{padding:0 .5em}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}
bp-core/css/avatar-rtl.css CHANGED
@@ -30,7 +30,7 @@ div.bp-cover-image-status .bp-progress {
30
  border: 1px solid #d1d1d1;
31
  float: left;
32
  height: 22px;
33
- line-height: 2;
34
  margin: 6px 0 0 10px;
35
  margin-bottom: 2px;
36
  padding: 0;
@@ -55,7 +55,6 @@ div.bp-cover-image-status .bp-bar {
55
  padding: 10px 15px;
56
  }
57
 
58
- /* stylelint-disable selector-id-pattern */
59
  #buddypress p.warning,
60
  body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,
61
  body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
@@ -67,12 +66,11 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
67
  margin: 1em 0;
68
  padding: 10px 15px;
69
  }
70
- /* stylelint-enable */
71
 
72
  div.bp-avatar-nav {
73
  background: transparent;
74
  clear: both;
75
- margin: 10px 0;
76
  overflow: hidden;
77
  }
78
 
@@ -119,7 +117,7 @@ div.bp-avatar-nav {
119
  .bp-avatar-nav li.current a {
120
  background: none;
121
  color: inherit;
122
- font-weight: 700;
123
  opacity: 0.8;
124
  outline: 0;
125
  }
@@ -147,10 +145,6 @@ div.bp-avatar-nav {
147
  text-align: inherit;
148
  }
149
 
150
- .moxie-shim.moxie-shim-html5 input {
151
- cursor: pointer;
152
- }
153
-
154
  .drag-drop #drag-drop-area {
155
  box-sizing: border-box;
156
  display: table;
@@ -171,7 +165,7 @@ div.bp-avatar-nav {
171
  }
172
 
173
  .drag-drop .drag-drop-inside p {
174
- color: #767676;
175
  font-size: 110%;
176
  margin: 5px 0;
177
  text-align: center;
@@ -181,8 +175,14 @@ div.bp-avatar-nav {
181
  margin-top: 0;
182
  }
183
 
 
 
 
 
 
 
184
  #avatar-to-crop {
185
- margin: 0 auto 20px;
186
  text-align: right;
187
  }
188
 
@@ -222,7 +222,6 @@ div.bp-avatar-nav {
222
  }
223
 
224
  @media screen and (min-width: 801px) {
225
-
226
  #bp-webcam-avatar #avatar-to-crop {
227
  max-width: 64%;
228
  width: 64%;
@@ -235,7 +234,7 @@ div.bp-avatar-nav {
235
 
236
  #bp-webcam-avatar #avatar-crop-actions {
237
  float: right;
238
- margin: 0 0 20px;
239
  width: 50%;
240
  }
241
 
@@ -300,7 +299,7 @@ div.bp-avatar-nav {
300
  }
301
 
302
  .bp-avatar .item {
303
- overflow: hidden;
304
  }
305
 
306
  .bp-avatar .avatar-crop-management.adjust {
@@ -325,7 +324,7 @@ div.bp-avatar-nav {
325
  margin: 0 auto 10px;
326
  }
327
 
328
- #bp-webcam-avatar .avatar-crop-management #avatar-crop-actions {
329
  width: auto;
330
  }
331
 
@@ -350,9 +349,7 @@ div.bp-avatar-nav {
350
 
351
  }
352
 
353
-
354
  /** Admin Profile **/
355
- /* stylelint-disable selector-id-pattern */
356
  body.users_page_bp-profile-edit.modal-open #TB_ajaxContent,
357
  body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent {
358
  height: 95% !important;
@@ -371,11 +368,9 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
371
  float: right;
372
  margin: 0;
373
  }
374
-
375
  .wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop {
376
  margin-bottom: 20px;
377
  }
378
-
379
  @media screen and (min-width: 783px) {
380
 
381
  .wp-admin #TB_window .bp-avatar .avatar-crop-management {
@@ -390,8 +385,8 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
390
  }
391
 
392
  .wp-admin #TB_window .bp-avatar #avatar-to-crop video {
393
- width: 100%;
394
- }
395
 
396
  .wp-admin #TB_window .bp-avatar .avatar-crop-management a.button {
397
  height: auto;
@@ -399,7 +394,6 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
399
  }
400
 
401
  @media screen and (min-width: 810px) {
402
-
403
  .wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop {
404
  max-width: none;
405
  width: 76%;
@@ -410,4 +404,3 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
410
  width: auto;
411
  }
412
  }
413
- /* stylelint-enable */
30
  border: 1px solid #d1d1d1;
31
  float: left;
32
  height: 22px;
33
+ line-height: 2em;
34
  margin: 6px 0 0 10px;
35
  margin-bottom: 2px;
36
  padding: 0;
55
  padding: 10px 15px;
56
  }
57
 
 
58
  #buddypress p.warning,
59
  body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,
60
  body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
66
  margin: 1em 0;
67
  padding: 10px 15px;
68
  }
 
69
 
70
  div.bp-avatar-nav {
71
  background: transparent;
72
  clear: both;
73
+ margin: 10px 0 10px;
74
  overflow: hidden;
75
  }
76
 
117
  .bp-avatar-nav li.current a {
118
  background: none;
119
  color: inherit;
120
+ font-weight: bold;
121
  opacity: 0.8;
122
  outline: 0;
123
  }
145
  text-align: inherit;
146
  }
147
 
 
 
 
 
148
  .drag-drop #drag-drop-area {
149
  box-sizing: border-box;
150
  display: table;
165
  }
166
 
167
  .drag-drop .drag-drop-inside p {
168
+ color: #aaa;
169
  font-size: 110%;
170
  margin: 5px 0;
171
  text-align: center;
175
  margin-top: 0;
176
  }
177
 
178
+ @supports (-ms-accelerator:true) {
179
+ .drag-drop-inside p.drag-drop-info {
180
+ display: block;
181
+ }
182
+ }
183
+
184
  #avatar-to-crop {
185
+ margin: 0 auto 20px ;
186
  text-align: right;
187
  }
188
 
222
  }
223
 
224
  @media screen and (min-width: 801px) {
 
225
  #bp-webcam-avatar #avatar-to-crop {
226
  max-width: 64%;
227
  width: 64%;
234
 
235
  #bp-webcam-avatar #avatar-crop-actions {
236
  float: right;
237
+ margin: 0 0 20px 0;
238
  width: 50%;
239
  }
240
 
299
  }
300
 
301
  .bp-avatar .item {
302
+ overflow:hidden;
303
  }
304
 
305
  .bp-avatar .avatar-crop-management.adjust {
324
  margin: 0 auto 10px;
325
  }
326
 
327
+ #bp-webcam-avatar .avatar-crop-management #avatar-crop-actions {
328
  width: auto;
329
  }
330
 
349
 
350
  }
351
 
 
352
  /** Admin Profile **/
 
353
  body.users_page_bp-profile-edit.modal-open #TB_ajaxContent,
354
  body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent {
355
  height: 95% !important;
368
  float: right;
369
  margin: 0;
370
  }
 
371
  .wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop {
372
  margin-bottom: 20px;
373
  }
 
374
  @media screen and (min-width: 783px) {
375
 
376
  .wp-admin #TB_window .bp-avatar .avatar-crop-management {
385
  }
386
 
387
  .wp-admin #TB_window .bp-avatar #avatar-to-crop video {
388
+ width: 100%;
389
+ }
390
 
391
  .wp-admin #TB_window .bp-avatar .avatar-crop-management a.button {
392
  height: auto;
394
  }
395
 
396
  @media screen and (min-width: 810px) {
 
397
  .wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop {
398
  max-width: none;
399
  width: 76%;
404
  width: auto;
405
  }
406
  }
 
bp-core/css/avatar-rtl.min.css CHANGED
@@ -1 +1 @@
1
- div.bp-avatar-status,div.bp-cover-image-status{clear:both;margin:1em 0}div.bp-avatar-status p.updated,div.bp-cover-image-status p.updated{display:block;padding:10px 15px}div.bp-avatar-status p.success,div.bp-cover-image-status p.success{background-color:#efc;border:1px solid #591;color:#250}div.bp-avatar-status p.error,div.bp-cover-image-status p.error{background-color:#fdc;border:1px solid #a00;color:#800}div.bp-avatar-status .bp-progress,div.bp-cover-image-status .bp-progress{background:0 0;border:1px solid #d1d1d1;float:left;height:22px;line-height:2;margin:6px 0 0 10px;margin-bottom:2px;padding:0;overflow:hidden;width:200px}div.bp-avatar-status .bp-bar,div.bp-cover-image-status .bp-bar{background-color:#c3ff88;width:0;height:100%;z-index:9}.bp-uploader-progress div.error{background-color:#fdc;border:1px solid #a00;color:#800;display:block;font-size:90%;padding:10px 15px}#buddypress p.warning,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{background-color:#ffd;border:1px solid #cb2;color:#440;display:block;font-size:90%;margin:1em 0;padding:10px 15px}div.bp-avatar-nav{background:0 0;clear:both;margin:10px 0;overflow:hidden}.avatar-nav-items{margin:0;padding:0}.bp-avatar-nav .avatar-nav-items li.avatar-nav-item{float:right!important;margin:0;list-style:none}.avatar-nav-items li a{display:block;padding:5px 10px;text-decoration:none}.bp-avatar-nav ul:after,.bp-avatar-nav ul:before{content:" ";display:table}.bp-avatar-nav ul:after{clear:both}.bp-avatar-nav ul{border-bottom:1px solid #ccc;margin-bottom:10px}.bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid #ccc;border-bottom-color:#fff;border-top-right-radius:4px;border-top-left-radius:4px;margin-bottom:-1px}.bp-avatar-nav li.current a{background:0 0;color:inherit;font-weight:700;opacity:.8;outline:0}#drag-drop-area{border:4px dashed #bbb;height:200px}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}.drag-drop-inside p{display:none}.drag-drop-inside p.drag-drop-buttons{margin-top:80px;text-align:center}.drag-drop .drag-drop-inside p.drag-drop-buttons{margin:auto;text-align:inherit}.moxie-shim.moxie-shim-html5 input{cursor:pointer}.drag-drop #drag-drop-area{box-sizing:border-box;display:table;height:100%;width:100%}.drag-drop .drag-drop-inside{display:table-cell;padding:40px 0;text-align:center;vertical-align:middle}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop .drag-drop-inside p{color:#767676;font-size:110%;margin:5px 0;text-align:center}.drag-drop-inside p.drag-drop-info{margin-top:0}#avatar-to-crop{margin:0 auto 20px;text-align:right}#bp-webcam-avatar #avatar-to-crop{float:right;margin:0 0 20px}#avatar-to-crop .jcrop-holder{margin:0 auto}.avatar-crop-management{clear:right;overflow:hidden;padding-top:20px;text-align:center}#bp-webcam-avatar .avatar-crop-management{clear:none;float:none;overflow:visible;padding-top:0;width:auto}#avatar-crop-pane{margin:0 auto;overflow:hidden}#bp-webcam-avatar #avatar-to-crop{border:1px solid #eee;max-width:100%;width:100%}@media screen and (min-width:801px){#bp-webcam-avatar #avatar-to-crop{max-width:64%;width:64%}}#avatar-crop-actions a{display:block}#bp-webcam-avatar #avatar-crop-actions{float:right;margin:0 0 20px;width:50%}#avatar-crop-actions a.button{margin-top:10px}#bp-webcam-avatar #avatar-crop-actions a.button{display:block;margin:0 0 5px;padding:4px 0;width:100%}#avatar-crop-pane canvas,#avatar-crop-pane img,#avatar-to-crop img,#avatar-upload-form img,#create-group-form img,#group-settings-form img{border:none!important;max-width:none!important}#bp-webcam-avatar video{float:right;margin-bottom:0;max-width:100%;width:100%;-webkit-transform:scaleX(-1);transform:scaleX(-1)}#bp-webcam-avatar #avatar-crop-pane{border:2px dashed #bbb;clear:right;float:left;margin:0 0 10px 40px;overflow:hidden}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{max-width:150px;max-height:150px}#avatar-crop-pane canvas{height:auto;width:100%;max-width:100%}.group-avatar .bp-avatar .avatar-crop-management{margin-right:0;padding-top:0;width:auto}.bp-avatar .item{overflow:hidden}.bp-avatar .avatar-crop-management.adjust{float:right;clear:none;padding-top:0}.bp-avatar #avatar-to-crop.adjust{float:right;margin-left:20px}@media screen and (max-width:480px){#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions,#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{width:auto}}@media screen and (min-width:801px){#bp-webcam-avatar .avatar-crop-management{clear:none;float:left}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none;margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{float:right;width:100%}}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent{height:95%!important;width:95%!important}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{display:block;padding:10px 15px}.wp-admin #TB_window .bp-avatar #avatar-to-crop{float:right;margin:0}.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{margin-bottom:20px}@media screen and (min-width:783px){.wp-admin #TB_window .bp-avatar .avatar-crop-management{clear:none;float:right;margin-right:20px;padding-top:0;text-align:center}}.wp-admin #TB_window .bp-avatar #avatar-to-crop video{width:100%}.wp-admin #TB_window .bp-avatar .avatar-crop-management a.button{height:auto;line-height:inherit}@media screen and (min-width:810px){.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{max-width:none;width:76%}.wp-admin #TB_window #bp-webcam-avatar .avatar-crop-management{max-width:none;width:auto}}
1
+ div.bp-avatar-status,div.bp-cover-image-status{clear:both;margin:1em 0}div.bp-avatar-status p.updated,div.bp-cover-image-status p.updated{display:block;padding:10px 15px}div.bp-avatar-status p.success,div.bp-cover-image-status p.success{background-color:#efc;border:1px solid #591;color:#250}div.bp-avatar-status p.error,div.bp-cover-image-status p.error{background-color:#fdc;border:1px solid #a00;color:#800}div.bp-avatar-status .bp-progress,div.bp-cover-image-status .bp-progress{background:0 0;border:1px solid #d1d1d1;float:left;height:22px;line-height:2em;margin:6px 0 2px 10px;padding:0;overflow:hidden;width:200px}div.bp-avatar-status .bp-bar,div.bp-cover-image-status .bp-bar{background-color:#c3ff88;width:0;height:100%;z-index:9}.bp-uploader-progress div.error{background-color:#fdc;border:1px solid #a00;color:#800;display:block;font-size:90%;padding:10px 15px}#buddypress p.warning,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{background-color:#ffd;border:1px solid #cb2;color:#440;display:block;font-size:90%;margin:1em 0;padding:10px 15px}div.bp-avatar-nav{background:0 0;clear:both;margin:10px 0;overflow:hidden}.avatar-nav-items{margin:0;padding:0}.bp-avatar-nav .avatar-nav-items li.avatar-nav-item{float:right!important;margin:0;list-style:none}.avatar-nav-items li a{display:block;padding:5px 10px;text-decoration:none}.bp-avatar-nav ul:after,.bp-avatar-nav ul:before{content:" ";display:table}.bp-avatar-nav ul:after{clear:both}.bp-avatar-nav ul{border-bottom:1px solid #ccc;margin-bottom:10px}.bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid #ccc;border-bottom-color:#fff;border-top-right-radius:4px;border-top-left-radius:4px;margin-bottom:-1px}.bp-avatar-nav li.current a{background:0 0;color:inherit;font-weight:700;opacity:.8;outline:0}#drag-drop-area{border:4px dashed #bbb;height:200px}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}.drag-drop-inside p{display:none}.drag-drop-inside p.drag-drop-buttons{margin-top:80px;text-align:center}.drag-drop .drag-drop-inside p.drag-drop-buttons{margin:auto;text-align:inherit}.drag-drop #drag-drop-area{box-sizing:border-box;display:table;height:100%;width:100%}.drag-drop .drag-drop-inside{display:table-cell;padding:40px 0;text-align:center;vertical-align:middle}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop .drag-drop-inside p{color:#aaa;font-size:110%;margin:5px 0;text-align:center}.drag-drop-inside p.drag-drop-info{margin-top:0}@supports (-ms-accelerator:true){.drag-drop-inside p.drag-drop-info{display:block}}#avatar-to-crop{margin:0 auto 20px;text-align:right}#bp-webcam-avatar #avatar-to-crop{float:right;margin:0 0 20px}#avatar-to-crop .jcrop-holder{margin:0 auto}.avatar-crop-management{clear:right;overflow:hidden;padding-top:20px;text-align:center}#bp-webcam-avatar .avatar-crop-management{clear:none;float:none;overflow:visible;padding-top:0;width:auto}#avatar-crop-pane{margin:0 auto;overflow:hidden}#bp-webcam-avatar #avatar-to-crop{border:1px solid #eee;max-width:100%;width:100%}@media screen and (min-width:801px){#bp-webcam-avatar #avatar-to-crop{max-width:64%;width:64%}}#avatar-crop-actions a{display:block}#bp-webcam-avatar #avatar-crop-actions{float:right;margin:0 0 20px;width:50%}#avatar-crop-actions a.button{margin-top:10px}#bp-webcam-avatar #avatar-crop-actions a.button{display:block;margin:0 0 5px;padding:4px 0;width:100%}#avatar-crop-pane canvas,#avatar-crop-pane img,#avatar-to-crop img,#avatar-upload-form img,#create-group-form img,#group-settings-form img{border:none!important;max-width:none!important}#bp-webcam-avatar video{float:right;margin-bottom:0;max-width:100%;width:100%;-webkit-transform:scaleX(-1);transform:scaleX(-1)}#bp-webcam-avatar #avatar-crop-pane{border:2px dashed #bbb;clear:right;float:left;margin:0 0 10px 40px;overflow:hidden}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{max-width:150px;max-height:150px}#avatar-crop-pane canvas{height:auto;width:100%;max-width:100%}.group-avatar .bp-avatar .avatar-crop-management{margin-right:0;padding-top:0;width:auto}.bp-avatar .item{overflow:hidden}.bp-avatar .avatar-crop-management.adjust{float:right;clear:none;padding-top:0}.bp-avatar #avatar-to-crop.adjust{float:right;margin-left:20px}@media screen and (max-width:480px){#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions,#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{width:auto}}@media screen and (min-width:801px){#bp-webcam-avatar .avatar-crop-management{clear:none;float:left}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none;margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{float:right;width:100%}}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent{height:95%!important;width:95%!important}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{display:block;padding:10px 15px}.wp-admin #TB_window .bp-avatar #avatar-to-crop{float:right;margin:0}.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{margin-bottom:20px}@media screen and (min-width:783px){.wp-admin #TB_window .bp-avatar .avatar-crop-management{clear:none;float:right;margin-right:20px;padding-top:0;text-align:center}}.wp-admin #TB_window .bp-avatar #avatar-to-crop video{width:100%}.wp-admin #TB_window .bp-avatar .avatar-crop-management a.button{height:auto;line-height:inherit}@media screen and (min-width:810px){.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{max-width:none;width:76%}.wp-admin #TB_window #bp-webcam-avatar .avatar-crop-management{max-width:none;width:auto}}
bp-core/css/avatar.css CHANGED
@@ -30,7 +30,7 @@ div.bp-cover-image-status .bp-progress {
30
  border: 1px solid #d1d1d1;
31
  float: right;
32
  height: 22px;
33
- line-height: 2;
34
  margin: 6px 10px 0 0;
35
  margin-bottom: 2px;
36
  padding: 0;
@@ -55,7 +55,6 @@ div.bp-cover-image-status .bp-bar {
55
  padding: 10px 15px;
56
  }
57
 
58
- /* stylelint-disable selector-id-pattern */
59
  #buddypress p.warning,
60
  body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,
61
  body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
@@ -67,12 +66,11 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
67
  margin: 1em 0;
68
  padding: 10px 15px;
69
  }
70
- /* stylelint-enable */
71
 
72
  div.bp-avatar-nav {
73
  background: transparent;
74
  clear: both;
75
- margin: 10px 0;
76
  overflow: hidden;
77
  }
78
 
@@ -119,7 +117,7 @@ div.bp-avatar-nav {
119
  .bp-avatar-nav li.current a {
120
  background: none;
121
  color: inherit;
122
- font-weight: 700;
123
  opacity: 0.8;
124
  outline: 0;
125
  }
@@ -147,10 +145,6 @@ div.bp-avatar-nav {
147
  text-align: inherit;
148
  }
149
 
150
- .moxie-shim.moxie-shim-html5 input {
151
- cursor: pointer;
152
- }
153
-
154
  .drag-drop #drag-drop-area {
155
  box-sizing: border-box;
156
  display: table;
@@ -171,7 +165,7 @@ div.bp-avatar-nav {
171
  }
172
 
173
  .drag-drop .drag-drop-inside p {
174
- color: #767676;
175
  font-size: 110%;
176
  margin: 5px 0;
177
  text-align: center;
@@ -181,8 +175,14 @@ div.bp-avatar-nav {
181
  margin-top: 0;
182
  }
183
 
 
 
 
 
 
 
184
  #avatar-to-crop {
185
- margin: 0 auto 20px;
186
  text-align: left;
187
  }
188
 
@@ -222,7 +222,6 @@ div.bp-avatar-nav {
222
  }
223
 
224
  @media screen and (min-width: 801px) {
225
-
226
  #bp-webcam-avatar #avatar-to-crop {
227
  max-width: 64%;
228
  width: 64%;
@@ -235,7 +234,7 @@ div.bp-avatar-nav {
235
 
236
  #bp-webcam-avatar #avatar-crop-actions {
237
  float: left;
238
- margin: 0 0 20px;
239
  width: 50%;
240
  }
241
 
@@ -300,7 +299,7 @@ div.bp-avatar-nav {
300
  }
301
 
302
  .bp-avatar .item {
303
- overflow: hidden;
304
  }
305
 
306
  .bp-avatar .avatar-crop-management.adjust {
@@ -325,7 +324,7 @@ div.bp-avatar-nav {
325
  margin: 0 auto 10px;
326
  }
327
 
328
- #bp-webcam-avatar .avatar-crop-management #avatar-crop-actions {
329
  width: auto;
330
  }
331
 
@@ -350,9 +349,7 @@ div.bp-avatar-nav {
350
 
351
  }
352
 
353
-
354
  /** Admin Profile **/
355
- /* stylelint-disable selector-id-pattern */
356
  body.users_page_bp-profile-edit.modal-open #TB_ajaxContent,
357
  body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent {
358
  height: 95% !important;
@@ -371,11 +368,9 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
371
  float: left;
372
  margin: 0;
373
  }
374
-
375
  .wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop {
376
  margin-bottom: 20px;
377
  }
378
-
379
  @media screen and (min-width: 783px) {
380
 
381
  .wp-admin #TB_window .bp-avatar .avatar-crop-management {
@@ -390,8 +385,8 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
390
  }
391
 
392
  .wp-admin #TB_window .bp-avatar #avatar-to-crop video {
393
- width: 100%;
394
- }
395
 
396
  .wp-admin #TB_window .bp-avatar .avatar-crop-management a.button {
397
  height: auto;
@@ -399,7 +394,6 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
399
  }
400
 
401
  @media screen and (min-width: 810px) {
402
-
403
  .wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop {
404
  max-width: none;
405
  width: 76%;
@@ -410,4 +404,3 @@ body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
410
  width: auto;
411
  }
412
  }
413
- /* stylelint-enable */
30
  border: 1px solid #d1d1d1;
31
  float: right;
32
  height: 22px;
33
+ line-height: 2em;
34
  margin: 6px 10px 0 0;
35
  margin-bottom: 2px;
36
  padding: 0;
55
  padding: 10px 15px;
56
  }
57
 
 
58
  #buddypress p.warning,
59
  body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,
60
  body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning {
66
  margin: 1em 0;
67
  padding: 10px 15px;
68
  }
 
69
 
70
  div.bp-avatar-nav {
71
  background: transparent;
72
  clear: both;
73
+ margin: 10px 0 10px;
74
  overflow: hidden;
75
  }
76
 
117
  .bp-avatar-nav li.current a {
118
  background: none;
119
  color: inherit;
120
+ font-weight: bold;
121
  opacity: 0.8;
122
  outline: 0;
123
  }
145
  text-align: inherit;
146
  }
147
 
 
 
 
 
148
  .drag-drop #drag-drop-area {
149
  box-sizing: border-box;
150
  display: table;
165
  }
166
 
167
  .drag-drop .drag-drop-inside p {
168
+ color: #aaa;
169
  font-size: 110%;
170
  margin: 5px 0;
171
  text-align: center;
175
  margin-top: 0;
176
  }
177
 
178
+ @supports (-ms-accelerator:true) {
179
+ .drag-drop-inside p.drag-drop-info {
180
+ display: block;
181
+ }
182
+ }
183
+
184
  #avatar-to-crop {
185
+ margin: 0 auto 20px ;
186
  text-align: left;
187
  }
188
 
222
  }
223
 
224
  @media screen and (min-width: 801px) {
 
225
  #bp-webcam-avatar #avatar-to-crop {
226
  max-width: 64%;
227
  width: 64%;
234
 
235
  #bp-webcam-avatar #avatar-crop-actions {
236
  float: left;
237
+ margin: 0 0 20px 0;
238
  width: 50%;
239
  }
240
 
299
  }
300
 
301
  .bp-avatar .item {
302
+ overflow:hidden;
303
  }
304
 
305
  .bp-avatar .avatar-crop-management.adjust {
324
  margin: 0 auto 10px;
325
  }
326
 
327
+ #bp-webcam-avatar .avatar-crop-management #avatar-crop-actions {
328
  width: auto;
329
  }
330
 
349
 
350
  }
351
 
 
352
  /** Admin Profile **/
 
353
  body.users_page_bp-profile-edit.modal-open #TB_ajaxContent,
354
  body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent {
355
  height: 95% !important;
368
  float: left;
369
  margin: 0;
370
  }
 
371
  .wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop {
372
  margin-bottom: 20px;
373
  }
 
374
  @media screen and (min-width: 783px) {
375
 
376
  .wp-admin #TB_window .bp-avatar .avatar-crop-management {
385
  }
386
 
387
  .wp-admin #TB_window .bp-avatar #avatar-to-crop video {
388
+ width: 100%;
389
+ }
390
 
391
  .wp-admin #TB_window .bp-avatar .avatar-crop-management a.button {
392
  height: auto;
394
  }
395
 
396
  @media screen and (min-width: 810px) {
 
397
  .wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop {
398
  max-width: none;
399
  width: 76%;
404
  width: auto;
405
  }
406
  }
 
bp-core/css/avatar.min.css CHANGED
@@ -1 +1 @@
1
- div.bp-avatar-status,div.bp-cover-image-status{clear:both;margin:1em 0}div.bp-avatar-status p.updated,div.bp-cover-image-status p.updated{display:block;padding:10px 15px}div.bp-avatar-status p.success,div.bp-cover-image-status p.success{background-color:#efc;border:1px solid #591;color:#250}div.bp-avatar-status p.error,div.bp-cover-image-status p.error{background-color:#fdc;border:1px solid #a00;color:#800}div.bp-avatar-status .bp-progress,div.bp-cover-image-status .bp-progress{background:0 0;border:1px solid #d1d1d1;float:right;height:22px;line-height:2;margin:6px 10px 0 0;margin-bottom:2px;padding:0;overflow:hidden;width:200px}div.bp-avatar-status .bp-bar,div.bp-cover-image-status .bp-bar{background-color:#c3ff88;width:0;height:100%;z-index:9}.bp-uploader-progress div.error{background-color:#fdc;border:1px solid #a00;color:#800;display:block;font-size:90%;padding:10px 15px}#buddypress p.warning,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{background-color:#ffd;border:1px solid #cb2;color:#440;display:block;font-size:90%;margin:1em 0;padding:10px 15px}div.bp-avatar-nav{background:0 0;clear:both;margin:10px 0;overflow:hidden}.avatar-nav-items{margin:0;padding:0}.bp-avatar-nav .avatar-nav-items li.avatar-nav-item{float:left!important;margin:0;list-style:none}.avatar-nav-items li a{display:block;padding:5px 10px;text-decoration:none}.bp-avatar-nav ul:after,.bp-avatar-nav ul:before{content:" ";display:table}.bp-avatar-nav ul:after{clear:both}.bp-avatar-nav ul{border-bottom:1px solid #ccc;margin-bottom:10px}.bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid #ccc;border-bottom-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;margin-bottom:-1px}.bp-avatar-nav li.current a{background:0 0;color:inherit;font-weight:700;opacity:.8;outline:0}#drag-drop-area{border:4px dashed #bbb;height:200px}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}.drag-drop-inside p{display:none}.drag-drop-inside p.drag-drop-buttons{margin-top:80px;text-align:center}.drag-drop .drag-drop-inside p.drag-drop-buttons{margin:auto;text-align:inherit}.moxie-shim.moxie-shim-html5 input{cursor:pointer}.drag-drop #drag-drop-area{box-sizing:border-box;display:table;height:100%;width:100%}.drag-drop .drag-drop-inside{display:table-cell;padding:40px 0;text-align:center;vertical-align:middle}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop .drag-drop-inside p{color:#767676;font-size:110%;margin:5px 0;text-align:center}.drag-drop-inside p.drag-drop-info{margin-top:0}#avatar-to-crop{margin:0 auto 20px;text-align:left}#bp-webcam-avatar #avatar-to-crop{float:left;margin:0 0 20px}#avatar-to-crop .jcrop-holder{margin:0 auto}.avatar-crop-management{clear:left;overflow:hidden;padding-top:20px;text-align:center}#bp-webcam-avatar .avatar-crop-management{clear:none;float:none;overflow:visible;padding-top:0;width:auto}#avatar-crop-pane{margin:0 auto;overflow:hidden}#bp-webcam-avatar #avatar-to-crop{border:1px solid #eee;max-width:100%;width:100%}@media screen and (min-width:801px){#bp-webcam-avatar #avatar-to-crop{max-width:64%;width:64%}}#avatar-crop-actions a{display:block}#bp-webcam-avatar #avatar-crop-actions{float:left;margin:0 0 20px;width:50%}#avatar-crop-actions a.button{margin-top:10px}#bp-webcam-avatar #avatar-crop-actions a.button{display:block;margin:0 0 5px;padding:4px 0;width:100%}#avatar-crop-pane canvas,#avatar-crop-pane img,#avatar-to-crop img,#avatar-upload-form img,#create-group-form img,#group-settings-form img{border:none!important;max-width:none!important}#bp-webcam-avatar video{float:left;margin-bottom:0;max-width:100%;width:100%;-webkit-transform:scaleX(-1);transform:scaleX(-1)}#bp-webcam-avatar #avatar-crop-pane{border:2px dashed #bbb;clear:left;float:right;margin:0 40px 10px 0;overflow:hidden}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{max-width:150px;max-height:150px}#avatar-crop-pane canvas{height:auto;width:100%;max-width:100%}.group-avatar .bp-avatar .avatar-crop-management{margin-left:0;padding-top:0;width:auto}.bp-avatar .item{overflow:hidden}.bp-avatar .avatar-crop-management.adjust{float:left;clear:none;padding-top:0}.bp-avatar #avatar-to-crop.adjust{float:left;margin-right:20px}@media screen and (max-width:480px){#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions,#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{width:auto}}@media screen and (min-width:801px){#bp-webcam-avatar .avatar-crop-management{clear:none;float:right}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none;margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{float:left;width:100%}}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent{height:95%!important;width:95%!important}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{display:block;padding:10px 15px}.wp-admin #TB_window .bp-avatar #avatar-to-crop{float:left;margin:0}.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{margin-bottom:20px}@media screen and (min-width:783px){.wp-admin #TB_window .bp-avatar .avatar-crop-management{clear:none;float:left;margin-left:20px;padding-top:0;text-align:center}}.wp-admin #TB_window .bp-avatar #avatar-to-crop video{width:100%}.wp-admin #TB_window .bp-avatar .avatar-crop-management a.button{height:auto;line-height:inherit}@media screen and (min-width:810px){.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{max-width:none;width:76%}.wp-admin #TB_window #bp-webcam-avatar .avatar-crop-management{max-width:none;width:auto}}
1
+ div.bp-avatar-status,div.bp-cover-image-status{clear:both;margin:1em 0}div.bp-avatar-status p.updated,div.bp-cover-image-status p.updated{display:block;padding:10px 15px}div.bp-avatar-status p.success,div.bp-cover-image-status p.success{background-color:#efc;border:1px solid #591;color:#250}div.bp-avatar-status p.error,div.bp-cover-image-status p.error{background-color:#fdc;border:1px solid #a00;color:#800}div.bp-avatar-status .bp-progress,div.bp-cover-image-status .bp-progress{background:0 0;border:1px solid #d1d1d1;float:right;height:22px;line-height:2em;margin:6px 10px 2px 0;padding:0;overflow:hidden;width:200px}div.bp-avatar-status .bp-bar,div.bp-cover-image-status .bp-bar{background-color:#c3ff88;width:0;height:100%;z-index:9}.bp-uploader-progress div.error{background-color:#fdc;border:1px solid #a00;color:#800;display:block;font-size:90%;padding:10px 15px}#buddypress p.warning,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{background-color:#ffd;border:1px solid #cb2;color:#440;display:block;font-size:90%;margin:1em 0;padding:10px 15px}div.bp-avatar-nav{background:0 0;clear:both;margin:10px 0;overflow:hidden}.avatar-nav-items{margin:0;padding:0}.bp-avatar-nav .avatar-nav-items li.avatar-nav-item{float:left!important;margin:0;list-style:none}.avatar-nav-items li a{display:block;padding:5px 10px;text-decoration:none}.bp-avatar-nav ul:after,.bp-avatar-nav ul:before{content:" ";display:table}.bp-avatar-nav ul:after{clear:both}.bp-avatar-nav ul{border-bottom:1px solid #ccc;margin-bottom:10px}.bp-avatar-nav ul.avatar-nav-items li.current{border:1px solid #ccc;border-bottom-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;margin-bottom:-1px}.bp-avatar-nav li.current a{background:0 0;color:inherit;font-weight:700;opacity:.8;outline:0}#drag-drop-area{border:4px dashed #bbb;height:200px}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}.drag-drop-inside p{display:none}.drag-drop-inside p.drag-drop-buttons{margin-top:80px;text-align:center}.drag-drop .drag-drop-inside p.drag-drop-buttons{margin:auto;text-align:inherit}.drag-drop #drag-drop-area{box-sizing:border-box;display:table;height:100%;width:100%}.drag-drop .drag-drop-inside{display:table-cell;padding:40px 0;text-align:center;vertical-align:middle}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop .drag-drop-inside p{color:#aaa;font-size:110%;margin:5px 0;text-align:center}.drag-drop-inside p.drag-drop-info{margin-top:0}@supports (-ms-accelerator:true){.drag-drop-inside p.drag-drop-info{display:block}}#avatar-to-crop{margin:0 auto 20px;text-align:left}#bp-webcam-avatar #avatar-to-crop{float:left;margin:0 0 20px}#avatar-to-crop .jcrop-holder{margin:0 auto}.avatar-crop-management{clear:left;overflow:hidden;padding-top:20px;text-align:center}#bp-webcam-avatar .avatar-crop-management{clear:none;float:none;overflow:visible;padding-top:0;width:auto}#avatar-crop-pane{margin:0 auto;overflow:hidden}#bp-webcam-avatar #avatar-to-crop{border:1px solid #eee;max-width:100%;width:100%}@media screen and (min-width:801px){#bp-webcam-avatar #avatar-to-crop{max-width:64%;width:64%}}#avatar-crop-actions a{display:block}#bp-webcam-avatar #avatar-crop-actions{float:left;margin:0 0 20px;width:50%}#avatar-crop-actions a.button{margin-top:10px}#bp-webcam-avatar #avatar-crop-actions a.button{display:block;margin:0 0 5px;padding:4px 0;width:100%}#avatar-crop-pane canvas,#avatar-crop-pane img,#avatar-to-crop img,#avatar-upload-form img,#create-group-form img,#group-settings-form img{border:none!important;max-width:none!important}#bp-webcam-avatar video{float:left;margin-bottom:0;max-width:100%;width:100%;-webkit-transform:scaleX(-1);transform:scaleX(-1)}#bp-webcam-avatar #avatar-crop-pane{border:2px dashed #bbb;clear:left;float:right;margin:0 40px 10px 0;overflow:hidden}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{max-width:150px;max-height:150px}#avatar-crop-pane canvas{height:auto;width:100%;max-width:100%}.group-avatar .bp-avatar .avatar-crop-management{margin-left:0;padding-top:0;width:auto}.bp-avatar .item{overflow:hidden}.bp-avatar .avatar-crop-management.adjust{float:left;clear:none;padding-top:0}.bp-avatar #avatar-to-crop.adjust{float:left;margin-right:20px}@media screen and (max-width:480px){#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions,#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{width:auto}}@media screen and (min-width:801px){#bp-webcam-avatar .avatar-crop-management{clear:none;float:right}#bp-webcam-avatar .avatar-crop-management #avatar-crop-pane{float:none;margin:0 auto 10px}#bp-webcam-avatar .avatar-crop-management #avatar-crop-actions{float:left;width:100%}}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent{height:95%!important;width:95%!important}body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.profile_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.updated,body.users_page_bp-profile-edit.modal-open #TB_ajaxContent p.warning{display:block;padding:10px 15px}.wp-admin #TB_window .bp-avatar #avatar-to-crop{float:left;margin:0}.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{margin-bottom:20px}@media screen and (min-width:783px){.wp-admin #TB_window .bp-avatar .avatar-crop-management{clear:none;float:left;margin-left:20px;padding-top:0;text-align:center}}.wp-admin #TB_window .bp-avatar #avatar-to-crop video{width:100%}.wp-admin #TB_window .bp-avatar .avatar-crop-management a.button{height:auto;line-height:inherit}@media screen and (min-width:810px){.wp-admin #TB_window .bp-avatar #bp-webcam-avatar #avatar-to-crop{max-width:none;width:76%}.wp-admin #TB_window #bp-webcam-avatar .avatar-crop-management{max-width:none;width:auto}}
bp-core/css/buddybar-rtl.css CHANGED
@@ -1,7 +1,6 @@
1
  body:not(.wp-admin) {
2
  padding-top: 25px !important;
3
  }
4
-
5
  #wp-admin-bar {
6
  position: fixed;
7
  top: 0;
@@ -11,76 +10,63 @@ body:not(.wp-admin) {
11
  width: 100%;
12
  z-index: 9999;
13
  }
14
-
15
  #wp-admin-bar .padder {
16
  position: relative;
17
  padding: 0;
18
  width: 100%;
19
  margin: 0 auto;
20
- background: url(../images/60pc_black.png);
21
  height: 25px;
22
  }
23
-
24
  body#bp-default #wp-admin-bar .padder {
25
  max-width: 1250px;
26
  }
27
-
28
  #wp-admin-bar * {
29
  z-index: 999;
30
  }
31
-
32
  #wp-admin-bar div#admin-bar-logo {
33
  position: absolute;
34
  top: 5px;
35
  right: 10px;
36
  }
37
-
38
  #wp-admin-bar a img {
39
  border: none;
40
  }
41
-
42
  #wp-admin-bar li {
43
  list-style: none;
44
  margin: 0;
45
  padding: 0;
46
- line-height: 1;
47
  text-align: right;
48
  }
49
-
50
  #wp-admin-bar li a {
51
- padding: 7px 15px;
52
  color: #eee;
53
  text-decoration: none;
54
  font-size: 11px;
55
  }
56
-
57
  #wp-admin-bar li.alt {
58
  border: none;
59
  }
60
-
61
  #wp-admin-bar li.no-arrow a {
62
  padding-left: 15px;
63
  }
64
-
65
  #wp-admin-bar ul li ul li a span {
66
  display: none;
67
  }
68
-
69
  #wp-admin-bar li:hover,
70
  #wp-admin-bar li.hover {
71
  position: static;
72
  }
73
-
74
  #admin-bar-logo {
75
  float: right;
76
- font-weight: 700;
77
  font-size: 11px;
78
  padding: 5px 8px;
79
  margin: 0;
80
  text-decoration: none;
81
  color: #fff;
82
  }
83
-
84
  body#bp-default #admin-bar-logo {
85
  padding: 2px 8px;
86
  }
@@ -100,28 +86,23 @@ body#bp-default #admin-bar-logo {
100
  padding: 0;
101
  float: right;
102
  position: relative;
103
- background: url(../images/admin-menu-arrow.gif) 12% 53% no-repeat;
104
  padding-left: 11px;
105
  }
106
-
107
  #wp-admin-bar ul li.no-arrow {
108
  background: none;
109
  padding-left: 0;
110
  }
111
-
112
  #wp-admin-bar ul li ul li {
113
  background-image: none;
114
  }
115
-
116
  #wp-admin-bar ul li.align-right {
117
  position: absolute;
118
  left: 0;
119
  }
120
-
121
  #wp-admin-bar ul li a {
122
  display: block;
123
  }
124
-
125
  #wp-admin-bar ul.main-nav li:hover,
126
  #wp-admin-bar ul.main-nav li.sfhover,
127
  #wp-admin-bar ul.main-nav li ul li.sfhover {
@@ -145,29 +126,23 @@ body#bp-default #admin-bar-logo {
145
  -moz-border-radius-topleft: 0;
146
  -webkit-border-top-left-radius: 0;
147
  }
148
-
149
  #wp-admin-bar ul li > ul {
150
  border-top: none;
151
  }
152
-
153
  #wp-admin-bar ul li ul a {
154
  color: #eee;
155
  }
156
-
157
  #wp-admin-bar ul li ul li {
158
  float: right;
159
  width: 174px;
160
  margin: 0;
161
  }
162
-
163
  #wp-admin-bar ul li ul li:hover a {
164
  color: #fff;
165
  }
166
-
167
  #wp-admin-bar ul li div.admin-bar-clear {
168
  clear: both;
169
  }
170
-
171
  #wp-admin-bar ul.main-nav li ul li:hover,
172
  #wp-admin-bar ul.main-nav li ul li.sfhover,
173
  #wp-admin-bar ul.main-nav li ul li.sfhover {
@@ -180,26 +155,21 @@ body#bp-default #admin-bar-logo {
180
  -moz-border-radius: 3px;
181
  -webkit-border-radius: 3px;
182
  }
183
-
184
  #wp-admin-bar ul li ul li:hover ul li a {
185
  color: #eee;
186
  }
187
-
188
  #wp-admin-bar ul li ul li ul li:hover a {
189
  color: #fff;
190
  }
191
-
192
  #wp-admin-bar ul li:hover ul,
193
  #wp-admin-bar ul li ul li:hover ul,
194
  #wp-admin-bar ul li.sfhover ul,
195
  #wp-admin-bar ul li ul li.sfhover ul {
196
  right: auto;
197
  }
198
-
199
  #wp-admin-bar ul li.align-right:hover ul {
200
  left: 0;
201
  }
202
-
203
  #wp-admin-bar ul li:hover ul ul,
204
  #wp-admin-bar li.sfhover ul li ul {
205
  right: -999em;
@@ -210,17 +180,14 @@ body#bp-default #admin-bar-logo {
210
  float: right;
211
  margin-left: 8px;
212
  }
213
-
214
  #wp-admin-bar span.activity {
215
  display: block;
216
  margin-right: 34px;
217
  padding: 0;
218
  }
219
-
220
  #wp-admin-bar ul.author-list li a {
221
  height: 17px;
222
  }
223
-
224
  #wp-admin-bar ul li#bp-adminbar-notifications-menu a span {
225
  padding: 0 6px;
226
  margin-right: 2px;
@@ -230,7 +197,6 @@ body#bp-default #admin-bar-logo {
230
  -webkit-border-radius: 3px;
231
  border-radius: 3px;
232
  }
233
-
234
  #wp-admin-bar-user-info img.avatar {
235
  height: 64px;
236
  width: 64px;
1
  body:not(.wp-admin) {
2
  padding-top: 25px !important;
3
  }
 
4
  #wp-admin-bar {
5
  position: fixed;
6
  top: 0;
10
  width: 100%;
11
  z-index: 9999;
12
  }
 
13
  #wp-admin-bar .padder {
14
  position: relative;
15
  padding: 0;
16
  width: 100%;
17
  margin: 0 auto;
18
+ background: url('../images/60pc_black.png');
19
  height: 25px;
20
  }
 
21
  body#bp-default #wp-admin-bar .padder {
22
  max-width: 1250px;
23
  }
 
24
  #wp-admin-bar * {
25
  z-index: 999;
26
  }
 
27
  #wp-admin-bar div#admin-bar-logo {
28
  position: absolute;
29
  top: 5px;
30
  right: 10px;
31
  }
 
32
  #wp-admin-bar a img {
33
  border: none;
34
  }
 
35
  #wp-admin-bar li {
36
  list-style: none;
37
  margin: 0;
38
  padding: 0;
39
+ line-height: 100%;
40
  text-align: right;
41
  }
 
42
  #wp-admin-bar li a {
43
+ padding: 7px 15px 7px 15px;
44
  color: #eee;
45
  text-decoration: none;
46
  font-size: 11px;
47
  }
 
48
  #wp-admin-bar li.alt {
49
  border: none;
50
  }
 
51
  #wp-admin-bar li.no-arrow a {
52
  padding-left: 15px;
53
  }
 
54
  #wp-admin-bar ul li ul li a span {
55
  display: none;
56
  }
 
57
  #wp-admin-bar li:hover,
58
  #wp-admin-bar li.hover {
59
  position: static;
60
  }
 
61
  #admin-bar-logo {
62
  float: right;
63
+ font-weight: bold;
64
  font-size: 11px;
65
  padding: 5px 8px;
66
  margin: 0;
67
  text-decoration: none;
68
  color: #fff;
69
  }
 
70
  body#bp-default #admin-bar-logo {
71
  padding: 2px 8px;
72
  }
86
  padding: 0;
87
  float: right;
88
  position: relative;
89
+ background: url('../images/admin-menu-arrow.gif') 88% 53% no-repeat;
90
  padding-left: 11px;
91
  }
 
92
  #wp-admin-bar ul li.no-arrow {
93
  background: none;
94
  padding-left: 0;
95
  }
 
96
  #wp-admin-bar ul li ul li {
97
  background-image: none;
98
  }
 
99
  #wp-admin-bar ul li.align-right {
100
  position: absolute;
101
  left: 0;
102
  }
 
103
  #wp-admin-bar ul li a {
104
  display: block;
105
  }
 
106
  #wp-admin-bar ul.main-nav li:hover,
107
  #wp-admin-bar ul.main-nav li.sfhover,
108
  #wp-admin-bar ul.main-nav li ul li.sfhover {
126
  -moz-border-radius-topleft: 0;
127
  -webkit-border-top-left-radius: 0;
128
  }
 
129
  #wp-admin-bar ul li > ul {
130
  border-top: none;
131
  }
 
132
  #wp-admin-bar ul li ul a {
133
  color: #eee;
134
  }
 
135
  #wp-admin-bar ul li ul li {
136
  float: right;
137
  width: 174px;
138
  margin: 0;
139
  }
 
140
  #wp-admin-bar ul li ul li:hover a {
141
  color: #fff;
142
  }
 
143
  #wp-admin-bar ul li div.admin-bar-clear {
144
  clear: both;
145
  }
 
146
  #wp-admin-bar ul.main-nav li ul li:hover,
147
  #wp-admin-bar ul.main-nav li ul li.sfhover,
148
  #wp-admin-bar ul.main-nav li ul li.sfhover {
155
  -moz-border-radius: 3px;
156
  -webkit-border-radius: 3px;
157
  }
 
158
  #wp-admin-bar ul li ul li:hover ul li a {
159
  color: #eee;
160
  }
 
161
  #wp-admin-bar ul li ul li ul li:hover a {
162
  color: #fff;
163
  }
 
164
  #wp-admin-bar ul li:hover ul,
165
  #wp-admin-bar ul li ul li:hover ul,
166
  #wp-admin-bar ul li.sfhover ul,
167
  #wp-admin-bar ul li ul li.sfhover ul {
168
  right: auto;
169
  }
 
170
  #wp-admin-bar ul li.align-right:hover ul {
171
  left: 0;
172
  }
 
173
  #wp-admin-bar ul li:hover ul ul,
174
  #wp-admin-bar li.sfhover ul li ul {
175
  right: -999em;
180
  float: right;
181
  margin-left: 8px;
182
  }
 
183
  #wp-admin-bar span.activity {
184
  display: block;
185
  margin-right: 34px;
186
  padding: 0;
187
  }
 
188
  #wp-admin-bar ul.author-list li a {
189
  height: 17px;
190
  }
 
191
  #wp-admin-bar ul li#bp-adminbar-notifications-menu a span {
192
  padding: 0 6px;
193
  margin-right: 2px;
197
  -webkit-border-radius: 3px;
198
  border-radius: 3px;
199
  }
 
200
  #wp-admin-bar-user-info img.avatar {
201
  height: 64px;
202
  width: 64px;
bp-core/css/buddybar-rtl.min.css CHANGED
@@ -1 +1 @@
1
- body:not(.wp-admin){padding-top:25px!important}#wp-admin-bar{position:fixed;top:0;right:0;height:25px;font-size:11px;width:100%;z-index:9999}#wp-admin-bar .padder{position:relative;padding:0;width:100%;margin:0 auto;background:url(../images/60pc_black.png);height:25px}body#bp-default #wp-admin-bar .padder{max-width:1250px}#wp-admin-bar *{z-index:999}#wp-admin-bar div#admin-bar-logo{position:absolute;top:5px;right:10px}#wp-admin-bar a img{border:none}#wp-admin-bar li{list-style:none;margin:0;padding:0;line-height:1;text-align:right}#wp-admin-bar li a{padding:7px 15px;color:#eee;text-decoration:none;font-size:11px}#wp-admin-bar li.alt{border:none}#wp-admin-bar li.no-arrow a{padding-left:15px}#wp-admin-bar ul li ul li a span{display:none}#wp-admin-bar li.hover,#wp-admin-bar li:hover{position:static}#admin-bar-logo{float:right;font-weight:700;font-size:11px;padding:5px 8px;margin:0;text-decoration:none;color:#fff}body#bp-default #admin-bar-logo{padding:2px 8px}#wp-admin-bar ul{margin:0;list-style:none;line-height:1;cursor:pointer;height:auto;padding:0}#wp-admin-bar ul li{padding:0;float:right;position:relative;background:url(../images/admin-menu-arrow.gif) 12% 53% no-repeat;padding-left:11px}#wp-admin-bar ul li.no-arrow{background:0 0;padding-left:0}#wp-admin-bar ul li ul li{background-image:none}#wp-admin-bar ul li.align-right{position:absolute;left:0}#wp-admin-bar ul li a{display:block}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li.sfhover,#wp-admin-bar ul.main-nav li:hover{background-color:#333}#wp-admin-bar ul li ul{position:absolute;width:185px;right:-999em;margin-right:0;background:#333;border:1px solid #222;-moz-box-shadow:0 4px 8px rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,.1);-moz-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0}#wp-admin-bar ul li>ul{border-top:none}#wp-admin-bar ul li ul a{color:#eee}#wp-admin-bar ul li ul li{float:right;width:174px;margin:0}#wp-admin-bar ul li ul li:hover a{color:#fff}#wp-admin-bar ul li div.admin-bar-clear{clear:both}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li ul li:hover{background-color:#222}#wp-admin-bar ul li ul ul{margin:-25px 184px 0 0;-moz-border-radius:3px;-webkit-border-radius:3px}#wp-admin-bar ul li ul li:hover ul li a{color:#eee}#wp-admin-bar ul li ul li ul li:hover a{color:#fff}#wp-admin-bar ul li ul li.sfhover ul,#wp-admin-bar ul li ul li:hover ul,#wp-admin-bar ul li.sfhover ul,#wp-admin-bar ul li:hover ul{right:auto}#wp-admin-bar ul li.align-right:hover ul{left:0}#wp-admin-bar li.sfhover ul li ul,#wp-admin-bar ul li:hover ul ul{right:-999em}#wp-admin-bar img.avatar{float:right;margin-left:8px}#wp-admin-bar span.activity{display:block;margin-right:34px;padding:0}#wp-admin-bar ul.author-list li a{height:17px}#wp-admin-bar ul li#bp-adminbar-notifications-menu a span{padding:0 6px;margin-right:2px;background:#fff;color:#000;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}
1
+ #admin-bar-logo,#wp-admin-bar li a{font-size:11px;text-decoration:none}#wp-admin-bar ul li ul a,#wp-admin-bar ul li ul li:hover ul li a{color:#eee}#wp-admin-bar ul li ul li ul li:hover a,#wp-admin-bar ul li ul li:hover a{color:#fff}body:not(.wp-admin){padding-top:25px!important}#wp-admin-bar{position:fixed;top:0;right:0;height:25px;font-size:11px;width:100%;z-index:9999}#wp-admin-bar .padder{position:relative;padding:0;width:100%;margin:0 auto;background:url(../images/60pc_black.png);height:25px}body#bp-default #wp-admin-bar .padder{max-width:1250px}#wp-admin-bar *{z-index:999}#wp-admin-bar div#admin-bar-logo{position:absolute;top:5px;right:10px}#wp-admin-bar a img,#wp-admin-bar li.alt{border:none}#wp-admin-bar li{list-style:none;margin:0;padding:0;line-height:100%;text-align:right}#wp-admin-bar li a{padding:7px 15px;color:#eee}#wp-admin-bar li.no-arrow a{padding-left:15px}#wp-admin-bar ul li ul li a span{display:none}#wp-admin-bar li.hover,#wp-admin-bar li:hover{position:static}#admin-bar-logo{float:right;font-weight:700;padding:5px 8px;margin:0;color:#fff}body#bp-default #admin-bar-logo{padding:2px 8px}#wp-admin-bar ul{margin:0;list-style:none;line-height:1;cursor:pointer;height:auto;padding:0}#wp-admin-bar ul li{padding:0 0 0 11px;float:right;position:relative;background:url(../images/admin-menu-arrow.gif) 88% 53% no-repeat}#wp-admin-bar ul li.no-arrow{background:0 0;padding-left:0}#wp-admin-bar ul li ul li{background-image:none;float:right;width:174px;margin:0}#wp-admin-bar ul li.align-right{position:absolute;left:0}#wp-admin-bar ul li a{display:block}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li.sfhover,#wp-admin-bar ul.main-nav li:hover{background-color:#333}#wp-admin-bar ul li ul{position:absolute;width:185px;right:-999em;margin-right:0;background:#333;border:1px solid #222;-moz-box-shadow:0 4px 8px rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,.1);-moz-border-radius:3px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius-topright:0;-moz-border-radius-topleft:0}#wp-admin-bar ul li>ul{border-top:none}#wp-admin-bar ul li div.admin-bar-clear{clear:both}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li ul li:hover{background-color:#222}#wp-admin-bar ul li ul ul{margin:-25px 184px 0 0;-moz-border-radius:3px;-webkit-border-radius:3px}#wp-admin-bar ul li ul li.sfhover ul,#wp-admin-bar ul li ul li:hover ul,#wp-admin-bar ul li.sfhover ul,#wp-admin-bar ul li:hover ul{right:auto}#wp-admin-bar ul li.align-right:hover ul{left:0}#wp-admin-bar li.sfhover ul li ul,#wp-admin-bar ul li:hover ul ul{right:-999em}#wp-admin-bar img.avatar{float:right;margin-left:8px}#wp-admin-bar span.activity{display:block;margin-right:34px;padding:0}#wp-admin-bar ul.author-list li a{height:17px}#wp-admin-bar ul li#bp-adminbar-notifications-menu a span{padding:0 6px;margin-right:2px;background:#fff;color:#000;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}
bp-core/css/buddybar.css CHANGED
@@ -1,7 +1,6 @@
1
  body:not(.wp-admin) {
2
  padding-top: 25px !important;
3
  }
4
-
5
  #wp-admin-bar {
6
  position: fixed;
7
  top: 0;
@@ -11,76 +10,63 @@ body:not(.wp-admin) {
11
  width: 100%;
12
  z-index: 9999;
13
  }
14
-
15
  #wp-admin-bar .padder {
16
  position: relative;
17
  padding: 0;
18
  width: 100%;
19
  margin: 0 auto;
20
- background: url(../images/60pc_black.png);
21
  height: 25px;
22
  }
23
-
24
  body#bp-default #wp-admin-bar .padder {
25
  max-width: 1250px;
26
  }
27
-
28
  #wp-admin-bar * {
29
  z-index: 999;
30
  }
31
-
32
  #wp-admin-bar div#admin-bar-logo {
33
  position: absolute;
34
  top: 5px;
35
  left: 10px;
36
  }
37
-
38
  #wp-admin-bar a img {
39
  border: none;
40
  }
41
-
42
  #wp-admin-bar li {
43
  list-style: none;
44
  margin: 0;
45
  padding: 0;
46
- line-height: 1;
47
  text-align: left;
48
  }
49
-
50
  #wp-admin-bar li a {
51
- padding: 7px 15px;
52
  color: #eee;
53
  text-decoration: none;
54
  font-size: 11px;
55
  }
56
-
57
  #wp-admin-bar li.alt {
58
  border: none;
59
  }
60
-
61
  #wp-admin-bar li.no-arrow a {
62
  padding-right: 15px;
63
  }
64
-
65
  #wp-admin-bar ul li ul li a span {
66
  display: none;
67
  }
68
-
69
  #wp-admin-bar li:hover,
70
  #wp-admin-bar li.hover {
71
  position: static;
72
  }
73
-
74
  #admin-bar-logo {
75
  float: left;
76
- font-weight: 700;
77
  font-size: 11px;
78
  padding: 5px 8px;
79
  margin: 0;
80
  text-decoration: none;
81
  color: #fff;
82
  }
83
-
84
  body#bp-default #admin-bar-logo {
85
  padding: 2px 8px;
86
  }
@@ -100,28 +86,23 @@ body#bp-default #admin-bar-logo {
100
  padding: 0;
101
  float: left;
102
  position: relative;
103
- background: url(../images/admin-menu-arrow.gif) 88% 53% no-repeat;
104
  padding-right: 11px;
105
  }
106
-
107
  #wp-admin-bar ul li.no-arrow {
108
  background: none;
109
  padding-right: 0;
110
  }
111
-
112
  #wp-admin-bar ul li ul li {
113
  background-image: none;
114
  }
115
-
116
  #wp-admin-bar ul li.align-right {
117
  position: absolute;
118
  right: 0;
119
  }
120
-
121
  #wp-admin-bar ul li a {
122
  display: block;
123
  }
124
-
125
  #wp-admin-bar ul.main-nav li:hover,
126
  #wp-admin-bar ul.main-nav li.sfhover,
127
  #wp-admin-bar ul.main-nav li ul li.sfhover {
@@ -145,29 +126,23 @@ body#bp-default #admin-bar-logo {
145
  -moz-border-radius-topright: 0;
146
  -webkit-border-top-right-radius: 0;
147
  }
148
-
149
  #wp-admin-bar ul li > ul {
150
  border-top: none;
151
  }
152
-
153
  #wp-admin-bar ul li ul a {
154
  color: #eee;
155
  }
156
-
157
  #wp-admin-bar ul li ul li {
158
  float: left;
159
  width: 174px;
160
  margin: 0;
161
  }
162
-
163
  #wp-admin-bar ul li ul li:hover a {
164
  color: #fff;
165
  }
166
-
167
  #wp-admin-bar ul li div.admin-bar-clear {
168
  clear: both;
169
  }
170
-
171
  #wp-admin-bar ul.main-nav li ul li:hover,
172
  #wp-admin-bar ul.main-nav li ul li.sfhover,
173
  #wp-admin-bar ul.main-nav li ul li.sfhover {
@@ -180,26 +155,21 @@ body#bp-default #admin-bar-logo {
180
  -moz-border-radius: 3px;
181
  -webkit-border-radius: 3px;
182
  }
183
-
184
  #wp-admin-bar ul li ul li:hover ul li a {
185
  color: #eee;
186
  }
187
-
188
  #wp-admin-bar ul li ul li ul li:hover a {
189
  color: #fff;
190
  }
191
-
192
  #wp-admin-bar ul li:hover ul,
193
  #wp-admin-bar ul li ul li:hover ul,
194
  #wp-admin-bar ul li.sfhover ul,
195
  #wp-admin-bar ul li ul li.sfhover ul {
196
  left: auto;
197
  }
198
-
199
  #wp-admin-bar ul li.align-right:hover ul {
200
  right: 0;
201
  }
202
-
203
  #wp-admin-bar ul li:hover ul ul,
204
  #wp-admin-bar li.sfhover ul li ul {
205
  left: -999em;
@@ -210,17 +180,14 @@ body#bp-default #admin-bar-logo {
210
  float: left;
211
  margin-right: 8px;
212
  }
213
-
214
  #wp-admin-bar span.activity {
215
  display: block;
216
  margin-left: 34px;
217
  padding: 0;
218
  }
219
-
220
  #wp-admin-bar ul.author-list li a {
221
  height: 17px;
222
  }
223
-
224
  #wp-admin-bar ul li#bp-adminbar-notifications-menu a span {
225
  padding: 0 6px;
226
  margin-left: 2px;
@@ -230,7 +197,6 @@ body#bp-default #admin-bar-logo {
230
  -webkit-border-radius: 3px;
231
  border-radius: 3px;
232
  }
233
-
234
  #wp-admin-bar-user-info img.avatar {
235
  height: 64px;
236
  width: 64px;
1
  body:not(.wp-admin) {
2
  padding-top: 25px !important;
3
  }
 
4
  #wp-admin-bar {
5
  position: fixed;
6
  top: 0;
10
  width: 100%;
11
  z-index: 9999;
12
  }
 
13
  #wp-admin-bar .padder {
14
  position: relative;
15
  padding: 0;
16
  width: 100%;
17
  margin: 0 auto;
18
+ background: url('../images/60pc_black.png');
19
  height: 25px;
20
  }
 
21
  body#bp-default #wp-admin-bar .padder {
22
  max-width: 1250px;
23
  }
 
24
  #wp-admin-bar * {
25
  z-index: 999;
26
  }
 
27
  #wp-admin-bar div#admin-bar-logo {
28
  position: absolute;
29
  top: 5px;
30
  left: 10px;
31
  }
 
32
  #wp-admin-bar a img {
33
  border: none;
34
  }
 
35
  #wp-admin-bar li {
36
  list-style: none;
37
  margin: 0;
38
  padding: 0;
39
+ line-height: 100%;
40
  text-align: left;
41
  }
 
42
  #wp-admin-bar li a {
43
+ padding: 7px 15px 7px 15px;
44
  color: #eee;
45
  text-decoration: none;
46
  font-size: 11px;
47
  }
 
48
  #wp-admin-bar li.alt {
49
  border: none;
50
  }
 
51
  #wp-admin-bar li.no-arrow a {
52
  padding-right: 15px;
53
  }
 
54
  #wp-admin-bar ul li ul li a span {
55
  display: none;
56
  }
 
57
  #wp-admin-bar li:hover,
58
  #wp-admin-bar li.hover {
59
  position: static;
60
  }
 
61
  #admin-bar-logo {
62
  float: left;
63
+ font-weight: bold;
64
  font-size: 11px;
65
  padding: 5px 8px;
66
  margin: 0;
67
  text-decoration: none;
68
  color: #fff;
69
  }
 
70
  body#bp-default #admin-bar-logo {
71
  padding: 2px 8px;
72
  }
86
  padding: 0;
87
  float: left;
88
  position: relative;
89
+ background: url('../images/admin-menu-arrow.gif') 88% 53% no-repeat;
90
  padding-right: 11px;
91
  }
 
92
  #wp-admin-bar ul li.no-arrow {
93
  background: none;
94
  padding-right: 0;
95
  }
 
96
  #wp-admin-bar ul li ul li {
97
  background-image: none;
98
  }
 
99
  #wp-admin-bar ul li.align-right {
100
  position: absolute;
101
  right: 0;
102
  }
 
103
  #wp-admin-bar ul li a {
104
  display: block;
105
  }
 
106
  #wp-admin-bar ul.main-nav li:hover,
107
  #wp-admin-bar ul.main-nav li.sfhover,
108
  #wp-admin-bar ul.main-nav li ul li.sfhover {
126
  -moz-border-radius-topright: 0;
127
  -webkit-border-top-right-radius: 0;
128
  }
 
129
  #wp-admin-bar ul li > ul {
130
  border-top: none;
131
  }
 
132
  #wp-admin-bar ul li ul a {
133
  color: #eee;
134
  }
 
135
  #wp-admin-bar ul li ul li {
136
  float: left;
137
  width: 174px;
138
  margin: 0;
139
  }
 
140
  #wp-admin-bar ul li ul li:hover a {
141
  color: #fff;
142
  }
 
143
  #wp-admin-bar ul li div.admin-bar-clear {
144
  clear: both;
145
  }
 
146
  #wp-admin-bar ul.main-nav li ul li:hover,
147
  #wp-admin-bar ul.main-nav li ul li.sfhover,
148
  #wp-admin-bar ul.main-nav li ul li.sfhover {
155
  -moz-border-radius: 3px;
156
  -webkit-border-radius: 3px;
157
  }
 
158
  #wp-admin-bar ul li ul li:hover ul li a {
159
  color: #eee;
160
  }
 
161
  #wp-admin-bar ul li ul li ul li:hover a {
162
  color: #fff;
163
  }
 
164
  #wp-admin-bar ul li:hover ul,
165
  #wp-admin-bar ul li ul li:hover ul,
166
  #wp-admin-bar ul li.sfhover ul,
167
  #wp-admin-bar ul li ul li.sfhover ul {
168
  left: auto;
169
  }
 
170
  #wp-admin-bar ul li.align-right:hover ul {
171
  right: 0;
172
  }
 
173
  #wp-admin-bar ul li:hover ul ul,
174
  #wp-admin-bar li.sfhover ul li ul {
175
  left: -999em;
180
  float: left;
181
  margin-right: 8px;
182
  }
 
183
  #wp-admin-bar span.activity {
184
  display: block;
185
  margin-left: 34px;
186
  padding: 0;
187
  }
 
188
  #wp-admin-bar ul.author-list li a {
189
  height: 17px;
190
  }
 
191
  #wp-admin-bar ul li#bp-adminbar-notifications-menu a span {
192
  padding: 0 6px;
193
  margin-left: 2px;
197
  -webkit-border-radius: 3px;
198
  border-radius: 3px;
199
  }
 
200
  #wp-admin-bar-user-info img.avatar {
201
  height: 64px;
202
  width: 64px;
bp-core/css/buddybar.min.css CHANGED
@@ -1 +1 @@
1
- body:not(.wp-admin){padding-top:25px!important}#wp-admin-bar{position:fixed;top:0;left:0;height:25px;font-size:11px;width:100%;z-index:9999}#wp-admin-bar .padder{position:relative;padding:0;width:100%;margin:0 auto;background:url(../images/60pc_black.png);height:25px}body#bp-default #wp-admin-bar .padder{max-width:1250px}#wp-admin-bar *{z-index:999}#wp-admin-bar div#admin-bar-logo{position:absolute;top:5px;left:10px}#wp-admin-bar a img{border:none}#wp-admin-bar li{list-style:none;margin:0;padding:0;line-height:1;text-align:left}#wp-admin-bar li a{padding:7px 15px;color:#eee;text-decoration:none;font-size:11px}#wp-admin-bar li.alt{border:none}#wp-admin-bar li.no-arrow a{padding-right:15px}#wp-admin-bar ul li ul li a span{display:none}#wp-admin-bar li.hover,#wp-admin-bar li:hover{position:static}#admin-bar-logo{float:left;font-weight:700;font-size:11px;padding:5px 8px;margin:0;text-decoration:none;color:#fff}body#bp-default #admin-bar-logo{padding:2px 8px}#wp-admin-bar ul{margin:0;list-style:none;line-height:1;cursor:pointer;height:auto;padding:0}#wp-admin-bar ul li{padding:0;float:left;position:relative;background:url(../images/admin-menu-arrow.gif) 88% 53% no-repeat;padding-right:11px}#wp-admin-bar ul li.no-arrow{background:0 0;padding-right:0}#wp-admin-bar ul li ul li{background-image:none}#wp-admin-bar ul li.align-right{position:absolute;right:0}#wp-admin-bar ul li a{display:block}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li.sfhover,#wp-admin-bar ul.main-nav li:hover{background-color:#333}#wp-admin-bar ul li ul{position:absolute;width:185px;left:-999em;margin-left:0;background:#333;border:1px solid #222;-moz-box-shadow:0 4px 8px rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,.1);-moz-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0}#wp-admin-bar ul li>ul{border-top:none}#wp-admin-bar ul li ul a{color:#eee}#wp-admin-bar ul li ul li{float:left;width:174px;margin:0}#wp-admin-bar ul li ul li:hover a{color:#fff}#wp-admin-bar ul li div.admin-bar-clear{clear:both}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li ul li:hover{background-color:#222}#wp-admin-bar ul li ul ul{margin:-25px 0 0 184px;-moz-border-radius:3px;-webkit-border-radius:3px}#wp-admin-bar ul li ul li:hover ul li a{color:#eee}#wp-admin-bar ul li ul li ul li:hover a{color:#fff}#wp-admin-bar ul li ul li.sfhover ul,#wp-admin-bar ul li ul li:hover ul,#wp-admin-bar ul li.sfhover ul,#wp-admin-bar ul li:hover ul{left:auto}#wp-admin-bar ul li.align-right:hover ul{right:0}#wp-admin-bar li.sfhover ul li ul,#wp-admin-bar ul li:hover ul ul{left:-999em}#wp-admin-bar img.avatar{float:left;margin-right:8px}#wp-admin-bar span.activity{display:block;margin-left:34px;padding:0}#wp-admin-bar ul.author-list li a{height:17px}#wp-admin-bar ul li#bp-adminbar-notifications-menu a span{padding:0 6px;margin-left:2px;background:#fff;color:#000;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}
1
+ #admin-bar-logo,#wp-admin-bar li a{font-size:11px;text-decoration:none}#wp-admin-bar ul li ul a,#wp-admin-bar ul li ul li:hover ul li a{color:#eee}#wp-admin-bar ul li ul li ul li:hover a,#wp-admin-bar ul li ul li:hover a{color:#fff}body:not(.wp-admin){padding-top:25px!important}#wp-admin-bar{position:fixed;top:0;left:0;height:25px;font-size:11px;width:100%;z-index:9999}#wp-admin-bar .padder{position:relative;padding:0;width:100%;margin:0 auto;background:url(../images/60pc_black.png);height:25px}body#bp-default #wp-admin-bar .padder{max-width:1250px}#wp-admin-bar *{z-index:999}#wp-admin-bar div#admin-bar-logo{position:absolute;top:5px;left:10px}#wp-admin-bar a img,#wp-admin-bar li.alt{border:none}#wp-admin-bar li{list-style:none;margin:0;padding:0;line-height:100%;text-align:left}#wp-admin-bar li a{padding:7px 15px;color:#eee}#wp-admin-bar li.no-arrow a{padding-right:15px}#wp-admin-bar ul li ul li a span{display:none}#wp-admin-bar li.hover,#wp-admin-bar li:hover{position:static}#admin-bar-logo{float:left;font-weight:700;padding:5px 8px;margin:0;color:#fff}body#bp-default #admin-bar-logo{padding:2px 8px}#wp-admin-bar ul{margin:0;list-style:none;line-height:1;cursor:pointer;height:auto;padding:0}#wp-admin-bar ul li{padding:0 11px 0 0;float:left;position:relative;background:url(../images/admin-menu-arrow.gif) 88% 53% no-repeat}#wp-admin-bar ul li.no-arrow{background:0 0;padding-right:0}#wp-admin-bar ul li ul li{background-image:none;float:left;width:174px;margin:0}#wp-admin-bar ul li.align-right{position:absolute;right:0}#wp-admin-bar ul li a{display:block}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li.sfhover,#wp-admin-bar ul.main-nav li:hover{background-color:#333}#wp-admin-bar ul li ul{position:absolute;width:185px;left:-999em;margin-left:0;background:#333;border:1px solid #222;-moz-box-shadow:0 4px 8px rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,.1);-moz-border-radius:3px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius-topleft:0;-moz-border-radius-topright:0}#wp-admin-bar ul li>ul{border-top:none}#wp-admin-bar ul li div.admin-bar-clear{clear:both}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li ul li:hover{background-color:#222}#wp-admin-bar ul li ul ul{margin:-25px 0 0 184px;-moz-border-radius:3px;-webkit-border-radius:3px}#wp-admin-bar ul li ul li.sfhover ul,#wp-admin-bar ul li ul li:hover ul,#wp-admin-bar ul li.sfhover ul,#wp-admin-bar ul li:hover ul{left:auto}#wp-admin-bar ul li.align-right:hover ul{right:0}#wp-admin-bar li.sfhover ul li ul,#wp-admin-bar ul li:hover ul ul{left:-999em}#wp-admin-bar img.avatar{float:left;margin-right:8px}#wp-admin-bar span.activity{display:block;margin-left:34px;padding:0}#wp-admin-bar ul.author-list li a{height:17px}#wp-admin-bar ul li#bp-adminbar-notifications-menu a span{padding:0 6px;margin-left:2px;background:#fff;color:#000;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#wp-admin-bar-user-info img.avatar{height:64px;width:64px}
bp-core/deprecated/1.2.php CHANGED
@@ -14,7 +14,7 @@
14
  * @since 1.0.0
15
  * @deprecated 1.2.0
16
  *
17
- * @param string|array $args
18
  *
19
  * @return object $activity The activity/activities object
20
  */
14
  * @since 1.0.0
15
  * @deprecated 1.2.0
16
  *
17
+ * @param array $args
18
  *
19
  * @return object $activity The activity/activities object
20
  */
bp-core/deprecated/1.5.php CHANGED
@@ -508,7 +508,7 @@ function bp_dtheme_deprecated() {
508
  * @deprecated No longer required.
509
  * @param string $oldvalue Previous value of get_option( 'page_on_front' )
510
  * @param string $oldvalue New value of get_option( 'page_on_front' )
511
- * @return false|string
512
  * @since 1.2.0
513
  */
514
  function bp_dtheme_page_on_front_update( $oldvalue, $newvalue ) {
508
  * @deprecated No longer required.
509
  * @param string $oldvalue Previous value of get_option( 'page_on_front' )
510
  * @param string $oldvalue New value of get_option( 'page_on_front' )
511
+ * @return bool|string
512
  * @since 1.2.0
513
  */
514
  function bp_dtheme_page_on_front_update( $oldvalue, $newvalue ) {
bp-core/deprecated/1.6.php CHANGED
@@ -265,13 +265,8 @@ if ( !function_exists( 'bp_dtheme_register_actions' ) ) :
265
 
266
  // For each of the problematic hooks, exit at the very end of execution
267
  foreach( $actions as $action ) {
268
- add_action( 'wp_ajax_' . $action, function() {
269
- exit;
270
- }, 9999 );
271
-
272
- add_action( 'wp_ajax_nopriv_' . $action, function() {
273
- exit;
274
- }, 9999 );
275
  }
276
  }
277
  add_action( 'after_setup_theme', 'bp_die_legacy_ajax_callbacks', 20 );
265
 
266
  // For each of the problematic hooks, exit at the very end of execution
267
  foreach( $actions as $action ) {
268
+ add_action( 'wp_ajax_' . $action, create_function( '', 'exit;' ), 9999 );
269
+ add_action( 'wp_ajax_nopriv_' . $action, create_function( '', 'exit;' ), 9999 );
 
 
 
 
 
270
  }
271
  }
272
  add_action( 'after_setup_theme', 'bp_die_legacy_ajax_callbacks', 20 );
bp-core/deprecated/1.7.php CHANGED
@@ -74,7 +74,7 @@ function bp_get_plugin_sidebar() {
74
  * step. It also means that the themes won't show for selection on other blogs.
75
  *
76
  * @deprecated 1.7.0
77
- * @return array
78
  */
79
  function bp_core_allow_default_theme( $themes ) {
80
  _deprecated_function( __FUNCTION__, '1.7' );
74
  * step. It also means that the themes won't show for selection on other blogs.
75
  *
76
  * @deprecated 1.7.0
77
+ * @package BuddyPress Core
78
  */
79
  function bp_core_allow_default_theme( $themes ) {
80
  _deprecated_function( __FUNCTION__, '1.7' );
bp-core/deprecated/1.9.php CHANGED
@@ -19,14 +19,14 @@ defined( 'ABSPATH' ) || exit;
19
  * bp_notifications_add_notification() instead.
20
  *
21
  * @since 1.0.0
22
- * @param string $item_id
23
- * @param int $user_id
24
- * @param string $component_name
25
- * @param string $component_action
26
- * @param int $secondary_item_id
27
- * @param false|string $date_notified
28
- * @param int $is_new
29
- * @return int|boolean True on success, false on failure.
30
  */
31
  function bp_core_add_notification( $item_id, $user_id, $component_name, $component_action, $secondary_item_id = 0, $date_notified = false, $is_new = 1 ) {
32
 
@@ -62,9 +62,8 @@ function bp_core_add_notification( $item_id, $user_id, $component_name, $compone
62
  * bp_notifications_delete_notification() instead.
63
  *
64
  * @since 1.0.0
65
- *
66
  * @param int $id ID of notification.
67
- * @return false|integer True on success, false on failure.
68
  */
69
  function bp_core_delete_notification( $id ) {
70
 
@@ -87,7 +86,7 @@ function bp_core_delete_notification( $id ) {
87
  *
88
  * @since 1.0.0
89
  * @param int $id ID of notification.
90
- * @return false|BP_Core_Notification
91
  */
92
  function bp_core_get_notification( $id ) {
93
 
@@ -141,7 +140,7 @@ function bp_core_get_notifications_for_user( $user_id, $format = 'string' ) {
141
  * @param int $user_id
142
  * @param string $component_name
143
  * @param string $component_action
144
- * @return false|int True on success, false on failure.
145
  */
146
  function bp_core_delete_notifications_by_type( $user_id, $component_name, $component_action ) {
147
 
@@ -166,11 +165,10 @@ function bp_core_delete_notifications_by_type( $user_id, $component_name, $compo
166
  * bp_notifications_delete_notifications_by_item_id() instead.
167
  *
168
  * @since 1.0.0
169
- *
170
  * @param int $user_id
171
  * @param string $component_name
172
  * @param string $component_action
173
- * @return false|int True on success, false on failure.
174
  */
175
  function bp_core_delete_notifications_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false ) {
176
 
@@ -192,10 +190,9 @@ function bp_core_delete_notifications_by_item_id( $user_id, $item_id, $component
192
  * bp_notifications_delete_all_notifications_by_type() instead.
193
  *
194
  * @since 1.0.0
195
- *
196
- * @param int $user_id
197
- * @param string $component_name
198
- * @param false|string $component_action
199
  * @return boolean True on success, false on failure.
200
  */
201
  function bp_core_delete_all_notifications_by_type( $item_id, $component_name, $component_action = false, $secondary_item_id = false ) {
@@ -223,7 +220,7 @@ function bp_core_delete_all_notifications_by_type( $item_id, $component_name, $c
223
  * @param int $user_id
224
  * @param string $component_name
225
  * @param string $component_action
226
- * @return false|int True on success, false on failure.
227
  */
228
  function bp_core_delete_notifications_from_user( $user_id, $component_name, $component_action ) {
229
 
19
  * bp_notifications_add_notification() instead.
20
  *
21
  * @since 1.0.0
22
+ * @param string $item_id
23
+ * @param int $user_id
24
+ * @param string $component_name
25
+ * @param string $component_action
26
+ * @param string $secondary_item_id
27
+ * @param string $date_notified
28
+ * @param int $is_new
29
+ * @return boolean True on success, false on failure.
30
  */
31
  function bp_core_add_notification( $item_id, $user_id, $component_name, $component_action, $secondary_item_id = 0, $date_notified = false, $is_new = 1 ) {
32
 
62
  * bp_notifications_delete_notification() instead.
63
  *
64
  * @since 1.0.0
 
65
  * @param int $id ID of notification.
66
+ * @return boolean True on success, false on failure.
67
  */
68
  function bp_core_delete_notification( $id ) {
69
 
86
  *
87
  * @since 1.0.0
88
  * @param int $id ID of notification.
89
+ * @return BP_Core_Notification
90
  */
91
  function bp_core_get_notification( $id ) {
92
 
140
  * @param int $user_id
141
  * @param string $component_name
142
  * @param string $component_action
143
+ * @return boolean True on success, false on failure.
144
  */
145
  function bp_core_delete_notifications_by_type( $user_id, $component_name, $component_action ) {
146
 
165
  * bp_notifications_delete_notifications_by_item_id() instead.
166
  *
167
  * @since 1.0.0
 
168
  * @param int $user_id
169
  * @param string $component_name
170
  * @param string $component_action
171
+ * @return boolean True on success, false on failure.
172
  */
173
  function bp_core_delete_notifications_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false ) {
174
 
190
  * bp_notifications_delete_all_notifications_by_type() instead.
191
  *
192
  * @since 1.0.0
193
+ * @param int $user_id
194
+ * @param string $component_name
195
+ * @param string $component_action
 
196
  * @return boolean True on success, false on failure.
197
  */
198
  function bp_core_delete_all_notifications_by_type( $item_id, $component_name, $component_action = false, $secondary_item_id = false ) {
220
  * @param int $user_id
221
  * @param string $component_name
222
  * @param string $component_action
223
+ * @return boolean True on success, false on failure.
224
  */
225
  function bp_core_delete_notifications_from_user( $user_id, $component_name, $component_action ) {
226
 
bp-core/deprecated/2.1.php CHANGED
@@ -36,7 +36,7 @@ function bp_core_register_deprecated_styles() {
36
  * @since 1.0.0
37
  * @deprecated 2.1.0
38
  *
39
- * @return false|null Returns false on failure. Otherwise echoes the menu item.
40
  */
41
  function bp_adminbar_blogs_menu() {
42
 
@@ -131,7 +131,7 @@ function bp_admin_sanitize_callback_force_buddybar( $value = false ) {
131
  /**
132
  * Wrapper function for rendering the BuddyBar.
133
  *
134
- * @return false|null Returns false if the BuddyBar is disabled.
135
  * @deprecated 2.1.0
136
  */
137
  function bp_core_admin_bar() {
@@ -179,7 +179,7 @@ function bp_adminbar_logo() {
179
  *
180
  * @deprecated 2.1.0
181
  *
182
- * @return false|null Returns false if the current user is logged in.
183
  */
184
  function bp_adminbar_login_menu() {
185
 
@@ -200,7 +200,7 @@ function bp_adminbar_login_menu() {
200
  *
201
  * @deprecated 2.1.0
202
  *
203
- * @return false|null Returns false on failure.
204
  */
205
  function bp_adminbar_account_menu() {
206
  $bp = buddypress();
36
  * @since 1.0.0
37
  * @deprecated 2.1.0
38
  *
39
+ * @return bool|null Returns false on failure. Otherwise echoes the menu item.
40
  */
41
  function bp_adminbar_blogs_menu() {
42
 
131
  /**
132
  * Wrapper function for rendering the BuddyBar.
133
  *
134
+ * @return bool|null Returns false if the BuddyBar is disabled.
135
  * @deprecated 2.1.0
136
  */
137
  function bp_core_admin_bar() {
179
  *
180
  * @deprecated 2.1.0
181
  *
182
+ * @return bool|null Returns false if the current user is logged in.
183
  */
184
  function bp_adminbar_login_menu() {
185
 
200
  *
201
  * @deprecated 2.1.0
202
  *
203
+ * @return bool|null Returns false on failure.
204
  */
205
  function bp_adminbar_account_menu() {
206
  $bp = buddypress();
bp-core/deprecated/2.5.php CHANGED
@@ -62,7 +62,7 @@ function bp_core_deprecated_email_filters( $value, $property, $transform, $email
62
  'settings-verify-email-change',
63
  );
64
 
65
- remove_filter( 'bp_email_get_property', 'bp_core_deprecated_email_filters', 20 );
66
  $email_type = $email->get( 'type' );
67
  $tokens = $email->get( 'tokens' );
68
  add_filter( 'bp_email_get_property', 'bp_core_deprecated_email_filters', 20, 4 );
@@ -701,7 +701,7 @@ function bp_core_deprecated_email_actions( $delivery_status, $email ) {
701
  'settings-verify-email-change',
702
  );
703
 
704
- remove_action( 'bp_send_email_success', 'bp_core_deprecated_email_actions', 20 );
705
  $email_content = $email->get( 'content' );
706
  $email_subject = $email->get( 'subject' );
707
  $email_type = $email->get( 'type' );
@@ -914,7 +914,7 @@ function bp_blogs_transition_activity_status( $new_status, $old_status, $comment
914
  * @param int $comment_id ID of the comment being recorded.
915
  * @param bool|string $is_approved Optional. The $is_approved value passed to
916
  * the 'comment_post' action. Default: true.
917
- * @return bool|object|null Returns false on failure, the comment object on success.
918
  */
919
  function bp_blogs_record_comment( $comment_id, $is_approved = true ) {
920
  _deprecated_function( __FUNCTION__, '2.5.0', 'bp_activity_post_type_comment()' );
62
  'settings-verify-email-change',
63
  );
64
 
65
+ remove_filter( 'bp_email_get_property', 'bp_core_deprecated_email_filters', 20, 4 );
66
  $email_type = $email->get( 'type' );
67
  $tokens = $email->get( 'tokens' );
68
  add_filter( 'bp_email_get_property', 'bp_core_deprecated_email_filters', 20, 4 );
701
  'settings-verify-email-change',
702
  );
703
 
704
+ remove_action( 'bp_send_email_success', 'bp_core_deprecated_email_actions', 20, 2 );
705
  $email_content = $email->get( 'content' );
706
  $email_subject = $email->get( 'subject' );
707
  $email_type = $email->get( 'type' );
914
  * @param int $comment_id ID of the comment being recorded.
915
  * @param bool|string $is_approved Optional. The $is_approved value passed to
916
  * the 'comment_post' action. Default: true.
917
+ * @return bool|object Returns false on failure, the comment object on success.
918
  */
919
  function bp_blogs_record_comment( $comment_id, $is_approved = true ) {
920
  _deprecated_function( __FUNCTION__, '2.5.0', 'bp_activity_post_type_comment()' );
bp-core/deprecated/2.7.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
- /**
3
- * Deprecated functions.
4
- *
5
- * @deprecated 2.7.0
6
- */
7
-
8
- // Exit if accessed directly.
9
- defined( 'ABSPATH' ) || exit;
10
-
11
- /**
12
- * Get the DB schema to use for BuddyPress components.
13
- *
14
- * @since 1.1.0
15
- * @deprecated 2.7.0
16
- *
17
- * @return string The default database character-set, if set.
18
- */
19
- function bp_core_set_charset() {
20
- global $wpdb;
21
-
22
- _deprecated_function( __FUNCTION__, '2.7', 'wpdb::get_charset_collate()' );
23
-
24
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
25
- return !empty( $wpdb->charset ) ? "DEFAULT CHARACTER SET {$wpdb->charset}" : '';
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/deprecated/2.8.php DELETED
@@ -1,199 +0,0 @@
1
- <?php
2
- /**
3
- * Deprecated functions.
4
- *
5
- * @deprecated 2.8.0
6
- */
7
-
8
- // Exit if accessed directly.
9
- defined( 'ABSPATH' ) || exit;
10
-
11
- /**
12
- * Determines whether the current installation is running PHP 5.3 or greater.
13
- *
14
- * BuddyPress 2.8 introduces a minimum PHP requirement of PHP 5.3.
15
- *
16
- * @since 2.7.0
17
- * @deprecated 2.8.0
18
- *
19
- * @return bool
20
- */
21
- function bp_core_admin_is_running_php53_or_greater() {
22
- return version_compare( PHP_VERSION, '5.3', '>=' );
23
- }
24
-
25
- /**
26
- * Replaces WP's default update notice on plugins.php with an error message, when site is not running PHP 5.3 or greater.
27
- *
28
- * Originally hooked to 'load-plugins.php' with priority 100.
29
- *
30
- * @since 2.7.0
31
- * @deprecated 2.8.0
32
- */
33
- function bp_core_admin_maybe_disable_update_row_for_php53_requirement() {
34
- if ( bp_core_admin_is_running_php53_or_greater() ) {
35
- return;
36
- }
37
-
38
- $loader = basename( constant( 'BP_PLUGIN_DIR' ) ) . '/bp-loader.php';
39
-
40
- remove_action( "after_plugin_row_{$loader}", 'wp_plugin_update_row', 10 );
41
- add_action( "after_plugin_row_{$loader}", 'bp_core_admin_php52_plugin_row', 10, 2 );
42
- }
43
-
44
- /**
45
- * On the "Dashboard > Updates" page, remove BuddyPress from plugins list if PHP < 5.3.
46
- *
47
- * Originally hooked to 'load-update-core.php'.
48
- *
49
- * @since 2.7.0
50
- * @deprecated 2.8.0
51
- */
52
- function bp_core_admin_maybe_remove_from_update_core() {
53
- if ( bp_core_admin_is_running_php53_or_greater() ) {
54
- return;
55
- }
56
-
57
- // Add filter to remove BP from the update plugins list.
58
- add_filter( 'site_transient_update_plugins', 'bp_core_admin_remove_buddypress_from_update_transient' );
59
- }
60
-
61
- /**
62
- * Filter callback to remove BuddyPress from the update plugins list.
63
- *
64
- * Attached to the 'site_transient_update_plugins' filter.
65
- *
66
- * @since 2.7.0
67
- * @deprecated 2.8.0
68
- *
69
- * @param object $retval Object of plugin update data.
70
- * @return object
71
- */
72
- function bp_core_admin_remove_buddypress_from_update_transient( $retval ) {
73
- $loader = basename( constant( 'BP_PLUGIN_DIR' ) ) . '/bp-loader.php';
74
-
75
- // Remove BP from update plugins list.
76
- if ( isset( $retval->response[ $loader ] ) ) {
77
- unset( $retval->response[ $loader ] );
78
- }
79
-
80
- return $retval;
81
- }
82
-
83
- /**
84
- * Outputs a replacement for WP's default update notice, when site is not running PHP 5.3 or greater.
85
- *
86
- * When we see that a site is not running PHP 5.3 and is trying to update to
87
- * BP 2.8+, we replace WP's default notice with our own, which both provides a
88
- * link to our documentation of the requirement, and removes the link that
89
- * allows a single plugin to be updated.
90
- *
91
- * @since 2.7.0
92
- * @deprecated 2.8.0
93
- *
94
- * @param string $file Plugin filename. buddypress/bp-loader.php.
95
- * @param array $plugin_data Data about the BuddyPress plugin, as returned by the
96
- * plugins API.
97
- */
98
- function bp_core_admin_php52_plugin_row( $file, $plugin_data ) {
99
- if ( is_multisite() && ! is_network_admin() ) {
100
- return;
101
- }
102
-
103
- $current = get_site_transient( 'update_plugins' );
104
- if ( ! isset( $current->response[ $file ] ) ) {
105
- return false;
106
- }
107
-
108
- $response = $current->response[ $file ];
109
-
110
- // No need to do this if update is for < BP 2.8.
111
- if ( version_compare( $response->new_version, '2.8', '<' ) ) {
112
- return false;
113
- }
114
-
115
- $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
116
-
117
- if ( is_network_admin() ) {
118
- $active_class = is_plugin_active_for_network( $file ) ? ' active' : '';
119
- } else {
120
- $active_class = is_plugin_active( $file ) ? ' active' : '';
121
- }
122
-
123
- // WP 4.6 uses different markup for the plugin row notice.
124
- if ( function_exists( 'wp_get_ext_types' ) ) {
125
- $p = '<p>%s</p>';
126
-
127
- // WP < 4.6.
128
- } else {
129
- $p = '%s';
130
-
131
- // Ugh.
132
- $active_class .= ' not-shiny';
133
- }
134
-
135
- echo '<tr class="plugin-update-tr' . $active_class . '" id="' . esc_attr( $response->slug . '-update' ) . '" data-slug="' . esc_attr( $response->slug ) . '" data-plugin="' . esc_attr( $file ) . '"><td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange"><div class="update-message inline notice notice-error notice-alt">';
136
-
137
- printf( $p,
138
- esc_html__( 'A BuddyPress update is available, but your system is not compatible.', 'buddypress' ) . ' ' .
139
- sprintf( __( 'See <a href="%s">the Codex guide</a> for more information.', 'buddypress' ), 'https://codex.buddypress.org/getting-started/buddypress-2-8-will-require-php-5-3/' )
140
- );
141
-
142
- echo '</div></td></tr>';
143
-
144
- /*
145
- * JavaScript to disable the bulk upgrade checkbox.
146
- * See WP_Plugins_List_Table::single_row().
147
- */
148
- $checkbox_id = 'checkbox_' . md5( $plugin_data['Name'] );
149
- echo "<script type='text/javascript'>document.getElementById('$checkbox_id').disabled = true;</script>";
150
- }
151
-
152
- /**
153
- * Add an admin notice to installations that are not running PHP 5.3+.
154
- *
155
- * @since 2.7.0
156
- * @deprecated 2.8.0
157
- */
158
- function bp_core_admin_php53_admin_notice() {
159
- // If not on the Plugins page, stop now.
160
- if ( 'plugins' !== get_current_screen()->parent_base ) {
161
- return;
162
- }
163
-
164
- if ( ! current_user_can( 'update_core' ) ) {
165
- return;
166
- }
167
-
168
- if ( bp_core_admin_is_running_php53_or_greater() ) {
169
- return;
170
- }
171
-
172
- $notice_id = 'bp28-php53';
173
- if ( bp_get_option( "bp-dismissed-notice-$notice_id" ) ) {
174
- return;
175
- }
176
-
177
- $bp = buddypress();
178
- $min = bp_core_get_minified_asset_suffix();
179
-
180
- wp_enqueue_script(
181
- 'bp-dismissible-admin-notices',
182
- "{$bp->plugin_url}bp-core/admin/js/dismissible-admin-notices{$min}.js",
183
- array( 'jquery' ),
184
- bp_get_version(),
185
- true
186
- );
187
-
188
- $php_version = PHP_VERSION;
189
-
190
- ?>
191
-
192
- <div id="message" class="error notice is-dismissible bp-is-dismissible" data-noticeid="<?php echo esc_attr( $notice_id ); ?>">
193
- <p><strong><?php esc_html_e( 'Your site is not ready for BuddyPress 2.8.', 'buddypress' ); ?></strong></p>
194
- <p><?php printf( esc_html__( 'Your site is currently running PHP version %s, while BuddyPress 2.8 will require version 5.3+.', 'buddypress' ), $php_version ); ?> <?php printf( __( 'See <a href="%s">the Codex guide</a> for more information.', 'buddypress' ), 'https://codex.buddypress.org/getting-started/buddypress-2-8-will-require-php-5-3/' ); ?></p>
195
- <?php wp_nonce_field( "bp-dismissible-notice-$notice_id", "bp-dismissible-nonce-$notice_id" ); ?>
196
- </div>
197
- <?php
198
- }
199
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/deprecated/2.9.php DELETED
@@ -1,30 +0,0 @@
1
- <?php
2
- /**
3
- * Deprecated functions.
4
- *
5
- * @deprecated 2.9.0
6
- */
7
-
8
- // Exit if accessed directly.
9
- defined( 'ABSPATH' ) || exit;
10
-
11
- /**
12
- * Replace default WordPress avatars with BP avatars, if available.
13
- *
14
- * See 'get_avatar' filter description in wp-includes/pluggable.php.
15
- *
16
- * @since 1.1.0
17
- * @since 2.4.0 Added $args parameter to coincide with WordPress 4.2.0.
18
- *
19
- * @param string $avatar The avatar path passed to 'get_avatar'.
20
- * @param int|string|object $user A user ID, email address, or comment object.
21
- * @param int $size Size of the avatar image ('thumb' or 'full').
22
- * @param string $default URL to a default image to use if no avatar is available.
23
- * @param string $alt Alternate text to use in image tag. Default: ''.
24
- * @param array $args Arguments passed to get_avatar_data(), after processing.
25
- * @return string BP avatar path, if found; else the original avatar path.
26
- */
27
- function bp_core_fetch_avatar_filter( $avatar, $user, $size, $default, $alt = '', $args = array() ) {
28
- _deprecated_function( __FUNCTION__, '2.9' );
29
- return $avatar;
30
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/avatar.min.js CHANGED
@@ -1 +1 @@
1
- window.bp=window.bp||{},function(e,t){"undefined"!=typeof BP_Uploader&&(bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Avatar={start:function(){var e=this;this.removeLegacyUI(),this.views=new Backbone.Collection,this.jcropapi={},this.warning=null,this.setupNav(),this.avatars=bp.Uploader.filesUploaded,this.Attachment=new Backbone.Model,bp.Uploader.filesQueue.on("reset",this.cropView,this),t("body.wp-admin").on("tb_unload","#TB_window",function(){e.resetViews()}),t("body.wp-admin").on("click",".bp-xprofile-avatar-user-edit",function(){e.resetViews()})},removeLegacyUI:function(){t("#avatar-upload-form").length?(t("#avatar-upload").remove(),t("#avatar-upload-form p").remove()):t("#group-settings-form").length?(t("#group-settings-form p").each(function(e){0!==e&&t(this).remove()}),t("#delete-group-avatar-button").length&&t("#delete-group-avatar-button").remove()):t("#group-create-body").length?(t(".main-column p #file").remove(),t(".main-column p #upload").remove()):t("#bp_xprofile_user_admin_avatar a.bp-xprofile-avatar-user-admin").length&&t("#bp_xprofile_user_admin_avatar a.bp-xprofile-avatar-user-admin").remove()},setView:function(e){switch(_.isUndefined(this.views.models)||_.each(this.views.models,function(e){e.get("view").remove()},this),this.views.reset(),_.isUndefined(this.avatars)||this.avatars.reset(),_.isEmpty(this.jcropapi)||(this.jcropapi.destroy(),this.jcropapi={}),e){case"upload":this.uploaderView();break;case"delete":this.deleteView()}},resetViews:function(){this.nav.trigger("bp-avatar-view:changed","upload"),_.each(this.navItems.models,function(e){"upload"===e.id?e.set({active:1}):e.set({active:0})})},setupNav:function(){var e,t,a=this;this.navItems=new Backbone.Collection,_.each(BP_Uploader.settings.nav,function(i,s){_.isObject(i)&&(t=0,0===s&&(e=i.id,t=1),a.navItems.add({id:i.id,name:i.caption,href:"#",active:t,hide:_.isUndefined(i.hide)?0:i.hide}))}),this.nav=new bp.Views.Nav({collection:this.navItems}),this.nav.inject(".bp-avatar-nav"),this.setView(e),this.nav.on("bp-avatar-view:changed",_.bind(this.setView,this))},uploaderView:function(){bp.Uploader.filesQueue.on("add",this.uploadProgress,this);var e=new bp.Views.Uploader;this.views.add({id:"upload",view:e}),e.inject(".bp-avatar")},uploadProgress:function(){var e=new bp.Views.uploaderStatus({collection:bp.Uploader.filesQueue});_.isUndefined(this.views.get("status"))?this.views.add({id:"status",view:e}):this.views.set({id:"status",view:e}),e.inject(".bp-avatar-status")},cropView:function(){var e;if(!_.isEmpty(this.avatars.models)){_.isUndefined(this.views.get("status"))||((e=this.views.get("status")).get("view").remove(),this.views.remove({id:"status",view:e}));var t=new bp.Views.Avatars({collection:this.avatars});this.views.add({id:"crop",view:t}),t.inject(".bp-avatar")}},setAvatar:function(e){var a,i=this;_.isUndefined(this.views.get("crop"))||(_.isEmpty(this.jcropapi)||(this.jcropapi.destroy(),this.jcropapi={}),(a=this.views.get("crop")).get("view").remove(),this.views.remove({id:"crop",view:a})),bp.ajax.post("bp_avatar_set",{json:!0,original_file:e.get("url"),crop_w:e.get("w"),crop_h:e.get("h"),crop_x:e.get("x"),crop_y:e.get("y"),item_id:e.get("item_id"),object:e.get("object"),type:_.isUndefined(e.get("type"))?"crop":e.get("type"),nonce:e.get("nonces").set}).done(function(a){var s=new bp.Views.AvatarStatus({value:BP_Uploader.strings.feedback_messages[a.feedback_code],type:"success"});i.views.add({id:"status",view:s}),s.inject(".bp-avatar-status"),t("."+e.get("object")+"-"+a.item_id+"-avatar").each(function(){t(this).prop("src",a.avatar)}),bp.Avatar.navItems.get("delete").set({hide:0}),i.Attachment.set(_.extend(_.pick(e.attributes,["object","item_id"]),{url:a.avatar,action:"uploaded"}))}).fail(function(e){var t=BP_Uploader.strings.default_error;_.isUndefined(e)||(t=BP_Uploader.strings.feedback_messages[e.feedback_code]);var a=new bp.Views.AvatarStatus({value:t,type:"error"});i.views.add({id:"status",view:a}),a.inject(".bp-avatar-status")})},deleteView:function(){var e=new Backbone.Model(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,"object","item_id","nonces")),t=new bp.Views.DeleteAvatar({model:e});this.views.add({id:"delete",view:t}),t.inject(".bp-avatar")},deleteAvatar:function(e){var a,i=this;_.isUndefined(this.views.get("delete"))||((a=this.views.get("delete")).get("view").remove(),this.views.remove({id:"delete",view:a})),bp.ajax.post("bp_avatar_delete",{json:!0,item_id:e.get("item_id"),object:e.get("object"),nonce:e.get("nonces").remove}).done(function(a){var s=new bp.Views.AvatarStatus({value:BP_Uploader.strings.feedback_messages[a.feedback_code],type:"success"});i.views.add({id:"status",view:s}),s.inject(".bp-avatar-status"),t("."+e.get("object")+"-"+a.item_id+"-avatar").each(function(){t(this).prop("src",a.avatar)}),bp.Avatar.navItems.get("delete").set({active:0,hide:1}),i.Attachment.set(_.extend(_.pick(e.attributes,["object","item_id"]),{url:a.avatar,action:"deleted"}))}).fail(function(e){var t=BP_Uploader.strings.default_error;_.isUndefined(e)||(t=BP_Uploader.strings.feedback_messages[e.feedback_code]);var a=new bp.Views.AvatarStatus({value:t,type:"error"});i.views.add({id:"status",view:a}),a.inject(".bp-avatar-status")})},removeWarning:function(){_.isNull(this.warning)||this.warning.remove()},displayWarning:function(e){this.removeWarning(),this.warning=new bp.Views.uploaderWarning({value:e}),this.warning.inject(".bp-avatar-status")}},bp.Views.Nav=bp.View.extend({tagName:"ul",className:"avatar-nav-items",events:{"click .bp-avatar-nav-item":"toggleView"},initialize:function(){1!==_.findWhere(this.collection.models,{id:"delete"}).get("hide")&&bp.Avatar.displayWarning(BP_Uploader.strings.has_avatar_warning),_.each(this.collection.models,this.addNavItem,this),this.collection.on("change:hide",this.showHideNavItem,this)},addNavItem:function(e){1!==e.get("hide")&&this.views.add(new bp.Views.NavItem({model:e}))},showHideNavItem:function(e){var t=null;_.each(this.views._views[""],function(a){1===a.model.get("hide")&&a.remove(),e.get("id")===a.model.get("id")&&(t=!0)}),_.isBoolean(t)||this.addNavItem(e)},toggleView:function(e){e.preventDefault(),bp.Avatar.removeWarning();var a=t(e.target).data("nav");_.each(this.collection.models,function(e){e.id===a?(e.set({active:1}),this.trigger("bp-avatar-view:changed",e.id)):e.set({active:0})},this)}}),bp.Views.NavItem=bp.View.extend({tagName:"li",className:"avatar-nav-item",template:bp.template("bp-avatar-nav"),initialize:function(){1===this.model.get("active")&&(this.el.className+=" current"),this.el.id+="bp-avatar-"+this.model.get("id"),this.model.on("change:active",this.setCurrentNav,this)},setCurrentNav:function(e){1===e.get("active")?this.$el.addClass("current"):this.$el.removeClass("current")}}),bp.Views.Avatars=bp.View.extend({className:"items",initialize:function(){_.each(this.collection.models,this.addItemView,this)},addItemView:function(e){var t={full_h:150,full_w:150};_.isUndefined(BP_Uploader.settings.crop.full_h)||_.isUndefined(BP_Uploader.settings.crop.full_w)||(t.full_h=BP_Uploader.settings.crop.full_h,t.full_w=BP_Uploader.settings.crop.full_w),e.set(_.extend(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,"object","item_id","nonces"),t)),this.views.add(new bp.Views.Avatar({model:e}))}}),bp.Views.Avatar=bp.View.extend({className:"item",template:bp.template("bp-avatar-item"),events:{"click .avatar-crop-submit":"cropAvatar"},initialize:function(){_.defaults(this.options,{full_h:BP_Uploader.settings.crop.full_h,full_w:BP_Uploader.settings.crop.full_w,aspectRatio:1}),!1!==this.model.get("feedback")&&bp.Avatar.displayWarning(this.model.get("feedback")),this.on("ready",this.initCropper)},initCropper:function(){var e,a,i,s,n,o,r=this,d=this.$el.find("#avatar-to-crop img"),l=this.$el.width(),p={};_.isUndefined(this.options.full_h)||_.isUndefined(this.options.full_w)||(this.options.aspectRatio=this.options.full_w/this.options.full_h),p.w=this.model.get("width"),p.h=this.model.get("height"),this.options.full_w+p.w+20<l&&(t("#avatar-to-crop").addClass("adjust"),this.$el.find(".avatar-crop-management").addClass("adjust")),p.h<=p.w?(e=Math.round(p.h/4),a=(n=o=Math.round(p.h/2))+e,s=o+(i=(p.w-o)/2)):(i=Math.round(p.w/4),n=o=Math.round(p.w/2),s=o+i,a=n+(e=(p.h-n)/2)),d.Jcrop({onChange:_.bind(r.showPreview,r),onSelect:_.bind(r.showPreview,r),aspectRatio:r.options.aspectRatio,setSelect:[i,e,s,a]},function(){bp.Avatar.jcropapi=this})},cropAvatar:function(e){e.preventDefault(),bp.Avatar.setAvatar(this.model)},showPreview:function(e){if(e.w&&e.h&&parseInt(e.w,10)>0){var a=this.options.full_w,i=this.options.full_h,s=a/e.w,n=i/e.h;this.model.set({x:e.x,y:e.y,w:e.w,h:e.h}),t("#avatar-crop-preview").css({maxWidth:"none",width:Math.round(s*this.model.get("width"))+"px",height:Math.round(n*this.model.get("height"))+"px",marginLeft:"-"+Math.round(s*this.model.get("x"))+"px",marginTop:"-"+Math.round(n*this.model.get("y"))+"px"})}}}),bp.Views.AvatarStatus=bp.View.extend({tagName:"p",className:"updated",id:"bp-avatar-feedback",initialize:function(){this.el.className+=" "+this.options.type,this.value=this.options.value},render:function(){return this.$el.html(this.value),this}}),bp.Views.DeleteAvatar=bp.View.extend({tagName:"div",id:"bp-delete-avatar-container",template:bp.template("bp-avatar-delete"),events:{"click #bp-delete-avatar":"deleteAvatar"},deleteAvatar:function(e){e.preventDefault(),bp.Avatar.deleteAvatar(this.model)}}),bp.Avatar.start())}(bp,jQuery);
1
+ window.bp=window.bp||{},function(a,b){"undefined"!=typeof BP_Uploader&&(bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Avatar={start:function(){var a=this;this.removeLegacyUI(),this.views=new Backbone.Collection,this.jcropapi={},this.warning=null,this.setupNav(),this.avatars=bp.Uploader.filesUploaded,this.Attachment=new Backbone.Model,bp.Uploader.filesQueue.on("reset",this.cropView,this),b("body.wp-admin").on("tb_unload","#TB_window",function(){a.resetViews()}),b("body.wp-admin").on("click",".bp-xprofile-avatar-user-edit",function(){a.resetViews()})},removeLegacyUI:function(){b("#avatar-upload-form").length?(b("#avatar-upload").remove(),b("#avatar-upload-form p").remove()):b("#group-settings-form").length?(b("#group-settings-form p").each(function(a){0!==a&&b(this).remove()}),b("#delete-group-avatar-button").length&&b("#delete-group-avatar-button").remove()):b("#group-create-body").length?(b(".main-column p #file").remove(),b(".main-column p #upload").remove()):b("#bp_xprofile_user_admin_avatar a.bp-xprofile-avatar-user-admin").length&&b("#bp_xprofile_user_admin_avatar a.bp-xprofile-avatar-user-admin").remove()},setView:function(a){switch(_.isUndefined(this.views.models)||_.each(this.views.models,function(a){a.get("view").remove()},this),this.views.reset(),_.isUndefined(this.avatars)||this.avatars.reset(),_.isEmpty(this.jcropapi)||(this.jcropapi.destroy(),this.jcropapi={}),a){case"upload":this.uploaderView();break;case"delete":this.deleteView()}},resetViews:function(){this.nav.trigger("bp-avatar-view:changed","upload"),_.each(this.navItems.models,function(a){"upload"===a.id?a.set({active:1}):a.set({active:0})})},setupNav:function(){var a,b,c=this;this.navItems=new Backbone.Collection,_.each(BP_Uploader.settings.nav,function(d,e){_.isObject(d)&&(b=0,0===e&&(a=d.id,b=1),c.navItems.add({id:d.id,name:d.caption,href:"#",active:b,hide:_.isUndefined(d.hide)?0:d.hide}))}),this.nav=new bp.Views.Nav({collection:this.navItems}),this.nav.inject(".bp-avatar-nav"),this.setView(a),this.nav.on("bp-avatar-view:changed",_.bind(this.setView,this))},uploaderView:function(){bp.Uploader.filesQueue.on("add",this.uploadProgress,this);var a=new bp.Views.Uploader;this.views.add({id:"upload",view:a}),a.inject(".bp-avatar")},uploadProgress:function(){var a=new bp.Views.uploaderStatus({collection:bp.Uploader.filesQueue});_.isUndefined(this.views.get("status"))?this.views.add({id:"status",view:a}):this.views.set({id:"status",view:a}),a.inject(".bp-avatar-status")},cropView:function(){var a;if(!_.isEmpty(this.avatars.models)){_.isUndefined(this.views.get("status"))||(a=this.views.get("status"),a.get("view").remove(),this.views.remove({id:"status",view:a}));var b=new bp.Views.Avatars({collection:this.avatars});this.views.add({id:"crop",view:b}),b.inject(".bp-avatar")}},setAvatar:function(a){var c,d=this;_.isUndefined(this.views.get("crop"))||(_.isEmpty(this.jcropapi)||(this.jcropapi.destroy(),this.jcropapi={}),c=this.views.get("crop"),c.get("view").remove(),this.views.remove({id:"crop",view:c})),bp.ajax.post("bp_avatar_set",{json:!0,original_file:a.get("url"),crop_w:a.get("w"),crop_h:a.get("h"),crop_x:a.get("x"),crop_y:a.get("y"),item_id:a.get("item_id"),object:a.get("object"),type:_.isUndefined(a.get("type"))?"crop":a.get("type"),nonce:a.get("nonces").set}).done(function(c){var e=new bp.Views.AvatarStatus({value:BP_Uploader.strings.feedback_messages[c.feedback_code],type:"success"});d.views.add({id:"status",view:e}),e.inject(".bp-avatar-status"),b("."+a.get("object")+"-"+c.item_id+"-avatar").each(function(){b(this).prop("src",c.avatar)}),bp.Avatar.navItems.get("delete").set({hide:0}),d.Attachment.set(_.extend(_.pick(a.attributes,["object","item_id"]),{url:c.avatar,action:"uploaded"}))}).fail(function(a){var b=BP_Uploader.strings.default_error;_.isUndefined(a)||(b=BP_Uploader.strings.feedback_messages[a.feedback_code]);var c=new bp.Views.AvatarStatus({value:b,type:"error"});d.views.add({id:"status",view:c}),c.inject(".bp-avatar-status")})},deleteView:function(){var a=new Backbone.Model(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,"object","item_id","nonces")),b=new bp.Views.DeleteAvatar({model:a});this.views.add({id:"delete",view:b}),b.inject(".bp-avatar")},deleteAvatar:function(a){var c,d=this;_.isUndefined(this.views.get("delete"))||(c=this.views.get("delete"),c.get("view").remove(),this.views.remove({id:"delete",view:c})),bp.ajax.post("bp_avatar_delete",{json:!0,item_id:a.get("item_id"),object:a.get("object"),nonce:a.get("nonces").remove}).done(function(c){var e=new bp.Views.AvatarStatus({value:BP_Uploader.strings.feedback_messages[c.feedback_code],type:"success"});d.views.add({id:"status",view:e}),e.inject(".bp-avatar-status"),b("."+a.get("object")+"-"+c.item_id+"-avatar").each(function(){b(this).prop("src",c.avatar)}),bp.Avatar.navItems.get("delete").set({active:0,hide:1}),d.Attachment.set(_.extend(_.pick(a.attributes,["object","item_id"]),{url:c.avatar,action:"deleted"}))}).fail(function(a){var b=BP_Uploader.strings.default_error;_.isUndefined(a)||(b=BP_Uploader.strings.feedback_messages[a.feedback_code]);var c=new bp.Views.AvatarStatus({value:b,type:"error"});d.views.add({id:"status",view:c}),c.inject(".bp-avatar-status")})},removeWarning:function(){_.isNull(this.warning)||this.warning.remove()},displayWarning:function(a){this.removeWarning(),this.warning=new bp.Views.uploaderWarning({value:a}),this.warning.inject(".bp-avatar-status")}},bp.Views.Nav=bp.View.extend({tagName:"ul",className:"avatar-nav-items",events:{"click .bp-avatar-nav-item":"toggleView"},initialize:function(){var a=_.findWhere(this.collection.models,{id:"delete"});1!==a.get("hide")&&bp.Avatar.displayWarning(BP_Uploader.strings.has_avatar_warning),_.each(this.collection.models,this.addNavItem,this),this.collection.on("change:hide",this.showHideNavItem,this)},addNavItem:function(a){1!==a.get("hide")&&this.views.add(new bp.Views.NavItem({model:a}))},showHideNavItem:function(a){var b=null;_.each(this.views._views[""],function(c){1===c.model.get("hide")&&c.remove(),a.get("id")===c.model.get("id")&&(b=!0)}),_.isBoolean(b)||this.addNavItem(a)},toggleView:function(a){a.preventDefault(),bp.Avatar.removeWarning();var c=b(a.target).data("nav");_.each(this.collection.models,function(a){a.id===c?(a.set({active:1}),this.trigger("bp-avatar-view:changed",a.id)):a.set({active:0})},this)}}),bp.Views.NavItem=bp.View.extend({tagName:"li",className:"avatar-nav-item",template:bp.template("bp-avatar-nav"),initialize:function(){1===this.model.get("active")&&(this.el.className+=" current"),this.el.id+="bp-avatar-"+this.model.get("id"),this.model.on("change:active",this.setCurrentNav,this)},setCurrentNav:function(a){1===a.get("active")?this.$el.addClass("current"):this.$el.removeClass("current")}}),bp.Views.Avatars=bp.View.extend({className:"items",initialize:function(){_.each(this.collection.models,this.addItemView,this)},addItemView:function(a){var b={full_h:150,full_w:150};_.isUndefined(BP_Uploader.settings.crop.full_h)||_.isUndefined(BP_Uploader.settings.crop.full_w)||(b.full_h=BP_Uploader.settings.crop.full_h,b.full_w=BP_Uploader.settings.crop.full_w),a.set(_.extend(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,"object","item_id","nonces"),b)),this.views.add(new bp.Views.Avatar({model:a}))}}),bp.Views.Avatar=bp.View.extend({className:"item",template:bp.template("bp-avatar-item"),events:{"click .avatar-crop-submit":"cropAvatar"},initialize:function(){_.defaults(this.options,{full_h:BP_Uploader.settings.crop.full_h,full_w:BP_Uploader.settings.crop.full_w,aspectRatio:1}),!1!==this.model.get("feedback")&&bp.Avatar.displayWarning(this.model.get("feedback")),this.on("ready",this.initCropper)},initCropper:function(){var a,c,d,e,f,g,h=this,i=this.$el.find("#avatar-to-crop img"),j=this.$el.width(),k={};_.isUndefined(this.options.full_h)||_.isUndefined(this.options.full_w)||(this.options.aspectRatio=this.options.full_w/this.options.full_h),k.w=this.model.get("width"),k.h=this.model.get("height"),this.options.full_w+k.w+20<j&&(b("#avatar-to-crop").addClass("adjust"),this.$el.find(".avatar-crop-management").addClass("adjust")),k.h<=k.w?(a=Math.round(k.h/4),f=g=Math.round(k.h/2),c=f+a,d=(k.w-g)/2,e=g+d):(d=Math.round(k.w/4),f=g=Math.round(k.w/2),e=g+d,a=(k.h-f)/2,c=f+a),i.Jcrop({onChange:_.bind(h.showPreview,h),onSelect:_.bind(h.showPreview,h),aspectRatio:h.options.aspectRatio,setSelect:[d,a,e,c]},function(){bp.Avatar.jcropapi=this})},cropAvatar:function(a){a.preventDefault(),bp.Avatar.setAvatar(this.model)},showPreview:function(a){if(a.w&&a.h&&parseInt(a.w,10)>0){var c=this.options.full_w,d=this.options.full_h,e=c/a.w,f=d/a.h;this.model.set({x:a.x,y:a.y,w:a.w,h:a.h}),b("#avatar-crop-preview").css({maxWidth:"none",width:Math.round(e*this.model.get("width"))+"px",height:Math.round(f*this.model.get("height"))+"px",marginLeft:"-"+Math.round(e*this.model.get("x"))+"px",marginTop:"-"+Math.round(f*this.model.get("y"))+"px"})}}}),bp.Views.AvatarStatus=bp.View.extend({tagName:"p",className:"updated",id:"bp-avatar-feedback",initialize:function(){this.el.className+=" "+this.options.type,this.value=this.options.value},render:function(){return this.$el.html(this.value),this}}),bp.Views.DeleteAvatar=bp.View.extend({tagName:"div",id:"bp-delete-avatar-container",template:bp.template("bp-avatar-delete"),events:{"click #bp-delete-avatar":"deleteAvatar"},deleteAvatar:function(a){a.preventDefault(),bp.Avatar.deleteAvatar(this.model)}}),bp.Avatar.start())}(bp,jQuery);
bp-core/js/bp-plupload.js CHANGED
@@ -97,11 +97,6 @@ window.bp = window.bp || {};
97
 
98
  } );
99
 
100
- // See https://core.trac.wordpress.org/ticket/37039
101
- this.uploader.bind( 'postinit', function( up ) {
102
- up.refresh();
103
- });
104
-
105
  // Init BuddyPress Uploader
106
  this.uploader.init();
107
 
@@ -275,7 +270,7 @@ window.bp = window.bp || {};
275
  'IO_ERROR': self.strings.io_error,
276
  'HTTP_ERROR': self.strings.http_error,
277
  'SECURITY_ERROR': self.strings.security_error,
278
- 'FILE_SIZE_ERROR': self.strings.file_exceeds_size_limit.replace( '%s' , $( '<span />' ).text( pluploadError.file.name ).html() )
279
  };
280
 
281
  // Check for plupload errors.
97
 
98
  } );
99
 
 
 
 
 
 
100
  // Init BuddyPress Uploader
101
  this.uploader.init();
102
 
270
  'IO_ERROR': self.strings.io_error,
271
  'HTTP_ERROR': self.strings.http_error,
272
  'SECURITY_ERROR': self.strings.security_error,
273
+ 'FILE_SIZE_ERROR': self.strings.file_exceeds_size_limit.replace( '%s' , pluploadError.file.name )
274
  };
275
 
276
  // Check for plupload errors.
bp-core/js/bp-plupload.min.js CHANGED
@@ -1 +1 @@
1
- window.wp=window.wp||{},window.bp=window.bp||{},function(e,i){"undefined"!=typeof BP_Uploader&&(_.extend(bp,_.pick(wp,"Backbone","ajax","template")),bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Uploader={},bp.Uploader.uploader=function(){var e=this,t=-1!==navigator.userAgent.indexOf("Trident/")||-1!==navigator.userAgent.indexOf("MSIE ");this.params=BP_Uploader.settings,this.strings=BP_Uploader.strings,this.supports={upload:this.params.browser.supported},this.supported=this.supports.upload,this.supported?(t||"flash"!==plupload.predictRuntime(this.params.defaults)||this.params.defaults.required_features&&this.params.defaults.required_features.hasOwnProperty("send_binary_string")||(this.params.defaults.required_features=this.params.defaults.required_features||{},this.params.defaults.required_features.send_binary_string=!0),this.uploader=new plupload.Uploader(this.params.defaults),this.uploader.bind("Init",function(t){var s=i("#"+e.params.defaults.container),a=i("#"+e.params.defaults.drop_element);"html4"===t.runtime&&(t.settings.multipart_params.html4=!0),"bp_avatar_upload"===t.settings.multipart_params.action&&(t.settings.multipart_params.bp_params.ui_available_width=s.width()),t.features.dragdrop&&!e.params.browser.mobile?(s.addClass("drag-drop"),a.bind("dragover.wp-uploader",function(){s.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){s.removeClass("drag-over")})):(s.removeClass("drag-drop"),a.unbind(".wp-uploader"))}),this.uploader.bind("postinit",function(e){e.refresh()}),this.uploader.init(),this.feedback=function(e,i,t){!_.isNull(t)&&t.item&&t.item.clear(),bp.Uploader.filesError.unshift({message:e,data:i,file:t})},this.uploader.bind("FilesAdded",function(t,s){var a=parseInt(t.settings.max_file_size,10),r=this;if(!t.settings.multi_selection&&s.length>1){for(var n in s)t.removeFile(s[n]);i(e).trigger("bp-uploader-warning",e.strings.unique_file_warning)}else _.each(s,function(e){var i;plupload.FAILED!==e.status&&(a>104857600&&e.size>104857600&&"html5"!==t.runtime?r.uploadSizeError(t,e,!0):(i=_.extend({id:e.id,file:e,uploading:!0,date:new Date,filename:e.name},_.pick(e,"loaded","size","percent")),e.item=new bp.Models.File(i),bp.Uploader.filesQueue.add(e.item)))}),t.refresh(),t.start()}),this.uploader.bind("UploadProgress",function(e,i){i.item.set(_.pick(i,"loaded","percent"))}),this.uploader.bind("FileUploaded",function(i,t,s){var a=e.strings.default_error;try{s=JSON.parse(s.response)}catch(i){return e.feedback(a,i,t)}return!_.isObject(s)||_.isUndefined(s.success)?e.feedback(a,null,t):s.success?(_.each(["file","loaded","size","percent"],function(e){t.item.unset(e)}),t.item.set(_.extend(s.data,{uploading:!1})),void bp.Uploader.filesUploaded.add(t.item)):(s.data&&s.data.message&&(a=s.data.message),e.feedback(a,s.data,t))}),this.uploader.bind("BeforeUpload",function(t,s){i(e).trigger("bp-uploader-new-upload",t,s)}),this.uploader.bind("UploadComplete",function(t,s){i(e).trigger("bp-uploader-upload-complete",t,s),bp.Uploader.filesQueue.reset()}),this.uploader.bind("Error",function(t,s){var a,r=e.strings.default_error,n={FAILED:e.strings.upload_failed,FILE_EXTENSION_ERROR:e.strings.invalid_filetype,IMAGE_FORMAT_ERROR:e.strings.not_an_image,IMAGE_MEMORY_ERROR:e.strings.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:e.strings.image_dimensions_exceeded,GENERIC_ERROR:e.strings.upload_failed,IO_ERROR:e.strings.io_error,HTTP_ERROR:e.strings.http_error,SECURITY_ERROR:e.strings.security_error,FILE_SIZE_ERROR:e.strings.file_exceeds_size_limit.replace("%s",i("<span />").text(s.file.name).html())};for(a in n)if(s.code===plupload[a]){r=n[a];break}i(e).trigger("bp-uploader-warning",r),t.refresh()})):BP_Uploader=void 0},bp.Models.File=Backbone.Model.extend({file:{}}),i.extend(bp.Uploader,{filesQueue:new Backbone.Collection,filesUploaded:new Backbone.Collection,filesError:new Backbone.Collection}),bp.View=bp.Backbone.View.extend({inject:function(e){this.render(),i(e).html(this.el),this.views.ready()},prepare:function(){return!_.isUndefined(this.model)&&_.isFunction(this.model.toJSON)?this.model.toJSON():{}}}),bp.Views.Uploader=bp.View.extend({className:"bp-uploader-window",template:bp.template("upload-window"),defaults:_.pick(BP_Uploader.settings.defaults,"container","drop_element","browse_button"),initialize:function(){this.warnings=[],this.model=new Backbone.Model(this.defaults),this.on("ready",this.initUploader)},initUploader:function(){this.uploader=new bp.Uploader.uploader,i(this.uploader).on("bp-uploader-warning",_.bind(this.setWarning,this)),i(this.uploader).on("bp-uploader-new-upload",_.bind(this.resetWarning,this))},setWarning:function(e,i){if(!_.isUndefined(i)){var t=new bp.Views.uploaderWarning({value:i}).render();this.warnings.push(t),this.$el.after(t.el)}},resetWarning:function(){0!==this.warnings.length&&(_.each(this.warnings,function(e){e.remove()}),this.warnings=[])}}),bp.Views.uploaderWarning=bp.View.extend({tagName:"p",className:"warning",initialize:function(){this.value=this.options.value},render:function(){return this.$el.html(this.value),this}}),bp.Views.uploaderStatus=bp.View.extend({className:"files",initialize:function(){_.each(this.collection.models,this.addFile,this),this.collection.on("change:percent",this.progress,this),bp.Uploader.filesError.on("add",this.feedback,this)},addFile:function(e){this.views.add(new bp.Views.uploaderProgress({model:e}))},progress:function(e){_.isUndefined(e.get("percent"))||i("#"+e.get("id")+" .bp-progress .bp-bar").css("width",e.get("percent")+"%")},feedback:function(e){_.isUndefined(e.get("message"))||_.isUndefined(e.get("file"))||i("#"+e.get("file").id).html(e.get("message")).addClass("error")}}),bp.Views.uploaderProgress=bp.View.extend({className:"bp-uploader-progress",template:bp.template("progress-window")}))}(bp,jQuery);
1
+ window.wp=window.wp||{},window.bp=window.bp||{},function(a,b){"undefined"!=typeof BP_Uploader&&(_.extend(bp,_.pick(wp,"Backbone","ajax","template")),bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Uploader={},bp.Uploader.uploader=function(){var a=this,c=-1!==navigator.userAgent.indexOf("Trident/")||-1!==navigator.userAgent.indexOf("MSIE ");return this.params=BP_Uploader.settings,this.strings=BP_Uploader.strings,this.supports={upload:this.params.browser.supported},this.supported=this.supports.upload,this.supported?(c||"flash"!==plupload.predictRuntime(this.params.defaults)||this.params.defaults.required_features&&this.params.defaults.required_features.hasOwnProperty("send_binary_string")||(this.params.defaults.required_features=this.params.defaults.required_features||{},this.params.defaults.required_features.send_binary_string=!0),this.uploader=new plupload.Uploader(this.params.defaults),this.uploader.bind("Init",function(c){var d=b("#"+a.params.defaults.container),e=b("#"+a.params.defaults.drop_element);"html4"===c.runtime&&(c.settings.multipart_params.html4=!0),"bp_avatar_upload"===c.settings.multipart_params.action&&(c.settings.multipart_params.bp_params.ui_available_width=d.width()),c.features.dragdrop&&!a.params.browser.mobile?(d.addClass("drag-drop"),e.bind("dragover.wp-uploader",function(){d.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){d.removeClass("drag-over")})):(d.removeClass("drag-drop"),e.unbind(".wp-uploader"))}),this.uploader.init(),this.feedback=function(a,b,c){!_.isNull(c)&&c.item&&c.item.clear(),bp.Uploader.filesError.unshift({message:a,data:b,file:c})},this.uploader.bind("FilesAdded",function(c,d){var e=104857600,f=parseInt(c.settings.max_file_size,10),g=this;if(!c.settings.multi_selection&&d.length>1){for(var h in d)c.removeFile(d[h]);return void b(a).trigger("bp-uploader-warning",a.strings.unique_file_warning)}_.each(d,function(a){var b;plupload.FAILED!==a.status&&(f>e&&a.size>e&&"html5"!==c.runtime?g.uploadSizeError(c,a,!0):(b=_.extend({id:a.id,file:a,uploading:!0,date:new Date,filename:a.name},_.pick(a,"loaded","size","percent")),a.item=new bp.Models.File(b),bp.Uploader.filesQueue.add(a.item)))}),c.refresh(),c.start()}),this.uploader.bind("UploadProgress",function(a,b){b.item.set(_.pick(b,"loaded","percent"))}),this.uploader.bind("FileUploaded",function(b,c,d){var e=a.strings.default_error;try{d=JSON.parse(d.response)}catch(f){return a.feedback(e,f,c)}return!_.isObject(d)||_.isUndefined(d.success)?a.feedback(e,null,c):d.success?(_.each(["file","loaded","size","percent"],function(a){c.item.unset(a)}),c.item.set(_.extend(d.data,{uploading:!1})),void bp.Uploader.filesUploaded.add(c.item)):(d.data&&d.data.message&&(e=d.data.message),a.feedback(e,d.data,c))}),this.uploader.bind("BeforeUpload",function(c,d){b(a).trigger("bp-uploader-new-upload",c,d)}),this.uploader.bind("UploadComplete",function(c,d){b(a).trigger("bp-uploader-upload-complete",c,d),bp.Uploader.filesQueue.reset()}),void this.uploader.bind("Error",function(c,d){var e,f=a.strings.default_error,g={FAILED:a.strings.upload_failed,FILE_EXTENSION_ERROR:a.strings.invalid_filetype,IMAGE_FORMAT_ERROR:a.strings.not_an_image,IMAGE_MEMORY_ERROR:a.strings.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:a.strings.image_dimensions_exceeded,GENERIC_ERROR:a.strings.upload_failed,IO_ERROR:a.strings.io_error,HTTP_ERROR:a.strings.http_error,SECURITY_ERROR:a.strings.security_error,FILE_SIZE_ERROR:a.strings.file_exceeds_size_limit.replace("%s",d.file.name)};for(e in g)if(d.code===plupload[e]){f=g[e];break}b(a).trigger("bp-uploader-warning",f),c.refresh()})):void(BP_Uploader=void 0)},bp.Models.File=Backbone.Model.extend({file:{}}),b.extend(bp.Uploader,{filesQueue:new Backbone.Collection,filesUploaded:new Backbone.Collection,filesError:new Backbone.Collection}),bp.View=bp.Backbone.View.extend({inject:function(a){this.render(),b(a).html(this.el),this.views.ready()},prepare:function(){return!_.isUndefined(this.model)&&_.isFunction(this.model.toJSON)?this.model.toJSON():{}}}),bp.Views.Uploader=bp.View.extend({className:"bp-uploader-window",template:bp.template("upload-window"),defaults:_.pick(BP_Uploader.settings.defaults,"container","drop_element","browse_button"),initialize:function(){this.warnings=[],this.model=new Backbone.Model(this.defaults),this.on("ready",this.initUploader)},initUploader:function(){this.uploader=new bp.Uploader.uploader,b(this.uploader).on("bp-uploader-warning",_.bind(this.setWarning,this)),b(this.uploader).on("bp-uploader-new-upload",_.bind(this.resetWarning,this))},setWarning:function(a,b){if(!_.isUndefined(b)){var c=new bp.Views.uploaderWarning({value:b}).render();this.warnings.push(c),this.$el.after(c.el)}},resetWarning:function(){0!==this.warnings.length&&(_.each(this.warnings,function(a){a.remove()}),this.warnings=[])}}),bp.Views.uploaderWarning=bp.View.extend({tagName:"p",className:"warning",initialize:function(){this.value=this.options.value},render:function(){return this.$el.html(this.value),this}}),bp.Views.uploaderStatus=bp.View.extend({className:"files",initialize:function(){_.each(this.collection.models,this.addFile,this),this.collection.on("change:percent",this.progress,this),bp.Uploader.filesError.on("add",this.feedback,this)},addFile:function(a){this.views.add(new bp.Views.uploaderProgress({model:a}))},progress:function(a){_.isUndefined(a.get("percent"))||b("#"+a.get("id")+" .bp-progress .bp-bar").css("width",a.get("percent")+"%")},feedback:function(a){_.isUndefined(a.get("message"))||_.isUndefined(a.get("file"))||b("#"+a.get("file").id).html(a.get("message")).addClass("error")}}),bp.Views.uploaderProgress=bp.View.extend({className:"bp-uploader-progress",template:bp.template("progress-window")}))}(bp,jQuery);
bp-core/js/confirm.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){jQuery("a.confirm").click(function(){return!!confirm(BP_Confirm.are_you_sure)})});
1
+ jQuery(document).ready(function(){jQuery("a.confirm").click(function(){return confirm(BP_Confirm.are_you_sure)?!0:!1})});
bp-core/js/cover-image.min.js CHANGED
@@ -1 +1 @@
1
- window.bp=window.bp||{},function(e,i){"undefined"!=typeof BP_Uploader&&(bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.CoverImage={start:function(){this.views=new Backbone.Collection,this.warning=null,this.Attachment=new Backbone.Model,this.uploaderView(),this.displayWarning(BP_Uploader.strings.cover_image_warnings.dimensions),!0===BP_Uploader.settings.defaults.multipart_params.bp_params.has_cover_image&&this.deleteView()},uploaderView:function(){bp.Uploader.filesQueue.on("add",this.uploadProgress,this);var e=new bp.Views.Uploader;this.views.add({id:"upload",view:e}),e.inject(".bp-cover-image")},uploadProgress:function(){var e=new bp.Views.coverImageUploadProgress({collection:bp.Uploader.filesQueue});_.isUndefined(this.views.get("status"))?this.views.add({id:"status",view:e}):this.views.set({id:"status",view:e}),e.inject(".bp-cover-image-status")},deleteView:function(){var e=new Backbone.Model(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,["object","item_id","nonces"]));if(_.isUndefined(this.views.get("delete"))){var i=new bp.Views.DeleteCoverImage({model:e});this.views.add({id:"delete",view:i}),i.inject(".bp-cover-image-manage")}},deleteCoverImage:function(e){var t,a=this;_.isUndefined(this.views.get("delete"))||((t=this.views.get("delete")).get("view").remove(),this.views.remove({id:"delete",view:t})),bp.ajax.post("bp_cover_image_delete",{json:!0,item_id:e.get("item_id"),object:e.get("object"),nonce:e.get("nonces").remove}).done(function(t){var s=new bp.Views.CoverImageStatus({value:BP_Uploader.strings.feedback_messages[t.feedback_code],type:"success"});a.views.add({id:"status",view:s}),s.inject(".bp-cover-image-status"),""===t.reset_url?i("#header-cover-image").css({"background-image":"none"}):i("#header-cover-image").css({"background-image":"url( "+t.reset_url+" )"}),BP_Uploader.settings.defaults.multipart_params.bp_params.has_cover_image=!1,a.Attachment.set(_.extend(_.pick(e.attributes,["object","item_id"]),{url:t.reset_url,action:"deleted"}))}).fail(function(e){var i=BP_Uploader.strings.default_error;_.isUndefined(e)||(i=BP_Uploader.strings.feedback_messages[e.feedback_code]);var t=new bp.Views.CoverImageStatus({value:i,type:"error"});a.views.add({id:"status",view:t}),t.inject(".bp-cover-image-status"),bp.CoverImage.deleteView()})},removeWarning:function(){_.isNull(this.warning)||this.warning.remove()},displayWarning:function(e){this.removeWarning(),this.warning=new bp.Views.uploaderWarning({value:e}),this.warning.inject(".bp-cover-image-status")}},bp.Views.coverImageUploadProgress=bp.Views.uploaderStatus.extend({className:"files",initialize:function(){bp.Views.uploaderStatus.prototype.initialize.apply(this,arguments),this.collection.on("change:url",this.uploadResult,this)},uploadResult:function(e){var t,a;_.isUndefined(e.get("url"))||(0===e.get("feedback_code")?(t=BP_Uploader.strings.cover_image_warnings.dimensions,a="warning"):(t=BP_Uploader.strings.feedback_messages[e.get("feedback_code")],a="success"),this.views.set(".bp-uploader-progress",new bp.Views.CoverImageStatus({value:t,type:a})),i("#header-cover-image").css({"background-image":"url( "+e.get("url")+" )"}),bp.CoverImage.deleteView(),bp.CoverImage.Attachment.set(_.extend(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,["object","item_id"]),{url:e.get("url"),action:"uploaded"})))}}),bp.Views.CoverImageStatus=bp.View.extend({tagName:"p",className:"updated",id:"bp-cover-image-feedback",initialize:function(){this.el.className+=" "+this.options.type,this.value=this.options.value},render:function(){return this.$el.html(this.value),this}}),bp.Views.DeleteCoverImage=bp.View.extend({tagName:"div",id:"bp-delete-cover-image-container",template:bp.template("bp-cover-image-delete"),events:{"click #bp-delete-cover-image":"deleteCoverImage"},deleteCoverImage:function(e){e.preventDefault(),bp.CoverImage.deleteCoverImage(this.model)}}),bp.CoverImage.start())}(bp,jQuery);
1
+ window.bp=window.bp||{},function(a,b){"undefined"!=typeof BP_Uploader&&(bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.CoverImage={start:function(){this.views=new Backbone.Collection,this.warning=null,this.Attachment=new Backbone.Model,this.uploaderView(),this.displayWarning(BP_Uploader.strings.cover_image_warnings.dimensions),!0===BP_Uploader.settings.defaults.multipart_params.bp_params.has_cover_image&&this.deleteView()},uploaderView:function(){bp.Uploader.filesQueue.on("add",this.uploadProgress,this);var a=new bp.Views.Uploader;this.views.add({id:"upload",view:a}),a.inject(".bp-cover-image")},uploadProgress:function(){var a=new bp.Views.coverImageUploadProgress({collection:bp.Uploader.filesQueue});_.isUndefined(this.views.get("status"))?this.views.add({id:"status",view:a}):this.views.set({id:"status",view:a}),a.inject(".bp-cover-image-status")},deleteView:function(){var a=new Backbone.Model(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,["object","item_id","nonces"]));if(_.isUndefined(this.views.get("delete"))){var b=new bp.Views.DeleteCoverImage({model:a});this.views.add({id:"delete",view:b}),b.inject(".bp-cover-image-manage")}},deleteCoverImage:function(a){var c,d=this;_.isUndefined(this.views.get("delete"))||(c=this.views.get("delete"),c.get("view").remove(),this.views.remove({id:"delete",view:c})),bp.ajax.post("bp_cover_image_delete",{json:!0,item_id:a.get("item_id"),object:a.get("object"),nonce:a.get("nonces").remove}).done(function(c){var e=new bp.Views.CoverImageStatus({value:BP_Uploader.strings.feedback_messages[c.feedback_code],type:"success"});d.views.add({id:"status",view:e}),e.inject(".bp-cover-image-status"),""===c.reset_url?b("#header-cover-image").css({"background-image":"none"}):b("#header-cover-image").css({"background-image":"url( "+c.reset_url+" )"}),BP_Uploader.settings.defaults.multipart_params.bp_params.has_cover_image=!1,d.Attachment.set(_.extend(_.pick(a.attributes,["object","item_id"]),{url:c.reset_url,action:"deleted"}))}).fail(function(a){var b=BP_Uploader.strings.default_error;_.isUndefined(a)||(b=BP_Uploader.strings.feedback_messages[a.feedback_code]);var c=new bp.Views.CoverImageStatus({value:b,type:"error"});d.views.add({id:"status",view:c}),c.inject(".bp-cover-image-status"),bp.CoverImage.deleteView()})},removeWarning:function(){_.isNull(this.warning)||this.warning.remove()},displayWarning:function(a){this.removeWarning(),this.warning=new bp.Views.uploaderWarning({value:a}),this.warning.inject(".bp-cover-image-status")}},bp.Views.coverImageUploadProgress=bp.Views.uploaderStatus.extend({className:"files",initialize:function(){bp.Views.uploaderStatus.prototype.initialize.apply(this,arguments),this.collection.on("change:url",this.uploadResult,this)},uploadResult:function(a){var c,d;_.isUndefined(a.get("url"))||(0===a.get("feedback_code")?(c=BP_Uploader.strings.cover_image_warnings.dimensions,d="warning"):(c=BP_Uploader.strings.feedback_messages[a.get("feedback_code")],d="success"),this.views.set(".bp-uploader-progress",new bp.Views.CoverImageStatus({value:c,type:d})),b("#header-cover-image").css({"background-image":"url( "+a.get("url")+" )"}),bp.CoverImage.deleteView(),bp.CoverImage.Attachment.set(_.extend(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,["object","item_id"]),{url:a.get("url"),action:"uploaded"})))}}),bp.Views.CoverImageStatus=bp.View.extend({tagName:"p",className:"updated",id:"bp-cover-image-feedback",initialize:function(){this.el.className+=" "+this.options.type,this.value=this.options.value},render:function(){return this.$el.html(this.value),this}}),bp.Views.DeleteCoverImage=bp.View.extend({tagName:"div",id:"bp-delete-cover-image-container",template:bp.template("bp-cover-image-delete"),events:{"click #bp-delete-cover-image":"deleteCoverImage"},deleteCoverImage:function(a){a.preventDefault(),bp.CoverImage.deleteCoverImage(this.model)}}),bp.CoverImage.start())}(bp,jQuery);
bp-core/js/{vendor/jquery-cookie.js → jquery-cookie.js} RENAMED
File without changes
bp-core/js/jquery-cookie.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
bp-core/js/jquery-query.min.js CHANGED
@@ -1 +1 @@
1
- function bp_get_querystring(n){var t=location.search.split(n+"=")[1];return t?decodeURIComponent(t.split("&")[0]):null}
1
+ function bp_get_querystring(a){var b=location.search.split(a+"=")[1];return b?decodeURIComponent(b.split("&")[0]):null}
bp-core/js/{vendor/jquery-scroll-to.js → jquery-scroll-to.js} RENAMED
File without changes
bp-core/js/jquery-scroll-to.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(b){return a.isFunction(b)||"object"==typeof b?b:{top:b,left:b}}var c=a.scrollTo=function(b,c,d){return a(window).scrollTo(b,c,d)};return c.defaults={axis:"xy",duration:parseFloat(a.fn.jquery)>=1.3?0:1,limit:!0},c.window=function(){return a(window)._scrollable()},a.fn._scrollable=function(){return this.map(function(){var b=this,c=!b.nodeName||-1!==a.inArray(b.nodeName.toLowerCase(),["iframe","#document","html","body"]);if(!c)return b;var d=(b.contentWindow||b).document||b.ownerDocument||b;return/webkit/i.test(navigator.userAgent)||"BackCompat"===d.compatMode?d.body:d.documentElement})},a.fn.scrollTo=function(d,e,f){return"object"==typeof e&&(f=e,e=0),"function"==typeof f&&(f={onAfter:f}),"max"===d&&(d=9e9),f=a.extend({},c.defaults,f),e=e||f.duration,f.queue=f.queue&&f.axis.length>1,f.queue&&(e/=2),f.offset=b(f.offset),f.over=b(f.over),this._scrollable().each(function(){function g(a){j.animate(l,e,f.easing,a&&function(){a.call(this,k,f)})}if(null!==d){var h,i=this,j=a(i),k=d,l={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}if(k=m?a(k):a(k,this),!k.length)return;case"object":(k.is||k.style)&&(h=(k=a(k)).offset())}var n=a.isFunction(f.offset)&&f.offset(i,k)||f.offset;a.each(f.axis.split(""),function(a,b){var d="x"===b?"Left":"Top",e=d.toLowerCase(),o="scroll"+d,p=i[o],q=c.max(i,b);if(h)l[o]=h[e]+(m?0:p-j.offset()[e]),f.margin&&(l[o]-=parseInt(k.css("margin"+d))||0,l[o]-=parseInt(k.css("border"+d+"Width"))||0),l[o]+=n[e]||0,f.over[e]&&(l[o]+=k["x"===b?"width":"height"]()*f.over[e]);else{var r=k[e];l[o]=r.slice&&"%"===r.slice(-1)?parseFloat(r)/100*q:r}f.limit&&/^\d+$/.test(l[o])&&(l[o]=l[o]<=0?0:Math.min(l[o],q)),!a&&f.queue&&(p!==l[o]&&g(f.onAfterFirst),delete l[o])}),g(f.onAfter)}}).end()},c.max=function(b,c){var d="x"===c?"Width":"Height",e="scroll"+d;if(!a(b).is("html,body"))return b[e]-a(b)[d.toLowerCase()]();var f="client"+d,g=b.ownerDocument.documentElement,h=b.ownerDocument.body;return Math.max(g[e],h[e])-Math.min(g[f],h[f])},c});
bp-core/js/{vendor/jquery.atwho.js → jquery.atwho.js} RENAMED
File without changes
bp-core/js/jquery.atwho.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){var b,c,d,e,f,g,h,i=[].slice;c=function(){function b(b){this.current_flag=null,this.controllers={},this.alias_maps={},this.$inputor=a(b),this.setIframe(),this.listen()}return b.prototype.createContainer=function(b){return 0===(this.$el=a("#atwho-container",b)).length?a(b.body).append(this.$el=a("<div id='atwho-container'></div>")):void 0},b.prototype.setIframe=function(a,b){var c;return null==b&&(b=!1),a?(this.window=a.contentWindow,this.document=a.contentDocument||this.window.document,this.iframe=a):(this.document=document,this.window=window,this.iframe=null),(this.iframeStandalone=b)?(null!=(c=this.$el)&&c.remove(),this.createContainer(this.document)):this.createContainer(document)},b.prototype.controller=function(a){var b,c,d,e;if(this.alias_maps[a])c=this.controllers[this.alias_maps[a]];else{e=this.controllers;for(d in e)if(b=e[d],d===a){c=b;break}}return c?c:this.controllers[this.current_flag]},b.prototype.set_context_for=function(a){return this.current_flag=a,this},b.prototype.reg=function(a,b){var c,e;return c=(e=this.controllers)[a]||(e[a]=new d(this,a)),b.alias&&(this.alias_maps[b.alias]=a),c.init(b),this},b.prototype.listen=function(){return this.$inputor.on("keyup.atwhoInner",function(a){return function(b){return a.on_keyup(b)}}(this)).on("keydown.atwhoInner",function(a){return function(b){return a.on_keydown(b)}}(this)).on("scroll.atwhoInner",function(a){return function(b){var c;return null!=(c=a.controller())?c.view.hide(b):void 0}}(this)).on("blur.atwhoInner",function(a){return function(b){var c;return(c=a.controller())?c.view.hide(b,c.get_opt("display_timeout")):void 0}}(this)).on("click.atwhoInner",function(a){return function(b){return a.dispatch()}}(this))},b.prototype.shutdown=function(){var a,b,c;c=this.controllers;for(b in c)a=c[b],a.destroy(),delete this.controllers[b];return this.$inputor.off(".atwhoInner"),this.$el.remove()},b.prototype.dispatch=function(){return a.map(this.controllers,function(a){return function(b){var c;return(c=b.get_opt("delay"))?(clearTimeout(a.delayedCallback),a.delayedCallback=setTimeout(function(){return b.look_up()?a.set_context_for(b.at):void 0},c)):b.look_up()?a.set_context_for(b.at):void 0}}(this))},b.prototype.on_keyup=function(b){var c;switch(b.keyCode){case f.ESC:b.preventDefault(),null!=(c=this.controller())&&c.view.hide();break;case f.DOWN:case f.UP:case f.CTRL:a.noop();break;case f.P:case f.N:b.ctrlKey||this.dispatch();break;default:this.dispatch()}},b.prototype.on_keydown=function(b){var c,d;if(c=null!=(d=this.controller())?d.view:void 0,c&&c.visible())switch(b.keyCode){case f.ESC:b.preventDefault(),c.hide(b);break;case f.UP:b.preventDefault(),c.prev();break;case f.DOWN:b.preventDefault(),c.next();break;case f.P:if(!b.ctrlKey)return;b.preventDefault(),c.prev();break;case f.N:if(!b.ctrlKey)return;b.preventDefault(),c.next();break;case f.TAB:case f.ENTER:if(!c.visible())return;b.preventDefault(),c.choose(b);break;default:a.noop()}},b}(),d=function(){function b(b,c){this.app=b,this.at=c,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.setting=null,this.query=null,this.pos=0,this.cur_rect=null,this.range=null,0===(this.$el=a("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=a("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new g(this),this.view=new h(this)}return b.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},b.prototype.init=function(b){return this.setting=a.extend({},this.setting||a.fn.atwho["default"],b),this.view.init(),this.model.reload(this.setting.data)},b.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},b.prototype.call_default=function(){var b,c,d;d=arguments[0],b=2<=arguments.length?i.call(arguments,1):[];try{return e[d].apply(this,b)}catch(f){return c=f,a.error(""+c+" Or maybe At.js doesn't have function "+d)}},b.prototype.trigger=function(a,b){var c,d;return null==b&&(b=[]),b.push(this),c=this.get_opt("alias"),d=c?""+a+"-"+c+".atwho":""+a+".atwho",this.$inputor.trigger(d,b)},b.prototype.callbacks=function(a){return this.get_opt("callbacks")[a]||e[a]},b.prototype.get_opt=function(a,b){var c;try{return this.setting[a]}catch(d){return c=d,null}},b.prototype.content=function(){var a;if(this.$inputor.is("textarea, input"))return this.$inputor.val();if(a=this.mark_range())return(a.startContainer.textContent||"").slice(0,a.startOffset)},b.prototype.catch_query=function(){var a,b,c,d,e,f;return b=this.content(),a=this.$inputor.caret("pos",{iframe:this.app.iframe}),f=b.slice(0,a),d=this.callbacks("matcher").call(this,this.at,f,this.get_opt("start_with_space")),"string"==typeof d&&d.length<=this.get_opt("max_len",20)?(e=a-d.length,c=e+d.length,this.pos=e,d={text:d,head_pos:e,end_pos:c},this.trigger("matched",[this.at,d.text])):(d=null,this.view.hide()),this.query=d},b.prototype.rect=function(){var b,c,d;if(b=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeStandalone&&(c=a(this.app.iframe).offset(),b.left+=c.left,b.top+=c.top),this.$inputor.is("[contentEditable]")&&(b=this.cur_rect||(this.cur_rect=b)),d=this.app.document.selection?0:2,{left:b.left,top:b.top,bottom:b.top+b.height+d}},b.prototype.reset_rect=function(){return this.$inputor.is("[contentEditable]")?this.cur_rect=null:void 0},b.prototype.mark_range=function(){var a;if(this.$inputor.is("[contentEditable]"))return this.app.window.getSelection&&(a=this.app.window.getSelection()).rangeCount>0?this.range=a.getRangeAt(0):this.app.document.selection?this.ie8_range=this.app.document.selection.createRange():void 0},b.prototype.insert_content_for=function(b){var c,d,e;return d=b.data("value"),e=this.get_opt("insert_tpl"),this.$inputor.is("textarea, input")||!e?d:(c=a.extend({},b.data("item-data"),{"atwho-data-value":d,"atwho-at":this.at}),this.callbacks("tpl_eval").call(this,e,c))},b.prototype.insert=function(b,c){var d,e,f,g,h,i,j,k,l,m,n,o;if(d=this.$inputor,l=this.callbacks("inserting_wrapper").call(this,d,b,this.get_opt("suffix")),d.is("textarea, input"))i=d.val(),j=i.slice(0,Math.max(this.query.head_pos-this.at.length,0)),k=""+j+l+i.slice(this.query.end_pos||0),d.val(k),d.caret("pos",j.length+l.length,{iframe:this.app.iframe});else if(g=this.range){for(f=g.startOffset-(this.query.end_pos-this.query.head_pos)-this.at.length,g.setStart(g.endContainer,Math.max(f,0)),g.setEnd(g.endContainer,g.endOffset),g.deleteContents(),o=a(l,this.app.document),m=0,n=o.length;n>m;m++)e=o[m],g.insertNode(e),g.setEndAfter(e),g.collapse(!1);h=this.app.window.getSelection(),h.removeAllRanges(),h.addRange(g)}else(g=this.ie8_range)&&(g.moveStart("character",this.query.end_pos-this.query.head_pos-this.at.length),g.pasteHTML(l),g.collapse(!1),g.select());return d.is(":focus")||d.focus(),d.change()},b.prototype.render_view=function(a){var b;return b=this.get_opt("search_key"),a=this.callbacks("sorter").call(this,this.query.text,a.slice(0,1001),b),this.view.render(a.slice(0,this.get_opt("limit")))},b.prototype.look_up=function(){var b,c;if(b=this.catch_query())return c=function(a){return a&&a.length>0?this.render_view(a):this.view.hide()},this.model.query(b.text,a.proxy(c,this)),b},b}(),g=function(){function b(a){this.context=a,this.at=this.context.at,this.storage=this.context.$inputor}return b.prototype.destroy=function(){return this.storage.data(this.at,null)},b.prototype.saved=function(){return this.fetch()>0},b.prototype.query=function(a,b){var c,d,e;return c=this.fetch(),d=this.context.get_opt("search_key"),c=this.context.callbacks("filter").call(this.context,a,c,d)||[],e=this.context.callbacks("remote_filter"),c.length>0||!e&&0===c.length?b(c):e.call(this.context,a,b)},b.prototype.fetch=function(){return this.storage.data(this.at)||[]},b.prototype.save=function(a){return this.storage.data(this.at,this.context.callbacks("before_save").call(this.context,a||[]))},b.prototype.load=function(a){return!this.saved()&&a?this._load(a):void 0},b.prototype.reload=function(a){return this._load(a)},b.prototype._load=function(b){return"string"==typeof b?a.ajax(b,{dataType:"json"}).done(function(a){return function(b){return a.save(b)}}(this)):this.save(b)},b}(),h=function(){function b(b){this.context=b,this.$el=a("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.timeout_id=null,this.context.$el.append(this.$el),this.bind_event()}return b.prototype.init=function(){var a;return a=this.context.get_opt("alias")||this.context.at.charCodeAt(0),this.$el.attr({id:"at-view-"+a})},b.prototype.destroy=function(){return this.$el.remove()},b.prototype.bind_event=function(){var b;return b=this.$el.find("ul"),b.on("mouseenter.atwho-view","li",function(c){return b.find(".cur").removeClass("cur"),a(c.currentTarget).addClass("cur")}).on("click.atwho-view","li",function(c){return function(d){return b.find(".cur").removeClass("cur"),a(d.currentTarget).addClass("cur"),c.choose(d),d.preventDefault()}}(this))},b.prototype.visible=function(){return this.$el.is(":visible")},b.prototype.choose=function(a){var b,c;return(b=this.$el.find(".cur")).length&&(c=this.context.insert_content_for(b),this.context.insert(this.context.callbacks("before_insert").call(this.context,c,b),b),this.context.trigger("inserted",[b,a]),this.hide(a)),this.context.get_opt("hide_without_suffix")?this.stop_showing=!0:void 0},b.prototype.reposition=function(b){var c,d,e,f;return f=this.context.app.iframeStandalone?this.context.app.window:window,b.bottom+this.$el.height()-a(f).scrollTop()>a(f).height()&&(b.bottom=b.top-this.$el.height()),b.left>(d=a(f).width()-this.$el.width()-5)&&(b.left=d),c={left:b.left,top:b.bottom},null!=(e=this.context.callbacks("before_reposition"))&&e.call(this.context,c),this.$el.offset(c),this.context.trigger("reposition",[c])},b.prototype.next=function(){var a,b;return a=this.$el.find(".cur").removeClass("cur"),b=a.next(),b.length||(b=this.$el.find("li:first")),b.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,a.innerHeight()*(b.index()+2)-this.$el.height())},150)},b.prototype.prev=function(){var a,b;return a=this.$el.find(".cur").removeClass("cur"),b=a.prev(),b.length||(b=this.$el.find("li:last")),b.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,a.innerHeight()*(b.index()+2)-this.$el.height())},150)},b.prototype.show=function(){var a;return this.stop_showing?void(this.stop_showing=!1):(this.context.mark_range(),this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(a=this.context.rect())?this.reposition(a):void 0)},b.prototype.hide=function(a,b){var c;if(this.visible())return isNaN(b)?(this.context.reset_rect(),this.$el.hide(),this.context.trigger("hidden",[a])):(c=function(a){return function(){return a.hide()}}(this),clearTimeout(this.timeout_id),this.timeout_id=setTimeout(c,b))},b.prototype.render=function(b){var c,d,e,f,g,h,i;if(!(a.isArray(b)&&b.length>0))return void this.hide();for(this.$el.find("ul").empty(),d=this.$el.find("ul"),g=this.context.get_opt("tpl"),h=0,i=b.length;i>h;h++)e=b[h],e=a.extend({},e,{"atwho-at":this.context.at}),f=this.context.callbacks("tpl_eval").call(this.context,g,e),c=a(this.context.callbacks("highlighter").call(this.context,f,this.context.query.text)),c.data("item-data",e),d.append(c);return this.show(),this.context.get_opt("highlight_first")?d.find("li:first").addClass("cur"):void 0},b}(),f={DOWN:40,UP:38,ESC:27,TAB:9,ENTER:13,CTRL:17,P:80,N:78},e={before_save:function(b){var c,d,e,f;if(!a.isArray(b))return b;for(f=[],d=0,e=b.length;e>d;d++)c=b[d],a.isPlainObject(c)?f.push(c):f.push({name:c});return f},matcher:function(a,b,c){var d,e,f,g;return a=a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),c&&(a="(?:^|\\s)"+a),f=decodeURI("%C3%80"),g=decodeURI("%C3%BF"),e=new RegExp(""+a+"([A-Za-z"+f+"-"+g+"0-9_+-]*)$|"+a+"([^\\x00-\\xff]*)$","gi"),d=e.exec(b),d?d[2]||d[1]:null},filter:function(a,b,c){var d,e,f,g;for(g=[],e=0,f=b.length;f>e;e++)d=b[e],~new String(d[c]).toLowerCase().indexOf(a.toLowerCase())&&g.push(d);return g},remote_filter:null,sorter:function(a,b,c){var d,e,f,g;if(!a)return b;for(g=[],e=0,f=b.length;f>e;e++)d=b[e],d.atwho_order=new String(d[c]).toLowerCase().indexOf(a.toLowerCase()),d.atwho_order>-1&&g.push(d);return g.sort(function(a,b){return a.atwho_order-b.atwho_order})},tpl_eval:function(a,b){var c;try{return a.replace(/\$\{([^\}]*)\}/g,function(a,c,d){return b[c]})}catch(d){return c=d,""}},highlighter:function(a,b){var c;return b?(c=new RegExp(">\\s*(\\w*?)("+b.replace("+","\\+")+")(\\w*)\\s*<","ig"),a.replace(c,function(a,b,c,d){return"> "+b+"<strong>"+c+"</strong>"+d+" <"})):a},before_insert:function(a,b){return a},inserting_wrapper:function(a,b,c){var d;return c=""===c?c:c||" ",a.is("textarea, input")?""+b+c:"true"===a.attr("contentEditable")?(c=" "===c?"&nbsp;":c,/firefox/i.test(navigator.userAgent)?d="<span>"+b+c+"</span>":(c="<span contenteditable='false'>"+c+"</span>",d="<span contenteditable='false'>"+b+c+"</span>"),this.app.document.selection&&(d="<span contenteditable='true'>"+b+"</span>"),d+"<span></span>"):void 0}},b={load:function(a,b){var c;return(c=this.controller(a))?c.model.load(b):void 0},setIframe:function(a,b){return this.setIframe(a,b),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},a.fn.atwho=function(d){var e,f;return f=arguments,e=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var g,h;return(h=(g=a(this)).data("atwho"))||g.data("atwho",h=new c(this)),"object"!=typeof d&&d?b[d]&&h?e=b[d].apply(h,Array.prototype.slice.call(f,1)):a.error("Method "+d+" does not exist on jQuery.caret"):h.reg(d.at,d)}),e||this},a.fn.atwho["default"]={at:void 0,alias:void 0,data:null,tpl:"<li data-value='${atwho-at}${name}'>${name}</li>",insert_tpl:"<span id='${id}'>${atwho-data-value}</span>",callbacks:e,search_key:"name",suffix:void 0,hide_without_suffix:!1,start_with_space:!0,highlight_first:!0,limit:5,max_len:20,display_timeout:300,delay:null}});
bp-core/js/{vendor/jquery.atwho.txt → jquery.atwho.txt} RENAMED
File without changes
bp-core/js/{vendor/jquery.caret.js → jquery.caret.js} RENAMED
File without changes
bp-core/js/jquery.caret.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l;k="caret",b=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.setPos=function(a){return this.domInputor},b.prototype.getIEPosition=function(){return this.getPosition()},b.prototype.getPosition=function(){var a,b;return b=this.getOffset(),a=this.$inputor.offset(),b.left-=a.left,b.top-=a.top,b},b.prototype.getOldIEPos=function(){var a,b;return b=h.selection.createRange(),a=h.body.createTextRange(),a.moveToElementText(this.domInputor),a.setEndPoint("EndToEnd",b),a.text.length},b.prototype.getPos=function(){var a,b,c;return(c=this.range())?(a=c.cloneRange(),a.selectNodeContents(this.domInputor),a.setEnd(c.endContainer,c.endOffset),b=a.toString().length,a.detach(),b):h.selection?this.getOldIEPos():void 0},b.prototype.getOldIEOffset=function(){var a,b;return a=h.selection.createRange().duplicate(),a.moveStart("character",-1),b=a.getBoundingClientRect(),{height:b.bottom-b.top,left:b.left,top:b.top}},b.prototype.getOffset=function(b){var c,d,e,f,g;return j.getSelection&&(e=this.range())?(e.endOffset-1>0&&e.endContainer===!this.domInputor&&(c=e.cloneRange(),c.setStart(e.endContainer,e.endOffset-1),c.setEnd(e.endContainer,e.endOffset),f=c.getBoundingClientRect(),d={height:f.height,left:f.left+f.width,top:f.top},c.detach()),d&&0!==(null!=d?d.height:void 0)||(c=e.cloneRange(),g=a(h.createTextNode("|")),c.insertNode(g[0]),c.selectNode(g[0]),f=c.getBoundingClientRect(),d={height:f.height,left:f.left,top:f.top},g.remove(),c.detach())):h.selection&&(d=this.getOldIEOffset()),d&&(d.top+=a(j).scrollTop(),d.left+=a(j).scrollLeft()),d},b.prototype.range=function(){var a;if(j.getSelection)return a=j.getSelection(),a.rangeCount>0?a.getRangeAt(0):null},b}(),c=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.getIEPos=function(){var a,b,c,d,e,f,g;return b=this.domInputor,f=h.selection.createRange(),e=0,f&&f.parentElement()===b&&(d=b.value.replace(/\r\n/g,"\n"),c=d.length,g=b.createTextRange(),g.moveToBookmark(f.getBookmark()),a=b.createTextRange(),a.collapse(!1),e=g.compareEndPoints("StartToEnd",a)>-1?c:-g.moveStart("character",-c)),e},b.prototype.getPos=function(){return h.selection?this.getIEPos():this.domInputor.selectionStart},b.prototype.setPos=function(a){var b,c;return b=this.domInputor,h.selection?(c=b.createTextRange(),c.move("character",a),c.select()):b.setSelectionRange&&b.setSelectionRange(a,a),b},b.prototype.getIEOffset=function(a){var b,c,d,e;return c=this.domInputor.createTextRange(),a||(a=this.getPos()),c.move("character",a),d=c.boundingLeft,e=c.boundingTop,b=c.boundingHeight,{left:d,top:e,height:b}},b.prototype.getOffset=function(b){var c,d,e;return c=this.$inputor,h.selection?(d=this.getIEOffset(b),d.top+=a(j).scrollTop()+c.scrollTop(),d.left+=a(j).scrollLeft()+c.scrollLeft(),d):(d=c.offset(),e=this.getPosition(b),d={left:d.left+e.left-c.scrollLeft(),top:d.top+e.top-c.scrollTop(),height:e.height})},b.prototype.getPosition=function(a){var b,c,e,f,g,h,i;return b=this.$inputor,f=function(a){return a=a.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(a=a.replace(/\s/g,"&nbsp;")),a},void 0===a&&(a=this.getPos()),i=b.val().slice(0,a),e=b.val().slice(a),g="<span style='position: relative; display: inline;'>"+f(i)+"</span>",g+="<span id='caret' style='position: relative; display: inline;'>|</span>",g+="<span style='position: relative; display: inline;'>"+f(e)+"</span>",h=new d(b),c=h.create(g).rect()},b.prototype.getIEPosition=function(a){var b,c,d,e,f;return d=this.getIEOffset(a),c=this.$inputor.offset(),e=d.left-c.left,f=d.top-c.top,b=d.height,{left:e,top:f,height:b}},b}(),d=function(){function b(a){this.$inputor=a}return b.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],b.prototype.mirrorCss=function(){var b,c=this;return b={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),a.each(this.css_attr,function(a,d){return b[d]=c.$inputor.css(d)}),b},b.prototype.create=function(b){return this.$mirror=a("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(b),this.$inputor.after(this.$mirror),this},b.prototype.rect=function(){var a,b,c;return a=this.$mirror.find("#caret"),b=a.position(),c={left:b.left,top:b.top,height:a.height()},this.$mirror.remove(),c},b}(),e={contentEditable:function(a){return!(!a[0].contentEditable||"true"!==a[0].contentEditable)}},g={pos:function(a){return a||0===a?this.setPos(a):this.getPos()},position:function(a){return h.selection?this.getIEPosition(a):this.getPosition(a)},offset:function(a){var b;return b=this.getOffset(a)}},h=null,j=null,i=null,l=function(a){var b;return(b=null!=a?a.iframe:void 0)?(i=b,j=b.contentWindow,h=b.contentDocument||j.document):(i=void 0,j=window,h=document)},f=function(a){var b;h=a[0].ownerDocument,j=h.defaultView||h.parentWindow;try{return i=j.frameElement}catch(c){b=c}},a.fn.caret=function(d,f,h){var i;return g[d]?(a.isPlainObject(f)?(l(f),f=void 0):l(h),i=e.contentEditable(this)?new b(this):new c(this),g[d].apply(i,[f])):a.error("Method "+d+" does not exist on jQuery.caret")},a.fn.caret.EditableCaret=b,a.fn.caret.InputCaret=c,a.fn.caret.Utils=e,a.fn.caret.apis=g});
bp-core/js/{vendor/jquery.caret.txt → jquery.caret.txt} RENAMED
File without changes
bp-core/js/vendor/jquery-cookie.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):jQuery)}(function(e){function n(e){return u.raw?e:encodeURIComponent(e)}function o(e){return u.raw?e:decodeURIComponent(e)}function i(e){return n(u.json?JSON.stringify(e):String(e))}function r(e){0===e.indexOf('"')&&(e=e.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return e=decodeURIComponent(e.replace(c," ")),u.json?JSON.parse(e):e}catch(e){}}function t(n,o){var i=u.raw?n:r(n);return e.isFunction(o)?o(i):i}var c=/\+/g,u=e.cookie=function(r,c,f){if(void 0!==c&&!e.isFunction(c)){if("number"==typeof(f=e.extend({},u.defaults,f)).expires){var a=f.expires,d=f.expires=new Date;d.setTime(+d+864e5*a)}return document.cookie=[n(r),"=",i(c),f.expires?"; expires="+f.expires.toUTCString():"",f.path?"; path="+f.path:"",f.domain?"; domain="+f.domain:"",f.secure?"; secure":""].join("")}for(var p=r?void 0:{},s=document.cookie?document.cookie.split("; "):[],m=0,x=s.length;m<x;m++){var v=s[m].split("="),k=o(v.shift()),l=v.join("=");if(r&&r===k){p=t(l,c);break}r||void 0===(l=t(l))||(p[k]=l)}return p};u.defaults={},e.removeCookie=function(n,o){return void 0!==e.cookie(n)&&(e.cookie(n,"",e.extend({},o,{expires:-1})),!e.cookie(n))}});
 
bp-core/js/vendor/jquery-scroll-to.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):jQuery)}(function(e){function t(t){return e.isFunction(t)||"object"==typeof t?t:{top:t,left:t}}var n=e.scrollTo=function(t,n,o){return e(window).scrollTo(t,n,o)};return n.defaults={axis:"xy",duration:parseFloat(e.fn.jquery)>=1.3?0:1,limit:!0},n.window=function(){return e(window)._scrollable()},e.fn._scrollable=function(){return this.map(function(){var t=this;if(!(!t.nodeName||-1!==e.inArray(t.nodeName.toLowerCase(),["iframe","#document","html","body"])))return t;var n=(t.contentWindow||t).document||t.ownerDocument||t;return/webkit/i.test(navigator.userAgent)||"BackCompat"===n.compatMode?n.body:n.documentElement})},e.fn.scrollTo=function(o,r,i){return"object"==typeof r&&(i=r,r=0),"function"==typeof i&&(i={onAfter:i}),"max"===o&&(o=9e9),i=e.extend({},n.defaults,i),r=r||i.duration,i.queue=i.queue&&i.axis.length>1,i.queue&&(r/=2),i.offset=t(i.offset),i.over=t(i.over),this._scrollable().each(function(){function s(e){u.animate(l,r,i.easing,e&&function(){e.call(this,c,i)})}if(null!==o){var a,f=this,u=e(f),c=o,l={},d=u.is("html,body");switch(typeof c){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(c)){c=t(c);break}if(!(c=d?e(c):e(c,this)).length)return;case"object":(c.is||c.style)&&(a=(c=e(c)).offset())}var m=e.isFunction(i.offset)&&i.offset(f,c)||i.offset;e.each(i.axis.split(""),function(e,t){var o="x"===t?"Left":"Top",r=o.toLowerCase(),h="scroll"+o,p=f[h],y=n.max(f,t);if(a)l[h]=a[r]+(d?0:p-u.offset()[r]),i.margin&&(l[h]-=parseInt(c.css("margin"+o))||0,l[h]-=parseInt(c.css("border"+o+"Width"))||0),l[h]+=m[r]||0,i.over[r]&&(l[h]+=c["x"===t?"width":"height"]()*i.over[r]);else{var b=c[r];l[h]=b.slice&&"%"===b.slice(-1)?parseFloat(b)/100*y:b}i.limit&&/^\d+$/.test(l[h])&&(l[h]=l[h]<=0?0:Math.min(l[h],y)),!e&&i.queue&&(p!==l[h]&&s(i.onAfterFirst),delete l[h])}),s(i.onAfter)}}).end()},n.max=function(t,n){var o="x"===n?"Width":"Height",r="scroll"+o;if(!e(t).is("html,body"))return t[r]-e(t)[o.toLowerCase()]();var i="client"+o,s=t.ownerDocument.documentElement,a=t.ownerDocument.body;return Math.max(s[r],a[r])-Math.min(s[i],a[i])},n});
 
bp-core/js/vendor/jquery.atwho.min.js DELETED
@@ -1 +0,0 @@
1
- !function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(i){return t.returnExportsGlobal=e(i)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){var e,i,n,r,o,s,a,h=[].slice;i=function(){function e(e){this.current_flag=null,this.controllers={},this.alias_maps={},this.$inputor=t(e),this.setIframe(),this.listen()}return e.prototype.createContainer=function(e){if(0===(this.$el=t("#atwho-container",e)).length)return t(e.body).append(this.$el=t("<div id='atwho-container'></div>"))},e.prototype.setIframe=function(t,e){var i;return null==e&&(e=!1),t?(this.window=t.contentWindow,this.document=t.contentDocument||this.window.document,this.iframe=t):(this.document=document,this.window=window,this.iframe=null),(this.iframeStandalone=e)?(null!=(i=this.$el)&&i.remove(),this.createContainer(this.document)):this.createContainer(document)},e.prototype.controller=function(t){var e,i,n,r;if(this.alias_maps[t])i=this.controllers[this.alias_maps[t]];else{r=this.controllers;for(n in r)if(e=r[n],n===t){i=e;break}}return i||this.controllers[this.current_flag]},e.prototype.set_context_for=function(t){return this.current_flag=t,this},e.prototype.reg=function(t,e){var i,r;return i=(r=this.controllers)[t]||(r[t]=new n(this,t)),e.alias&&(this.alias_maps[e.alias]=t),i.init(e),this},e.prototype.listen=function(){return this.$inputor.on("keyup.atwhoInner",function(t){return function(e){return t.on_keyup(e)}}(this)).on("keydown.atwhoInner",function(t){return function(e){return t.on_keydown(e)}}(this)).on("scroll.atwhoInner",function(t){return function(e){var i;return null!=(i=t.controller())?i.view.hide(e):void 0}}(this)).on("blur.atwhoInner",function(t){return function(e){var i;if(i=t.controller())return i.view.hide(e,i.get_opt("display_timeout"))}}(this)).on("click.atwhoInner",function(t){return function(e){return t.dispatch()}}(this))},e.prototype.shutdown=function(){var t,e;e=this.controllers;for(t in e)e[t].destroy(),delete this.controllers[t];return this.$inputor.off(".atwhoInner"),this.$el.remove()},e.prototype.dispatch=function(){return t.map(this.controllers,function(t){return function(e){var i;return(i=e.get_opt("delay"))?(clearTimeout(t.delayedCallback),t.delayedCallback=setTimeout(function(){if(e.look_up())return t.set_context_for(e.at)},i)):e.look_up()?t.set_context_for(e.at):void 0}}(this))},e.prototype.on_keyup=function(e){var i;switch(e.keyCode){case o.ESC:e.preventDefault(),null!=(i=this.controller())&&i.view.hide();break;case o.DOWN:case o.UP:case o.CTRL:t.noop();break;case o.P:case o.N:e.ctrlKey||this.dispatch();break;default:this.dispatch()}},e.prototype.on_keydown=function(e){var i,n;if((i=null!=(n=this.controller())?n.view:void 0)&&i.visible())switch(e.keyCode){case o.ESC:e.preventDefault(),i.hide(e);break;case o.UP:e.preventDefault(),i.prev();break;case o.DOWN:e.preventDefault(),i.next();break;case o.P:if(!e.ctrlKey)return;e.preventDefault(),i.prev();break;case o.N:if(!e.ctrlKey)return;e.preventDefault(),i.next();break;case o.TAB:case o.ENTER:if(!i.visible())return;e.preventDefault(),i.choose(e);break;default:t.noop()}},e}(),n=function(){function e(e,i){this.app=e,this.at=i,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.setting=null,this.query=null,this.pos=0,this.cur_rect=null,this.range=null,0===(this.$el=t("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new s(this),this.view=new a(this)}return e.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},e.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho.default,e),this.view.init(),this.model.reload(this.setting.data)},e.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},e.prototype.call_default=function(){var e,i,n;n=arguments[0],e=2<=arguments.length?h.call(arguments,1):[];try{return r[n].apply(this,e)}catch(e){return i=e,t.error(i+" Or maybe At.js doesn't have function "+n)}},e.prototype.trigger=function(t,e){var i,n;return null==e&&(e=[]),e.push(this),i=this.get_opt("alias"),n=i?t+"-"+i+".atwho":t+".atwho",this.$inputor.trigger(n,e)},e.prototype.callbacks=function(t){return this.get_opt("callbacks")[t]||r[t]},e.prototype.get_opt=function(t,e){try{return this.setting[t]}catch(t){return t,null}},e.prototype.content=function(){var t;if(this.$inputor.is("textarea, input"))return this.$inputor.val();if(t=this.mark_range())return(t.startContainer.textContent||"").slice(0,t.startOffset)},e.prototype.catch_query=function(){var t,e,i,n,r,o;return e=this.content(),t=this.$inputor.caret("pos",{iframe:this.app.iframe}),o=e.slice(0,t),"string"==typeof(n=this.callbacks("matcher").call(this,this.at,o,this.get_opt("start_with_space")))&&n.length<=this.get_opt("max_len",20)?(i=(r=t-n.length)+n.length,this.pos=r,n={text:n,head_pos:r,end_pos:i},this.trigger("matched",[this.at,n.text])):(n=null,this.view.hide()),this.query=n},e.prototype.rect=function(){var e,i,n;if(e=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeStandalone&&(i=t(this.app.iframe).offset(),e.left+=i.left,e.top+=i.top),this.$inputor.is("[contentEditable]")&&(e=this.cur_rect||(this.cur_rect=e)),n=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+n}},e.prototype.reset_rect=function(){if(this.$inputor.is("[contentEditable]"))return this.cur_rect=null},e.prototype.mark_range=function(){var t;if(this.$inputor.is("[contentEditable]"))return this.app.window.getSelection&&(t=this.app.window.getSelection()).rangeCount>0?this.range=t.getRangeAt(0):this.app.document.selection?this.ie8_range=this.app.document.selection.createRange():void 0},e.prototype.insert_content_for=function(e){var i,n,r;return n=e.data("value"),r=this.get_opt("insert_tpl"),this.$inputor.is("textarea, input")||!r?n:(i=t.extend({},e.data("item-data"),{"atwho-data-value":n,"atwho-at":this.at}),this.callbacks("tpl_eval").call(this,r,i))},e.prototype.insert=function(e,i){var n,r,o,s,a,h,l,u,c,p,f,d;if(n=this.$inputor,c=this.callbacks("inserting_wrapper").call(this,n,e,this.get_opt("suffix")),n.is("textarea, input"))u=""+(l=(h=n.val()).slice(0,Math.max(this.query.head_pos-this.at.length,0)))+c+h.slice(this.query.end_pos||0),n.val(u),n.caret("pos",l.length+c.length,{iframe:this.app.iframe});else if(s=this.range){for(o=s.startOffset-(this.query.end_pos-this.query.head_pos)-this.at.length,s.setStart(s.endContainer,Math.max(o,0)),s.setEnd(s.endContainer,s.endOffset),s.deleteContents(),p=0,f=(d=t(c,this.app.document)).length;p<f;p++)r=d[p],s.insertNode(r),s.setEndAfter(r),s.collapse(!1);(a=this.app.window.getSelection()).removeAllRanges(),a.addRange(s)}else(s=this.ie8_range)&&(s.moveStart("character",this.query.end_pos-this.query.head_pos-this.at.length),s.pasteHTML(c),s.collapse(!1),s.select());return n.is(":focus")||n.focus(),n.change()},e.prototype.render_view=function(t){var e;return e=this.get_opt("search_key"),t=this.callbacks("sorter").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.get_opt("limit")))},e.prototype.look_up=function(){var e,i;if(e=this.catch_query())return i=function(t){return t&&t.length>0?this.render_view(t):this.view.hide()},this.model.query(e.text,t.proxy(i,this)),e},e}(),s=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var i,n,r;return i=this.fetch(),n=this.context.get_opt("search_key"),i=this.context.callbacks("filter").call(this.context,t,i,n)||[],r=this.context.callbacks("remote_filter"),i.length>0||!r&&0===i.length?e(i):r.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks("before_save").call(this.context,t||[]))},e.prototype.load=function(t){if(!this.saved()&&t)return this._load(t)},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return"string"==typeof e?t.ajax(e,{dataType:"json"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}(),a=function(){function e(e){this.context=e,this.$el=t("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.timeout_id=null,this.context.$el.append(this.$el),this.bind_event()}return e.prototype.init=function(){var t;return t=this.context.get_opt("alias")||this.context.at.charCodeAt(0),this.$el.attr({id:"at-view-"+t})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bind_event=function(){var e;return(e=this.$el.find("ul")).on("mouseenter.atwho-view","li",function(i){return e.find(".cur").removeClass("cur"),t(i.currentTarget).addClass("cur")}).on("click.atwho-view","li",function(i){return function(n){return e.find(".cur").removeClass("cur"),t(n.currentTarget).addClass("cur"),i.choose(n),n.preventDefault()}}(this))},e.prototype.visible=function(){return this.$el.is(":visible")},e.prototype.choose=function(t){var e,i;if((e=this.$el.find(".cur")).length&&(i=this.context.insert_content_for(e),this.context.insert(this.context.callbacks("before_insert").call(this.context,i,e),e),this.context.trigger("inserted",[e,t]),this.hide(t)),this.context.get_opt("hide_without_suffix"))return this.stop_showing=!0},e.prototype.reposition=function(e){var i,n,r,o;return o=this.context.app.iframeStandalone?this.context.app.window:window,e.bottom+this.$el.height()-t(o).scrollTop()>t(o).height()&&(e.bottom=e.top-this.$el.height()),e.left>(n=t(o).width()-this.$el.width()-5)&&(e.left=n),i={left:e.left,top:e.bottom},null!=(r=this.context.callbacks("before_reposition"))&&r.call(this.context,i),this.$el.offset(i),this.context.trigger("reposition",[i])},e.prototype.next=function(){var t,e;return t=this.$el.find(".cur").removeClass("cur"),(e=t.next()).length||(e=this.$el.find("li:first")),e.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,t.innerHeight()*(e.index()+2)-this.$el.height())},150)},e.prototype.prev=function(){var t,e;return t=this.$el.find(".cur").removeClass("cur"),(e=t.prev()).length||(e=this.$el.find("li:last")),e.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,t.innerHeight()*(e.index()+2)-this.$el.height())},150)},e.prototype.show=function(){var t;{if(!this.stop_showing)return this.context.mark_range(),this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(t=this.context.rect())?this.reposition(t):void 0;this.stop_showing=!1}},e.prototype.hide=function(t,e){var i;if(this.visible())return isNaN(e)?(this.context.reset_rect(),this.$el.hide(),this.context.trigger("hidden",[t])):(i=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeout_id),this.timeout_id=setTimeout(i,e))},e.prototype.render=function(e){var i,n,r,o,s,a,h;{if(t.isArray(e)&&e.length>0){for(this.$el.find("ul").empty(),n=this.$el.find("ul"),s=this.context.get_opt("tpl"),a=0,h=e.length;a<h;a++)r=e[a],r=t.extend({},r,{"atwho-at":this.context.at}),o=this.context.callbacks("tpl_eval").call(this.context,s,r),(i=t(this.context.callbacks("highlighter").call(this.context,o,this.context.query.text))).data("item-data",r),n.append(i);return this.show(),this.context.get_opt("highlight_first")?n.find("li:first").addClass("cur"):void 0}this.hide()}},e}(),o={DOWN:40,UP:38,ESC:27,TAB:9,ENTER:13,CTRL:17,P:80,N:78},r={before_save:function(e){var i,n,r,o;if(!t.isArray(e))return e;for(o=[],n=0,r=e.length;n<r;n++)i=e[n],t.isPlainObject(i)?o.push(i):o.push({name:i});return o},matcher:function(t,e,i){var n,r,o,s;return t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),i&&(t="(?:^|\\s)"+t),o=decodeURI("%C3%80"),s=decodeURI("%C3%BF"),r=new RegExp(t+"([A-Za-z"+o+"-"+s+"0-9_+-]*)$|"+t+"([^\\x00-\\xff]*)$","gi"),(n=r.exec(e))?n[2]||n[1]:null},filter:function(t,e,i){var n,r,o,s;for(s=[],r=0,o=e.length;r<o;r++)n=e[r],~new String(n[i]).toLowerCase().indexOf(t.toLowerCase())&&s.push(n);return s},remote_filter:null,sorter:function(t,e,i){var n,r,o,s;if(!t)return e;for(s=[],r=0,o=e.length;r<o;r++)(n=e[r]).atwho_order=new String(n[i]).toLowerCase().indexOf(t.toLowerCase()),n.atwho_order>-1&&s.push(n);return s.sort(function(t,e){return t.atwho_order-e.atwho_order})},tpl_eval:function(t,e){try{return t.replace(/\$\{([^\}]*)\}/g,function(t,i,n){return e[i]})}catch(t){return t,""}},highlighter:function(t,e){var i;return e?(i=new RegExp(">\\s*(\\w*?)("+e.replace("+","\\+")+")(\\w*)\\s*<","ig"),t.replace(i,function(t,e,i,n){return"> "+e+"<strong>"+i+"</strong>"+n+" <"})):t},before_insert:function(t,e){return t},inserting_wrapper:function(t,e,i){var n;return i=""===i?i:i||" ",t.is("textarea, input")?""+e+i:"true"===t.attr("contentEditable")?(i=" "===i?"&nbsp;":i,n=/firefox/i.test(navigator.userAgent)?"<span>"+e+i+"</span>":"<span contenteditable='false'>"+e+(i="<span contenteditable='false'>"+i+"</span>")+"</span>",this.app.document.selection&&(n="<span contenteditable='true'>"+e+"</span>"),n+"<span></span>"):void 0}},e={load:function(t,e){var i;if(i=this.controller(t))return i.model.load(e)},setIframe:function(t,e){return this.setIframe(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},t.fn.atwho=function(n){var r,o;return o=arguments,r=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var s,a;return(a=(s=t(this)).data("atwho"))||s.data("atwho",a=new i(this)),"object"!=typeof n&&n?e[n]&&a?r=e[n].apply(a,Array.prototype.slice.call(o,1)):t.error("Method "+n+" does not exist on jQuery.caret"):a.reg(n.at,n)}),r||this},t.fn.atwho.default={at:void 0,alias:void 0,data:null,tpl:"<li data-value='${atwho-at}${name}'>${name}</li>",insert_tpl:"<span id='${id}'>${atwho-data-value}</span>",callbacks:r,search_key:"name",suffix:void 0,hide_without_suffix:!1,start_with_space:!0,highlight_first:!0,limit:5,max_len:20,display_timeout:300,delay:null}});
 
bp-core/js/vendor/jquery.caret.min.js DELETED
@@ -1 +0,0 @@
1
- !function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(o){return t.returnExportsGlobal=e(o)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){"use strict";var e,o,n,r,i,s,a,p,l;e=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.setPos=function(t){return this.domInputor},e.prototype.getIEPosition=function(){return this.getPosition()},e.prototype.getPosition=function(){var t,e;return e=this.getOffset(),t=this.$inputor.offset(),e.left-=t.left,e.top-=t.top,e},e.prototype.getOldIEPos=function(){var t,e;return e=s.selection.createRange(),(t=s.body.createTextRange()).moveToElementText(this.domInputor),t.setEndPoint("EndToEnd",e),t.text.length},e.prototype.getPos=function(){var t,e,o;return(o=this.range())?((t=o.cloneRange()).selectNodeContents(this.domInputor),t.setEnd(o.endContainer,o.endOffset),e=t.toString().length,t.detach(),e):s.selection?this.getOldIEPos():void 0},e.prototype.getOldIEOffset=function(){var t,e;return(t=s.selection.createRange().duplicate()).moveStart("character",-1),e=t.getBoundingClientRect(),{height:e.bottom-e.top,left:e.left,top:e.top}},e.prototype.getOffset=function(e){var o,n,r,i,a;return p.getSelection&&(r=this.range())?(r.endOffset-1>0&&r.endContainer===!this.domInputor&&((o=r.cloneRange()).setStart(r.endContainer,r.endOffset-1),o.setEnd(r.endContainer,r.endOffset),n={height:(i=o.getBoundingClientRect()).height,left:i.left+i.width,top:i.top},o.detach()),n&&0!==(null!=n?n.height:void 0)||(o=r.cloneRange(),a=t(s.createTextNode("|")),o.insertNode(a[0]),o.selectNode(a[0]),n={height:(i=o.getBoundingClientRect()).height,left:i.left,top:i.top},a.remove(),o.detach())):s.selection&&(n=this.getOldIEOffset()),n&&(n.top+=t(p).scrollTop(),n.left+=t(p).scrollLeft()),n},e.prototype.range=function(){var t;if(p.getSelection)return(t=p.getSelection()).rangeCount>0?t.getRangeAt(0):null},e}(),o=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.getIEPos=function(){var t,e,o,n,r,i;return e=this.domInputor,r=s.selection.createRange(),n=0,r&&r.parentElement()===e&&(o=e.value.replace(/\r\n/g,"\n").length,(i=e.createTextRange()).moveToBookmark(r.getBookmark()),(t=e.createTextRange()).collapse(!1),n=i.compareEndPoints("StartToEnd",t)>-1?o:-i.moveStart("character",-o)),n},e.prototype.getPos=function(){return s.selection?this.getIEPos():this.domInputor.selectionStart},e.prototype.setPos=function(t){var e,o;return e=this.domInputor,s.selection?((o=e.createTextRange()).move("character",t),o.select()):e.setSelectionRange&&e.setSelectionRange(t,t),e},e.prototype.getIEOffset=function(t){var e,o,n,r;return o=this.domInputor.createTextRange(),t||(t=this.getPos()),o.move("character",t),n=o.boundingLeft,r=o.boundingTop,e=o.boundingHeight,{left:n,top:r,height:e}},e.prototype.getOffset=function(e){var o,n,r;return o=this.$inputor,s.selection?(n=this.getIEOffset(e),n.top+=t(p).scrollTop()+o.scrollTop(),n.left+=t(p).scrollLeft()+o.scrollLeft(),n):(n=o.offset(),r=this.getPosition(e),n={left:n.left+r.left-o.scrollLeft(),top:n.top+r.top-o.scrollTop(),height:r.height})},e.prototype.getPosition=function(t){var e,o,r,i,s,a;return e=this.$inputor,r=function(t){return t=t.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(t=t.replace(/\s/g,"&nbsp;")),t},void 0===t&&(t=this.getPos()),a=e.val().slice(0,t),o=e.val().slice(t),i="<span style='position: relative; display: inline;'>"+r(a)+"</span>",i+="<span id='caret' style='position: relative; display: inline;'>|</span>",i+="<span style='position: relative; display: inline;'>"+r(o)+"</span>",s=new n(e),s.create(i).rect()},e.prototype.getIEPosition=function(t){var e,o,n,r,i;return n=this.getIEOffset(t),o=this.$inputor.offset(),r=n.left-o.left,i=n.top-o.top,e=n.height,{left:r,top:i,height:e}},e}(),n=function(){function e(t){this.$inputor=t}return e.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],e.prototype.mirrorCss=function(){var e,o=this;return e={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),t.each(this.css_attr,function(t,n){return e[n]=o.$inputor.css(n)}),e},e.prototype.create=function(e){return this.$mirror=t("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(e),this.$inputor.after(this.$mirror),this},e.prototype.rect=function(){var t,e,o;return t=this.$mirror.find("#caret"),e=t.position(),o={left:e.left,top:e.top,height:t.height()},this.$mirror.remove(),o},e}(),r={contentEditable:function(t){return!(!t[0].contentEditable||"true"!==t[0].contentEditable)}},i={pos:function(t){return t||0===t?this.setPos(t):this.getPos()},position:function(t){return s.selection?this.getIEPosition(t):this.getPosition(t)},offset:function(t){return this.getOffset(t)}},s=null,p=null,a=null,l=function(t){var e;return(e=null!=t?t.iframe:void 0)?(a=e,p=e.contentWindow,s=e.contentDocument||p.document):(a=void 0,p=window,s=document)},t.fn.caret=function(n,s,a){var p;return i[n]?(t.isPlainObject(s)?(l(s),s=void 0):l(a),p=r.contentEditable(this)?new e(this):new o(this),i[n].apply(p,[s])):t.error("Method "+n+" does not exist on jQuery.caret")},t.fn.caret.EditableCaret=e,t.fn.caret.InputCaret=o,t.fn.caret.Utils=r,t.fn.caret.apis=i});
 
bp-core/js/vendor/livestamp.js DELETED
@@ -1,129 +0,0 @@
1
- // Livestamp.js / v1.1.2 / (c) 2012 Matt Bradley / MIT License
2
- (function($, moment) {
3
- var updateInterval = 1e3,
4
- paused = false,
5
- $livestamps = $([]),
6
-
7
- init = function() {
8
- livestampGlobal.resume();
9
- },
10
-
11
- prep = function($el, timestamp) {
12
- var oldData = $el.data('livestampdata');
13
- if (typeof timestamp == 'number')
14
- timestamp *= 1e3;
15
-
16
- $el.removeAttr('data-livestamp')
17
- .removeData('livestamp');
18
-
19
- timestamp = moment(timestamp);
20
- if (moment.isMoment(timestamp) && !isNaN(+timestamp)) {
21
- var newData = $.extend({ }, { 'original': $el.contents() }, oldData);
22
- newData.moment = moment(timestamp);
23
-
24
- $el.data('livestampdata', newData).empty();
25
- $livestamps.push($el[0]);
26
- }
27
- },
28
-
29
- run = function() {
30
- if (paused) return;
31
- livestampGlobal.update();
32
- setTimeout(run, updateInterval);
33
- },
34
-
35
- livestampGlobal = {
36
- update: function() {
37
- $('[data-livestamp]').each(function() {
38
- var $this = $(this);
39
- prep($this, $this.data('livestamp'));
40
- });
41
-
42
- var toRemove = [];
43
- $livestamps.each(function() {
44
- var $this = $(this),
45
- data = $this.data('livestampdata');
46
-
47
- if (data === undefined)
48
- toRemove.push(this);
49
- else if (moment.isMoment(data.moment)) {
50
- var from = $this.html(),
51
- to = data.moment.fromNow();
52
-
53
- if (from != to) {
54
- var e = $.Event('change.livestamp');
55
- $this.trigger(e, [from, to]);
56
- if (!e.isDefaultPrevented())
57
- $this.html(to);
58
- }
59
- }
60
- });
61
-
62
- $livestamps = $livestamps.not(toRemove);
63
- },
64
-
65
- pause: function() {
66
- paused = true;
67
- },
68
-
69
- resume: function() {
70
- paused = false;
71
- run();
72
- },
73
-
74
- interval: function(interval) {
75
- if (interval === undefined)
76
- return updateInterval;
77
- updateInterval = interval;
78
- }
79
- },
80
-
81
- livestampLocal = {
82
- add: function($el, timestamp) {
83
- if (typeof timestamp == 'number')
84
- timestamp *= 1e3;
85
- timestamp = moment(timestamp);
86
-
87
- if (moment.isMoment(timestamp) && !isNaN(+timestamp)) {
88
- $el.each(function() {
89
- prep($(this), timestamp);
90
- });
91
- livestampGlobal.update();
92
- }
93
-
94
- return $el;
95
- },
96
-
97
- destroy: function($el) {
98
- $livestamps = $livestamps.not($el);
99
- $el.each(function() {
100
- var $this = $(this),
101
- data = $this.data('livestampdata');
102
-
103
- if (data === undefined)
104
- return $el;
105
-
106
- $this
107
- .html(data.original ? data.original : '')
108
- .removeData('livestampdata');
109
- });
110
-
111
- return $el;
112
- },
113
-
114
- isLivestamp: function($el) {
115
- return $el.data('livestampdata') !== undefined;
116
- }
117
- };
118
-
119
- $.livestamp = livestampGlobal;
120
- $(init);
121
- $.fn.livestamp = function(method, options) {
122
- if (!livestampLocal[method]) {
123
- options = method;
124
- method = 'add';
125
- }
126
-
127
- return livestampLocal[method](this, options);
128
- };
129
- })(jQuery, moment);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/livestamp.min.js DELETED
@@ -1 +0,0 @@
1
- !function(t,a){var e=1e3,i=!1,n=t([]),o=function(e,i){var o=e.data("livestampdata");if("number"==typeof i&&(i*=1e3),e.removeAttr("data-livestamp").removeData("livestamp"),i=a(i),a.isMoment(i)&&!isNaN(+i)){var r=t.extend({},{original:e.contents()},o);r.moment=a(i),e.data("livestampdata",r).empty(),n.push(e[0])}},r=function(){i||(m.update(),setTimeout(r,e))},m={update:function(){t("[data-livestamp]").each(function(){var a=t(this);o(a,a.data("livestamp"))});var e=[];n.each(function(){var i=t(this),n=i.data("livestampdata");if(void 0===n)e.push(this);else if(a.isMoment(n.moment)){var o=i.html(),r=n.moment.fromNow();if(o!=r){var m=t.Event("change.livestamp");i.trigger(m,[o,r]),m.isDefaultPrevented()||i.html(r)}}}),n=n.not(e)},pause:function(){i=!0},resume:function(){i=!1,r()},interval:function(t){if(void 0===t)return e;e=t}},s={add:function(e,i){return"number"==typeof i&&(i*=1e3),i=a(i),a.isMoment(i)&&!isNaN(+i)&&(e.each(function(){o(t(this),i)}),m.update()),e},destroy:function(a){return n=n.not(a),a.each(function(){var e=t(this),i=e.data("livestampdata");if(void 0===i)return a;e.html(i.original?i.original:"").removeData("livestampdata")}),a},isLivestamp:function(t){return void 0!==t.data("livestampdata")}};t.livestamp=m,t(function(){m.resume()}),t.fn.livestamp=function(t,a){return s[t]||(a=t,t="add"),s[t](this,a)}}(jQuery,moment);
 
bp-core/js/vendor/moment-js/locale/af.js DELETED
@@ -1,73 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Afrikaans [af]
3
- //! author : Werner Mollentze : https://github.com/wernerm
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var af = moment.defineLocale('af', {
14
- months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
15
- monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
16
- weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
17
- weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
18
- weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
19
- meridiemParse: /vm|nm/i,
20
- isPM : function (input) {
21
- return /^nm$/i.test(input);
22
- },
23
- meridiem : function (hours, minutes, isLower) {
24
- if (hours < 12) {
25
- return isLower ? 'vm' : 'VM';
26
- } else {
27
- return isLower ? 'nm' : 'NM';
28
- }
29
- },
30
- longDateFormat : {
31
- LT : 'HH:mm',
32
- LTS : 'HH:mm:ss',
33
- L : 'DD/MM/YYYY',
34
- LL : 'D MMMM YYYY',
35
- LLL : 'D MMMM YYYY HH:mm',
36
- LLLL : 'dddd, D MMMM YYYY HH:mm'
37
- },
38
- calendar : {
39
- sameDay : '[Vandag om] LT',
40
- nextDay : '[Môre om] LT',
41
- nextWeek : 'dddd [om] LT',
42
- lastDay : '[Gister om] LT',
43
- lastWeek : '[Laas] dddd [om] LT',
44
- sameElse : 'L'
45
- },
46
- relativeTime : {
47
- future : 'oor %s',
48
- past : '%s gelede',
49
- s : '\'n paar sekondes',
50
- m : '\'n minuut',
51
- mm : '%d minute',
52
- h : '\'n uur',
53
- hh : '%d ure',
54
- d : '\'n dag',
55
- dd : '%d dae',
56
- M : '\'n maand',
57
- MM : '%d maande',
58
- y : '\'n jaar',
59
- yy : '%d jaar'
60
- },
61
- ordinalParse: /\d{1,2}(ste|de)/,
62
- ordinal : function (number) {
63
- return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
64
- },
65
- week : {
66
- dow : 1, // Maandag is die eerste dag van die week.
67
- doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
68
- }
69
- });
70
-
71
- return af;
72
-
73
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/af.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";return e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,n,a){return e<12?a?"vm":"VM":a?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/ar-ly.js DELETED
@@ -1,122 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Arabic (Lybia) [ar-ly]
3
- //! author : Ali Hmer: https://github.com/kikoanis
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var symbolMap = {
14
- '1': '1',
15
- '2': '2',
16
- '3': '3',
17
- '4': '4',
18
- '5': '5',
19
- '6': '6',
20
- '7': '7',
21
- '8': '8',
22
- '9': '9',
23
- '0': '0'
24
- }, pluralForm = function (n) {
25
- return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
26
- }, plurals = {
27
- s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
28
- m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
29
- h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
30
- d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
31
- M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
32
- y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
33
- }, pluralize = function (u) {
34
- return function (number, withoutSuffix, string, isFuture) {
35
- var f = pluralForm(number),
36
- str = plurals[u][pluralForm(number)];
37
- if (f === 2) {
38
- str = str[withoutSuffix ? 0 : 1];
39
- }
40
- return str.replace(/%d/i, number);
41
- };
42
- }, months = [
43
- 'يناير',
44
- 'فبراير',
45
- 'مارس',
46
- 'أبريل',
47
- 'مايو',
48
- 'يونيو',
49
- 'يوليو',
50
- 'أغسطس',
51
- 'سبتمبر',
52
- 'أكتوبر',
53
- 'نوفمبر',
54
- 'ديسمبر'
55
- ];
56
-
57
- var ar_ly = moment.defineLocale('ar-ly', {
58
- months : months,
59
- monthsShort : months,
60
- weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
61
- weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
62
- weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
63
- weekdaysParseExact : true,
64
- longDateFormat : {
65
- LT : 'HH:mm',
66
- LTS : 'HH:mm:ss',
67
- L : 'D/\u200FM/\u200FYYYY',
68
- LL : 'D MMMM YYYY',
69
- LLL : 'D MMMM YYYY HH:mm',
70
- LLLL : 'dddd D MMMM YYYY HH:mm'
71
- },
72
- meridiemParse: /ص|م/,
73
- isPM : function (input) {
74
- return 'م' === input;
75
- },
76
- meridiem : function (hour, minute, isLower) {
77
- if (hour < 12) {
78
- return 'ص';
79
- } else {
80
- return 'م';
81
- }
82
- },
83
- calendar : {
84
- sameDay: '[اليوم عند الساعة] LT',
85
- nextDay: '[غدًا عند الساعة] LT',
86
- nextWeek: 'dddd [عند الساعة] LT',
87
- lastDay: '[أمس عند الساعة] LT',
88
- lastWeek: 'dddd [عند الساعة] LT',
89
- sameElse: 'L'
90
- },
91
- relativeTime : {
92
- future : 'بعد %s',
93
- past : 'منذ %s',
94
- s : pluralize('s'),
95
- m : pluralize('m'),
96
- mm : pluralize('m'),
97
- h : pluralize('h'),
98
- hh : pluralize('h'),
99
- d : pluralize('d'),
100
- dd : pluralize('d'),
101
- M : pluralize('M'),
102
- MM : pluralize('M'),
103
- y : pluralize('y'),
104
- yy : pluralize('y')
105
- },
106
- preparse: function (string) {
107
- return string.replace(/\u200f/g, '').replace(/،/g, ',');
108
- },
109
- postformat: function (string) {
110
- return string.replace(/\d/g, function (match) {
111
- return symbolMap[match];
112
- }).replace(/,/g, '،');
113
- },
114
- week : {
115
- dow : 6, // Saturday is the first day of the week.
116
- doy : 12 // The week that contains Jan 1st is the first week of the year.
117
- }
118
- });
119
-
120
- return ar_ly;
121
-
122
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ar-ly.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,d){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?d(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],d):d(e.moment)}(this,function(e){"use strict";var d={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(d,r,i,m){var o=t(d),a=n[e][t(d)];return 2===o&&(a=a[r?0:1]),a.replace(/%d/i,d)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,d,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/\u200f/g,"").replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return d[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})});
 
bp-core/js/vendor/moment-js/locale/ar-ma.js DELETED
@@ -1,60 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Arabic (Morocco) [ar-ma]
3
- //! author : ElFadili Yassine : https://github.com/ElFadiliY
4
- //! author : Abdel Said : https://github.com/abdelsaid
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- var ar_ma = moment.defineLocale('ar-ma', {
15
- months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
16
- monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
17
- weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
18
- weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
19
- weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
20
- weekdaysParseExact : true,
21
- longDateFormat : {
22
- LT : 'HH:mm',
23
- LTS : 'HH:mm:ss',
24
- L : 'DD/MM/YYYY',
25
- LL : 'D MMMM YYYY',
26
- LLL : 'D MMMM YYYY HH:mm',
27
- LLLL : 'dddd D MMMM YYYY HH:mm'
28
- },
29
- calendar : {
30
- sameDay: '[اليوم على الساعة] LT',
31
- nextDay: '[غدا على الساعة] LT',
32
- nextWeek: 'dddd [على الساعة] LT',
33
- lastDay: '[أمس على الساعة] LT',
34
- lastWeek: 'dddd [على الساعة] LT',
35
- sameElse: 'L'
36
- },
37
- relativeTime : {
38
- future : 'في %s',
39
- past : 'منذ %s',
40
- s : 'ثوان',
41
- m : 'دقيقة',
42
- mm : '%d دقائق',
43
- h : 'ساعة',
44
- hh : '%d ساعات',
45
- d : 'يوم',
46
- dd : '%d أيام',
47
- M : 'شهر',
48
- MM : '%d أشهر',
49
- y : 'سنة',
50
- yy : '%d سنوات'
51
- },
52
- week : {
53
- dow : 6, // Saturday is the first day of the week.
54
- doy : 12 // The week that contains Jan 1st is the first week of the year.
55
- }
56
- });
57
-
58
- return ar_ma;
59
-
60
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ar-ma.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})});
 
bp-core/js/vendor/moment-js/locale/ar-sa.js DELETED
@@ -1,104 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Arabic (Saudi Arabia) [ar-sa]
3
- //! author : Suhail Alkowaileet : https://github.com/xsoh
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var symbolMap = {
14
- '1': '١',
15
- '2': '٢',
16
- '3': '٣',
17
- '4': '٤',
18
- '5': '٥',
19
- '6': '٦',
20
- '7': '٧',
21
- '8': '٨',
22
- '9': '٩',
23
- '0': '٠'
24
- }, numberMap = {
25
- '١': '1',
26
- '٢': '2',
27
- '٣': '3',
28
- '٤': '4',
29
- '٥': '5',
30
- '٦': '6',
31
- '٧': '7',
32
- '٨': '8',
33
- '٩': '9',
34
- '٠': '0'
35
- };
36
-
37
- var ar_sa = moment.defineLocale('ar-sa', {
38
- months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
39
- monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
40
- weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
41
- weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
42
- weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
43
- weekdaysParseExact : true,
44
- longDateFormat : {
45
- LT : 'HH:mm',
46
- LTS : 'HH:mm:ss',
47
- L : 'DD/MM/YYYY',
48
- LL : 'D MMMM YYYY',
49
- LLL : 'D MMMM YYYY HH:mm',
50
- LLLL : 'dddd D MMMM YYYY HH:mm'
51
- },
52
- meridiemParse: /ص|م/,
53
- isPM : function (input) {
54
- return 'م' === input;
55
- },
56
- meridiem : function (hour, minute, isLower) {
57
- if (hour < 12) {
58
- return 'ص';
59
- } else {
60
- return 'م';
61
- }
62
- },
63
- calendar : {
64
- sameDay: '[اليوم على الساعة] LT',
65
- nextDay: '[غدا على الساعة] LT',
66
- nextWeek: 'dddd [على الساعة] LT',
67
- lastDay: '[أمس على الساعة] LT',
68
- lastWeek: 'dddd [على الساعة] LT',
69
- sameElse: 'L'
70
- },
71
- relativeTime : {
72
- future : 'في %s',
73
- past : 'منذ %s',
74
- s : 'ثوان',
75
- m : 'دقيقة',
76
- mm : '%d دقائق',
77
- h : 'ساعة',
78
- hh : '%d ساعات',
79
- d : 'يوم',
80
- dd : '%d أيام',
81
- M : 'شهر',
82
- MM : '%d أشهر',
83
- y : 'سنة',
84
- yy : '%d سنوات'
85
- },
86
- preparse: function (string) {
87
- return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
88
- return numberMap[match];
89
- }).replace(/،/g, ',');
90
- },
91
- postformat: function (string) {
92
- return string.replace(/\d/g, function (match) {
93
- return symbolMap[match];
94
- }).replace(/,/g, '،');
95
- },
96
- week : {
97
- dow : 6, // Saturday is the first day of the week.
98
- doy : 12 // The week that contains Jan 1st is the first week of the year.
99
- }
100
- });
101
-
102
- return ar_sa;
103
-
104
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ar-sa.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?t(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],t):t(e.moment)}(this,function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},_={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,_){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return _[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})});
 
bp-core/js/vendor/moment-js/locale/ar-tn.js DELETED
@@ -1,59 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Arabic (Tunisia) [ar-tn]
3
- //! author : Nader Toukabri : https://github.com/naderio
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var ar_tn = moment.defineLocale('ar-tn', {
14
- months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
15
- monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
16
- weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
17
- weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
18
- weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
19
- weekdaysParseExact : true,
20
- longDateFormat: {
21
- LT: 'HH:mm',
22
- LTS: 'HH:mm:ss',
23
- L: 'DD/MM/YYYY',
24
- LL: 'D MMMM YYYY',
25
- LLL: 'D MMMM YYYY HH:mm',
26
- LLLL: 'dddd D MMMM YYYY HH:mm'
27
- },
28
- calendar: {
29
- sameDay: '[اليوم على الساعة] LT',
30
- nextDay: '[غدا على الساعة] LT',
31
- nextWeek: 'dddd [على الساعة] LT',
32
- lastDay: '[أمس على الساعة] LT',
33
- lastWeek: 'dddd [على الساعة] LT',
34
- sameElse: 'L'
35
- },
36
- relativeTime: {
37
- future: 'في %s',
38
- past: 'منذ %s',
39
- s: 'ثوان',
40
- m: 'دقيقة',
41
- mm: '%d دقائق',
42
- h: 'ساعة',
43
- hh: '%d ساعات',
44
- d: 'يوم',
45
- dd: '%d أيام',
46
- M: 'شهر',
47
- MM: '%d أشهر',
48
- y: 'سنة',
49
- yy: '%d سنوات'
50
- },
51
- week: {
52
- dow: 1, // Monday is the first day of the week.
53
- doy: 4 // The week that contains Jan 4th is the first week of the year.
54
- }
55
- });
56
-
57
- return ar_tn;
58
-
59
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ar-tn.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/ar.js DELETED
@@ -1,137 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Arabic [ar]
3
- //! author : Abdel Said: https://github.com/abdelsaid
4
- //! author : Ahmed Elkhatib
5
- //! author : forabi https://github.com/forabi
6
-
7
- ;(function (global, factory) {
8
- typeof exports === 'object' && typeof module !== 'undefined'
9
- && typeof require === 'function' ? factory(require('../moment')) :
10
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
- factory(global.moment)
12
- }(this, function (moment) { 'use strict';
13
-
14
-
15
- var symbolMap = {
16
- '1': '١',
17
- '2': '٢',
18
- '3': '٣',
19
- '4': '٤',
20
- '5': '٥',
21
- '6': '٦',
22
- '7': '٧',
23
- '8': '٨',
24
- '9': '٩',
25
- '0': '٠'
26
- }, numberMap = {
27
- '١': '1',
28
- '٢': '2',
29
- '٣': '3',
30
- '٤': '4',
31
- '٥': '5',
32
- '٦': '6',
33
- '٧': '7',
34
- '٨': '8',
35
- '٩': '9',
36
- '٠': '0'
37
- }, pluralForm = function (n) {
38
- return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
39
- }, plurals = {
40
- s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
41
- m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
42
- h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
43
- d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
44
- M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
45
- y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
46
- }, pluralize = function (u) {
47
- return function (number, withoutSuffix, string, isFuture) {
48
- var f = pluralForm(number),
49
- str = plurals[u][pluralForm(number)];
50
- if (f === 2) {
51
- str = str[withoutSuffix ? 0 : 1];
52
- }
53
- return str.replace(/%d/i, number);
54
- };
55
- }, months = [
56
- 'كانون الثاني يناير',
57
- 'شباط فبراير',
58
- 'آذار مارس',
59
- 'نيسان أبريل',
60
- 'أيار مايو',
61
- 'حزيران يونيو',
62
- 'تموز يوليو',
63
- 'آب أغسطس',
64
- 'أيلول سبتمبر',
65
- 'تشرين الأول أكتوبر',
66
- 'تشرين الثاني نوفمبر',
67
- 'كانون الأول ديسمبر'
68
- ];
69
-
70
- var ar = moment.defineLocale('ar', {
71
- months : months,
72
- monthsShort : months,
73
- weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
74
- weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
75
- weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
76
- weekdaysParseExact : true,
77
- longDateFormat : {
78
- LT : 'HH:mm',
79
- LTS : 'HH:mm:ss',
80
- L : 'D/\u200FM/\u200FYYYY',
81
- LL : 'D MMMM YYYY',
82
- LLL : 'D MMMM YYYY HH:mm',
83
- LLLL : 'dddd D MMMM YYYY HH:mm'
84
- },
85
- meridiemParse: /ص|م/,
86
- isPM : function (input) {
87
- return 'م' === input;
88
- },
89
- meridiem : function (hour, minute, isLower) {
90
- if (hour < 12) {
91
- return 'ص';
92
- } else {
93
- return 'م';
94
- }
95
- },
96
- calendar : {
97
- sameDay: '[اليوم عند الساعة] LT',
98
- nextDay: '[غدًا عند الساعة] LT',
99
- nextWeek: 'dddd [عند الساعة] LT',
100
- lastDay: '[أمس عند الساعة] LT',
101
- lastWeek: 'dddd [عند الساعة] LT',
102
- sameElse: 'L'
103
- },
104
- relativeTime : {
105
- future : 'بعد %s',
106
- past : 'منذ %s',
107
- s : pluralize('s'),
108
- m : pluralize('m'),
109
- mm : pluralize('m'),
110
- h : pluralize('h'),
111
- hh : pluralize('h'),
112
- d : pluralize('d'),
113
- dd : pluralize('d'),
114
- M : pluralize('M'),
115
- MM : pluralize('M'),
116
- y : pluralize('y'),
117
- yy : pluralize('y')
118
- },
119
- preparse: function (string) {
120
- return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
121
- return numberMap[match];
122
- }).replace(/،/g, ',');
123
- },
124
- postformat: function (string) {
125
- return string.replace(/\d/g, function (match) {
126
- return symbolMap[match];
127
- }).replace(/,/g, '،');
128
- },
129
- week : {
130
- dow : 6, // Saturday is the first day of the week.
131
- doy : 12 // The week that contains Jan 1st is the first week of the year.
132
- }
133
- });
134
-
135
- return ar;
136
-
137
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ar.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,d){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?d(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],d):d(e.moment)}(this,function(e){"use strict";var d={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(e){return function(d,t,i,o){var a=n(d),m=r[e][n(d)];return 2===a&&(m=m[t?0:1]),m.replace(/%d/i,d)}},o=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"];return e.defineLocale("ar",{months:o,monthsShort:o,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,d,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(e){return e.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return d[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})});
 
bp-core/js/vendor/moment-js/locale/az.js DELETED
@@ -1,105 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Azerbaijani [az]
3
- //! author : topchiyev : https://github.com/topchiyev
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var suffixes = {
14
- 1: '-inci',
15
- 5: '-inci',
16
- 8: '-inci',
17
- 70: '-inci',
18
- 80: '-inci',
19
- 2: '-nci',
20
- 7: '-nci',
21
- 20: '-nci',
22
- 50: '-nci',
23
- 3: '-üncü',
24
- 4: '-üncü',
25
- 100: '-üncü',
26
- 6: '-ncı',
27
- 9: '-uncu',
28
- 10: '-uncu',
29
- 30: '-uncu',
30
- 60: '-ıncı',
31
- 90: '-ıncı'
32
- };
33
-
34
- var az = moment.defineLocale('az', {
35
- months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
36
- monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
37
- weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
38
- weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
39
- weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
40
- weekdaysParseExact : true,
41
- longDateFormat : {
42
- LT : 'HH:mm',
43
- LTS : 'HH:mm:ss',
44
- L : 'DD.MM.YYYY',
45
- LL : 'D MMMM YYYY',
46
- LLL : 'D MMMM YYYY HH:mm',
47
- LLLL : 'dddd, D MMMM YYYY HH:mm'
48
- },
49
- calendar : {
50
- sameDay : '[bugün saat] LT',
51
- nextDay : '[sabah saat] LT',
52
- nextWeek : '[gələn həftə] dddd [saat] LT',
53
- lastDay : '[dünən] LT',
54
- lastWeek : '[keçən həftə] dddd [saat] LT',
55
- sameElse : 'L'
56
- },
57
- relativeTime : {
58
- future : '%s sonra',
59
- past : '%s əvvəl',
60
- s : 'birneçə saniyyə',
61
- m : 'bir dəqiqə',
62
- mm : '%d dəqiqə',
63
- h : 'bir saat',
64
- hh : '%d saat',
65
- d : 'bir gün',
66
- dd : '%d gün',
67
- M : 'bir ay',
68
- MM : '%d ay',
69
- y : 'bir il',
70
- yy : '%d il'
71
- },
72
- meridiemParse: /gecə|səhər|gündüz|axşam/,
73
- isPM : function (input) {
74
- return /^(gündüz|axşam)$/.test(input);
75
- },
76
- meridiem : function (hour, minute, isLower) {
77
- if (hour < 4) {
78
- return 'gecə';
79
- } else if (hour < 12) {
80
- return 'səhər';
81
- } else if (hour < 17) {
82
- return 'gündüz';
83
- } else {
84
- return 'axşam';
85
- }
86
- },
87
- ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
88
- ordinal : function (number) {
89
- if (number === 0) { // special case for zero
90
- return number + '-ıncı';
91
- }
92
- var a = number % 10,
93
- b = number % 100 - a,
94
- c = number >= 100 ? 100 : null;
95
- return number + (suffixes[a] || suffixes[b] || suffixes[c]);
96
- },
97
- week : {
98
- dow : 1, // Monday is the first day of the week.
99
- doy : 7 // The week that contains Jan 1st is the first week of the year.
100
- }
101
- });
102
-
103
- return az;
104
-
105
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/az.min.js DELETED
@@ -1 +0,0 @@
1
- !function(n,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(n.moment)}(this,function(n){"use strict";var a={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};return n.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(n){return/^(gündüz|axşam)$/.test(n)},meridiem:function(n,a,e){return n<4?"gecə":n<12?"səhər":n<17?"gündüz":"axşam"},ordinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(n){if(0===n)return n+"-ıncı";var e=n%10,i=n%100-e,t=n>=100?100:null;return n+(a[e]||a[i]||a[t])},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/be.js DELETED
@@ -1,134 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Belarusian [be]
3
- //! author : Dmitry Demidov : https://github.com/demidov91
4
- //! author: Praleska: http://praleska.pro/
5
- //! Author : Menelion Elensúle : https://github.com/Oire
6
-
7
- ;(function (global, factory) {
8
- typeof exports === 'object' && typeof module !== 'undefined'
9
- && typeof require === 'function' ? factory(require('../moment')) :
10
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
- factory(global.moment)
12
- }(this, function (moment) { 'use strict';
13
-
14
-
15
- function plural(word, num) {
16
- var forms = word.split('_');
17
- return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
18
- }
19
- function relativeTimeWithPlural(number, withoutSuffix, key) {
20
- var format = {
21
- 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
22
- 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
23
- 'dd': 'дзень_дні_дзён',
24
- 'MM': 'месяц_месяцы_месяцаў',
25
- 'yy': 'год_гады_гадоў'
26
- };
27
- if (key === 'm') {
28
- return withoutSuffix ? 'хвіліна' : 'хвіліну';
29
- }
30
- else if (key === 'h') {
31
- return withoutSuffix ? 'гадзіна' : 'гадзіну';
32
- }
33
- else {
34
- return number + ' ' + plural(format[key], +number);
35
- }
36
- }
37
-
38
- var be = moment.defineLocale('be', {
39
- months : {
40
- format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
41
- standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
42
- },
43
- monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
44
- weekdays : {
45
- format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
46
- standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
47
- isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
48
- },
49
- weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
50
- weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
51
- longDateFormat : {
52
- LT : 'HH:mm',
53
- LTS : 'HH:mm:ss',
54
- L : 'DD.MM.YYYY',
55
- LL : 'D MMMM YYYY г.',
56
- LLL : 'D MMMM YYYY г., HH:mm',
57
- LLLL : 'dddd, D MMMM YYYY г., HH:mm'
58
- },
59
- calendar : {
60
- sameDay: '[Сёння ў] LT',
61
- nextDay: '[Заўтра ў] LT',
62
- lastDay: '[Учора ў] LT',
63
- nextWeek: function () {
64
- return '[У] dddd [ў] LT';
65
- },
66
- lastWeek: function () {
67
- switch (this.day()) {
68
- case 0:
69
- case 3:
70
- case 5:
71
- case 6:
72
- return '[У мінулую] dddd [ў] LT';
73
- case 1:
74
- case 2:
75
- case 4:
76
- return '[У мінулы] dddd [ў] LT';
77
- }
78
- },
79
- sameElse: 'L'
80
- },
81
- relativeTime : {
82
- future : 'праз %s',
83
- past : '%s таму',
84
- s : 'некалькі секунд',
85
- m : relativeTimeWithPlural,
86
- mm : relativeTimeWithPlural,
87
- h : relativeTimeWithPlural,
88
- hh : relativeTimeWithPlural,
89
- d : 'дзень',
90
- dd : relativeTimeWithPlural,
91
- M : 'месяц',
92
- MM : relativeTimeWithPlural,
93
- y : 'год',
94
- yy : relativeTimeWithPlural
95
- },
96
- meridiemParse: /ночы|раніцы|дня|вечара/,
97
- isPM : function (input) {
98
- return /^(дня|вечара)$/.test(input);
99
- },
100
- meridiem : function (hour, minute, isLower) {
101
- if (hour < 4) {
102
- return 'ночы';
103
- } else if (hour < 12) {
104
- return 'раніцы';
105
- } else if (hour < 17) {
106
- return 'дня';
107
- } else {
108
- return 'вечара';
109
- }
110
- },
111
- ordinalParse: /\d{1,2}-(і|ы|га)/,
112
- ordinal: function (number, period) {
113
- switch (period) {
114
- case 'M':
115
- case 'd':
116
- case 'DDD':
117
- case 'w':
118
- case 'W':
119
- return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
120
- case 'D':
121
- return number + '-га';
122
- default:
123
- return number;
124
- }
125
- },
126
- week : {
127
- dow : 1, // Monday is the first day of the week.
128
- doy : 7 // The week that contains Jan 1st is the first week of the year.
129
- }
130
- });
131
-
132
- return be;
133
-
134
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/be.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";function _(e,_){var t=e.split("_");return _%10==1&&_%100!=11?t[0]:_%10>=2&&_%10<=4&&(_%100<10||_%100>=20)?t[1]:t[2]}function t(e,t,n){var s={mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+_(s[n],+e)}return e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,_,t){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},ordinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,_){switch(_){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/bg.js DELETED
@@ -1,90 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Bulgarian [bg]
3
- //! author : Krasen Borisov : https://github.com/kraz
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var bg = moment.defineLocale('bg', {
14
- months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
15
- monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
16
- weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
17
- weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
18
- weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
19
- longDateFormat : {
20
- LT : 'H:mm',
21
- LTS : 'H:mm:ss',
22
- L : 'D.MM.YYYY',
23
- LL : 'D MMMM YYYY',
24
- LLL : 'D MMMM YYYY H:mm',
25
- LLLL : 'dddd, D MMMM YYYY H:mm'
26
- },
27
- calendar : {
28
- sameDay : '[Днес в] LT',
29
- nextDay : '[Утре в] LT',
30
- nextWeek : 'dddd [в] LT',
31
- lastDay : '[Вчера в] LT',
32
- lastWeek : function () {
33
- switch (this.day()) {
34
- case 0:
35
- case 3:
36
- case 6:
37
- return '[В изминалата] dddd [в] LT';
38
- case 1:
39
- case 2:
40
- case 4:
41
- case 5:
42
- return '[В изминалия] dddd [в] LT';
43
- }
44
- },
45
- sameElse : 'L'
46
- },
47
- relativeTime : {
48
- future : 'след %s',
49
- past : 'преди %s',
50
- s : 'няколко секунди',
51
- m : 'минута',
52
- mm : '%d минути',
53
- h : 'час',
54
- hh : '%d часа',
55
- d : 'ден',
56
- dd : '%d дни',
57
- M : 'месец',
58
- MM : '%d месеца',
59
- y : 'година',
60
- yy : '%d години'
61
- },
62
- ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
63
- ordinal : function (number) {
64
- var lastDigit = number % 10,
65
- last2Digits = number % 100;
66
- if (number === 0) {
67
- return number + '-ев';
68
- } else if (last2Digits === 0) {
69
- return number + '-ен';
70
- } else if (last2Digits > 10 && last2Digits < 20) {
71
- return number + '-ти';
72
- } else if (lastDigit === 1) {
73
- return number + '-ви';
74
- } else if (lastDigit === 2) {
75
- return number + '-ри';
76
- } else if (lastDigit === 7 || lastDigit === 8) {
77
- return number + '-ми';
78
- } else {
79
- return number + '-ти';
80
- }
81
- },
82
- week : {
83
- dow : 1, // Monday is the first day of the week.
84
- doy : 7 // The week that contains Jan 1st is the first week of the year.
85
- }
86
- });
87
-
88
- return bg;
89
-
90
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/bg.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var _=e%10,d=e%100;return 0===e?e+"-ев":0===d?e+"-ен":d>10&&d<20?e+"-ти":1===_?e+"-ви":2===_?e+"-ри":7===_||8===_?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/bn.js DELETED
@@ -1,119 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Bengali [bn]
3
- //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var symbolMap = {
14
- '1': '১',
15
- '2': '২',
16
- '3': '৩',
17
- '4': '৪',
18
- '5': '৫',
19
- '6': '৬',
20
- '7': '৭',
21
- '8': '৮',
22
- '9': '৯',
23
- '0': '০'
24
- },
25
- numberMap = {
26
- '১': '1',
27
- '২': '2',
28
- '৩': '3',
29
- '৪': '4',
30
- '৫': '5',
31
- '৬': '6',
32
- '৭': '7',
33
- '৮': '8',
34
- '৯': '9',
35
- '০': '0'
36
- };
37
-
38
- var bn = moment.defineLocale('bn', {
39
- months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
40
- monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
41
- weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
42
- weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
43
- weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
44
- longDateFormat : {
45
- LT : 'A h:mm সময়',
46
- LTS : 'A h:mm:ss সময়',
47
- L : 'DD/MM/YYYY',
48
- LL : 'D MMMM YYYY',
49
- LLL : 'D MMMM YYYY, A h:mm সময়',
50
- LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
51
- },
52
- calendar : {
53
- sameDay : '[আজ] LT',
54
- nextDay : '[আগামীকাল] LT',
55
- nextWeek : 'dddd, LT',
56
- lastDay : '[গতকাল] LT',
57
- lastWeek : '[গত] dddd, LT',
58
- sameElse : 'L'
59
- },
60
- relativeTime : {
61
- future : '%s পরে',
62
- past : '%s আগে',
63
- s : 'কয়েক সেকেন্ড',
64
- m : 'এক মিনিট',
65
- mm : '%d মিনিট',
66
- h : 'এক ঘন্টা',
67
- hh : '%d ঘন্টা',
68
- d : 'এক দিন',
69
- dd : '%d দিন',
70
- M : 'এক মাস',
71
- MM : '%d মাস',
72
- y : 'এক বছর',
73
- yy : '%d বছর'
74
- },
75
- preparse: function (string) {
76
- return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
77
- return numberMap[match];
78
- });
79
- },
80
- postformat: function (string) {
81
- return string.replace(/\d/g, function (match) {
82
- return symbolMap[match];
83
- });
84
- },
85
- meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
86
- meridiemHour : function (hour, meridiem) {
87
- if (hour === 12) {
88
- hour = 0;
89
- }
90
- if ((meridiem === 'রাত' && hour >= 4) ||
91
- (meridiem === 'দুপুর' && hour < 5) ||
92
- meridiem === 'বিকাল') {
93
- return hour + 12;
94
- } else {
95
- return hour;
96
- }
97
- },
98
- meridiem : function (hour, minute, isLower) {
99
- if (hour < 4) {
100
- return 'রাত';
101
- } else if (hour < 10) {
102
- return 'সকাল';
103
- } else if (hour < 17) {
104
- return 'দুপুর';
105
- } else if (hour < 20) {
106
- return 'বিকাল';
107
- } else {
108
- return 'রাত';
109
- }
110
- },
111
- week : {
112
- dow : 0, // Sunday is the first day of the week.
113
- doy : 6 // The week that contains Jan 1st is the first week of the year.
114
- }
115
- });
116
-
117
- return bn;
118
-
119
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/bn.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?t(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],t):t(e.moment)}(this,function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},_={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return _[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,_){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})});
 
bp-core/js/vendor/moment-js/locale/bo.js DELETED
@@ -1,119 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Tibetan [bo]
3
- //! author : Thupten N. Chakrishar : https://github.com/vajradog
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var symbolMap = {
14
- '1': '༡',
15
- '2': '༢',
16
- '3': '༣',
17
- '4': '༤',
18
- '5': '༥',
19
- '6': '༦',
20
- '7': '༧',
21
- '8': '༨',
22
- '9': '༩',
23
- '0': '༠'
24
- },
25
- numberMap = {
26
- '༡': '1',
27
- '༢': '2',
28
- '༣': '3',
29
- '༤': '4',
30
- '༥': '5',
31
- '༦': '6',
32
- '༧': '7',
33
- '༨': '8',
34
- '༩': '9',
35
- '༠': '0'
36
- };
37
-
38
- var bo = moment.defineLocale('bo', {
39
- months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
40
- monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
41
- weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
42
- weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
43
- weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
44
- longDateFormat : {
45
- LT : 'A h:mm',
46
- LTS : 'A h:mm:ss',
47
- L : 'DD/MM/YYYY',
48
- LL : 'D MMMM YYYY',
49
- LLL : 'D MMMM YYYY, A h:mm',
50
- LLLL : 'dddd, D MMMM YYYY, A h:mm'
51
- },
52
- calendar : {
53
- sameDay : '[དི་རིང] LT',
54
- nextDay : '[སང་ཉིན] LT',
55
- nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
56
- lastDay : '[ཁ་སང] LT',
57
- lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
58
- sameElse : 'L'
59
- },
60
- relativeTime : {
61
- future : '%s ལ་',
62
- past : '%s སྔན་ལ',
63
- s : 'ལམ་སང',
64
- m : 'སྐར་མ་གཅིག',
65
- mm : '%d སྐར་མ',
66
- h : 'ཆུ་ཚོད་གཅིག',
67
- hh : '%d ཆུ་ཚོད',
68
- d : 'ཉིན་གཅིག',
69
- dd : '%d ཉིན་',
70
- M : 'ཟླ་བ་གཅིག',
71
- MM : '%d ཟླ་བ',
72
- y : 'ལོ་གཅིག',
73
- yy : '%d ལོ'
74
- },
75
- preparse: function (string) {
76
- return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
77
- return numberMap[match];
78
- });
79
- },
80
- postformat: function (string) {
81
- return string.replace(/\d/g, function (match) {
82
- return symbolMap[match];
83
- });
84
- },
85
- meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
86
- meridiemHour : function (hour, meridiem) {
87
- if (hour === 12) {
88
- hour = 0;
89
- }
90
- if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
91
- (meridiem === 'ཉིན་གུང' && hour < 5) ||
92
- meridiem === 'དགོང་དག') {
93
- return hour + 12;
94
- } else {
95
- return hour;
96
- }
97
- },
98
- meridiem : function (hour, minute, isLower) {
99
- if (hour < 4) {
100
- return 'མཚན་མོ';
101
- } else if (hour < 10) {
102
- return 'ཞོགས་ཀས';
103
- } else if (hour < 17) {
104
- return 'ཉིན་གུང';
105
- } else if (hour < 20) {
106
- return 'དགོང་དག';
107
- } else {
108
- return 'མཚན་མོ';
109
- }
110
- },
111
- week : {
112
- dow : 0, // Sunday is the first day of the week.
113
- doy : 6 // The week that contains Jan 1st is the first week of the year.
114
- }
115
- });
116
-
117
- return bo;
118
-
119
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/bo.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?t(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],t):t(e.moment)}(this,function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},_={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};return e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(e){return _[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,_){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})});
 
bp-core/js/vendor/moment-js/locale/br.js DELETED
@@ -1,108 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Breton [br]
3
- //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- function relativeTimeWithMutation(number, withoutSuffix, key) {
14
- var format = {
15
- 'mm': 'munutenn',
16
- 'MM': 'miz',
17
- 'dd': 'devezh'
18
- };
19
- return number + ' ' + mutation(format[key], number);
20
- }
21
- function specialMutationForYears(number) {
22
- switch (lastNumber(number)) {
23
- case 1:
24
- case 3:
25
- case 4:
26
- case 5:
27
- case 9:
28
- return number + ' bloaz';
29
- default:
30
- return number + ' vloaz';
31
- }
32
- }
33
- function lastNumber(number) {
34
- if (number > 9) {
35
- return lastNumber(number % 10);
36
- }
37
- return number;
38
- }
39
- function mutation(text, number) {
40
- if (number === 2) {
41
- return softMutation(text);
42
- }
43
- return text;
44
- }
45
- function softMutation(text) {
46
- var mutationTable = {
47
- 'm': 'v',
48
- 'b': 'v',
49
- 'd': 'z'
50
- };
51
- if (mutationTable[text.charAt(0)] === undefined) {
52
- return text;
53
- }
54
- return mutationTable[text.charAt(0)] + text.substring(1);
55
- }
56
-
57
- var br = moment.defineLocale('br', {
58
- months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
59
- monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
60
- weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
61
- weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
62
- weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
63
- weekdaysParseExact : true,
64
- longDateFormat : {
65
- LT : 'h[e]mm A',
66
- LTS : 'h[e]mm:ss A',
67
- L : 'DD/MM/YYYY',
68
- LL : 'D [a viz] MMMM YYYY',
69
- LLL : 'D [a viz] MMMM YYYY h[e]mm A',
70
- LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
71
- },
72
- calendar : {
73
- sameDay : '[Hiziv da] LT',
74
- nextDay : '[Warc\'hoazh da] LT',
75
- nextWeek : 'dddd [da] LT',
76
- lastDay : '[Dec\'h da] LT',
77
- lastWeek : 'dddd [paset da] LT',
78
- sameElse : 'L'
79
- },
80
- relativeTime : {
81
- future : 'a-benn %s',
82
- past : '%s \'zo',
83
- s : 'un nebeud segondennoù',
84
- m : 'ur vunutenn',
85
- mm : relativeTimeWithMutation,
86
- h : 'un eur',
87
- hh : '%d eur',
88
- d : 'un devezh',
89
- dd : relativeTimeWithMutation,
90
- M : 'ur miz',
91
- MM : relativeTimeWithMutation,
92
- y : 'ur bloaz',
93
- yy : specialMutationForYears
94
- },
95
- ordinalParse: /\d{1,2}(añ|vet)/,
96
- ordinal : function (number) {
97
- var output = (number === 1) ? 'añ' : 'vet';
98
- return number + output;
99
- },
100
- week : {
101
- dow : 1, // Monday is the first day of the week.
102
- doy : 4 // The week that contains Jan 4th is the first week of the year.
103
- }
104
- });
105
-
106
- return br;
107
-
108
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/br.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,r){return e+" "+t({mm:"munutenn",MM:"miz",dd:"devezh"}[r],e)}function r(e){return e>9?r(e%10):e}function t(e,n){return 2===n?a(e):e}function a(e){var n={m:"v",b:"v",d:"z"};return void 0===n[e.charAt(0)]?e:n[e.charAt(0)]+e.substring(1)}return e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:n,h:"un eur",hh:"%d eur",d:"un devezh",dd:n,M:"ur miz",MM:n,y:"ur bloaz",yy:function(e){switch(r(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/bs.js DELETED
@@ -1,143 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Bosnian [bs]
3
- //! author : Nedim Cholich : https://github.com/frontyard
4
- //! based on (hr) translation by Bojan Marković
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- function translate(number, withoutSuffix, key) {
15
- var result = number + ' ';
16
- switch (key) {
17
- case 'm':
18
- return withoutSuffix ? 'jedna minuta' : 'jedne minute';
19
- case 'mm':
20
- if (number === 1) {
21
- result += 'minuta';
22
- } else if (number === 2 || number === 3 || number === 4) {
23
- result += 'minute';
24
- } else {
25
- result += 'minuta';
26
- }
27
- return result;
28
- case 'h':
29
- return withoutSuffix ? 'jedan sat' : 'jednog sata';
30
- case 'hh':
31
- if (number === 1) {
32
- result += 'sat';
33
- } else if (number === 2 || number === 3 || number === 4) {
34
- result += 'sata';
35
- } else {
36
- result += 'sati';
37
- }
38
- return result;
39
- case 'dd':
40
- if (number === 1) {
41
- result += 'dan';
42
- } else {
43
- result += 'dana';
44
- }
45
- return result;
46
- case 'MM':
47
- if (number === 1) {
48
- result += 'mjesec';
49
- } else if (number === 2 || number === 3 || number === 4) {
50
- result += 'mjeseca';
51
- } else {
52
- result += 'mjeseci';
53
- }
54
- return result;
55
- case 'yy':
56
- if (number === 1) {
57
- result += 'godina';
58
- } else if (number === 2 || number === 3 || number === 4) {
59
- result += 'godine';
60
- } else {
61
- result += 'godina';
62
- }
63
- return result;
64
- }
65
- }
66
-
67
- var bs = moment.defineLocale('bs', {
68
- months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
69
- monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
70
- monthsParseExact: true,
71
- weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
72
- weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
73
- weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
74
- weekdaysParseExact : true,
75
- longDateFormat : {
76
- LT : 'H:mm',
77
- LTS : 'H:mm:ss',
78
- L : 'DD.MM.YYYY',
79
- LL : 'D. MMMM YYYY',
80
- LLL : 'D. MMMM YYYY H:mm',
81
- LLLL : 'dddd, D. MMMM YYYY H:mm'
82
- },
83
- calendar : {
84
- sameDay : '[danas u] LT',
85
- nextDay : '[sutra u] LT',
86
- nextWeek : function () {
87
- switch (this.day()) {
88
- case 0:
89
- return '[u] [nedjelju] [u] LT';
90
- case 3:
91
- return '[u] [srijedu] [u] LT';
92
- case 6:
93
- return '[u] [subotu] [u] LT';
94
- case 1:
95
- case 2:
96
- case 4:
97
- case 5:
98
- return '[u] dddd [u] LT';
99
- }
100
- },
101
- lastDay : '[jučer u] LT',
102
- lastWeek : function () {
103
- switch (this.day()) {
104
- case 0:
105
- case 3:
106
- return '[prošlu] dddd [u] LT';
107
- case 6:
108
- return '[prošle] [subote] [u] LT';
109
- case 1:
110
- case 2:
111
- case 4:
112
- case 5:
113
- return '[prošli] dddd [u] LT';
114
- }
115
- },
116
- sameElse : 'L'
117
- },
118
- relativeTime : {
119
- future : 'za %s',
120
- past : 'prije %s',
121
- s : 'par sekundi',
122
- m : translate,
123
- mm : translate,
124
- h : translate,
125
- hh : translate,
126
- d : 'dan',
127
- dd : translate,
128
- M : 'mjesec',
129
- MM : translate,
130
- y : 'godinu',
131
- yy : translate
132
- },
133
- ordinalParse: /\d{1,2}\./,
134
- ordinal : '%d.',
135
- week : {
136
- dow : 1, // Monday is the first day of the week.
137
- doy : 7 // The week that contains Jan 1st is the first week of the year.
138
- }
139
- });
140
-
141
- return bs;
142
-
143
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/bs.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";function a(e,a,t){var s=e+" ";switch(t){case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/ca.js DELETED
@@ -1,81 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Catalan [ca]
3
- //! author : Juan G. Hurtado : https://github.com/juanghurtado
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var ca = moment.defineLocale('ca', {
14
- months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
15
- monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
16
- monthsParseExact : true,
17
- weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
18
- weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
19
- weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
20
- weekdaysParseExact : true,
21
- longDateFormat : {
22
- LT : 'H:mm',
23
- LTS : 'H:mm:ss',
24
- L : 'DD/MM/YYYY',
25
- LL : 'D MMMM YYYY',
26
- LLL : 'D MMMM YYYY H:mm',
27
- LLLL : 'dddd D MMMM YYYY H:mm'
28
- },
29
- calendar : {
30
- sameDay : function () {
31
- return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
32
- },
33
- nextDay : function () {
34
- return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
35
- },
36
- nextWeek : function () {
37
- return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
38
- },
39
- lastDay : function () {
40
- return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
41
- },
42
- lastWeek : function () {
43
- return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
44
- },
45
- sameElse : 'L'
46
- },
47
- relativeTime : {
48
- future : 'en %s',
49
- past : 'fa %s',
50
- s : 'uns segons',
51
- m : 'un minut',
52
- mm : '%d minuts',
53
- h : 'una hora',
54
- hh : '%d hores',
55
- d : 'un dia',
56
- dd : '%d dies',
57
- M : 'un mes',
58
- MM : '%d mesos',
59
- y : 'un any',
60
- yy : '%d anys'
61
- },
62
- ordinalParse: /\d{1,2}(r|n|t|è|a)/,
63
- ordinal : function (number, period) {
64
- var output = (number === 1) ? 'r' :
65
- (number === 2) ? 'n' :
66
- (number === 3) ? 'r' :
67
- (number === 4) ? 't' : 'è';
68
- if (period === 'w' || period === 'W') {
69
- output = 'a';
70
- }
71
- return number + output;
72
- },
73
- week : {
74
- dow : 1, // Monday is the first day of the week.
75
- doy : 4 // The week that contains Jan 4th is the first week of the year.
76
- }
77
- });
78
-
79
- return ca;
80
-
81
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ca.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,s){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?s(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],s):s(e.moment)}(this,function(e){"use strict";return e.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,s){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==s&&"W"!==s||(n="a"),e+n},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/cs.js DELETED
@@ -1,172 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Czech [cs]
3
- //! author : petrbela : https://github.com/petrbela
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
14
- monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
15
- function plural(n) {
16
- return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
17
- }
18
- function translate(number, withoutSuffix, key, isFuture) {
19
- var result = number + ' ';
20
- switch (key) {
21
- case 's': // a few seconds / in a few seconds / a few seconds ago
22
- return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
23
- case 'm': // a minute / in a minute / a minute ago
24
- return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
25
- case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
26
- if (withoutSuffix || isFuture) {
27
- return result + (plural(number) ? 'minuty' : 'minut');
28
- } else {
29
- return result + 'minutami';
30
- }
31
- break;
32
- case 'h': // an hour / in an hour / an hour ago
33
- return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
34
- case 'hh': // 9 hours / in 9 hours / 9 hours ago
35
- if (withoutSuffix || isFuture) {
36
- return result + (plural(number) ? 'hodiny' : 'hodin');
37
- } else {
38
- return result + 'hodinami';
39
- }
40
- break;
41
- case 'd': // a day / in a day / a day ago
42
- return (withoutSuffix || isFuture) ? 'den' : 'dnem';
43
- case 'dd': // 9 days / in 9 days / 9 days ago
44
- if (withoutSuffix || isFuture) {
45
- return result + (plural(number) ? 'dny' : 'dní');
46
- } else {
47
- return result + 'dny';
48
- }
49
- break;
50
- case 'M': // a month / in a month / a month ago
51
- return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
52
- case 'MM': // 9 months / in 9 months / 9 months ago
53
- if (withoutSuffix || isFuture) {
54
- return result + (plural(number) ? 'měsíce' : 'měsíců');
55
- } else {
56
- return result + 'měsíci';
57
- }
58
- break;
59
- case 'y': // a year / in a year / a year ago
60
- return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
61
- case 'yy': // 9 years / in 9 years / 9 years ago
62
- if (withoutSuffix || isFuture) {
63
- return result + (plural(number) ? 'roky' : 'let');
64
- } else {
65
- return result + 'lety';
66
- }
67
- break;
68
- }
69
- }
70
-
71
- var cs = moment.defineLocale('cs', {
72
- months : months,
73
- monthsShort : monthsShort,
74
- monthsParse : (function (months, monthsShort) {
75
- var i, _monthsParse = [];
76
- for (i = 0; i < 12; i++) {
77
- // use custom parser to solve problem with July (červenec)
78
- _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
79
- }
80
- return _monthsParse;
81
- }(months, monthsShort)),
82
- shortMonthsParse : (function (monthsShort) {
83
- var i, _shortMonthsParse = [];
84
- for (i = 0; i < 12; i++) {
85
- _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
86
- }
87
- return _shortMonthsParse;
88
- }(monthsShort)),
89
- longMonthsParse : (function (months) {
90
- var i, _longMonthsParse = [];
91
- for (i = 0; i < 12; i++) {
92
- _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
93
- }
94
- return _longMonthsParse;
95
- }(months)),
96
- weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
97
- weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
98
- weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
99
- longDateFormat : {
100
- LT: 'H:mm',
101
- LTS : 'H:mm:ss',
102
- L : 'DD.MM.YYYY',
103
- LL : 'D. MMMM YYYY',
104
- LLL : 'D. MMMM YYYY H:mm',
105
- LLLL : 'dddd D. MMMM YYYY H:mm',
106
- l : 'D. M. YYYY'
107
- },
108
- calendar : {
109
- sameDay: '[dnes v] LT',
110
- nextDay: '[zítra v] LT',
111
- nextWeek: function () {
112
- switch (this.day()) {
113
- case 0:
114
- return '[v neděli v] LT';
115
- case 1:
116
- case 2:
117
- return '[v] dddd [v] LT';
118
- case 3:
119
- return '[ve středu v] LT';
120
- case 4:
121
- return '[ve čtvrtek v] LT';
122
- case 5:
123
- return '[v pátek v] LT';
124
- case 6:
125
- return '[v sobotu v] LT';
126
- }
127
- },
128
- lastDay: '[včera v] LT',
129
- lastWeek: function () {
130
- switch (this.day()) {
131
- case 0:
132
- return '[minulou neděli v] LT';
133
- case 1:
134
- case 2:
135
- return '[minulé] dddd [v] LT';
136
- case 3:
137
- return '[minulou středu v] LT';
138
- case 4:
139
- case 5:
140
- return '[minulý] dddd [v] LT';
141
- case 6:
142
- return '[minulou sobotu v] LT';
143
- }
144
- },
145
- sameElse: 'L'
146
- },
147
- relativeTime : {
148
- future : 'za %s',
149
- past : 'před %s',
150
- s : translate,
151
- m : translate,
152
- mm : translate,
153
- h : translate,
154
- hh : translate,
155
- d : translate,
156
- dd : translate,
157
- M : translate,
158
- MM : translate,
159
- y : translate,
160
- yy : translate
161
- },
162
- ordinalParse : /\d{1,2}\./,
163
- ordinal : '%d.',
164
- week : {
165
- dow : 1, // Monday is the first day of the week.
166
- doy : 4 // The week that contains Jan 4th is the first week of the year.
167
- }
168
- });
169
-
170
- return cs;
171
-
172
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/cs.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,r,s){var u=e+" ";switch(r){case"s":return t||s?"pár sekund":"pár sekundami";case"m":return t?"minuta":s?"minutu":"minutou";case"mm":return t||s?u+(n(e)?"minuty":"minut"):u+"minutami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?u+(n(e)?"hodiny":"hodin"):u+"hodinami";case"d":return t||s?"den":"dnem";case"dd":return t||s?u+(n(e)?"dny":"dní"):u+"dny";case"M":return t||s?"měsíc":"měsícem";case"MM":return t||s?u+(n(e)?"měsíce":"měsíců"):u+"měsíci";case"y":return t||s?"rok":"rokem";case"yy":return t||s?u+(n(e)?"roky":"let"):u+"lety"}}var r="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),s="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");return e.defineLocale("cs",{months:r,monthsShort:s,monthsParse:function(e,n){var t,r=[];for(t=0;t<12;t++)r[t]=new RegExp("^"+e[t]+"$|^"+n[t]+"$","i");return r}(r,s),shortMonthsParse:function(e){var n,t=[];for(n=0;n<12;n++)t[n]=new RegExp("^"+e[n]+"$","i");return t}(s),longMonthsParse:function(e){var n,t=[];for(n=0;n<12;n++)t[n]=new RegExp("^"+e[n]+"$","i");return t}(r),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/cv.js DELETED
@@ -1,63 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Chuvash [cv]
3
- //! author : Anatoly Mironov : https://github.com/mirontoli
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var cv = moment.defineLocale('cv', {
14
- months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
15
- monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
16
- weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
17
- weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
18
- weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
19
- longDateFormat : {
20
- LT : 'HH:mm',
21
- LTS : 'HH:mm:ss',
22
- L : 'DD-MM-YYYY',
23
- LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
24
- LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
25
- LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
26
- },
27
- calendar : {
28
- sameDay: '[Паян] LT [сехетре]',
29
- nextDay: '[Ыран] LT [сехетре]',
30
- lastDay: '[Ӗнер] LT [сехетре]',
31
- nextWeek: '[Ҫитес] dddd LT [сехетре]',
32
- lastWeek: '[Иртнӗ] dddd LT [сехетре]',
33
- sameElse: 'L'
34
- },
35
- relativeTime : {
36
- future : function (output) {
37
- var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
38
- return output + affix;
39
- },
40
- past : '%s каялла',
41
- s : 'пӗр-ик ҫеккунт',
42
- m : 'пӗр минут',
43
- mm : '%d минут',
44
- h : 'пӗр сехет',
45
- hh : '%d сехет',
46
- d : 'пӗр кун',
47
- dd : '%d кун',
48
- M : 'пӗр уйӑх',
49
- MM : '%d уйӑх',
50
- y : 'пӗр ҫул',
51
- yy : '%d ҫул'
52
- },
53
- ordinalParse: /\d{1,2}-мӗш/,
54
- ordinal : '%d-мӗш',
55
- week : {
56
- dow : 1, // Monday is the first day of the week.
57
- doy : 7 // The week that contains Jan 1st is the first week of the year.
58
- }
59
- });
60
-
61
- return cv;
62
-
63
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/cv.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},ordinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/cy.js DELETED
@@ -1,81 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Welsh [cy]
3
- //! author : Robert Allen : https://github.com/robgallen
4
- //! author : https://github.com/ryangreaves
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- var cy = moment.defineLocale('cy', {
15
- months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
16
- monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
17
- weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
18
- weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
19
- weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
20
- weekdaysParseExact : true,
21
- // time formats are the same as en-gb
22
- longDateFormat: {
23
- LT: 'HH:mm',
24
- LTS : 'HH:mm:ss',
25
- L: 'DD/MM/YYYY',
26
- LL: 'D MMMM YYYY',
27
- LLL: 'D MMMM YYYY HH:mm',
28
- LLLL: 'dddd, D MMMM YYYY HH:mm'
29
- },
30
- calendar: {
31
- sameDay: '[Heddiw am] LT',
32
- nextDay: '[Yfory am] LT',
33
- nextWeek: 'dddd [am] LT',
34
- lastDay: '[Ddoe am] LT',
35
- lastWeek: 'dddd [diwethaf am] LT',
36
- sameElse: 'L'
37
- },
38
- relativeTime: {
39
- future: 'mewn %s',
40
- past: '%s yn ôl',
41
- s: 'ychydig eiliadau',
42
- m: 'munud',
43
- mm: '%d munud',
44
- h: 'awr',
45
- hh: '%d awr',
46
- d: 'diwrnod',
47
- dd: '%d diwrnod',
48
- M: 'mis',
49
- MM: '%d mis',
50
- y: 'blwyddyn',
51
- yy: '%d flynedd'
52
- },
53
- ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
54
- // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
55
- ordinal: function (number) {
56
- var b = number,
57
- output = '',
58
- lookup = [
59
- '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
60
- 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
61
- ];
62
- if (b > 20) {
63
- if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
64
- output = 'fed'; // not 30ain, 70ain or 90ain
65
- } else {
66
- output = 'ain';
67
- }
68
- } else if (b > 0) {
69
- output = lookup[b];
70
- }
71
- return number + output;
72
- },
73
- week : {
74
- dow : 1, // Monday is the first day of the week.
75
- doy : 4 // The week that contains Jan 4th is the first week of the year.
76
- }
77
- });
78
-
79
- return cy;
80
-
81
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/cy.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,d){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?d(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],d):d(e.moment)}(this,function(e){"use strict";return e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var d=e,a="",n=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return d>20?a=40===d||50===d||60===d||80===d||100===d?"fed":"ain":d>0&&(a=n[d]),e+a},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/da.js DELETED
@@ -1,60 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Danish [da]
3
- //! author : Ulrik Nielsen : https://github.com/mrbase
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var da = moment.defineLocale('da', {
14
- months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
15
- monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
16
- weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
17
- weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
18
- weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
19
- longDateFormat : {
20
- LT : 'HH:mm',
21
- LTS : 'HH:mm:ss',
22
- L : 'DD/MM/YYYY',
23
- LL : 'D. MMMM YYYY',
24
- LLL : 'D. MMMM YYYY HH:mm',
25
- LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'
26
- },
27
- calendar : {
28
- sameDay : '[I dag kl.] LT',
29
- nextDay : '[I morgen kl.] LT',
30
- nextWeek : 'dddd [kl.] LT',
31
- lastDay : '[I går kl.] LT',
32
- lastWeek : '[sidste] dddd [kl] LT',
33
- sameElse : 'L'
34
- },
35
- relativeTime : {
36
- future : 'om %s',
37
- past : '%s siden',
38
- s : 'få sekunder',
39
- m : 'et minut',
40
- mm : '%d minutter',
41
- h : 'en time',
42
- hh : '%d timer',
43
- d : 'en dag',
44
- dd : '%d dage',
45
- M : 'en måned',
46
- MM : '%d måneder',
47
- y : 'et år',
48
- yy : '%d år'
49
- },
50
- ordinalParse: /\d{1,2}\./,
51
- ordinal : '%d.',
52
- week : {
53
- dow : 1, // Monday is the first day of the week.
54
- doy : 4 // The week that contains Jan 4th is the first week of the year.
55
- }
56
- });
57
-
58
- return da;
59
-
60
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/da.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,d){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?d(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],d):d(e.moment)}(this,function(e){"use strict";return e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/de-at.js DELETED
@@ -1,79 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : German (Austria) [de-at]
3
- //! author : lluchs : https://github.com/lluchs
4
- //! author: Menelion Elensúle: https://github.com/Oire
5
- //! author : Martin Groller : https://github.com/MadMG
6
- //! author : Mikolaj Dadela : https://github.com/mik01aj
7
-
8
- ;(function (global, factory) {
9
- typeof exports === 'object' && typeof module !== 'undefined'
10
- && typeof require === 'function' ? factory(require('../moment')) :
11
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
12
- factory(global.moment)
13
- }(this, function (moment) { 'use strict';
14
-
15
-
16
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
17
- var format = {
18
- 'm': ['eine Minute', 'einer Minute'],
19
- 'h': ['eine Stunde', 'einer Stunde'],
20
- 'd': ['ein Tag', 'einem Tag'],
21
- 'dd': [number + ' Tage', number + ' Tagen'],
22
- 'M': ['ein Monat', 'einem Monat'],
23
- 'MM': [number + ' Monate', number + ' Monaten'],
24
- 'y': ['ein Jahr', 'einem Jahr'],
25
- 'yy': [number + ' Jahre', number + ' Jahren']
26
- };
27
- return withoutSuffix ? format[key][0] : format[key][1];
28
- }
29
-
30
- var de_at = moment.defineLocale('de-at', {
31
- months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
32
- monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
33
- monthsParseExact : true,
34
- weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
35
- weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
36
- weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
37
- weekdaysParseExact : true,
38
- longDateFormat : {
39
- LT: 'HH:mm',
40
- LTS: 'HH:mm:ss',
41
- L : 'DD.MM.YYYY',
42
- LL : 'D. MMMM YYYY',
43
- LLL : 'D. MMMM YYYY HH:mm',
44
- LLLL : 'dddd, D. MMMM YYYY HH:mm'
45
- },
46
- calendar : {
47
- sameDay: '[heute um] LT [Uhr]',
48
- sameElse: 'L',
49
- nextDay: '[morgen um] LT [Uhr]',
50
- nextWeek: 'dddd [um] LT [Uhr]',
51
- lastDay: '[gestern um] LT [Uhr]',
52
- lastWeek: '[letzten] dddd [um] LT [Uhr]'
53
- },
54
- relativeTime : {
55
- future : 'in %s',
56
- past : 'vor %s',
57
- s : 'ein paar Sekunden',
58
- m : processRelativeTime,
59
- mm : '%d Minuten',
60
- h : processRelativeTime,
61
- hh : '%d Stunden',
62
- d : processRelativeTime,
63
- dd : processRelativeTime,
64
- M : processRelativeTime,
65
- MM : processRelativeTime,
66
- y : processRelativeTime,
67
- yy : processRelativeTime
68
- },
69
- ordinalParse: /\d{1,2}\./,
70
- ordinal : '%d.',
71
- week : {
72
- dow : 1, // Monday is the first day of the week.
73
- doy : 4 // The week that contains Jan 4th is the first week of the year.
74
- }
75
- });
76
-
77
- return de_at;
78
-
79
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/de-at.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,t,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return n?r[t][0]:r[t][1]}return e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:n,mm:"%d Minuten",h:n,hh:"%d Stunden",d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/de.js DELETED
@@ -1,78 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : German [de]
3
- //! author : lluchs : https://github.com/lluchs
4
- //! author: Menelion Elensúle: https://github.com/Oire
5
- //! author : Mikolaj Dadela : https://github.com/mik01aj
6
-
7
- ;(function (global, factory) {
8
- typeof exports === 'object' && typeof module !== 'undefined'
9
- && typeof require === 'function' ? factory(require('../moment')) :
10
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
- factory(global.moment)
12
- }(this, function (moment) { 'use strict';
13
-
14
-
15
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
16
- var format = {
17
- 'm': ['eine Minute', 'einer Minute'],
18
- 'h': ['eine Stunde', 'einer Stunde'],
19
- 'd': ['ein Tag', 'einem Tag'],
20
- 'dd': [number + ' Tage', number + ' Tagen'],
21
- 'M': ['ein Monat', 'einem Monat'],
22
- 'MM': [number + ' Monate', number + ' Monaten'],
23
- 'y': ['ein Jahr', 'einem Jahr'],
24
- 'yy': [number + ' Jahre', number + ' Jahren']
25
- };
26
- return withoutSuffix ? format[key][0] : format[key][1];
27
- }
28
-
29
- var de = moment.defineLocale('de', {
30
- months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
31
- monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
32
- monthsParseExact : true,
33
- weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
34
- weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
35
- weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
36
- weekdaysParseExact : true,
37
- longDateFormat : {
38
- LT: 'HH:mm',
39
- LTS: 'HH:mm:ss',
40
- L : 'DD.MM.YYYY',
41
- LL : 'D. MMMM YYYY',
42
- LLL : 'D. MMMM YYYY HH:mm',
43
- LLLL : 'dddd, D. MMMM YYYY HH:mm'
44
- },
45
- calendar : {
46
- sameDay: '[heute um] LT [Uhr]',
47
- sameElse: 'L',
48
- nextDay: '[morgen um] LT [Uhr]',
49
- nextWeek: 'dddd [um] LT [Uhr]',
50
- lastDay: '[gestern um] LT [Uhr]',
51
- lastWeek: '[letzten] dddd [um] LT [Uhr]'
52
- },
53
- relativeTime : {
54
- future : 'in %s',
55
- past : 'vor %s',
56
- s : 'ein paar Sekunden',
57
- m : processRelativeTime,
58
- mm : '%d Minuten',
59
- h : processRelativeTime,
60
- hh : '%d Stunden',
61
- d : processRelativeTime,
62
- dd : processRelativeTime,
63
- M : processRelativeTime,
64
- MM : processRelativeTime,
65
- y : processRelativeTime,
66
- yy : processRelativeTime
67
- },
68
- ordinalParse: /\d{1,2}\./,
69
- ordinal : '%d.',
70
- week : {
71
- dow : 1, // Monday is the first day of the week.
72
- doy : 4 // The week that contains Jan 4th is the first week of the year.
73
- }
74
- });
75
-
76
- return de;
77
-
78
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/de.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,t,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return n?r[t][0]:r[t][1]}return e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:n,mm:"%d Minuten",h:n,hh:"%d Stunden",d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/dv.js DELETED
@@ -1,99 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Maldivian [dv]
3
- //! author : Jawish Hameed : https://github.com/jawish
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var months = [
14
- 'ޖެނުއަރީ',
15
- 'ފެބްރުއަރީ',
16
- 'މާރިޗު',
17
- 'އޭޕްރީލު',
18
- 'މޭ',
19
- 'ޖޫން',
20
- 'ޖުލައި',
21
- 'އޯގަސްޓު',
22
- 'ސެޕްޓެމްބަރު',
23
- 'އޮކްޓޯބަރު',
24
- 'ނޮވެމްބަރު',
25
- 'ޑިސެމްބަރު'
26
- ], weekdays = [
27
- 'އާދިއްތަ',
28
- 'ހޯމަ',
29
- 'އަންގާރަ',
30
- 'ބުދަ',
31
- 'ބުރާސްފަތި',
32
- 'ހުކުރު',
33
- 'ހޮނިހިރު'
34
- ];
35
-
36
- var dv = moment.defineLocale('dv', {
37
- months : months,
38
- monthsShort : months,
39
- weekdays : weekdays,
40
- weekdaysShort : weekdays,
41
- weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
42
- longDateFormat : {
43
-
44
- LT : 'HH:mm',
45
- LTS : 'HH:mm:ss',
46
- L : 'D/M/YYYY',
47
- LL : 'D MMMM YYYY',
48
- LLL : 'D MMMM YYYY HH:mm',
49
- LLLL : 'dddd D MMMM YYYY HH:mm'
50
- },
51
- meridiemParse: /މކ|މފ/,
52
- isPM : function (input) {
53
- return 'މފ' === input;
54
- },
55
- meridiem : function (hour, minute, isLower) {
56
- if (hour < 12) {
57
- return 'މކ';
58
- } else {
59
- return 'މފ';
60
- }
61
- },
62
- calendar : {
63
- sameDay : '[މިއަދު] LT',
64
- nextDay : '[މާދަމާ] LT',
65
- nextWeek : 'dddd LT',
66
- lastDay : '[އިއްޔެ] LT',
67
- lastWeek : '[ފާއިތުވި] dddd LT',
68
- sameElse : 'L'
69
- },
70
- relativeTime : {
71
- future : 'ތެރޭގައި %s',
72
- past : 'ކުރިން %s',
73
- s : 'ސިކުންތުކޮޅެއް',
74
- m : 'މިނިޓެއް',
75
- mm : 'މިނިޓު %d',
76
- h : 'ގަޑިއިރެއް',
77
- hh : 'ގަޑިއިރު %d',
78
- d : 'ދުވަހެއް',
79
- dd : 'ދުވަސް %d',
80
- M : 'މަހެއް',
81
- MM : 'މަސް %d',
82
- y : 'އަހަރެއް',
83
- yy : 'އަހަރު %d'
84
- },
85
- preparse: function (string) {
86
- return string.replace(/،/g, ',');
87
- },
88
- postformat: function (string) {
89
- return string.replace(/,/g, '،');
90
- },
91
- week : {
92
- dow : 7, // Sunday is the first day of the week.
93
- doy : 12 // The week that contains Jan 1st is the first week of the year.
94
- }
95
- });
96
-
97
- return dv;
98
-
99
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/dv.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?t(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],t):t(e.moment)}(this,function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],d=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];return e.defineLocale("dv",{months:t,monthsShort:t,weekdays:d,weekdaysShort:d,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,d){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})});
 
bp-core/js/vendor/moment-js/locale/el.js DELETED
@@ -1,98 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Greek [el]
3
- //! author : Aggelos Karalias : https://github.com/mehiel
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
- function isFunction(input) {
13
- return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
14
- }
15
-
16
-
17
- var el = moment.defineLocale('el', {
18
- monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
19
- monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
20
- months : function (momentToFormat, format) {
21
- if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
22
- return this._monthsGenitiveEl[momentToFormat.month()];
23
- } else {
24
- return this._monthsNominativeEl[momentToFormat.month()];
25
- }
26
- },
27
- monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
28
- weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
29
- weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
30
- weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
31
- meridiem : function (hours, minutes, isLower) {
32
- if (hours > 11) {
33
- return isLower ? 'μμ' : 'ΜΜ';
34
- } else {
35
- return isLower ? 'πμ' : 'ΠΜ';
36
- }
37
- },
38
- isPM : function (input) {
39
- return ((input + '').toLowerCase()[0] === 'μ');
40
- },
41
- meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
42
- longDateFormat : {
43
- LT : 'h:mm A',
44
- LTS : 'h:mm:ss A',
45
- L : 'DD/MM/YYYY',
46
- LL : 'D MMMM YYYY',
47
- LLL : 'D MMMM YYYY h:mm A',
48
- LLLL : 'dddd, D MMMM YYYY h:mm A'
49
- },
50
- calendarEl : {
51
- sameDay : '[Σήμερα {}] LT',
52
- nextDay : '[Αύριο {}] LT',
53
- nextWeek : 'dddd [{}] LT',
54
- lastDay : '[Χθες {}] LT',
55
- lastWeek : function () {
56
- switch (this.day()) {
57
- case 6:
58
- return '[το προηγούμενο] dddd [{}] LT';
59
- default:
60
- return '[την προηγούμενη] dddd [{}] LT';
61
- }
62
- },
63
- sameElse : 'L'
64
- },
65
- calendar : function (key, mom) {
66
- var output = this._calendarEl[key],
67
- hours = mom && mom.hours();
68
- if (isFunction(output)) {
69
- output = output.apply(mom);
70
- }
71
- return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
72
- },
73
- relativeTime : {
74
- future : 'σε %s',
75
- past : '%s πριν',
76
- s : 'λίγα δευτερόλεπτα',
77
- m : 'ένα λεπτό',
78
- mm : '%d λεπτά',
79
- h : 'μία ώρα',
80
- hh : '%d ώρες',
81
- d : 'μία μέρα',
82
- dd : '%d μέρες',
83
- M : 'ένας μήνας',
84
- MM : '%d μήνες',
85
- y : 'ένας χρόνος',
86
- yy : '%d χρόνια'
87
- },
88
- ordinalParse: /\d{1,2}η/,
89
- ordinal: '%dη',
90
- week : {
91
- dow : 1, // Monday is the first day of the week.
92
- doy : 4 // The week that contains Jan 4st is the first week of the year.
93
- }
94
- });
95
-
96
- return el;
97
-
98
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/el.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?t(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],t):t(e.moment)}(this,function(e){"use strict";function t(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}return e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,n){var _=this._calendarEl[e],i=n&&n.hours();return t(_)&&(_=_.apply(n)),_.replace("{}",i%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/en-au.js DELETED
@@ -1,67 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : English (Australia) [en-au]
3
- //! author : Jared Morse : https://github.com/jarcoal
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var en_au = moment.defineLocale('en-au', {
14
- months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
- monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
- weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
- weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
- weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
- longDateFormat : {
20
- LT : 'h:mm A',
21
- LTS : 'h:mm:ss A',
22
- L : 'DD/MM/YYYY',
23
- LL : 'D MMMM YYYY',
24
- LLL : 'D MMMM YYYY h:mm A',
25
- LLLL : 'dddd, D MMMM YYYY h:mm A'
26
- },
27
- calendar : {
28
- sameDay : '[Today at] LT',
29
- nextDay : '[Tomorrow at] LT',
30
- nextWeek : 'dddd [at] LT',
31
- lastDay : '[Yesterday at] LT',
32
- lastWeek : '[Last] dddd [at] LT',
33
- sameElse : 'L'
34
- },
35
- relativeTime : {
36
- future : 'in %s',
37
- past : '%s ago',
38
- s : 'a few seconds',
39
- m : 'a minute',
40
- mm : '%d minutes',
41
- h : 'an hour',
42
- hh : '%d hours',
43
- d : 'a day',
44
- dd : '%d days',
45
- M : 'a month',
46
- MM : '%d months',
47
- y : 'a year',
48
- yy : '%d years'
49
- },
50
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
- ordinal : function (number) {
52
- var b = number % 10,
53
- output = (~~(number % 100 / 10) === 1) ? 'th' :
54
- (b === 1) ? 'st' :
55
- (b === 2) ? 'nd' :
56
- (b === 3) ? 'rd' : 'th';
57
- return number + output;
58
- },
59
- week : {
60
- dow : 1, // Monday is the first day of the week.
61
- doy : 4 // The week that contains Jan 4th is the first week of the year.
62
- }
63
- });
64
-
65
- return en_au;
66
-
67
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/en-au.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";return e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/en-ca.js DELETED
@@ -1,63 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : English (Canada) [en-ca]
3
- //! author : Jonathan Abourbih : https://github.com/jonbca
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var en_ca = moment.defineLocale('en-ca', {
14
- months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
- monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
- weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
- weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
- weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
- longDateFormat : {
20
- LT : 'h:mm A',
21
- LTS : 'h:mm:ss A',
22
- L : 'YYYY-MM-DD',
23
- LL : 'MMMM D, YYYY',
24
- LLL : 'MMMM D, YYYY h:mm A',
25
- LLLL : 'dddd, MMMM D, YYYY h:mm A'
26
- },
27
- calendar : {
28
- sameDay : '[Today at] LT',
29
- nextDay : '[Tomorrow at] LT',
30
- nextWeek : 'dddd [at] LT',
31
- lastDay : '[Yesterday at] LT',
32
- lastWeek : '[Last] dddd [at] LT',
33
- sameElse : 'L'
34
- },
35
- relativeTime : {
36
- future : 'in %s',
37
- past : '%s ago',
38
- s : 'a few seconds',
39
- m : 'a minute',
40
- mm : '%d minutes',
41
- h : 'an hour',
42
- hh : '%d hours',
43
- d : 'a day',
44
- dd : '%d days',
45
- M : 'a month',
46
- MM : '%d months',
47
- y : 'a year',
48
- yy : '%d years'
49
- },
50
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
- ordinal : function (number) {
52
- var b = number % 10,
53
- output = (~~(number % 100 / 10) === 1) ? 'th' :
54
- (b === 1) ? 'st' :
55
- (b === 2) ? 'nd' :
56
- (b === 3) ? 'rd' : 'th';
57
- return number + output;
58
- }
59
- });
60
-
61
- return en_ca;
62
-
63
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/en-ca.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";return e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}})});
 
bp-core/js/vendor/moment-js/locale/en-gb.js DELETED
@@ -1,67 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : English (United Kingdom) [en-gb]
3
- //! author : Chris Gedrim : https://github.com/chrisgedrim
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var en_gb = moment.defineLocale('en-gb', {
14
- months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
- monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
- weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
- weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
- weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
- longDateFormat : {
20
- LT : 'HH:mm',
21
- LTS : 'HH:mm:ss',
22
- L : 'DD/MM/YYYY',
23
- LL : 'D MMMM YYYY',
24
- LLL : 'D MMMM YYYY HH:mm',
25
- LLLL : 'dddd, D MMMM YYYY HH:mm'
26
- },
27
- calendar : {
28
- sameDay : '[Today at] LT',
29
- nextDay : '[Tomorrow at] LT',
30
- nextWeek : 'dddd [at] LT',
31
- lastDay : '[Yesterday at] LT',
32
- lastWeek : '[Last] dddd [at] LT',
33
- sameElse : 'L'
34
- },
35
- relativeTime : {
36
- future : 'in %s',
37
- past : '%s ago',
38
- s : 'a few seconds',
39
- m : 'a minute',
40
- mm : '%d minutes',
41
- h : 'an hour',
42
- hh : '%d hours',
43
- d : 'a day',
44
- dd : '%d days',
45
- M : 'a month',
46
- MM : '%d months',
47
- y : 'a year',
48
- yy : '%d years'
49
- },
50
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
- ordinal : function (number) {
52
- var b = number % 10,
53
- output = (~~(number % 100 / 10) === 1) ? 'th' :
54
- (b === 1) ? 'st' :
55
- (b === 2) ? 'nd' :
56
- (b === 3) ? 'rd' : 'th';
57
- return number + output;
58
- },
59
- week : {
60
- dow : 1, // Monday is the first day of the week.
61
- doy : 4 // The week that contains Jan 4th is the first week of the year.
62
- }
63
- });
64
-
65
- return en_gb;
66
-
67
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/en-gb.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/en-ie.js DELETED
@@ -1,67 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : English (Ireland) [en-ie]
3
- //! author : Chris Cartlidge : https://github.com/chriscartlidge
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var en_ie = moment.defineLocale('en-ie', {
14
- months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
- monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
- weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
- weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
- weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
- longDateFormat : {
20
- LT : 'HH:mm',
21
- LTS : 'HH:mm:ss',
22
- L : 'DD-MM-YYYY',
23
- LL : 'D MMMM YYYY',
24
- LLL : 'D MMMM YYYY HH:mm',
25
- LLLL : 'dddd D MMMM YYYY HH:mm'
26
- },
27
- calendar : {
28
- sameDay : '[Today at] LT',
29
- nextDay : '[Tomorrow at] LT',
30
- nextWeek : 'dddd [at] LT',
31
- lastDay : '[Yesterday at] LT',
32
- lastWeek : '[Last] dddd [at] LT',
33
- sameElse : 'L'
34
- },
35
- relativeTime : {
36
- future : 'in %s',
37
- past : '%s ago',
38
- s : 'a few seconds',
39
- m : 'a minute',
40
- mm : '%d minutes',
41
- h : 'an hour',
42
- hh : '%d hours',
43
- d : 'a day',
44
- dd : '%d days',
45
- M : 'a month',
46
- MM : '%d months',
47
- y : 'a year',
48
- yy : '%d years'
49
- },
50
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
- ordinal : function (number) {
52
- var b = number % 10,
53
- output = (~~(number % 100 / 10) === 1) ? 'th' :
54
- (b === 1) ? 'st' :
55
- (b === 2) ? 'nd' :
56
- (b === 3) ? 'rd' : 'th';
57
- return number + output;
58
- },
59
- week : {
60
- dow : 1, // Monday is the first day of the week.
61
- doy : 4 // The week that contains Jan 4th is the first week of the year.
62
- }
63
- });
64
-
65
- return en_ie;
66
-
67
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/en-ie.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";return e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/en-nz.js DELETED
@@ -1,67 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : English (New Zealand) [en-nz]
3
- //! author : Luke McGregor : https://github.com/lukemcgregor
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var en_nz = moment.defineLocale('en-nz', {
14
- months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
15
- monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
16
- weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
17
- weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18
- weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19
- longDateFormat : {
20
- LT : 'h:mm A',
21
- LTS : 'h:mm:ss A',
22
- L : 'DD/MM/YYYY',
23
- LL : 'D MMMM YYYY',
24
- LLL : 'D MMMM YYYY h:mm A',
25
- LLLL : 'dddd, D MMMM YYYY h:mm A'
26
- },
27
- calendar : {
28
- sameDay : '[Today at] LT',
29
- nextDay : '[Tomorrow at] LT',
30
- nextWeek : 'dddd [at] LT',
31
- lastDay : '[Yesterday at] LT',
32
- lastWeek : '[Last] dddd [at] LT',
33
- sameElse : 'L'
34
- },
35
- relativeTime : {
36
- future : 'in %s',
37
- past : '%s ago',
38
- s : 'a few seconds',
39
- m : 'a minute',
40
- mm : '%d minutes',
41
- h : 'an hour',
42
- hh : '%d hours',
43
- d : 'a day',
44
- dd : '%d days',
45
- M : 'a month',
46
- MM : '%d months',
47
- y : 'a year',
48
- yy : '%d years'
49
- },
50
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
51
- ordinal : function (number) {
52
- var b = number % 10,
53
- output = (~~(number % 100 / 10) === 1) ? 'th' :
54
- (b === 1) ? 'st' :
55
- (b === 2) ? 'nd' :
56
- (b === 3) ? 'rd' : 'th';
57
- return number + output;
58
- },
59
- week : {
60
- dow : 1, // Monday is the first day of the week.
61
- doy : 4 // The week that contains Jan 4th is the first week of the year.
62
- }
63
- });
64
-
65
- return en_nz;
66
-
67
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/en-nz.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/eo.js DELETED
@@ -1,73 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Esperanto [eo]
3
- //! author : Colin Dean : https://github.com/colindean
4
- //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
5
- //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
6
-
7
- ;(function (global, factory) {
8
- typeof exports === 'object' && typeof module !== 'undefined'
9
- && typeof require === 'function' ? factory(require('../moment')) :
10
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
- factory(global.moment)
12
- }(this, function (moment) { 'use strict';
13
-
14
-
15
- var eo = moment.defineLocale('eo', {
16
- months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
17
- monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
18
- weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
19
- weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'),
20
- weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'),
21
- longDateFormat : {
22
- LT : 'HH:mm',
23
- LTS : 'HH:mm:ss',
24
- L : 'YYYY-MM-DD',
25
- LL : 'D[-an de] MMMM, YYYY',
26
- LLL : 'D[-an de] MMMM, YYYY HH:mm',
27
- LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm'
28
- },
29
- meridiemParse: /[ap]\.t\.m/i,
30
- isPM: function (input) {
31
- return input.charAt(0).toLowerCase() === 'p';
32
- },
33
- meridiem : function (hours, minutes, isLower) {
34
- if (hours > 11) {
35
- return isLower ? 'p.t.m.' : 'P.T.M.';
36
- } else {
37
- return isLower ? 'a.t.m.' : 'A.T.M.';
38
- }
39
- },
40
- calendar : {
41
- sameDay : '[Hodiaŭ je] LT',
42
- nextDay : '[Morgaŭ je] LT',
43
- nextWeek : 'dddd [je] LT',
44
- lastDay : '[Hieraŭ je] LT',
45
- lastWeek : '[pasinta] dddd [je] LT',
46
- sameElse : 'L'
47
- },
48
- relativeTime : {
49
- future : 'je %s',
50
- past : 'antaŭ %s',
51
- s : 'sekundoj',
52
- m : 'minuto',
53
- mm : '%d minutoj',
54
- h : 'horo',
55
- hh : '%d horoj',
56
- d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
57
- dd : '%d tagoj',
58
- M : 'monato',
59
- MM : '%d monatoj',
60
- y : 'jaro',
61
- yy : '%d jaroj'
62
- },
63
- ordinalParse: /\d{1,2}a/,
64
- ordinal : '%da',
65
- week : {
66
- dow : 1, // Monday is the first day of the week.
67
- doy : 7 // The week that contains Jan 1st is the first week of the year.
68
- }
69
- });
70
-
71
- return eo;
72
-
73
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/eo.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?o(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],o):o(e.moment)}(this,function(e){"use strict";return e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-an de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,o,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/es-do.js DELETED
@@ -1,80 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Spanish (Dominican Republic) [es-do]
3
-
4
- ;(function (global, factory) {
5
- typeof exports === 'object' && typeof module !== 'undefined'
6
- && typeof require === 'function' ? factory(require('../moment')) :
7
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
8
- factory(global.moment)
9
- }(this, function (moment) { 'use strict';
10
-
11
-
12
- var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
13
- monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
14
-
15
- var es_do = moment.defineLocale('es-do', {
16
- months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
17
- monthsShort : function (m, format) {
18
- if (/-MMM-/.test(format)) {
19
- return monthsShort[m.month()];
20
- } else {
21
- return monthsShortDot[m.month()];
22
- }
23
- },
24
- monthsParseExact : true,
25
- weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
26
- weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27
- weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
28
- weekdaysParseExact : true,
29
- longDateFormat : {
30
- LT : 'h:mm A',
31
- LTS : 'h:mm:ss A',
32
- L : 'DD/MM/YYYY',
33
- LL : 'D [de] MMMM [de] YYYY',
34
- LLL : 'D [de] MMMM [de] YYYY h:mm A',
35
- LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
36
- },
37
- calendar : {
38
- sameDay : function () {
39
- return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
40
- },
41
- nextDay : function () {
42
- return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
43
- },
44
- nextWeek : function () {
45
- return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
46
- },
47
- lastDay : function () {
48
- return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
49
- },
50
- lastWeek : function () {
51
- return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
52
- },
53
- sameElse : 'L'
54
- },
55
- relativeTime : {
56
- future : 'en %s',
57
- past : 'hace %s',
58
- s : 'unos segundos',
59
- m : 'un minuto',
60
- mm : '%d minutos',
61
- h : 'una hora',
62
- hh : '%d horas',
63
- d : 'un día',
64
- dd : '%d días',
65
- M : 'un mes',
66
- MM : '%d meses',
67
- y : 'un año',
68
- yy : '%d años'
69
- },
70
- ordinalParse : /\d{1,2}º/,
71
- ordinal : '%dº',
72
- week : {
73
- dow : 1, // Monday is the first day of the week.
74
- doy : 4 // The week that contains Jan 4th is the first week of the year.
75
- }
76
- });
77
-
78
- return es_do;
79
-
80
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/es-do.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";var n="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),o="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");return e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,s){return/-MMM-/.test(s)?o[e.month()]:n[e.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/es.js DELETED
@@ -1,81 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Spanish [es]
3
- //! author : Julio Napurí : https://github.com/julionc
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
14
- monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
15
-
16
- var es = moment.defineLocale('es', {
17
- months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
18
- monthsShort : function (m, format) {
19
- if (/-MMM-/.test(format)) {
20
- return monthsShort[m.month()];
21
- } else {
22
- return monthsShortDot[m.month()];
23
- }
24
- },
25
- monthsParseExact : true,
26
- weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27
- weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
28
- weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
29
- weekdaysParseExact : true,
30
- longDateFormat : {
31
- LT : 'H:mm',
32
- LTS : 'H:mm:ss',
33
- L : 'DD/MM/YYYY',
34
- LL : 'D [de] MMMM [de] YYYY',
35
- LLL : 'D [de] MMMM [de] YYYY H:mm',
36
- LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
37
- },
38
- calendar : {
39
- sameDay : function () {
40
- return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
41
- },
42
- nextDay : function () {
43
- return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
44
- },
45
- nextWeek : function () {
46
- return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
47
- },
48
- lastDay : function () {
49
- return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
50
- },
51
- lastWeek : function () {
52
- return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
53
- },
54
- sameElse : 'L'
55
- },
56
- relativeTime : {
57
- future : 'en %s',
58
- past : 'hace %s',
59
- s : 'unos segundos',
60
- m : 'un minuto',
61
- mm : '%d minutos',
62
- h : 'una hora',
63
- hh : '%d horas',
64
- d : 'un día',
65
- dd : '%d días',
66
- M : 'un mes',
67
- MM : '%d meses',
68
- y : 'un año',
69
- yy : '%d años'
70
- },
71
- ordinalParse : /\d{1,2}º/,
72
- ordinal : '%dº',
73
- week : {
74
- dow : 1, // Monday is the first day of the week.
75
- doy : 4 // The week that contains Jan 4th is the first week of the year.
76
- }
77
- });
78
-
79
- return es;
80
-
81
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/es.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";var n="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),o="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");return e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,s){return/-MMM-/.test(s)?o[e.month()]:n[e.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/et.js DELETED
@@ -1,80 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Estonian [et]
3
- //! author : Henry Kehlmann : https://github.com/madhenry
4
- //! improvements : Illimar Tambek : https://github.com/ragulka
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
15
- var format = {
16
- 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
17
- 'm' : ['ühe minuti', 'üks minut'],
18
- 'mm': [number + ' minuti', number + ' minutit'],
19
- 'h' : ['ühe tunni', 'tund aega', 'üks tund'],
20
- 'hh': [number + ' tunni', number + ' tundi'],
21
- 'd' : ['ühe päeva', 'üks päev'],
22
- 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
23
- 'MM': [number + ' kuu', number + ' kuud'],
24
- 'y' : ['ühe aasta', 'aasta', 'üks aasta'],
25
- 'yy': [number + ' aasta', number + ' aastat']
26
- };
27
- if (withoutSuffix) {
28
- return format[key][2] ? format[key][2] : format[key][1];
29
- }
30
- return isFuture ? format[key][0] : format[key][1];
31
- }
32
-
33
- var et = moment.defineLocale('et', {
34
- months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
35
- monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
36
- weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
37
- weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
38
- weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),
39
- longDateFormat : {
40
- LT : 'H:mm',
41
- LTS : 'H:mm:ss',
42
- L : 'DD.MM.YYYY',
43
- LL : 'D. MMMM YYYY',
44
- LLL : 'D. MMMM YYYY H:mm',
45
- LLLL : 'dddd, D. MMMM YYYY H:mm'
46
- },
47
- calendar : {
48
- sameDay : '[Täna,] LT',
49
- nextDay : '[Homme,] LT',
50
- nextWeek : '[Järgmine] dddd LT',
51
- lastDay : '[Eile,] LT',
52
- lastWeek : '[Eelmine] dddd LT',
53
- sameElse : 'L'
54
- },
55
- relativeTime : {
56
- future : '%s pärast',
57
- past : '%s tagasi',
58
- s : processRelativeTime,
59
- m : processRelativeTime,
60
- mm : processRelativeTime,
61
- h : processRelativeTime,
62
- hh : processRelativeTime,
63
- d : processRelativeTime,
64
- dd : '%d päeva',
65
- M : processRelativeTime,
66
- MM : processRelativeTime,
67
- y : processRelativeTime,
68
- yy : processRelativeTime
69
- },
70
- ordinalParse: /\d{1,2}\./,
71
- ordinal : '%d.',
72
- week : {
73
- dow : 1, // Monday is the first day of the week.
74
- doy : 4 // The week that contains Jan 4th is the first week of the year.
75
- }
76
- });
77
-
78
- return et;
79
-
80
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/et.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";function a(e,a,t,n){var s={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return a?s[t][2]?s[t][2]:s[t][1]:n?s[t][0]:s[t][1]}return e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:"%d päeva",M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/eu.js DELETED
@@ -1,66 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Basque [eu]
3
- //! author : Eneko Illarramendi : https://github.com/eillarra
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var eu = moment.defineLocale('eu', {
14
- months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
15
- monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
16
- monthsParseExact : true,
17
- weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
18
- weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
19
- weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
20
- weekdaysParseExact : true,
21
- longDateFormat : {
22
- LT : 'HH:mm',
23
- LTS : 'HH:mm:ss',
24
- L : 'YYYY-MM-DD',
25
- LL : 'YYYY[ko] MMMM[ren] D[a]',
26
- LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
27
- LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
28
- l : 'YYYY-M-D',
29
- ll : 'YYYY[ko] MMM D[a]',
30
- lll : 'YYYY[ko] MMM D[a] HH:mm',
31
- llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
32
- },
33
- calendar : {
34
- sameDay : '[gaur] LT[etan]',
35
- nextDay : '[bihar] LT[etan]',
36
- nextWeek : 'dddd LT[etan]',
37
- lastDay : '[atzo] LT[etan]',
38
- lastWeek : '[aurreko] dddd LT[etan]',
39
- sameElse : 'L'
40
- },
41
- relativeTime : {
42
- future : '%s barru',
43
- past : 'duela %s',
44
- s : 'segundo batzuk',
45
- m : 'minutu bat',
46
- mm : '%d minutu',
47
- h : 'ordu bat',
48
- hh : '%d ordu',
49
- d : 'egun bat',
50
- dd : '%d egun',
51
- M : 'hilabete bat',
52
- MM : '%d hilabete',
53
- y : 'urte bat',
54
- yy : '%d urte'
55
- },
56
- ordinalParse: /\d{1,2}\./,
57
- ordinal : '%d.',
58
- week : {
59
- dow : 1, // Monday is the first day of the week.
60
- doy : 7 // The week that contains Jan 1st is the first week of the year.
61
- }
62
- });
63
-
64
- return eu;
65
-
66
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/eu.min.js DELETED
@@ -1 +0,0 @@
1
- !function(a,e){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?e(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],e):e(a.moment)}(this,function(a){"use strict";return a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/fa.js DELETED
@@ -1,106 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Persian [fa]
3
- //! author : Ebrahim Byagowi : https://github.com/ebraminio
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var symbolMap = {
14
- '1': '۱',
15
- '2': '۲',
16
- '3': '۳',
17
- '4': '۴',
18
- '5': '۵',
19
- '6': '۶',
20
- '7': '۷',
21
- '8': '۸',
22
- '9': '۹',
23
- '0': '۰'
24
- }, numberMap = {
25
- '۱': '1',
26
- '۲': '2',
27
- '۳': '3',
28
- '۴': '4',
29
- '۵': '5',
30
- '۶': '6',
31
- '۷': '7',
32
- '۸': '8',
33
- '۹': '9',
34
- '۰': '0'
35
- };
36
-
37
- var fa = moment.defineLocale('fa', {
38
- months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
39
- monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
40
- weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
41
- weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
42
- weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
43
- weekdaysParseExact : true,
44
- longDateFormat : {
45
- LT : 'HH:mm',
46
- LTS : 'HH:mm:ss',
47
- L : 'DD/MM/YYYY',
48
- LL : 'D MMMM YYYY',
49
- LLL : 'D MMMM YYYY HH:mm',
50
- LLLL : 'dddd, D MMMM YYYY HH:mm'
51
- },
52
- meridiemParse: /قبل از ظهر|بعد از ظهر/,
53
- isPM: function (input) {
54
- return /بعد از ظهر/.test(input);
55
- },
56
- meridiem : function (hour, minute, isLower) {
57
- if (hour < 12) {
58
- return 'قبل از ظهر';
59
- } else {
60
- return 'بعد از ظهر';
61
- }
62
- },
63
- calendar : {
64
- sameDay : '[امروز ساعت] LT',
65
- nextDay : '[فردا ساعت] LT',
66
- nextWeek : 'dddd [ساعت] LT',
67
- lastDay : '[دیروز ساعت] LT',
68
- lastWeek : 'dddd [پیش] [ساعت] LT',
69
- sameElse : 'L'
70
- },
71
- relativeTime : {
72
- future : 'در %s',
73
- past : '%s پیش',
74
- s : 'چندین ثانیه',
75
- m : 'یک دقیقه',
76
- mm : '%d دقیقه',
77
- h : 'یک ساعت',
78
- hh : '%d ساعت',
79
- d : 'یک روز',
80
- dd : '%d روز',
81
- M : 'یک ماه',
82
- MM : '%d ماه',
83
- y : 'یک سال',
84
- yy : '%d سال'
85
- },
86
- preparse: function (string) {
87
- return string.replace(/[۰-۹]/g, function (match) {
88
- return numberMap[match];
89
- }).replace(/،/g, ',');
90
- },
91
- postformat: function (string) {
92
- return string.replace(/\d/g, function (match) {
93
- return symbolMap[match];
94
- }).replace(/,/g, '،');
95
- },
96
- ordinalParse: /\d{1,2}م/,
97
- ordinal : '%dم',
98
- week : {
99
- dow : 6, // Saturday is the first day of the week.
100
- doy : 12 // The week that contains Jan 1st is the first week of the year.
101
- }
102
- });
103
-
104
- return fa;
105
-
106
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/fa.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?t(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],t):t(e.moment)}(this,function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return n[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})});
 
bp-core/js/vendor/moment-js/locale/fi.js DELETED
@@ -1,107 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Finnish [fi]
3
- //! author : Tarmo Aidantausta : https://github.com/bleadof
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
14
- numbersFuture = [
15
- 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
16
- numbersPast[7], numbersPast[8], numbersPast[9]
17
- ];
18
- function translate(number, withoutSuffix, key, isFuture) {
19
- var result = '';
20
- switch (key) {
21
- case 's':
22
- return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
23
- case 'm':
24
- return isFuture ? 'minuutin' : 'minuutti';
25
- case 'mm':
26
- result = isFuture ? 'minuutin' : 'minuuttia';
27
- break;
28
- case 'h':
29
- return isFuture ? 'tunnin' : 'tunti';
30
- case 'hh':
31
- result = isFuture ? 'tunnin' : 'tuntia';
32
- break;
33
- case 'd':
34
- return isFuture ? 'päivän' : 'päivä';
35
- case 'dd':
36
- result = isFuture ? 'päivän' : 'päivää';
37
- break;
38
- case 'M':
39
- return isFuture ? 'kuukauden' : 'kuukausi';
40
- case 'MM':
41
- result = isFuture ? 'kuukauden' : 'kuukautta';
42
- break;
43
- case 'y':
44
- return isFuture ? 'vuoden' : 'vuosi';
45
- case 'yy':
46
- result = isFuture ? 'vuoden' : 'vuotta';
47
- break;
48
- }
49
- result = verbalNumber(number, isFuture) + ' ' + result;
50
- return result;
51
- }
52
- function verbalNumber(number, isFuture) {
53
- return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
54
- }
55
-
56
- var fi = moment.defineLocale('fi', {
57
- months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
58
- monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
59
- weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
60
- weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
61
- weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
62
- longDateFormat : {
63
- LT : 'HH.mm',
64
- LTS : 'HH.mm.ss',
65
- L : 'DD.MM.YYYY',
66
- LL : 'Do MMMM[ta] YYYY',
67
- LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
68
- LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
69
- l : 'D.M.YYYY',
70
- ll : 'Do MMM YYYY',
71
- lll : 'Do MMM YYYY, [klo] HH.mm',
72
- llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
73
- },
74
- calendar : {
75
- sameDay : '[tänään] [klo] LT',
76
- nextDay : '[huomenna] [klo] LT',
77
- nextWeek : 'dddd [klo] LT',
78
- lastDay : '[eilen] [klo] LT',
79
- lastWeek : '[viime] dddd[na] [klo] LT',
80
- sameElse : 'L'
81
- },
82
- relativeTime : {
83
- future : '%s päästä',
84
- past : '%s sitten',
85
- s : translate,
86
- m : translate,
87
- mm : translate,
88
- h : translate,
89
- hh : translate,
90
- d : translate,
91
- dd : translate,
92
- M : translate,
93
- MM : translate,
94
- y : translate,
95
- yy : translate
96
- },
97
- ordinalParse: /\d{1,2}\./,
98
- ordinal : '%d.',
99
- week : {
100
- dow : 1, // Monday is the first day of the week.
101
- doy : 4 // The week that contains Jan 4th is the first week of the year.
102
- }
103
- });
104
-
105
- return fi;
106
-
107
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/fi.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,u){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?u(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],u):u(e.moment)}(this,function(e){"use strict";function u(e,u,t,a){var i="";switch(t){case"s":return a?"muutaman sekunnin":"muutama sekunti";case"m":return a?"minuutin":"minuutti";case"mm":i=a?"minuutin":"minuuttia";break;case"h":return a?"tunnin":"tunti";case"hh":i=a?"tunnin":"tuntia";break;case"d":return a?"päivän":"päivä";case"dd":i=a?"päivän":"päivää";break;case"M":return a?"kuukauden":"kuukausi";case"MM":i=a?"kuukauden":"kuukautta";break;case"y":return a?"vuoden":"vuosi";case"yy":i=a?"vuoden":"vuotta"}return i=n(e,a)+" "+i}function n(e,u){return e<10?u?a[e]:t[e]:e}var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),a=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];return e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/fo.js DELETED
@@ -1,60 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Faroese [fo]
3
- //! author : Ragnar Johannesen : https://github.com/ragnar123
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var fo = moment.defineLocale('fo', {
14
- months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
15
- monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
16
- weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
17
- weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
18
- weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
19
- longDateFormat : {
20
- LT : 'HH:mm',
21
- LTS : 'HH:mm:ss',
22
- L : 'DD/MM/YYYY',
23
- LL : 'D MMMM YYYY',
24
- LLL : 'D MMMM YYYY HH:mm',
25
- LLLL : 'dddd D. MMMM, YYYY HH:mm'
26
- },
27
- calendar : {
28
- sameDay : '[Í dag kl.] LT',
29
- nextDay : '[Í morgin kl.] LT',
30
- nextWeek : 'dddd [kl.] LT',
31
- lastDay : '[Í gjár kl.] LT',
32
- lastWeek : '[síðstu] dddd [kl] LT',
33
- sameElse : 'L'
34
- },
35
- relativeTime : {
36
- future : 'um %s',
37
- past : '%s síðani',
38
- s : 'fá sekund',
39
- m : 'ein minutt',
40
- mm : '%d minuttir',
41
- h : 'ein tími',
42
- hh : '%d tímar',
43
- d : 'ein dagur',
44
- dd : '%d dagar',
45
- M : 'ein mánaði',
46
- MM : '%d mánaðir',
47
- y : 'eitt ár',
48
- yy : '%d ár'
49
- },
50
- ordinalParse: /\d{1,2}\./,
51
- ordinal : '%d.',
52
- week : {
53
- dow : 1, // Monday is the first day of the week.
54
- doy : 4 // The week that contains Jan 4th is the first week of the year.
55
- }
56
- });
57
-
58
- return fo;
59
-
60
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/fo.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";return e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/fr-ca.js DELETED
@@ -1,60 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : French (Canada) [fr-ca]
3
- //! author : Jonathan Abourbih : https://github.com/jonbca
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var fr_ca = moment.defineLocale('fr-ca', {
14
- months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
15
- monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
16
- monthsParseExact : true,
17
- weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
18
- weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
19
- weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
20
- weekdaysParseExact : true,
21
- longDateFormat : {
22
- LT : 'HH:mm',
23
- LTS : 'HH:mm:ss',
24
- L : 'YYYY-MM-DD',
25
- LL : 'D MMMM YYYY',
26
- LLL : 'D MMMM YYYY HH:mm',
27
- LLLL : 'dddd D MMMM YYYY HH:mm'
28
- },
29
- calendar : {
30
- sameDay: '[Aujourd\'hui à] LT',
31
- nextDay: '[Demain à] LT',
32
- nextWeek: 'dddd [à] LT',
33
- lastDay: '[Hier à] LT',
34
- lastWeek: 'dddd [dernier à] LT',
35
- sameElse: 'L'
36
- },
37
- relativeTime : {
38
- future : 'dans %s',
39
- past : 'il y a %s',
40
- s : 'quelques secondes',
41
- m : 'une minute',
42
- mm : '%d minutes',
43
- h : 'une heure',
44
- hh : '%d heures',
45
- d : 'un jour',
46
- dd : '%d jours',
47
- M : 'un mois',
48
- MM : '%d mois',
49
- y : 'un an',
50
- yy : '%d ans'
51
- },
52
- ordinalParse: /\d{1,2}(er|e)/,
53
- ordinal : function (number) {
54
- return number + (number === 1 ? 'er' : 'e');
55
- }
56
- });
57
-
58
- return fr_ca;
59
-
60
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/fr-ca.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?"er":"e")}})});
 
bp-core/js/vendor/moment-js/locale/fr-ch.js DELETED
@@ -1,64 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : French (Switzerland) [fr-ch]
3
- //! author : Gaspard Bucher : https://github.com/gaspard
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var fr_ch = moment.defineLocale('fr-ch', {
14
- months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
15
- monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
16
- monthsParseExact : true,
17
- weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
18
- weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
19
- weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
20
- weekdaysParseExact : true,
21
- longDateFormat : {
22
- LT : 'HH:mm',
23
- LTS : 'HH:mm:ss',
24
- L : 'DD.MM.YYYY',
25
- LL : 'D MMMM YYYY',
26
- LLL : 'D MMMM YYYY HH:mm',
27
- LLLL : 'dddd D MMMM YYYY HH:mm'
28
- },
29
- calendar : {
30
- sameDay: '[Aujourd\'hui à] LT',
31
- nextDay: '[Demain à] LT',
32
- nextWeek: 'dddd [à] LT',
33
- lastDay: '[Hier à] LT',
34
- lastWeek: 'dddd [dernier à] LT',
35
- sameElse: 'L'
36
- },
37
- relativeTime : {
38
- future : 'dans %s',
39
- past : 'il y a %s',
40
- s : 'quelques secondes',
41
- m : 'une minute',
42
- mm : '%d minutes',
43
- h : 'une heure',
44
- hh : '%d heures',
45
- d : 'un jour',
46
- dd : '%d jours',
47
- M : 'un mois',
48
- MM : '%d mois',
49
- y : 'un an',
50
- yy : '%d ans'
51
- },
52
- ordinalParse: /\d{1,2}(er|e)/,
53
- ordinal : function (number) {
54
- return number + (number === 1 ? 'er' : 'e');
55
- },
56
- week : {
57
- dow : 1, // Monday is the first day of the week.
58
- doy : 4 // The week that contains Jan 4th is the first week of the year.
59
- }
60
- });
61
-
62
- return fr_ch;
63
-
64
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/fr-ch.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";return e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?"er":"e")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/fr.js DELETED
@@ -1,64 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : French [fr]
3
- //! author : John Fischer : https://github.com/jfroffice
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var fr = moment.defineLocale('fr', {
14
- months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
15
- monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
16
- monthsParseExact : true,
17
- weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
18
- weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
19
- weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
20
- weekdaysParseExact : true,
21
- longDateFormat : {
22
- LT : 'HH:mm',
23
- LTS : 'HH:mm:ss',
24
- L : 'DD/MM/YYYY',
25
- LL : 'D MMMM YYYY',
26
- LLL : 'D MMMM YYYY HH:mm',
27
- LLLL : 'dddd D MMMM YYYY HH:mm'
28
- },
29
- calendar : {
30
- sameDay: '[Aujourd\'hui à] LT',
31
- nextDay: '[Demain à] LT',
32
- nextWeek: 'dddd [à] LT',
33
- lastDay: '[Hier à] LT',
34
- lastWeek: 'dddd [dernier à] LT',
35
- sameElse: 'L'
36
- },
37
- relativeTime : {
38
- future : 'dans %s',
39
- past : 'il y a %s',
40
- s : 'quelques secondes',
41
- m : 'une minute',
42
- mm : '%d minutes',
43
- h : 'une heure',
44
- hh : '%d heures',
45
- d : 'un jour',
46
- dd : '%d jours',
47
- M : 'un mois',
48
- MM : '%d mois',
49
- y : 'un an',
50
- yy : '%d ans'
51
- },
52
- ordinalParse: /\d{1,2}(er|)/,
53
- ordinal : function (number) {
54
- return number + (number === 1 ? 'er' : '');
55
- },
56
- week : {
57
- dow : 1, // Monday is the first day of the week.
58
- doy : 4 // The week that contains Jan 4th is the first week of the year.
59
- }
60
- });
61
-
62
- return fr;
63
-
64
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/fr.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";return e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(e){return e+(1===e?"er":"")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/fy.js DELETED
@@ -1,73 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Frisian [fy]
3
- //! author : Robin van der Vliet : https://github.com/robin0van0der0v
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
14
- monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
15
-
16
- var fy = moment.defineLocale('fy', {
17
- months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
18
- monthsShort : function (m, format) {
19
- if (/-MMM-/.test(format)) {
20
- return monthsShortWithoutDots[m.month()];
21
- } else {
22
- return monthsShortWithDots[m.month()];
23
- }
24
- },
25
- monthsParseExact : true,
26
- weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
27
- weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
28
- weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
29
- weekdaysParseExact : true,
30
- longDateFormat : {
31
- LT : 'HH:mm',
32
- LTS : 'HH:mm:ss',
33
- L : 'DD-MM-YYYY',
34
- LL : 'D MMMM YYYY',
35
- LLL : 'D MMMM YYYY HH:mm',
36
- LLLL : 'dddd D MMMM YYYY HH:mm'
37
- },
38
- calendar : {
39
- sameDay: '[hjoed om] LT',
40
- nextDay: '[moarn om] LT',
41
- nextWeek: 'dddd [om] LT',
42
- lastDay: '[juster om] LT',
43
- lastWeek: '[ôfrûne] dddd [om] LT',
44
- sameElse: 'L'
45
- },
46
- relativeTime : {
47
- future : 'oer %s',
48
- past : '%s lyn',
49
- s : 'in pear sekonden',
50
- m : 'ien minút',
51
- mm : '%d minuten',
52
- h : 'ien oere',
53
- hh : '%d oeren',
54
- d : 'ien dei',
55
- dd : '%d dagen',
56
- M : 'ien moanne',
57
- MM : '%d moannen',
58
- y : 'ien jier',
59
- yy : '%d jierren'
60
- },
61
- ordinalParse: /\d{1,2}(ste|de)/,
62
- ordinal : function (number) {
63
- return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
64
- },
65
- week : {
66
- dow : 1, // Monday is the first day of the week.
67
- doy : 4 // The week that contains Jan 4th is the first week of the year.
68
- }
69
- });
70
-
71
- return fy;
72
-
73
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/fy.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";var n="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),t="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");return e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,o){return/-MMM-/.test(o)?t[e.month()]:n[e.month()]},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/gd.js DELETED
@@ -1,76 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Scottish Gaelic [gd]
3
- //! author : Jon Ashdown : https://github.com/jonashdown
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var months = [
14
- 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'
15
- ];
16
-
17
- var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
18
-
19
- var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
20
-
21
- var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
22
-
23
- var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
24
-
25
- var gd = moment.defineLocale('gd', {
26
- months : months,
27
- monthsShort : monthsShort,
28
- monthsParseExact : true,
29
- weekdays : weekdays,
30
- weekdaysShort : weekdaysShort,
31
- weekdaysMin : weekdaysMin,
32
- longDateFormat : {
33
- LT : 'HH:mm',
34
- LTS : 'HH:mm:ss',
35
- L : 'DD/MM/YYYY',
36
- LL : 'D MMMM YYYY',
37
- LLL : 'D MMMM YYYY HH:mm',
38
- LLLL : 'dddd, D MMMM YYYY HH:mm'
39
- },
40
- calendar : {
41
- sameDay : '[An-diugh aig] LT',
42
- nextDay : '[A-màireach aig] LT',
43
- nextWeek : 'dddd [aig] LT',
44
- lastDay : '[An-dè aig] LT',
45
- lastWeek : 'dddd [seo chaidh] [aig] LT',
46
- sameElse : 'L'
47
- },
48
- relativeTime : {
49
- future : 'ann an %s',
50
- past : 'bho chionn %s',
51
- s : 'beagan diogan',
52
- m : 'mionaid',
53
- mm : '%d mionaidean',
54
- h : 'uair',
55
- hh : '%d uairean',
56
- d : 'latha',
57
- dd : '%d latha',
58
- M : 'mìos',
59
- MM : '%d mìosan',
60
- y : 'bliadhna',
61
- yy : '%d bliadhna'
62
- },
63
- ordinalParse : /\d{1,2}(d|na|mh)/,
64
- ordinal : function (number) {
65
- var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
66
- return number + output;
67
- },
68
- week : {
69
- dow : 1, // Monday is the first day of the week.
70
- doy : 4 // The week that contains Jan 4th is the first week of the year.
71
- }
72
- });
73
-
74
- return gd;
75
-
76
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/gd.min.js DELETED
@@ -1 +0,0 @@
1
- !function(a,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(a.moment)}(this,function(a){"use strict";var n=["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],i=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],e=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],d=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],t=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"];return a.defineLocale("gd",{months:n,monthsShort:i,monthsParseExact:!0,weekdays:e,weekdaysShort:d,weekdaysMin:t,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},ordinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(a){return a+(1===a?"d":a%10==2?"na":"mh")},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/gl.js DELETED
@@ -1,77 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Galician [gl]
3
- //! author : Juan G. Hurtado : https://github.com/juanghurtado
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var gl = moment.defineLocale('gl', {
14
- months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
15
- monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
16
- monthsParseExact: true,
17
- weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
18
- weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
19
- weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
20
- weekdaysParseExact : true,
21
- longDateFormat : {
22
- LT : 'H:mm',
23
- LTS : 'H:mm:ss',
24
- L : 'DD/MM/YYYY',
25
- LL : 'D [de] MMMM [de] YYYY',
26
- LLL : 'D [de] MMMM [de] YYYY H:mm',
27
- LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
28
- },
29
- calendar : {
30
- sameDay : function () {
31
- return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
32
- },
33
- nextDay : function () {
34
- return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
35
- },
36
- nextWeek : function () {
37
- return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
38
- },
39
- lastDay : function () {
40
- return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
41
- },
42
- lastWeek : function () {
43
- return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
44
- },
45
- sameElse : 'L'
46
- },
47
- relativeTime : {
48
- future : function (str) {
49
- if (str.indexOf('un') === 0) {
50
- return 'n' + str;
51
- }
52
- return 'en ' + str;
53
- },
54
- past : 'hai %s',
55
- s : 'uns segundos',
56
- m : 'un minuto',
57
- mm : '%d minutos',
58
- h : 'unha hora',
59
- hh : '%d horas',
60
- d : 'un día',
61
- dd : '%d días',
62
- M : 'un mes',
63
- MM : '%d meses',
64
- y : 'un ano',
65
- yy : '%d anos'
66
- },
67
- ordinalParse : /\d{1,2}º/,
68
- ordinal : '%dº',
69
- week : {
70
- dow : 1, // Monday is the first day of the week.
71
- doy : 4 // The week that contains Jan 4th is the first week of the year.
72
- }
73
- });
74
-
75
- return gl;
76
-
77
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/gl.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?o(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],o):o(e.moment)}(this,function(e){"use strict";return e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/he.js DELETED
@@ -1,99 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Hebrew [he]
3
- //! author : Tomer Cohen : https://github.com/tomer
4
- //! author : Moshe Simantov : https://github.com/DevelopmentIL
5
- //! author : Tal Ater : https://github.com/TalAter
6
-
7
- ;(function (global, factory) {
8
- typeof exports === 'object' && typeof module !== 'undefined'
9
- && typeof require === 'function' ? factory(require('../moment')) :
10
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11
- factory(global.moment)
12
- }(this, function (moment) { 'use strict';
13
-
14
-
15
- var he = moment.defineLocale('he', {
16
- months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
17
- monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
18
- weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
19
- weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
20
- weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
21
- longDateFormat : {
22
- LT : 'HH:mm',
23
- LTS : 'HH:mm:ss',
24
- L : 'DD/MM/YYYY',
25
- LL : 'D [ב]MMMM YYYY',
26
- LLL : 'D [ב]MMMM YYYY HH:mm',
27
- LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
28
- l : 'D/M/YYYY',
29
- ll : 'D MMM YYYY',
30
- lll : 'D MMM YYYY HH:mm',
31
- llll : 'ddd, D MMM YYYY HH:mm'
32
- },
33
- calendar : {
34
- sameDay : '[היום ב־]LT',
35
- nextDay : '[מחר ב־]LT',
36
- nextWeek : 'dddd [בשעה] LT',
37
- lastDay : '[אתמול ב־]LT',
38
- lastWeek : '[ביום] dddd [האחרון בשעה] LT',
39
- sameElse : 'L'
40
- },
41
- relativeTime : {
42
- future : 'בעוד %s',
43
- past : 'לפני %s',
44
- s : 'מספר שניות',
45
- m : 'דקה',
46
- mm : '%d דקות',
47
- h : 'שעה',
48
- hh : function (number) {
49
- if (number === 2) {
50
- return 'שעתיים';
51
- }
52
- return number + ' שעות';
53
- },
54
- d : 'יום',
55
- dd : function (number) {
56
- if (number === 2) {
57
- return 'יומיים';
58
- }
59
- return number + ' ימים';
60
- },
61
- M : 'חודש',
62
- MM : function (number) {
63
- if (number === 2) {
64
- return 'חודשיים';
65
- }
66
- return number + ' חודשים';
67
- },
68
- y : 'שנה',
69
- yy : function (number) {
70
- if (number === 2) {
71
- return 'שנתיים';
72
- } else if (number % 10 === 0 && number !== 10) {
73
- return number + ' שנה';
74
- }
75
- return number + ' שנים';
76
- }
77
- },
78
- meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
79
- isPM : function (input) {
80
- return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
81
- },
82
- meridiem : function (hour, minute, isLower) {
83
- if (hour < 5) {
84
- return 'לפנות בוקר';
85
- } else if (hour < 10) {
86
- return 'בבוקר';
87
- } else if (hour < 12) {
88
- return isLower ? 'לפנה"צ' : 'לפני הצהריים';
89
- } else if (hour < 18) {
90
- return isLower ? 'אחה"צ' : 'אחרי הצהריים';
91
- } else {
92
- return 'בערב';
93
- }
94
- }
95
- });
96
-
97
- return he;
98
-
99
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/he.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?t(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],t):t(e.moment)}(this,function(e){"use strict";return e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,_){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?_?'לפנה"צ':"לפני הצהריים":e<18?_?'אחה"צ':"אחרי הצהריים":"בערב"}})});
 
bp-core/js/vendor/moment-js/locale/hi.js DELETED
@@ -1,124 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Hindi [hi]
3
- //! author : Mayank Singhal : https://github.com/mayanksinghal
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var symbolMap = {
14
- '1': '१',
15
- '2': '२',
16
- '3': '३',
17
- '4': '४',
18
- '5': '५',
19
- '6': '६',
20
- '7': '७',
21
- '8': '८',
22
- '9': '९',
23
- '0': '०'
24
- },
25
- numberMap = {
26
- '१': '1',
27
- '२': '2',
28
- '३': '3',
29
- '४': '4',
30
- '५': '5',
31
- '६': '6',
32
- '७': '7',
33
- '८': '8',
34
- '९': '9',
35
- '०': '0'
36
- };
37
-
38
- var hi = moment.defineLocale('hi', {
39
- months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
40
- monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
41
- monthsParseExact: true,
42
- weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
43
- weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
44
- weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
45
- longDateFormat : {
46
- LT : 'A h:mm बजे',
47
- LTS : 'A h:mm:ss बजे',
48
- L : 'DD/MM/YYYY',
49
- LL : 'D MMMM YYYY',
50
- LLL : 'D MMMM YYYY, A h:mm बजे',
51
- LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
52
- },
53
- calendar : {
54
- sameDay : '[आज] LT',
55
- nextDay : '[कल] LT',
56
- nextWeek : 'dddd, LT',
57
- lastDay : '[कल] LT',
58
- lastWeek : '[पिछले] dddd, LT',
59
- sameElse : 'L'
60
- },
61
- relativeTime : {
62
- future : '%s में',
63
- past : '%s पहले',
64
- s : 'कुछ ही क्षण',
65
- m : 'एक मिनट',
66
- mm : '%d मिनट',
67
- h : 'एक घंटा',
68
- hh : '%d घंटे',
69
- d : 'एक दिन',
70
- dd : '%d दिन',
71
- M : 'एक महीने',
72
- MM : '%d महीने',
73
- y : 'एक वर्ष',
74
- yy : '%d वर्ष'
75
- },
76
- preparse: function (string) {
77
- return string.replace(/[१२३४५६७८९०]/g, function (match) {
78
- return numberMap[match];
79
- });
80
- },
81
- postformat: function (string) {
82
- return string.replace(/\d/g, function (match) {
83
- return symbolMap[match];
84
- });
85
- },
86
- // Hindi notation for meridiems are quite fuzzy in practice. While there exists
87
- // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
88
- meridiemParse: /रात|सुबह|दोपहर|शाम/,
89
- meridiemHour : function (hour, meridiem) {
90
- if (hour === 12) {
91
- hour = 0;
92
- }
93
- if (meridiem === 'रात') {
94
- return hour < 4 ? hour : hour + 12;
95
- } else if (meridiem === 'सुबह') {
96
- return hour;
97
- } else if (meridiem === 'दोपहर') {
98
- return hour >= 10 ? hour : hour + 12;
99
- } else if (meridiem === 'शाम') {
100
- return hour + 12;
101
- }
102
- },
103
- meridiem : function (hour, minute, isLower) {
104
- if (hour < 4) {
105
- return 'रात';
106
- } else if (hour < 10) {
107
- return 'सुबह';
108
- } else if (hour < 17) {
109
- return 'दोपहर';
110
- } else if (hour < 20) {
111
- return 'शाम';
112
- } else {
113
- return 'रात';
114
- }
115
- },
116
- week : {
117
- dow : 0, // Sunday is the first day of the week.
118
- doy : 6 // The week that contains Jan 1st is the first week of the year.
119
- }
120
- });
121
-
122
- return hi;
123
-
124
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/hi.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?t(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],t):t(e.moment)}(this,function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},_={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return _[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,_){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})});
 
bp-core/js/vendor/moment-js/locale/hr.js DELETED
@@ -1,145 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Croatian [hr]
3
- //! author : Bojan Marković : https://github.com/bmarkovic
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- function translate(number, withoutSuffix, key) {
14
- var result = number + ' ';
15
- switch (key) {
16
- case 'm':
17
- return withoutSuffix ? 'jedna minuta' : 'jedne minute';
18
- case 'mm':
19
- if (number === 1) {
20
- result += 'minuta';
21
- } else if (number === 2 || number === 3 || number === 4) {
22
- result += 'minute';
23
- } else {
24
- result += 'minuta';
25
- }
26
- return result;
27
- case 'h':
28
- return withoutSuffix ? 'jedan sat' : 'jednog sata';
29
- case 'hh':
30
- if (number === 1) {
31
- result += 'sat';
32
- } else if (number === 2 || number === 3 || number === 4) {
33
- result += 'sata';
34
- } else {
35
- result += 'sati';
36
- }
37
- return result;
38
- case 'dd':
39
- if (number === 1) {
40
- result += 'dan';
41
- } else {
42
- result += 'dana';
43
- }
44
- return result;
45
- case 'MM':
46
- if (number === 1) {
47
- result += 'mjesec';
48
- } else if (number === 2 || number === 3 || number === 4) {
49
- result += 'mjeseca';
50
- } else {
51
- result += 'mjeseci';
52
- }
53
- return result;
54
- case 'yy':
55
- if (number === 1) {
56
- result += 'godina';
57
- } else if (number === 2 || number === 3 || number === 4) {
58
- result += 'godine';
59
- } else {
60
- result += 'godina';
61
- }
62
- return result;
63
- }
64
- }
65
-
66
- var hr = moment.defineLocale('hr', {
67
- months : {
68
- format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
69
- standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
70
- },
71
- monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
72
- monthsParseExact: true,
73
- weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
74
- weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
75
- weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
76
- weekdaysParseExact : true,
77
- longDateFormat : {
78
- LT : 'H:mm',
79
- LTS : 'H:mm:ss',
80
- L : 'DD.MM.YYYY',
81
- LL : 'D. MMMM YYYY',
82
- LLL : 'D. MMMM YYYY H:mm',
83
- LLLL : 'dddd, D. MMMM YYYY H:mm'
84
- },
85
- calendar : {
86
- sameDay : '[danas u] LT',
87
- nextDay : '[sutra u] LT',
88
- nextWeek : function () {
89
- switch (this.day()) {
90
- case 0:
91
- return '[u] [nedjelju] [u] LT';
92
- case 3:
93
- return '[u] [srijedu] [u] LT';
94
- case 6:
95
- return '[u] [subotu] [u] LT';
96
- case 1:
97
- case 2:
98
- case 4:
99
- case 5:
100
- return '[u] dddd [u] LT';
101
- }
102
- },
103
- lastDay : '[jučer u] LT',
104
- lastWeek : function () {
105
- switch (this.day()) {
106
- case 0:
107
- case 3:
108
- return '[prošlu] dddd [u] LT';
109
- case 6:
110
- return '[prošle] [subote] [u] LT';
111
- case 1:
112
- case 2:
113
- case 4:
114
- case 5:
115
- return '[prošli] dddd [u] LT';
116
- }
117
- },
118
- sameElse : 'L'
119
- },
120
- relativeTime : {
121
- future : 'za %s',
122
- past : 'prije %s',
123
- s : 'par sekundi',
124
- m : translate,
125
- mm : translate,
126
- h : translate,
127
- hh : translate,
128
- d : 'dan',
129
- dd : translate,
130
- M : 'mjesec',
131
- MM : translate,
132
- y : 'godinu',
133
- yy : translate
134
- },
135
- ordinalParse: /\d{1,2}\./,
136
- ordinal : '%d.',
137
- week : {
138
- dow : 1, // Monday is the first day of the week.
139
- doy : 7 // The week that contains Jan 1st is the first week of the year.
140
- }
141
- });
142
-
143
- return hr;
144
-
145
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/hr.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";function a(e,a,s){var t=e+" ";switch(s){case"m":return a?"jedna minuta":"jedne minute";case"mm":return t+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return t+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return t+=1===e?"dan":"dana";case"MM":return t+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return t+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/hu.js DELETED
@@ -1,109 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Hungarian [hu]
3
- //! author : Adam Brunner : https://github.com/adambrunner
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
14
- function translate(number, withoutSuffix, key, isFuture) {
15
- var num = number,
16
- suffix;
17
- switch (key) {
18
- case 's':
19
- return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
20
- case 'm':
21
- return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
22
- case 'mm':
23
- return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
24
- case 'h':
25
- return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
26
- case 'hh':
27
- return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
28
- case 'd':
29
- return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
30
- case 'dd':
31
- return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
32
- case 'M':
33
- return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
34
- case 'MM':
35
- return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
36
- case 'y':
37
- return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
38
- case 'yy':
39
- return num + (isFuture || withoutSuffix ? ' év' : ' éve');
40
- }
41
- return '';
42
- }
43
- function week(isFuture) {
44
- return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
45
- }
46
-
47
- var hu = moment.defineLocale('hu', {
48
- months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
49
- monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
50
- weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
51
- weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
52
- weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
53
- longDateFormat : {
54
- LT : 'H:mm',
55
- LTS : 'H:mm:ss',
56
- L : 'YYYY.MM.DD.',
57
- LL : 'YYYY. MMMM D.',
58
- LLL : 'YYYY. MMMM D. H:mm',
59
- LLLL : 'YYYY. MMMM D., dddd H:mm'
60
- },
61
- meridiemParse: /de|du/i,
62
- isPM: function (input) {
63
- return input.charAt(1).toLowerCase() === 'u';
64
- },
65
- meridiem : function (hours, minutes, isLower) {
66
- if (hours < 12) {
67
- return isLower === true ? 'de' : 'DE';
68
- } else {
69
- return isLower === true ? 'du' : 'DU';
70
- }
71
- },
72
- calendar : {
73
- sameDay : '[ma] LT[-kor]',
74
- nextDay : '[holnap] LT[-kor]',
75
- nextWeek : function () {
76
- return week.call(this, true);
77
- },
78
- lastDay : '[tegnap] LT[-kor]',
79
- lastWeek : function () {
80
- return week.call(this, false);
81
- },
82
- sameElse : 'L'
83
- },
84
- relativeTime : {
85
- future : '%s múlva',
86
- past : '%s',
87
- s : translate,
88
- m : translate,
89
- mm : translate,
90
- h : translate,
91
- hh : translate,
92
- d : translate,
93
- dd : translate,
94
- M : translate,
95
- MM : translate,
96
- y : translate,
97
- yy : translate
98
- },
99
- ordinalParse: /\d{1,2}\./,
100
- ordinal : '%d.',
101
- week : {
102
- dow : 1, // Monday is the first day of the week.
103
- doy : 7 // The week that contains Jan 1st is the first week of the year.
104
- }
105
- });
106
-
107
- return hu;
108
-
109
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/hu.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?r(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],r):r(e.moment)}(this,function(e){"use strict";function r(e,r,n,t){var a=e;switch(n){case"s":return t||r?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(t||r?" perc":" perce");case"mm":return a+(t||r?" perc":" perce");case"h":return"egy"+(t||r?" óra":" órája");case"hh":return a+(t||r?" óra":" órája");case"d":return"egy"+(t||r?" nap":" napja");case"dd":return a+(t||r?" nap":" napja");case"M":return"egy"+(t||r?" hónap":" hónapja");case"MM":return a+(t||r?" hónap":" hónapja");case"y":return"egy"+(t||r?" év":" éve");case"yy":return a+(t||r?" év":" éve")}return""}function n(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,r,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return n.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return n.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/hy-am.js DELETED
@@ -1,95 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Armenian [hy-am]
3
- //! author : Armendarabyan : https://github.com/armendarabyan
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var hy_am = moment.defineLocale('hy-am', {
14
- months : {
15
- format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
16
- standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
17
- },
18
- monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
19
- weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
20
- weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
21
- weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
22
- longDateFormat : {
23
- LT : 'HH:mm',
24
- LTS : 'HH:mm:ss',
25
- L : 'DD.MM.YYYY',
26
- LL : 'D MMMM YYYY թ.',
27
- LLL : 'D MMMM YYYY թ., HH:mm',
28
- LLLL : 'dddd, D MMMM YYYY թ., HH:mm'
29
- },
30
- calendar : {
31
- sameDay: '[այսօր] LT',
32
- nextDay: '[վաղը] LT',
33
- lastDay: '[երեկ] LT',
34
- nextWeek: function () {
35
- return 'dddd [օրը ժամը] LT';
36
- },
37
- lastWeek: function () {
38
- return '[անցած] dddd [օրը ժամը] LT';
39
- },
40
- sameElse: 'L'
41
- },
42
- relativeTime : {
43
- future : '%s հետո',
44
- past : '%s առաջ',
45
- s : 'մի քանի վայրկյան',
46
- m : 'րոպե',
47
- mm : '%d րոպե',
48
- h : 'ժամ',
49
- hh : '%d ժամ',
50
- d : 'օր',
51
- dd : '%d օր',
52
- M : 'ամիս',
53
- MM : '%d ամիս',
54
- y : 'տարի',
55
- yy : '%d տարի'
56
- },
57
- meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
58
- isPM: function (input) {
59
- return /^(ցերեկվա|երեկոյան)$/.test(input);
60
- },
61
- meridiem : function (hour) {
62
- if (hour < 4) {
63
- return 'գիշերվա';
64
- } else if (hour < 12) {
65
- return 'առավոտվա';
66
- } else if (hour < 17) {
67
- return 'ցերեկվա';
68
- } else {
69
- return 'երեկոյան';
70
- }
71
- },
72
- ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
73
- ordinal: function (number, period) {
74
- switch (period) {
75
- case 'DDD':
76
- case 'w':
77
- case 'W':
78
- case 'DDDo':
79
- if (number === 1) {
80
- return number + '-ին';
81
- }
82
- return number + '-րդ';
83
- default:
84
- return number;
85
- }
86
- },
87
- week : {
88
- dow : 1, // Monday is the first day of the week.
89
- doy : 7 // The week that contains Jan 1st is the first week of the year.
90
- }
91
- });
92
-
93
- return hy_am;
94
-
95
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/hy-am.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},ordinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,_){switch(_){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/id.js DELETED
@@ -1,83 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Indonesian [id]
3
- //! author : Mohammad Satrio Utomo : https://github.com/tyok
4
- //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- var id = moment.defineLocale('id', {
15
- months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
16
- monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
17
- weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
18
- weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
19
- weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
20
- longDateFormat : {
21
- LT : 'HH.mm',
22
- LTS : 'HH.mm.ss',
23
- L : 'DD/MM/YYYY',
24
- LL : 'D MMMM YYYY',
25
- LLL : 'D MMMM YYYY [pukul] HH.mm',
26
- LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
27
- },
28
- meridiemParse: /pagi|siang|sore|malam/,
29
- meridiemHour : function (hour, meridiem) {
30
- if (hour === 12) {
31
- hour = 0;
32
- }
33
- if (meridiem === 'pagi') {
34
- return hour;
35
- } else if (meridiem === 'siang') {
36
- return hour >= 11 ? hour : hour + 12;
37
- } else if (meridiem === 'sore' || meridiem === 'malam') {
38
- return hour + 12;
39
- }
40
- },
41
- meridiem : function (hours, minutes, isLower) {
42
- if (hours < 11) {
43
- return 'pagi';
44
- } else if (hours < 15) {
45
- return 'siang';
46
- } else if (hours < 19) {
47
- return 'sore';
48
- } else {
49
- return 'malam';
50
- }
51
- },
52
- calendar : {
53
- sameDay : '[Hari ini pukul] LT',
54
- nextDay : '[Besok pukul] LT',
55
- nextWeek : 'dddd [pukul] LT',
56
- lastDay : '[Kemarin pukul] LT',
57
- lastWeek : 'dddd [lalu pukul] LT',
58
- sameElse : 'L'
59
- },
60
- relativeTime : {
61
- future : 'dalam %s',
62
- past : '%s yang lalu',
63
- s : 'beberapa detik',
64
- m : 'semenit',
65
- mm : '%d menit',
66
- h : 'sejam',
67
- hh : '%d jam',
68
- d : 'sehari',
69
- dd : '%d hari',
70
- M : 'sebulan',
71
- MM : '%d bulan',
72
- y : 'setahun',
73
- yy : '%d tahun'
74
- },
75
- week : {
76
- dow : 1, // Monday is the first day of the week.
77
- doy : 7 // The week that contains Jan 1st is the first week of the year.
78
- }
79
- });
80
-
81
- return id;
82
-
83
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/id.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";return e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,i){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/is.js DELETED
@@ -1,127 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Icelandic [is]
3
- //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- function plural(n) {
14
- if (n % 100 === 11) {
15
- return true;
16
- } else if (n % 10 === 1) {
17
- return false;
18
- }
19
- return true;
20
- }
21
- function translate(number, withoutSuffix, key, isFuture) {
22
- var result = number + ' ';
23
- switch (key) {
24
- case 's':
25
- return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
26
- case 'm':
27
- return withoutSuffix ? 'mínúta' : 'mínútu';
28
- case 'mm':
29
- if (plural(number)) {
30
- return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
31
- } else if (withoutSuffix) {
32
- return result + 'mínúta';
33
- }
34
- return result + 'mínútu';
35
- case 'hh':
36
- if (plural(number)) {
37
- return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
38
- }
39
- return result + 'klukkustund';
40
- case 'd':
41
- if (withoutSuffix) {
42
- return 'dagur';
43
- }
44
- return isFuture ? 'dag' : 'degi';
45
- case 'dd':
46
- if (plural(number)) {
47
- if (withoutSuffix) {
48
- return result + 'dagar';
49
- }
50
- return result + (isFuture ? 'daga' : 'dögum');
51
- } else if (withoutSuffix) {
52
- return result + 'dagur';
53
- }
54
- return result + (isFuture ? 'dag' : 'degi');
55
- case 'M':
56
- if (withoutSuffix) {
57
- return 'mánuður';
58
- }
59
- return isFuture ? 'mánuð' : 'mánuði';
60
- case 'MM':
61
- if (plural(number)) {
62
- if (withoutSuffix) {
63
- return result + 'mánuðir';
64
- }
65
- return result + (isFuture ? 'mánuði' : 'mánuðum');
66
- } else if (withoutSuffix) {
67
- return result + 'mánuður';
68
- }
69
- return result + (isFuture ? 'mánuð' : 'mánuði');
70
- case 'y':
71
- return withoutSuffix || isFuture ? 'ár' : 'ári';
72
- case 'yy':
73
- if (plural(number)) {
74
- return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
75
- }
76
- return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
77
- }
78
- }
79
-
80
- var is = moment.defineLocale('is', {
81
- months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
82
- monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
83
- weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
84
- weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
85
- weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
86
- longDateFormat : {
87
- LT : 'H:mm',
88
- LTS : 'H:mm:ss',
89
- L : 'DD.MM.YYYY',
90
- LL : 'D. MMMM YYYY',
91
- LLL : 'D. MMMM YYYY [kl.] H:mm',
92
- LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
93
- },
94
- calendar : {
95
- sameDay : '[í dag kl.] LT',
96
- nextDay : '[á morgun kl.] LT',
97
- nextWeek : 'dddd [kl.] LT',
98
- lastDay : '[í gær kl.] LT',
99
- lastWeek : '[síðasta] dddd [kl.] LT',
100
- sameElse : 'L'
101
- },
102
- relativeTime : {
103
- future : 'eftir %s',
104
- past : 'fyrir %s síðan',
105
- s : translate,
106
- m : translate,
107
- mm : translate,
108
- h : 'klukkustund',
109
- hh : translate,
110
- d : translate,
111
- dd : translate,
112
- M : translate,
113
- MM : translate,
114
- y : translate,
115
- yy : translate
116
- },
117
- ordinalParse: /\d{1,2}\./,
118
- ordinal : '%d.',
119
- week : {
120
- dow : 1, // Monday is the first day of the week.
121
- doy : 4 // The week that contains Jan 4th is the first week of the year.
122
- }
123
- });
124
-
125
- return is;
126
-
127
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/is.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?r(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],r):r(e.moment)}(this,function(e){"use strict";function r(e){return e%100==11||e%10!=1}function u(e,u,n,a){var t=e+" ";switch(n){case"s":return u||a?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return u?"mínúta":"mínútu";case"mm":return r(e)?t+(u||a?"mínútur":"mínútum"):u?t+"mínúta":t+"mínútu";case"hh":return r(e)?t+(u||a?"klukkustundir":"klukkustundum"):t+"klukkustund";case"d":return u?"dagur":a?"dag":"degi";case"dd":return r(e)?u?t+"dagar":t+(a?"daga":"dögum"):u?t+"dagur":t+(a?"dag":"degi");case"M":return u?"mánuður":a?"mánuð":"mánuði";case"MM":return r(e)?u?t+"mánuðir":t+(a?"mánuði":"mánuðum"):u?t+"mánuður":t+(a?"mánuð":"mánuði");case"y":return u||a?"ár":"ári";case"yy":return r(e)?t+(u||a?"ár":"árum"):t+(u||a?"ár":"ári")}}return e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:u,m:u,mm:u,h:"klukkustund",hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/it.js DELETED
@@ -1,70 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Italian [it]
3
- //! author : Lorenzo : https://github.com/aliem
4
- //! author: Mattia Larentis: https://github.com/nostalgiaz
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- var it = moment.defineLocale('it', {
15
- months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
16
- monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
17
- weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
18
- weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),
19
- weekdaysMin : 'Do_Lu_Ma_Me_Gi_Ve_Sa'.split('_'),
20
- longDateFormat : {
21
- LT : 'HH:mm',
22
- LTS : 'HH:mm:ss',
23
- L : 'DD/MM/YYYY',
24
- LL : 'D MMMM YYYY',
25
- LLL : 'D MMMM YYYY HH:mm',
26
- LLLL : 'dddd, D MMMM YYYY HH:mm'
27
- },
28
- calendar : {
29
- sameDay: '[Oggi alle] LT',
30
- nextDay: '[Domani alle] LT',
31
- nextWeek: 'dddd [alle] LT',
32
- lastDay: '[Ieri alle] LT',
33
- lastWeek: function () {
34
- switch (this.day()) {
35
- case 0:
36
- return '[la scorsa] dddd [alle] LT';
37
- default:
38
- return '[lo scorso] dddd [alle] LT';
39
- }
40
- },
41
- sameElse: 'L'
42
- },
43
- relativeTime : {
44
- future : function (s) {
45
- return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
46
- },
47
- past : '%s fa',
48
- s : 'alcuni secondi',
49
- m : 'un minuto',
50
- mm : '%d minuti',
51
- h : 'un\'ora',
52
- hh : '%d ore',
53
- d : 'un giorno',
54
- dd : '%d giorni',
55
- M : 'un mese',
56
- MM : '%d mesi',
57
- y : 'un anno',
58
- yy : '%d anni'
59
- },
60
- ordinalParse : /\d{1,2}º/,
61
- ordinal: '%dº',
62
- week : {
63
- dow : 1, // Monday is the first day of the week.
64
- doy : 4 // The week that contains Jan 4th is the first week of the year.
65
- }
66
- });
67
-
68
- return it;
69
-
70
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/it.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";return e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/ja.js DELETED
@@ -1,76 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Japanese [ja]
3
- //! author : LI Long : https://github.com/baryon
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var ja = moment.defineLocale('ja', {
14
- months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
15
- monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
16
- weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
17
- weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
18
- weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
19
- longDateFormat : {
20
- LT : 'Ah時m分',
21
- LTS : 'Ah時m分s秒',
22
- L : 'YYYY/MM/DD',
23
- LL : 'YYYY年M月D日',
24
- LLL : 'YYYY年M月D日Ah時m分',
25
- LLLL : 'YYYY年M月D日Ah時m分 dddd'
26
- },
27
- meridiemParse: /午前|午後/i,
28
- isPM : function (input) {
29
- return input === '午後';
30
- },
31
- meridiem : function (hour, minute, isLower) {
32
- if (hour < 12) {
33
- return '午前';
34
- } else {
35
- return '午後';
36
- }
37
- },
38
- calendar : {
39
- sameDay : '[今日] LT',
40
- nextDay : '[明日] LT',
41
- nextWeek : '[来週]dddd LT',
42
- lastDay : '[昨日] LT',
43
- lastWeek : '[前週]dddd LT',
44
- sameElse : 'L'
45
- },
46
- ordinalParse : /\d{1,2}日/,
47
- ordinal : function (number, period) {
48
- switch (period) {
49
- case 'd':
50
- case 'D':
51
- case 'DDD':
52
- return number + '日';
53
- default:
54
- return number;
55
- }
56
- },
57
- relativeTime : {
58
- future : '%s後',
59
- past : '%s前',
60
- s : '数秒',
61
- m : '1分',
62
- mm : '%d分',
63
- h : '1時間',
64
- hh : '%d時間',
65
- d : '1日',
66
- dd : '%d日',
67
- M : '1ヶ月',
68
- MM : '%dヶ月',
69
- y : '1年',
70
- yy : '%d年'
71
- }
72
- });
73
-
74
- return ja;
75
-
76
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ja.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,_,t){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},ordinalParse:/\d{1,2}日/,ordinal:function(e,_){switch(_){case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})});
 
bp-core/js/vendor/moment-js/locale/jv.js DELETED
@@ -1,83 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Japanese [jv]
3
- //! author : Rony Lantip : https://github.com/lantip
4
- //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- var jv = moment.defineLocale('jv', {
15
- months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
16
- monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
17
- weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
18
- weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
19
- weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
20
- longDateFormat : {
21
- LT : 'HH.mm',
22
- LTS : 'HH.mm.ss',
23
- L : 'DD/MM/YYYY',
24
- LL : 'D MMMM YYYY',
25
- LLL : 'D MMMM YYYY [pukul] HH.mm',
26
- LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
27
- },
28
- meridiemParse: /enjing|siyang|sonten|ndalu/,
29
- meridiemHour : function (hour, meridiem) {
30
- if (hour === 12) {
31
- hour = 0;
32
- }
33
- if (meridiem === 'enjing') {
34
- return hour;
35
- } else if (meridiem === 'siyang') {
36
- return hour >= 11 ? hour : hour + 12;
37
- } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
38
- return hour + 12;
39
- }
40
- },
41
- meridiem : function (hours, minutes, isLower) {
42
- if (hours < 11) {
43
- return 'enjing';
44
- } else if (hours < 15) {
45
- return 'siyang';
46
- } else if (hours < 19) {
47
- return 'sonten';
48
- } else {
49
- return 'ndalu';
50
- }
51
- },
52
- calendar : {
53
- sameDay : '[Dinten puniko pukul] LT',
54
- nextDay : '[Mbenjang pukul] LT',
55
- nextWeek : 'dddd [pukul] LT',
56
- lastDay : '[Kala wingi pukul] LT',
57
- lastWeek : 'dddd [kepengker pukul] LT',
58
- sameElse : 'L'
59
- },
60
- relativeTime : {
61
- future : 'wonten ing %s',
62
- past : '%s ingkang kepengker',
63
- s : 'sawetawis detik',
64
- m : 'setunggal menit',
65
- mm : '%d menit',
66
- h : 'setunggal jam',
67
- hh : '%d jam',
68
- d : 'sedinten',
69
- dd : '%d dinten',
70
- M : 'sewulan',
71
- MM : '%d wulan',
72
- y : 'setaun',
73
- yy : '%d taun'
74
- },
75
- week : {
76
- dow : 1, // Monday is the first day of the week.
77
- doy : 7 // The week that contains Jan 1st is the first week of the year.
78
- }
79
- });
80
-
81
- return jv;
82
-
83
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/jv.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";return e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,n){return 12===e&&(e=0),"enjing"===n?e:"siyang"===n?e>=11?e:e+12:"sonten"===n||"ndalu"===n?e+12:void 0},meridiem:function(e,n,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/ka.js DELETED
@@ -1,89 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Georgian [ka]
3
- //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var ka = moment.defineLocale('ka', {
14
- months : {
15
- standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
16
- format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
17
- },
18
- monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
19
- weekdays : {
20
- standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
21
- format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
22
- isFormat: /(წინა|შემდეგ)/
23
- },
24
- weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
25
- weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
26
- longDateFormat : {
27
- LT : 'h:mm A',
28
- LTS : 'h:mm:ss A',
29
- L : 'DD/MM/YYYY',
30
- LL : 'D MMMM YYYY',
31
- LLL : 'D MMMM YYYY h:mm A',
32
- LLLL : 'dddd, D MMMM YYYY h:mm A'
33
- },
34
- calendar : {
35
- sameDay : '[დღეს] LT[-ზე]',
36
- nextDay : '[ხვალ] LT[-ზე]',
37
- lastDay : '[გუშინ] LT[-ზე]',
38
- nextWeek : '[შემდეგ] dddd LT[-ზე]',
39
- lastWeek : '[წინა] dddd LT-ზე',
40
- sameElse : 'L'
41
- },
42
- relativeTime : {
43
- future : function (s) {
44
- return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
45
- s.replace(/ი$/, 'ში') :
46
- s + 'ში';
47
- },
48
- past : function (s) {
49
- if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
50
- return s.replace(/(ი|ე)$/, 'ის წინ');
51
- }
52
- if ((/წელი/).test(s)) {
53
- return s.replace(/წელი$/, 'წლის წინ');
54
- }
55
- },
56
- s : 'რამდენიმე წამი',
57
- m : 'წუთი',
58
- mm : '%d წუთი',
59
- h : 'საათი',
60
- hh : '%d საათი',
61
- d : 'დღე',
62
- dd : '%d დღე',
63
- M : 'თვე',
64
- MM : '%d თვე',
65
- y : 'წელი',
66
- yy : '%d წელი'
67
- },
68
- ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
69
- ordinal : function (number) {
70
- if (number === 0) {
71
- return number;
72
- }
73
- if (number === 1) {
74
- return number + '-ლი';
75
- }
76
- if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
77
- return 'მე-' + number;
78
- }
79
- return number + '-ე';
80
- },
81
- week : {
82
- dow : 1,
83
- doy : 7
84
- }
85
- });
86
-
87
- return ka;
88
-
89
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ka.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/kk.js DELETED
@@ -1,87 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Kazakh [kk]
3
- //! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var suffixes = {
14
- 0: '-ші',
15
- 1: '-ші',
16
- 2: '-ші',
17
- 3: '-ші',
18
- 4: '-ші',
19
- 5: '-ші',
20
- 6: '-шы',
21
- 7: '-ші',
22
- 8: '-ші',
23
- 9: '-шы',
24
- 10: '-шы',
25
- 20: '-шы',
26
- 30: '-шы',
27
- 40: '-шы',
28
- 50: '-ші',
29
- 60: '-шы',
30
- 70: '-ші',
31
- 80: '-ші',
32
- 90: '-шы',
33
- 100: '-ші'
34
- };
35
-
36
- var kk = moment.defineLocale('kk', {
37
- months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
38
- monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
39
- weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
40
- weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
41
- weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
42
- longDateFormat : {
43
- LT : 'HH:mm',
44
- LTS : 'HH:mm:ss',
45
- L : 'DD.MM.YYYY',
46
- LL : 'D MMMM YYYY',
47
- LLL : 'D MMMM YYYY HH:mm',
48
- LLLL : 'dddd, D MMMM YYYY HH:mm'
49
- },
50
- calendar : {
51
- sameDay : '[Бүгін сағат] LT',
52
- nextDay : '[Ертең сағат] LT',
53
- nextWeek : 'dddd [сағат] LT',
54
- lastDay : '[Кеше сағат] LT',
55
- lastWeek : '[Өткен аптаның] dddd [сағат] LT',
56
- sameElse : 'L'
57
- },
58
- relativeTime : {
59
- future : '%s ішінде',
60
- past : '%s бұрын',
61
- s : 'бірнеше секунд',
62
- m : 'бір минут',
63
- mm : '%d минут',
64
- h : 'бір сағат',
65
- hh : '%d сағат',
66
- d : 'бір күн',
67
- dd : '%d күн',
68
- M : 'бір ай',
69
- MM : '%d ай',
70
- y : 'бір жыл',
71
- yy : '%d жыл'
72
- },
73
- ordinalParse: /\d{1,2}-(ші|шы)/,
74
- ordinal : function (number) {
75
- var a = number % 10,
76
- b = number >= 100 ? 100 : null;
77
- return number + (suffixes[number] || suffixes[a] || suffixes[b]);
78
- },
79
- week : {
80
- dow : 1, // Monday is the first day of the week.
81
- doy : 7 // The week that contains Jan 1st is the first week of the year.
82
- }
83
- });
84
-
85
- return kk;
86
-
87
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/kk.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";var _={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},ordinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var d=e%10,t=e>=100?100:null;return e+(_[e]||_[d]||_[t])},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/km.js DELETED
@@ -1,58 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Cambodian [km]
3
- //! author : Kruy Vanna : https://github.com/kruyvanna
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var km = moment.defineLocale('km', {
14
- months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
15
- monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
16
- weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
17
- weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
18
- weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
19
- longDateFormat: {
20
- LT: 'HH:mm',
21
- LTS : 'HH:mm:ss',
22
- L: 'DD/MM/YYYY',
23
- LL: 'D MMMM YYYY',
24
- LLL: 'D MMMM YYYY HH:mm',
25
- LLLL: 'dddd, D MMMM YYYY HH:mm'
26
- },
27
- calendar: {
28
- sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
29
- nextDay: '[ស្អែក ម៉ោង] LT',
30
- nextWeek: 'dddd [ម៉ោង] LT',
31
- lastDay: '[ម្សិលមិញ ម៉ោង] LT',
32
- lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
33
- sameElse: 'L'
34
- },
35
- relativeTime: {
36
- future: '%sទៀត',
37
- past: '%sមុន',
38
- s: 'ប៉ុន្មានវិនាទី',
39
- m: 'មួយនាទី',
40
- mm: '%d នាទី',
41
- h: 'មួយម៉ោង',
42
- hh: '%d ម៉ោង',
43
- d: 'មួយថ្ងៃ',
44
- dd: '%d ថ្ងៃ',
45
- M: 'មួយខែ',
46
- MM: '%d ខែ',
47
- y: 'មួយឆ្នាំ',
48
- yy: '%d ឆ្នាំ'
49
- },
50
- week: {
51
- dow: 1, // Monday is the first day of the week.
52
- doy: 4 // The week that contains Jan 4th is the first week of the year.
53
- }
54
- });
55
-
56
- return km;
57
-
58
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/km.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/ko.js DELETED
@@ -1,65 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Korean [ko]
3
- //! author : Kyungwook, Park : https://github.com/kyungw00k
4
- //! author : Jeeeyul Lee <jeeeyul@gmail.com>
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- var ko = moment.defineLocale('ko', {
15
- months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
16
- monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
17
- weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
18
- weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
19
- weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
20
- longDateFormat : {
21
- LT : 'A h시 m분',
22
- LTS : 'A h시 m분 s초',
23
- L : 'YYYY.MM.DD',
24
- LL : 'YYYY년 MMMM D일',
25
- LLL : 'YYYY년 MMMM D일 A h시 m분',
26
- LLLL : 'YYYY년 MMMM D일 dddd A h시 m분'
27
- },
28
- calendar : {
29
- sameDay : '오늘 LT',
30
- nextDay : '내일 LT',
31
- nextWeek : 'dddd LT',
32
- lastDay : '어제 LT',
33
- lastWeek : '지난주 dddd LT',
34
- sameElse : 'L'
35
- },
36
- relativeTime : {
37
- future : '%s 후',
38
- past : '%s 전',
39
- s : '몇 초',
40
- ss : '%d초',
41
- m : '일분',
42
- mm : '%d분',
43
- h : '한 시간',
44
- hh : '%d시간',
45
- d : '하루',
46
- dd : '%d일',
47
- M : '한 달',
48
- MM : '%d달',
49
- y : '일 년',
50
- yy : '%d년'
51
- },
52
- ordinalParse : /\d{1,2}일/,
53
- ordinal : '%d일',
54
- meridiemParse : /오전|오후/,
55
- isPM : function (token) {
56
- return token === '오후';
57
- },
58
- meridiem : function (hour, minute, isUpper) {
59
- return hour < 12 ? '오전' : '오후';
60
- }
61
- });
62
-
63
- return ko;
64
-
65
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ko.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"일분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,_,d){return e<12?"오전":"오후"}})});
 
bp-core/js/vendor/moment-js/locale/ky.js DELETED
@@ -1,88 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Kyrgyz [ky]
3
- //! author : Chyngyz Arystan uulu : https://github.com/chyngyz
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
-
14
- var suffixes = {
15
- 0: '-чү',
16
- 1: '-чи',
17
- 2: '-чи',
18
- 3: '-чү',
19
- 4: '-чү',
20
- 5: '-чи',
21
- 6: '-чы',
22
- 7: '-чи',
23
- 8: '-чи',
24
- 9: '-чу',
25
- 10: '-чу',
26
- 20: '-чы',
27
- 30: '-чу',
28
- 40: '-чы',
29
- 50: '-чү',
30
- 60: '-чы',
31
- 70: '-чи',
32
- 80: '-чи',
33
- 90: '-чу',
34
- 100: '-чү'
35
- };
36
-
37
- var ky = moment.defineLocale('ky', {
38
- months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
39
- monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
40
- weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
41
- weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
42
- weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
43
- longDateFormat : {
44
- LT : 'HH:mm',
45
- LTS : 'HH:mm:ss',
46
- L : 'DD.MM.YYYY',
47
- LL : 'D MMMM YYYY',
48
- LLL : 'D MMMM YYYY HH:mm',
49
- LLLL : 'dddd, D MMMM YYYY HH:mm'
50
- },
51
- calendar : {
52
- sameDay : '[Бүгүн саат] LT',
53
- nextDay : '[Эртең саат] LT',
54
- nextWeek : 'dddd [саат] LT',
55
- lastDay : '[Кече саат] LT',
56
- lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',
57
- sameElse : 'L'
58
- },
59
- relativeTime : {
60
- future : '%s ичинде',
61
- past : '%s мурун',
62
- s : 'бирнече секунд',
63
- m : 'бир мүнөт',
64
- mm : '%d мүнөт',
65
- h : 'бир саат',
66
- hh : '%d саат',
67
- d : 'бир күн',
68
- dd : '%d күн',
69
- M : 'бир ай',
70
- MM : '%d ай',
71
- y : 'бир жыл',
72
- yy : '%d жыл'
73
- },
74
- ordinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
75
- ordinal : function (number) {
76
- var a = number % 10,
77
- b = number >= 100 ? 100 : null;
78
- return number + (suffixes[number] || suffixes[a] || suffixes[b]);
79
- },
80
- week : {
81
- dow : 1, // Monday is the first day of the week.
82
- doy : 7 // The week that contains Jan 1st is the first week of the year.
83
- }
84
- });
85
-
86
- return ky;
87
-
88
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ky.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";var _={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};return e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кече саат] LT",lastWeek:"[Өткен аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},ordinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){var d=e%10,t=e>=100?100:null;return e+(_[e]||_[d]||_[t])},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/lb.js DELETED
@@ -1,137 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Luxembourgish [lb]
3
- //! author : mweimerskirch : https://github.com/mweimerskirch
4
- //! author : David Raison : https://github.com/kwisatz
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
15
- var format = {
16
- 'm': ['eng Minutt', 'enger Minutt'],
17
- 'h': ['eng Stonn', 'enger Stonn'],
18
- 'd': ['een Dag', 'engem Dag'],
19
- 'M': ['ee Mount', 'engem Mount'],
20
- 'y': ['ee Joer', 'engem Joer']
21
- };
22
- return withoutSuffix ? format[key][0] : format[key][1];
23
- }
24
- function processFutureTime(string) {
25
- var number = string.substr(0, string.indexOf(' '));
26
- if (eifelerRegelAppliesToNumber(number)) {
27
- return 'a ' + string;
28
- }
29
- return 'an ' + string;
30
- }
31
- function processPastTime(string) {
32
- var number = string.substr(0, string.indexOf(' '));
33
- if (eifelerRegelAppliesToNumber(number)) {
34
- return 'viru ' + string;
35
- }
36
- return 'virun ' + string;
37
- }
38
- /**
39
- * Returns true if the word before the given number loses the '-n' ending.
40
- * e.g. 'an 10 Deeg' but 'a 5 Deeg'
41
- *
42
- * @param number {integer}
43
- * @returns {boolean}
44
- */
45
- function eifelerRegelAppliesToNumber(number) {
46
- number = parseInt(number, 10);
47
- if (isNaN(number)) {
48
- return false;
49
- }
50
- if (number < 0) {
51
- // Negative Number --> always true
52
- return true;
53
- } else if (number < 10) {
54
- // Only 1 digit
55
- if (4 <= number && number <= 7) {
56
- return true;
57
- }
58
- return false;
59
- } else if (number < 100) {
60
- // 2 digits
61
- var lastDigit = number % 10, firstDigit = number / 10;
62
- if (lastDigit === 0) {
63
- return eifelerRegelAppliesToNumber(firstDigit);
64
- }
65
- return eifelerRegelAppliesToNumber(lastDigit);
66
- } else if (number < 10000) {
67
- // 3 or 4 digits --> recursively check first digit
68
- while (number >= 10) {
69
- number = number / 10;
70
- }
71
- return eifelerRegelAppliesToNumber(number);
72
- } else {
73
- // Anything larger than 4 digits: recursively check first n-3 digits
74
- number = number / 1000;
75
- return eifelerRegelAppliesToNumber(number);
76
- }
77
- }
78
-
79
- var lb = moment.defineLocale('lb', {
80
- months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
81
- monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
82
- monthsParseExact : true,
83
- weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
84
- weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
85
- weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
86
- weekdaysParseExact : true,
87
- longDateFormat: {
88
- LT: 'H:mm [Auer]',
89
- LTS: 'H:mm:ss [Auer]',
90
- L: 'DD.MM.YYYY',
91
- LL: 'D. MMMM YYYY',
92
- LLL: 'D. MMMM YYYY H:mm [Auer]',
93
- LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
94
- },
95
- calendar: {
96
- sameDay: '[Haut um] LT',
97
- sameElse: 'L',
98
- nextDay: '[Muer um] LT',
99
- nextWeek: 'dddd [um] LT',
100
- lastDay: '[Gëschter um] LT',
101
- lastWeek: function () {
102
- // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
103
- switch (this.day()) {
104
- case 2:
105
- case 4:
106
- return '[Leschten] dddd [um] LT';
107
- default:
108
- return '[Leschte] dddd [um] LT';
109
- }
110
- }
111
- },
112
- relativeTime : {
113
- future : processFutureTime,
114
- past : processPastTime,
115
- s : 'e puer Sekonnen',
116
- m : processRelativeTime,
117
- mm : '%d Minutten',
118
- h : processRelativeTime,
119
- hh : '%d Stonnen',
120
- d : processRelativeTime,
121
- dd : '%d Deeg',
122
- M : processRelativeTime,
123
- MM : '%d Méint',
124
- y : processRelativeTime,
125
- yy : '%d Joer'
126
- },
127
- ordinalParse: /\d{1,2}\./,
128
- ordinal: '%d.',
129
- week: {
130
- dow: 1, // Monday is the first day of the week.
131
- doy: 4 // The week that contains Jan 4th is the first week of the year.
132
- }
133
- });
134
-
135
- return lb;
136
-
137
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/lb.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,t,r){var u={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return n?u[t][0]:u[t][1]}function t(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var n=e%10,r=e/10;return t(0===n?r:n)}if(e<1e4){for(;e>=10;)e/=10;return t(e)}return e/=1e3,t(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return t(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return t(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",m:n,mm:"%d Minutten",h:n,hh:"%d Stonnen",d:n,dd:"%d Deeg",M:n,MM:"%d Méint",y:n,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/lo.js DELETED
@@ -1,70 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Lao [lo]
3
- //! author : Ryan Hart : https://github.com/ryanhart2
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var lo = moment.defineLocale('lo', {
14
- months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
15
- monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
16
- weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
17
- weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
18
- weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
19
- weekdaysParseExact : true,
20
- longDateFormat : {
21
- LT : 'HH:mm',
22
- LTS : 'HH:mm:ss',
23
- L : 'DD/MM/YYYY',
24
- LL : 'D MMMM YYYY',
25
- LLL : 'D MMMM YYYY HH:mm',
26
- LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
27
- },
28
- meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
29
- isPM: function (input) {
30
- return input === 'ຕອນແລງ';
31
- },
32
- meridiem : function (hour, minute, isLower) {
33
- if (hour < 12) {
34
- return 'ຕອນເຊົ້າ';
35
- } else {
36
- return 'ຕອນແລງ';
37
- }
38
- },
39
- calendar : {
40
- sameDay : '[ມື້ນີ້ເວລາ] LT',
41
- nextDay : '[ມື້ອື່ນເວລາ] LT',
42
- nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
43
- lastDay : '[ມື້ວານນີ້ເວລາ] LT',
44
- lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
45
- sameElse : 'L'
46
- },
47
- relativeTime : {
48
- future : 'ອີກ %s',
49
- past : '%sຜ່ານມາ',
50
- s : 'ບໍ່ເທົ່າໃດວິນາທີ',
51
- m : '1 ນາທີ',
52
- mm : '%d ນາທີ',
53
- h : '1 ຊົ່ວໂມງ',
54
- hh : '%d ຊົ່ວໂມງ',
55
- d : '1 ມື້',
56
- dd : '%d ມື້',
57
- M : '1 ເດືອນ',
58
- MM : '%d ເດືອນ',
59
- y : '1 ປີ',
60
- yy : '%d ປີ'
61
- },
62
- ordinalParse: /(ທີ່)\d{1,2}/,
63
- ordinal : function (number) {
64
- return 'ທີ່' + number;
65
- }
66
- });
67
-
68
- return lo;
69
-
70
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/lo.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,_,t){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},ordinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})});
 
bp-core/js/vendor/moment-js/locale/lt.js DELETED
@@ -1,117 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Lithuanian [lt]
3
- //! author : Mindaugas Mozūras : https://github.com/mmozuras
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var units = {
14
- 'm' : 'minutė_minutės_minutę',
15
- 'mm': 'minutės_minučių_minutes',
16
- 'h' : 'valanda_valandos_valandą',
17
- 'hh': 'valandos_valandų_valandas',
18
- 'd' : 'diena_dienos_dieną',
19
- 'dd': 'dienos_dienų_dienas',
20
- 'M' : 'mėnuo_mėnesio_mėnesį',
21
- 'MM': 'mėnesiai_mėnesių_mėnesius',
22
- 'y' : 'metai_metų_metus',
23
- 'yy': 'metai_metų_metus'
24
- };
25
- function translateSeconds(number, withoutSuffix, key, isFuture) {
26
- if (withoutSuffix) {
27
- return 'kelios sekundės';
28
- } else {
29
- return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
30
- }
31
- }
32
- function translateSingular(number, withoutSuffix, key, isFuture) {
33
- return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
34
- }
35
- function special(number) {
36
- return number % 10 === 0 || (number > 10 && number < 20);
37
- }
38
- function forms(key) {
39
- return units[key].split('_');
40
- }
41
- function translate(number, withoutSuffix, key, isFuture) {
42
- var result = number + ' ';
43
- if (number === 1) {
44
- return result + translateSingular(number, withoutSuffix, key[0], isFuture);
45
- } else if (withoutSuffix) {
46
- return result + (special(number) ? forms(key)[1] : forms(key)[0]);
47
- } else {
48
- if (isFuture) {
49
- return result + forms(key)[1];
50
- } else {
51
- return result + (special(number) ? forms(key)[1] : forms(key)[2]);
52
- }
53
- }
54
- }
55
- var lt = moment.defineLocale('lt', {
56
- months : {
57
- format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
58
- standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
59
- isFormat: /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/
60
- },
61
- monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
62
- weekdays : {
63
- format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
64
- standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
65
- isFormat: /dddd HH:mm/
66
- },
67
- weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
68
- weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),
69
- weekdaysParseExact : true,
70
- longDateFormat : {
71
- LT : 'HH:mm',
72
- LTS : 'HH:mm:ss',
73
- L : 'YYYY-MM-DD',
74
- LL : 'YYYY [m.] MMMM D [d.]',
75
- LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
76
- LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
77
- l : 'YYYY-MM-DD',
78
- ll : 'YYYY [m.] MMMM D [d.]',
79
- lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
80
- llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
81
- },
82
- calendar : {
83
- sameDay : '[Šiandien] LT',
84
- nextDay : '[Rytoj] LT',
85
- nextWeek : 'dddd LT',
86
- lastDay : '[Vakar] LT',
87
- lastWeek : '[Praėjusį] dddd LT',
88
- sameElse : 'L'
89
- },
90
- relativeTime : {
91
- future : 'po %s',
92
- past : 'prieš %s',
93
- s : translateSeconds,
94
- m : translateSingular,
95
- mm : translate,
96
- h : translateSingular,
97
- hh : translate,
98
- d : translateSingular,
99
- dd : translate,
100
- M : translateSingular,
101
- MM : translate,
102
- y : translateSingular,
103
- yy : translate
104
- },
105
- ordinalParse: /\d{1,2}-oji/,
106
- ordinal : function (number) {
107
- return number + '-oji';
108
- },
109
- week : {
110
- dow : 1, // Monday is the first day of the week.
111
- doy : 4 // The week that contains Jan 4th is the first week of the year.
112
- }
113
- });
114
-
115
- return lt;
116
-
117
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/lt.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,i){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?i(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],i):i(e.moment)}(this,function(e){"use strict";function i(e,i,n,s){return i?a(n)[0]:s?a(n)[1]:a(n)[2]}function n(e){return e%10==0||e>10&&e<20}function a(e){return d[e].split("_")}function s(e,s,d,t){var _=e+" ";return 1===e?_+i(e,s,d[0],t):s?_+(n(e)?a(d)[1]:a(d)[0]):t?_+a(d)[1]:_+(n(e)?a(d)[1]:a(d)[2])}var d={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,i,n,a){return i?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"},m:i,mm:s,h:i,hh:s,d:i,dd:s,M:i,MM:s,y:i,yy:s},ordinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/lv.js DELETED
@@ -1,97 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Latvian [lv]
3
- //! author : Kristaps Karlsons : https://github.com/skakri
4
- //! author : Jānis Elmeris : https://github.com/JanisE
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- var units = {
15
- 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
16
- 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
17
- 'h': 'stundas_stundām_stunda_stundas'.split('_'),
18
- 'hh': 'stundas_stundām_stunda_stundas'.split('_'),
19
- 'd': 'dienas_dienām_diena_dienas'.split('_'),
20
- 'dd': 'dienas_dienām_diena_dienas'.split('_'),
21
- 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
22
- 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
23
- 'y': 'gada_gadiem_gads_gadi'.split('_'),
24
- 'yy': 'gada_gadiem_gads_gadi'.split('_')
25
- };
26
- /**
27
- * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
28
- */
29
- function format(forms, number, withoutSuffix) {
30
- if (withoutSuffix) {
31
- // E.g. "21 minūte", "3 minūtes".
32
- return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
33
- } else {
34
- // E.g. "21 minūtes" as in "pēc 21 minūtes".
35
- // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
36
- return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
37
- }
38
- }
39
- function relativeTimeWithPlural(number, withoutSuffix, key) {
40
- return number + ' ' + format(units[key], number, withoutSuffix);
41
- }
42
- function relativeTimeWithSingular(number, withoutSuffix, key) {
43
- return format(units[key], number, withoutSuffix);
44
- }
45
- function relativeSeconds(number, withoutSuffix) {
46
- return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
47
- }
48
-
49
- var lv = moment.defineLocale('lv', {
50
- months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
51
- monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
52
- weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
53
- weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
54
- weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
55
- weekdaysParseExact : true,
56
- longDateFormat : {
57
- LT : 'HH:mm',
58
- LTS : 'HH:mm:ss',
59
- L : 'DD.MM.YYYY.',
60
- LL : 'YYYY. [gada] D. MMMM',
61
- LLL : 'YYYY. [gada] D. MMMM, HH:mm',
62
- LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
63
- },
64
- calendar : {
65
- sameDay : '[Šodien pulksten] LT',
66
- nextDay : '[Rīt pulksten] LT',
67
- nextWeek : 'dddd [pulksten] LT',
68
- lastDay : '[Vakar pulksten] LT',
69
- lastWeek : '[Pagājušā] dddd [pulksten] LT',
70
- sameElse : 'L'
71
- },
72
- relativeTime : {
73
- future : 'pēc %s',
74
- past : 'pirms %s',
75
- s : relativeSeconds,
76
- m : relativeTimeWithSingular,
77
- mm : relativeTimeWithPlural,
78
- h : relativeTimeWithSingular,
79
- hh : relativeTimeWithPlural,
80
- d : relativeTimeWithSingular,
81
- dd : relativeTimeWithPlural,
82
- M : relativeTimeWithSingular,
83
- MM : relativeTimeWithPlural,
84
- y : relativeTimeWithSingular,
85
- yy : relativeTimeWithPlural
86
- },
87
- ordinalParse: /\d{1,2}\./,
88
- ordinal : '%d.',
89
- week : {
90
- dow : 1, // Monday is the first day of the week.
91
- doy : 4 // The week that contains Jan 4th is the first week of the year.
92
- }
93
- });
94
-
95
- return lv;
96
-
97
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/lv.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,s){return s?n%10==1&&n%100!=11?e[2]:e[3]:n%10==1&&n%100!=11?e[0]:e[1]}function s(e,s,t){return e+" "+n(i[t],e,s)}function t(e,s,t){return n(i[t],e,s)}var i={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,n){return n?"dažas sekundes":"dažām sekundēm"},m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/me.js DELETED
@@ -1,111 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Montenegrin [me]
3
- //! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var translator = {
14
- words: { //Different grammatical cases
15
- m: ['jedan minut', 'jednog minuta'],
16
- mm: ['minut', 'minuta', 'minuta'],
17
- h: ['jedan sat', 'jednog sata'],
18
- hh: ['sat', 'sata', 'sati'],
19
- dd: ['dan', 'dana', 'dana'],
20
- MM: ['mjesec', 'mjeseca', 'mjeseci'],
21
- yy: ['godina', 'godine', 'godina']
22
- },
23
- correctGrammaticalCase: function (number, wordKey) {
24
- return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
25
- },
26
- translate: function (number, withoutSuffix, key) {
27
- var wordKey = translator.words[key];
28
- if (key.length === 1) {
29
- return withoutSuffix ? wordKey[0] : wordKey[1];
30
- } else {
31
- return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
32
- }
33
- }
34
- };
35
-
36
- var me = moment.defineLocale('me', {
37
- months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
38
- monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
39
- monthsParseExact : true,
40
- weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
41
- weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
42
- weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
43
- weekdaysParseExact : true,
44
- longDateFormat: {
45
- LT: 'H:mm',
46
- LTS : 'H:mm:ss',
47
- L: 'DD.MM.YYYY',
48
- LL: 'D. MMMM YYYY',
49
- LLL: 'D. MMMM YYYY H:mm',
50
- LLLL: 'dddd, D. MMMM YYYY H:mm'
51
- },
52
- calendar: {
53
- sameDay: '[danas u] LT',
54
- nextDay: '[sjutra u] LT',
55
-
56
- nextWeek: function () {
57
- switch (this.day()) {
58
- case 0:
59
- return '[u] [nedjelju] [u] LT';
60
- case 3:
61
- return '[u] [srijedu] [u] LT';
62
- case 6:
63
- return '[u] [subotu] [u] LT';
64
- case 1:
65
- case 2:
66
- case 4:
67
- case 5:
68
- return '[u] dddd [u] LT';
69
- }
70
- },
71
- lastDay : '[juče u] LT',
72
- lastWeek : function () {
73
- var lastWeekDays = [
74
- '[prošle] [nedjelje] [u] LT',
75
- '[prošlog] [ponedjeljka] [u] LT',
76
- '[prošlog] [utorka] [u] LT',
77
- '[prošle] [srijede] [u] LT',
78
- '[prošlog] [četvrtka] [u] LT',
79
- '[prošlog] [petka] [u] LT',
80
- '[prošle] [subote] [u] LT'
81
- ];
82
- return lastWeekDays[this.day()];
83
- },
84
- sameElse : 'L'
85
- },
86
- relativeTime : {
87
- future : 'za %s',
88
- past : 'prije %s',
89
- s : 'nekoliko sekundi',
90
- m : translator.translate,
91
- mm : translator.translate,
92
- h : translator.translate,
93
- hh : translator.translate,
94
- d : 'dan',
95
- dd : translator.translate,
96
- M : 'mjesec',
97
- MM : translator.translate,
98
- y : 'godinu',
99
- yy : translator.translate
100
- },
101
- ordinalParse: /\d{1,2}\./,
102
- ordinal : '%d.',
103
- week : {
104
- dow : 1, // Monday is the first day of the week.
105
- doy : 7 // The week that contains Jan 1st is the first week of the year.
106
- }
107
- });
108
-
109
- return me;
110
-
111
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/me.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";var a={words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mjesec",MM:a.translate,y:"godinu",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/mi.js DELETED
@@ -1,64 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Maori [mi]
3
- //! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var mi = moment.defineLocale('mi', {
14
- months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),
15
- monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
16
- monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
17
- monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
18
- monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
19
- monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
20
- weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
21
- weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
22
- weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
23
- longDateFormat: {
24
- LT: 'HH:mm',
25
- LTS: 'HH:mm:ss',
26
- L: 'DD/MM/YYYY',
27
- LL: 'D MMMM YYYY',
28
- LLL: 'D MMMM YYYY [i] HH:mm',
29
- LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
30
- },
31
- calendar: {
32
- sameDay: '[i teie mahana, i] LT',
33
- nextDay: '[apopo i] LT',
34
- nextWeek: 'dddd [i] LT',
35
- lastDay: '[inanahi i] LT',
36
- lastWeek: 'dddd [whakamutunga i] LT',
37
- sameElse: 'L'
38
- },
39
- relativeTime: {
40
- future: 'i roto i %s',
41
- past: '%s i mua',
42
- s: 'te hēkona ruarua',
43
- m: 'he meneti',
44
- mm: '%d meneti',
45
- h: 'te haora',
46
- hh: '%d haora',
47
- d: 'he ra',
48
- dd: '%d ra',
49
- M: 'he marama',
50
- MM: '%d marama',
51
- y: 'he tau',
52
- yy: '%d tau'
53
- },
54
- ordinalParse: /\d{1,2}º/,
55
- ordinal: '%dº',
56
- week : {
57
- dow : 1, // Monday is the first day of the week.
58
- doy : 4 // The week that contains Jan 4th is the first week of the year.
59
- }
60
- });
61
-
62
- return mi;
63
-
64
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/mi.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";return e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})});
 
bp-core/js/vendor/moment-js/locale/mk.js DELETED
@@ -1,90 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Macedonian [mk]
3
- //! author : Borislav Mickov : https://github.com/B0k0
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var mk = moment.defineLocale('mk', {
14
- months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
15
- monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
16
- weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
17
- weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
18
- weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
19
- longDateFormat : {
20
- LT : 'H:mm',
21
- LTS : 'H:mm:ss',
22
- L : 'D.MM.YYYY',
23
- LL : 'D MMMM YYYY',
24
- LLL : 'D MMMM YYYY H:mm',
25
- LLLL : 'dddd, D MMMM YYYY H:mm'
26
- },
27
- calendar : {
28
- sameDay : '[Денес во] LT',
29
- nextDay : '[Утре во] LT',
30
- nextWeek : '[Во] dddd [во] LT',
31
- lastDay : '[Вчера во] LT',
32
- lastWeek : function () {
33
- switch (this.day()) {
34
- case 0:
35
- case 3:
36
- case 6:
37
- return '[Изминатата] dddd [во] LT';
38
- case 1:
39
- case 2:
40
- case 4:
41
- case 5:
42
- return '[Изминатиот] dddd [во] LT';
43
- }
44
- },
45
- sameElse : 'L'
46
- },
47
- relativeTime : {
48
- future : 'после %s',
49
- past : 'пред %s',
50
- s : 'неколку секунди',
51
- m : 'минута',
52
- mm : '%d минути',
53
- h : 'час',
54
- hh : '%d часа',
55
- d : 'ден',
56
- dd : '%d дена',
57
- M : 'месец',
58
- MM : '%d месеци',
59
- y : 'година',
60
- yy : '%d години'
61
- },
62
- ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
63
- ordinal : function (number) {
64
- var lastDigit = number % 10,
65
- last2Digits = number % 100;
66
- if (number === 0) {
67
- return number + '-ев';
68
- } else if (last2Digits === 0) {
69
- return number + '-ен';
70
- } else if (last2Digits > 10 && last2Digits < 20) {
71
- return number + '-ти';
72
- } else if (lastDigit === 1) {
73
- return number + '-ви';
74
- } else if (lastDigit === 2) {
75
- return number + '-ри';
76
- } else if (lastDigit === 7 || lastDigit === 8) {
77
- return number + '-ми';
78
- } else {
79
- return number + '-ти';
80
- }
81
- },
82
- week : {
83
- dow : 1, // Monday is the first day of the week.
84
- doy : 7 // The week that contains Jan 1st is the first week of the year.
85
- }
86
- });
87
-
88
- return mk;
89
-
90
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/mk.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var _=e%10,d=e%100;return 0===e?e+"-ев":0===d?e+"-ен":d>10&&d<20?e+"-ти":1===_?e+"-ви":2===_?e+"-ри":7===_||8===_?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})});
 
bp-core/js/vendor/moment-js/locale/ml.js DELETED
@@ -1,81 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Malayalam [ml]
3
- //! author : Floyd Pink : https://github.com/floydpink
4
-
5
- ;(function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined'
7
- && typeof require === 'function' ? factory(require('../moment')) :
8
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
9
- factory(global.moment)
10
- }(this, function (moment) { 'use strict';
11
-
12
-
13
- var ml = moment.defineLocale('ml', {
14
- months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
15
- monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
16
- monthsParseExact : true,
17
- weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
18
- weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
19
- weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
20
- longDateFormat : {
21
- LT : 'A h:mm -നു',
22
- LTS : 'A h:mm:ss -നു',
23
- L : 'DD/MM/YYYY',
24
- LL : 'D MMMM YYYY',
25
- LLL : 'D MMMM YYYY, A h:mm -നു',
26
- LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
27
- },
28
- calendar : {
29
- sameDay : '[ഇന്ന്] LT',
30
- nextDay : '[നാളെ] LT',
31
- nextWeek : 'dddd, LT',
32
- lastDay : '[ഇന്നലെ] LT',
33
- lastWeek : '[കഴിഞ്ഞ] dddd, LT',
34
- sameElse : 'L'
35
- },
36
- relativeTime : {
37
- future : '%s കഴിഞ്ഞ്',
38
- past : '%s മുൻപ്',
39
- s : 'അൽപ നിമിഷങ്ങൾ',
40
- m : 'ഒരു മിനിറ്റ്',
41
- mm : '%d മിനിറ്റ്',
42
- h : 'ഒരു മണിക്കൂർ',
43
- hh : '%d മണിക്കൂർ',
44
- d : 'ഒരു ദിവസം',
45
- dd : '%d ദിവസം',
46
- M : 'ഒരു മാസം',
47
- MM : '%d മാസം',
48
- y : 'ഒരു വർഷം',
49
- yy : '%d വർഷം'
50
- },
51
- meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
52
- meridiemHour : function (hour, meridiem) {
53
- if (hour === 12) {
54
- hour = 0;
55
- }
56
- if ((meridiem === 'രാത്രി' && hour >= 4) ||
57
- meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
58
- meridiem === 'വൈകുന്നേരം') {
59
- return hour + 12;
60
- } else {
61
- return hour;
62
- }
63
- },
64
- meridiem : function (hour, minute, isLower) {
65
- if (hour < 4) {
66
- return 'രാത്രി';
67
- } else if (hour < 12) {
68
- return 'രാവിലെ';
69
- } else if (hour < 17) {
70
- return 'ഉച്ച കഴിഞ്ഞ്';
71
- } else if (hour < 20) {
72
- return 'വൈകുന്നേരം';
73
- } else {
74
- return 'രാത്രി';
75
- }
76
- }
77
- });
78
-
79
- return ml;
80
-
81
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/ml.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";return e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,_){return 12===e&&(e=0),"രാത്രി"===_&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===_||"വൈകുന്നേരം"===_?e+12:e},meridiem:function(e,_,t){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})});
 
bp-core/js/vendor/moment-js/locale/mr.js DELETED
@@ -1,159 +0,0 @@
1
- //! moment.js locale configuration
2
- //! locale : Marathi [mr]
3
- //! author : Harshad Kale : https://github.com/kalehv
4
- //! author : Vivek Athalye : https://github.com/vnathalye
5
-
6
- ;(function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined'
8
- && typeof require === 'function' ? factory(require('../moment')) :
9
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
10
- factory(global.moment)
11
- }(this, function (moment) { 'use strict';
12
-
13
-
14
- var symbolMap = {
15
- '1': '१',
16
- '2': '२',
17
- '3': '३',
18
- '4': '४',
19
- '5': '५',
20
- '6': '६',
21
- '7': '७',
22
- '8': '८',
23
- '9': '९',
24
- '0': '०'
25
- },
26
- numberMap = {
27
- '१': '1',
28
- '२': '2',
29
- '३': '3',
30
- '४': '4',
31
- '५': '5',
32
- '६': '6',
33
- '७': '7',
34
- '८': '8',
35
- '९': '9',
36
- '०': '0'
37
- };
38
-
39
- function relativeTimeMr(number, withoutSuffix, string, isFuture)
40
- {
41
- var output = '';
42
- if (withoutSuffix) {
43
- switch (string) {
44
- case 's': output = 'काही सेकंद'; break;
45
- case 'm': output = 'एक मिनिट'; break;
46
- case 'mm': output = '%d मिनिटे'; break;
47
- case 'h': output = 'एक तास'; break;
48
- case 'hh': output = '%d तास'; break;
49
- case 'd': output = 'एक दिवस'; break;
50
- case 'dd': output = '%d दिवस'; break;
51
- case 'M': output = 'एक महिना'; break;
52
- case 'MM': output = '%d महिने'; break;
53
- case 'y': output = 'एक वर्ष'; break;
54
- case 'yy': output = '%d वर्षे'; break;
55
- }
56
- }
57
- else {
58
- switch (string) {
59
- case 's': output = 'काही सेकंदां'; break;
60
- case 'm': output = 'एका मिनिटा'; break;
61
- case 'mm': output = '%d मिनिटां'; break;
62
- case 'h': output = 'एका तासा'; break;
63
- case 'hh': output = '%d तासां'; break;
64
- case 'd': output = 'एका दिवसा'; break;
65
- case 'dd': output = '%d दिवसां'; break;
66
- case 'M': output = 'एका महिन्या'; break;
67
- case 'MM': output = '%d महिन्यां'; break;
68
- case 'y': output = 'एका वर्षा'; break;
69
- case 'yy': output = '%d वर्षां'; break;
70
- }
71
- }
72
- return output.replace(/%d/i, number);
73
- }
74
-
75
- var mr = moment.defineLocale('mr', {
76
- months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
77
- monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
78
- monthsParseExact : true,
79
- weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
80
- weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
81
- weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
82
- longDateFormat : {
83
- LT : 'A h:mm वाजता',
84
- LTS : 'A h:mm:ss वाजता',
85
- L : 'DD/MM/YYYY',
86
- LL : 'D MMMM YYYY',
87
- LLL : 'D MMMM YYYY, A h:mm वाजता',
88
- LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
89
- },
90
- calendar : {
91
- sameDay : '[आज] LT',
92
- nextDay : '[उद्या] LT',
93
- nextWeek : 'dddd, LT',
94
- lastDay : '[काल] LT',
95
- lastWeek: '[मागील] dddd, LT',
96
- sameElse : 'L'
97
- },
98
- relativeTime : {
99
- future: '%sमध्ये',
100
- past: '%sपूर्वी',
101
- s: relativeTimeMr,
102
- m: relativeTimeMr,
103
- mm: relativeTimeMr,
104
- h: relativeTimeMr,
105
- hh: relativeTimeMr,
106
- d: relativeTimeMr,
107
- dd: relativeTimeMr,
108
- M: relativeTimeMr,
109
- MM: relativeTimeMr,
110
- y: relativeTimeMr,
111
- yy: relativeTimeMr
112
- },
113
- preparse: function (string) {
114
- return string.replace(/[१२३४५६७८९०]/g, function (match) {
115
- return numberMap[match];
116
- });
117
- },
118
- postformat: function (string) {
119
- return string.replace(/\d/g, function (match) {
120
- return symbolMap[match];
121
- });
122
- },
123
- meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
124
- meridiemHour : function (hour, meridiem) {
125
- if (hour === 12) {
126
- hour = 0;
127
- }
128
- if (meridiem === 'रात्री') {
129
- return hour < 4 ? hour : hour + 12;
130
- } else if (meridiem === 'सकाळी') {
131
- return hour;
132
- } else if (meridiem === 'दुपारी') {
133
- return hour >= 10 ? hour : hour + 12;
134
- } else if (meridiem === 'सायंकाळी') {
135
- return hour + 12;
136
- }
137
- },
138
- meridiem: function (hour, minute, isLower) {
139
- if (hour < 4) {
140
- return 'रात्री';
141
- } else if (hour < 10) {
142
- return 'सकाळी';
143
- } else if (hour < 17) {
144
- return 'दुपारी';
145
- } else if (hour < 20) {
146
- return 'सायंकाळी';
147
- } else {
148
- return 'रात्री';
149
- }
150
- },
151
- week : {
152
- dow : 0, // Sunday is the first day of the week.
153
- doy : 6 // The week that contains Jan 1st is the first week of the year.
154
- }
155
- });
156
-
157
- return mr;
158
-
159
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bp-core/js/vendor/moment-js/locale/mr.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";function a(e,a,r,s){var t="";if(a)switch(r){case"s":t="काही सेकंद";break;case"m":t="एक मिनिट";break;case"mm":t="%d मिनिटे";break;case"h":t="एक तास";break;case"hh":t="%d तास";break;case"d":t="एक दिवस";break;case"dd":t="%d दिवस";break;case"M":t="एक महिना";break;case"MM":t="%d महिने";break;case"y":t="एक वर्ष";break;case"yy":t="%d वर्षे"}else switch(r){case"s":t="काही सेकंदां";break;case"m":t="एका मिनिटा";break;case"mm":t="%d मिनिटां";break;case"h":t="एका तासा";break;case"hh":t="%d तासां";break;case"d":t="एका दिवसा";break;case"dd":t="%d दिवसां";break;case"M":t="एका महिन्या";break;case"MM":t="%d महिन्यां";break;case"y":t="एका वर्षा";break;case"yy":t="%d वर्षां"}return t.replace(/%d/i,e)}var r={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},s={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाज�