PageRenderTime 27ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/themes/directory/functions/accounts.php

https://gitlab.com/eita/encontre-consumo-responsavel
PHP | 524 lines | 381 code | 64 blank | 79 comment | 108 complexity | a2462107839cabb054a082222b6240d8 MD5 | raw file
  1. <?php
  2. // init
  3. add_action( 'admin_init', 'aitDirCreateRoles');
  4. // admin customization
  5. add_filter( 'pre_get_posts', 'aitDirShowOnlyMyItems');
  6. add_filter( 'views_edit-ait-dir-item', 'aitDirItemsTableViews');
  7. add_filter( 'admin_notices', 'aitDirShowNotices' );
  8. add_action( 'add_meta_boxes', 'aitDirItemDetailedCapabilities');
  9. add_action( 'init', 'aitDirItemRemoveFeatures');
  10. add_action( 'pre_get_posts', 'aitDirShowOnlyOwnAttachments');
  11. add_filter( 'add_menu_classes', 'aitDirRemoveMediaAdminButton');
  12. add_filter( 'manage_users_columns', 'aitDirUsersShowDetails');
  13. add_filter( 'manage_users_custom_column', 'aitDirShowDetailsData', 10, 3);
  14. // registrations functionality
  15. require_once dirname(__FILE__) . '/class-paypal.php';
  16. require_once dirname(__FILE__) . '/accounts-reg.php';
  17. function aitDirCreateRoles() {
  18. global $pagenow, $typenow, $current_user, $aitThemeOptions;
  19. // directory items capability
  20. $capabilityType = 'ait-dir-item';
  21. $capabilitiesAdmin = array(
  22. "edit_{$capabilityType}" => true,
  23. "read_{$capabilityType}" => true,
  24. "delete_{$capabilityType}" => true,
  25. "edit_{$capabilityType}s" => true,
  26. "edit_others_{$capabilityType}s" => true,
  27. "publish_{$capabilityType}s" => true,
  28. "read_private_{$capabilityType}s" => true,
  29. "delete_{$capabilityType}s" => true,
  30. "delete_private_{$capabilityType}s" => true,
  31. "delete_published_{$capabilityType}s" => true,
  32. "delete_others_{$capabilityType}s" => true,
  33. "edit_private_{$capabilityType}s" => true,
  34. "edit_published_{$capabilityType}s" => true,
  35. "assign_dir_category" => true,
  36. "assign_dir_location" => true
  37. );
  38. // set admin capability
  39. $adminRole = get_role( 'administrator' );
  40. foreach ($capabilitiesAdmin as $key => $value) {
  41. $adminRole->add_cap( $key );
  42. }
  43. $subscriberRole = get_role( 'subscriber' );
  44. $subscriberRole->add_cap( 'directory_account_update' );
  45. // update user roles from admin
  46. if(isset($_POST['action']) && $_POST['action'] == 'update' && strpos($_SERVER['PHP_SELF'],'options.php') !== false){
  47. $optionName = $_POST['option_page'];
  48. if(isset($_POST[$optionName]) && isset($_POST[$optionName]['members'])){
  49. $prefixName = '';
  50. $options = $_POST[$optionName]['members'];
  51. $roles = $GLOBALS['wp_roles']->role_names;
  52. $capabilitiesDirectory = array(
  53. "edit_{$capabilityType}s" => true,
  54. "read_private_{$capabilityType}s" => false,
  55. "edit_published_{$capabilityType}s" => true,
  56. "delete_{$capabilityType}s" => true,
  57. "delete_published_{$capabilityType}s" => true,
  58. "assign_dir_category" => true,
  59. "assign_dir_location" => true,
  60. "read" => true,
  61. "upload_files" => true,
  62. "directory_account_update" => true
  63. );
  64. if(isset($options['role1Enable'])){
  65. remove_role( 'directory_1' );
  66. $caps = $capabilitiesDirectory;
  67. if(!isset($options['role1Approve'])){
  68. $caps["publish_{$capabilityType}s"] = true;
  69. }
  70. add_role( 'directory_1', $prefixName . $options['role1Name'], $caps);
  71. } else {
  72. remove_role( 'directory_1' );
  73. }
  74. if(isset($options['role2Enable'])){
  75. remove_role( 'directory_2' );
  76. $caps = $capabilitiesDirectory;
  77. if(!isset($options['role2Approve'])){
  78. $caps["publish_{$capabilityType}s"] = true;
  79. }
  80. add_role( 'directory_2', $prefixName . $options['role2Name'], $caps);
  81. } else {
  82. remove_role( 'directory_2' );
  83. }
  84. if(isset($options['role3Enable'])){
  85. remove_role( 'directory_3' );
  86. $caps = $capabilitiesDirectory;
  87. if(!isset($options['role3Approve'])){
  88. $caps["publish_{$capabilityType}s"] = true;
  89. }
  90. add_role( 'directory_3', $prefixName . $options['role3Name'], $caps);
  91. } else {
  92. remove_role( 'directory_3' );
  93. }
  94. if(isset($options['role4Enable'])){
  95. remove_role( 'directory_4' );
  96. $caps = $capabilitiesDirectory;
  97. if(!isset($options['role4Approve'])){
  98. $caps["publish_{$capabilityType}s"] = true;
  99. }
  100. add_role( 'directory_4', $prefixName . $options['role4Name'], $caps);
  101. } else {
  102. remove_role( 'directory_4' );
  103. }
  104. if(isset($options['role5Enable'])){
  105. remove_role( 'directory_5' );
  106. $caps = $capabilitiesDirectory;
  107. if(!isset($options['role5Approve'])){
  108. $caps["publish_{$capabilityType}s"] = true;
  109. }
  110. add_role( 'directory_5', $prefixName . $options['role5Name'], $caps);
  111. } else {
  112. remove_role( 'directory_5' );
  113. }
  114. }
  115. }
  116. // check number of posts for directory users
  117. $usrRoles = $current_user->roles;
  118. if (isDirectoryUser()) {
  119. // Untrash
  120. if($pagenow == 'post.php' && !empty($_REQUEST['post']) && !empty($_REQUEST['action']) && $_REQUEST['action'] == 'untrash') {
  121. $post = get_post($_REQUEST['post']);
  122. $typenow = (isset($post)) ? $post->post_type : '';
  123. }
  124. // Add new item or untrash
  125. if($typenow == 'ait-dir-item' && ($pagenow == 'post-new.php' || ($pagenow == 'post.php' && isset($post)))) {
  126. $params = array(
  127. 'post_type' => 'ait-dir-item',
  128. 'nopaging' => true,
  129. 'author' => $current_user->ID
  130. );
  131. $itemsQuery = new WP_Query();
  132. $items = $itemsQuery->query($params);
  133. $backUrl = admin_url('edit.php?post_type=ait-dir-item&dir_notification=1');
  134. if(in_array('directory_1', $usrRoles)){
  135. if(count($items) >= intval($aitThemeOptions->members->role1Items)){
  136. header('Location: ' . $backUrl);
  137. exit();
  138. }
  139. } elseif (in_array('directory_2', $usrRoles)) {
  140. if(count($items) >= intval($aitThemeOptions->members->role2Items)){
  141. header('Location: ' . $backUrl);
  142. exit();
  143. }
  144. } elseif (in_array('directory_3', $usrRoles)) {
  145. if(count($items) >= intval($aitThemeOptions->members->role3Items)){
  146. header('Location: ' . $backUrl);
  147. exit();
  148. }
  149. } elseif (in_array('directory_4', $usrRoles)) {
  150. if(count($items) >= intval($aitThemeOptions->members->role4Items)){
  151. header('Location: ' . $backUrl);
  152. exit();
  153. }
  154. } elseif (in_array('directory_5', $usrRoles)) {
  155. if(count($items) >= intval($aitThemeOptions->members->role5Items)){
  156. header('Location: ' . $backUrl);
  157. exit();
  158. }
  159. }
  160. }
  161. }
  162. }
  163. /**
  164. * Don't show others items for directory roles
  165. */
  166. function aitDirShowOnlyMyItems($query) {
  167. if (isDirectoryUser()) {
  168. if((strpos($_SERVER['PHP_SELF'],'edit.php') !== false) && isset($_GET['post_type']) && ($_GET['post_type'] == 'ait-dir-item')){
  169. $query->set('author',$GLOBALS['current_user']->ID);
  170. }
  171. }
  172. return $query;
  173. }
  174. /**
  175. * Correct number of items for directory users
  176. */
  177. function aitDirItemsTableViews($views) {
  178. if (isDirectoryUser()) {
  179. global $wpdb;
  180. $user = wp_get_current_user();
  181. $type = 'ait-dir-item';
  182. //$cache_key = $type;
  183. $query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s AND post_author = %d";
  184. $query .= ' GROUP BY post_status';
  185. //$count = wp_cache_get($cache_key, 'counts');
  186. //if ( false !== $count )
  187. // return $count;
  188. $count = $wpdb->get_results( $wpdb->prepare( $query, $type, $user->ID ), ARRAY_A );
  189. $stats = array();
  190. foreach ( get_post_stati() as $state )
  191. $stats[$state] = 0;
  192. foreach ( (array) $count as $row )
  193. $stats[$row['post_status']] = $row['num_posts'];
  194. $stats = (object) $stats;
  195. //wp_cache_set($cache_key, $stats, 'counts');
  196. global $locked_post_status, $avail_post_stati;
  197. $post_type = $type;
  198. if ( !empty($locked_post_status) )
  199. return array();
  200. $status_links = array();
  201. $num_posts = $stats;
  202. $class = '';
  203. $allposts = '';
  204. $current_user_id = get_current_user_id();
  205. $total_posts = array_sum( (array) $num_posts );
  206. // Subtract post types that are not included in the admin all list.
  207. foreach ( get_post_stati( array('show_in_admin_all_list' => false) ) as $state )
  208. $total_posts -= $num_posts->$state;
  209. $class = empty( $class ) && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : '';
  210. $status_links['all'] = "<a href='edit.php?post_type=$post_type{$allposts}'$class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_posts, 'posts' , 'ait'), number_format_i18n( $total_posts ) ) . '</a>';
  211. foreach ( get_post_stati(array('show_in_admin_status_list' => true), 'objects') as $status ) {
  212. $class = '';
  213. $status_name = $status->name;
  214. if ( !in_array( $status_name, $avail_post_stati ) )
  215. continue;
  216. if ( empty( $num_posts->$status_name ) )
  217. continue;
  218. if ( isset($_REQUEST['post_status']) && $status_name == $_REQUEST['post_status'] )
  219. $class = ' class="current"';
  220. $status_links[$status_name] = "<a href='edit.php?post_status=$status_name&amp;post_type=$post_type'$class>" . sprintf( translate_nooped_plural( $status->label_count, $num_posts->$status_name ), number_format_i18n( $num_posts->$status_name ) ) . '</a>';
  221. }
  222. return $status_links;
  223. } else {
  224. return $views;
  225. }
  226. }
  227. /**
  228. * Show error notice if max items was exceeded or registration messages
  229. */
  230. function aitDirShowNotices() {
  231. global $registerMessages;
  232. if(isset($_GET['dir_notification']) && $_GET['dir_notification'] == '1'){
  233. echo '<div class="error"><p>'.__('Sorry but you have maximum items for your account type. Upgrade your account to insert new items!','ait').'</p></div>';
  234. }
  235. if(isset($registerMessages)){
  236. echo '<div class="updated"><p>'.$registerMessages.'</p></div>';
  237. }
  238. }
  239. function aitDirItemDetailedCapabilities($data) {
  240. global $aitThemeOptions, $wp_meta_boxes, $current_user;
  241. $usrRoles = $current_user->roles;
  242. // remove featured options for non administrators
  243. if (isset($wp_meta_boxes['ait-dir-item']) && (!in_array('administrator', $usrRoles))) {
  244. foreach ($wp_meta_boxes['ait-dir-item'] as $contextName => $context) {
  245. foreach ($context as $boxesName => $boxes) {
  246. foreach ($boxes as $boxName => $box) {
  247. if (isset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['featured'])) {
  248. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['featured']);
  249. }
  250. }
  251. }
  252. }
  253. }
  254. if (isDirectoryUser()) {
  255. $usrRoles = $current_user->roles;
  256. $roleNumber = substr(reset($usrRoles), 10);
  257. $nameAddress = 'role'.$roleNumber.'Address';
  258. $nameStreetview = 'role'.$roleNumber.'Streetview';
  259. $nameTelephone = 'role'.$roleNumber.'Telephone';
  260. $nameEmail = 'role'.$roleNumber.'Email';
  261. $nameWeb = 'role'.$roleNumber.'Web';
  262. $nameHours = 'role'.$roleNumber.'Hours';
  263. $nameAlternativeContent = 'role'.$roleNumber.'AlternativeContent';
  264. $nameSocial = 'role'.$roleNumber.'Social';
  265. $nameSpecial = 'role'.$roleNumber.'Special';
  266. $nameGallery = 'role'.$roleNumber.'Gallery';
  267. if(isset($wp_meta_boxes['ait-dir-item'])){
  268. foreach ($wp_meta_boxes['ait-dir-item'] as $contextName => $context) {
  269. foreach ($context as $boxesName => $boxes) {
  270. foreach ($boxes as $boxName => $box) {
  271. // item options
  272. if($boxName == '_ait-dir-item_metabox'){
  273. //unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['address']);
  274. if(!isset($aitThemeOptions->members->$nameAddress)){
  275. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['address']);
  276. }
  277. if(!isset($aitThemeOptions->members->$nameStreetview)){
  278. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['showStreetview']);
  279. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['streetViewHeading']);
  280. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['streetViewLatitude']);
  281. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['streetViewLongitude']);
  282. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['streetViewPitch']);
  283. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['streetViewZoom']);
  284. }
  285. if(!isset($aitThemeOptions->members->$nameTelephone)){
  286. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['telephone']);
  287. }
  288. if(!isset($aitThemeOptions->members->$nameEmail)){
  289. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['email']);
  290. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['emailContactOwner']);
  291. }
  292. if(!isset($aitThemeOptions->members->$nameWeb)){
  293. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['web']);
  294. }
  295. if(!isset($aitThemeOptions->members->$nameHours)){
  296. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['Opening Hours']);
  297. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['hoursMonday']);
  298. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['hoursTuesday']);
  299. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['hoursWednesday']);
  300. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['hoursThursday']);
  301. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['hoursFriday']);
  302. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['hoursSaturday']);
  303. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['hoursSunday']);
  304. }
  305. if(!isset($aitThemeOptions->members->$nameAlternativeContent)){
  306. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['Alternative Content']);
  307. unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['alternativeContent']);
  308. }
  309. // if(!isset($aitThemeOptions->members->$nameSocial)){
  310. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['Social Icons']);
  311. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialImg1']);
  312. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialLink1']);
  313. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialImg2']);
  314. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialLink2']);
  315. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialImg3']);
  316. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialLink3']);
  317. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialImg4']);
  318. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialLink4']);
  319. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialImg5']);
  320. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialLink5']);
  321. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialImg6']);
  322. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['socialLink6']);
  323. // }
  324. // if(!isset($aitThemeOptions->members->$nameSpecial)){
  325. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['Special Offer']);
  326. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['specialActive']);
  327. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['specialTitle']);
  328. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['specialContent']);
  329. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['specialImage']);
  330. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['specialPrice']);
  331. // }
  332. // if(!isset($aitThemeOptions->members->$nameGallery)){
  333. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['Gallery']);
  334. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['galleryEnable']);
  335. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery1']);
  336. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery2']);
  337. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery3']);
  338. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery4']);
  339. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery5']);
  340. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery6']);
  341. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery7']);
  342. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery8']);
  343. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery9']);
  344. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery10']);
  345. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery11']);
  346. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery12']);
  347. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery13']);
  348. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery14']);
  349. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery15']);
  350. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery16']);
  351. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery17']);
  352. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery18']);
  353. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery19']);
  354. // unset($wp_meta_boxes['ait-dir-item'][$contextName][$boxesName][$boxName]['callback'][0]->configData['gallery20']);
  355. // }
  356. }
  357. }
  358. }
  359. }
  360. }
  361. }
  362. }
  363. function aitDirItemRemoveFeatures() {
  364. global $aitThemeOptions, $current_user;
  365. if (isDirectoryUser()) {
  366. $usrRoles = $current_user->roles;
  367. $roleNumber = substr(reset($usrRoles), 10);
  368. $nameEditor = 'role'.$roleNumber.'Content';
  369. $nameImage = 'role'.$roleNumber.'Image';
  370. $nameExcerpt = 'role'.$roleNumber.'Excerpt';
  371. $nameReviews = 'role'.$roleNumber.'Reviews';
  372. // attributes
  373. remove_post_type_support( 'ait-dir-item', 'page-attributes' );
  374. // editor - content
  375. if(!isset($aitThemeOptions->members->$nameEditor)){
  376. remove_post_type_support( 'ait-dir-item', 'editor' );
  377. }
  378. // image - thumbnail
  379. if(!isset($aitThemeOptions->members->$nameImage)){
  380. remove_post_type_support( 'ait-dir-item', 'thumbnail' );
  381. }
  382. // excerpt
  383. if(!isset($aitThemeOptions->members->$nameExcerpt)){
  384. remove_post_type_support( 'ait-dir-item', 'excerpt' );
  385. }
  386. // reviews - comments
  387. if(!isset($aitThemeOptions->members->$nameReviews)){
  388. remove_post_type_support( 'ait-dir-item', 'comments' );
  389. }
  390. }
  391. }
  392. function aitDirShowOnlyOwnAttachments( $query ) {
  393. global $current_user, $pagenow;
  394. if (isDirectoryUser()) {
  395. if( 'upload.php' == $pagenow || 'admin-ajax.php' == $pagenow || 'media-upload.php' == $pagenow) {
  396. $query->set('author', $current_user->ID );
  397. }
  398. }
  399. return $query;
  400. }
  401. function aitDirRemoveMediaAdminButton($menu) {
  402. global $current_user;
  403. if (isDirectoryUser()) {
  404. foreach ($menu as $key => $item) {
  405. if($item[1] == 'upload_files'){
  406. unset($menu[$key]);
  407. }
  408. }
  409. }
  410. return $menu;
  411. }
  412. function aitDirUsersShowDetails($columns) {
  413. global $aitThemeOptions;
  414. $columns['items'] = __('Items','ait');
  415. if (isset($aitThemeOptions->members->paypalPaymentType) && ($aitThemeOptions->members->paypalPaymentType == 'recurring')) {
  416. $columns['recurring_profile_id'] = __('PayPal recurring payments profile ID','ait');
  417. } else {
  418. $columns['activation_time'] = __('Activation time','ait');
  419. $columns['days_before_expiration'] = __('Days left before expiration','ait');
  420. $columns['transaction_id'] = __('Last PayPal transaction ID','ait');
  421. }
  422. return $columns;
  423. }
  424. function aitDirShowDetailsData($empty='', $column_name, $id) {
  425. if( $column_name == 'items' ) {
  426. return getAuthorItemsCount($id);
  427. }
  428. if( $column_name == 'activation_time' ) {
  429. $data = get_user_meta( $id, 'dir_activation_time', true );
  430. if ($data) {
  431. $dateFormat = get_option( 'date_format', 'm/d/Y' );
  432. return date($dateFormat,$data['time']);
  433. }
  434. }
  435. if( $column_name == 'days_before_expiration' ) {
  436. $user = new WP_User($id);
  437. if (isDirectoryUser($user)) {
  438. return aitDirGetDaysLeft($user->ID);
  439. } else {
  440. return '';
  441. }
  442. }
  443. if( $column_name == 'transaction_id' ) {
  444. $data = get_user_meta( $id, 'dir_paypal_transaction_id', true );
  445. if ($data) {
  446. return $data;
  447. }
  448. }
  449. if( $column_name == 'recurring_profile_id' ) {
  450. $data = get_user_meta( $id, 'dir_paypal_recurring_profile_id', true );
  451. if ($data) {
  452. return $data;
  453. }
  454. }
  455. }
  456. function getAuthorItemsCount($id) {
  457. global $wpdb;
  458. $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'ait-dir-item' AND post_status = 'publish' AND post_author = ".$id );
  459. return $count;
  460. }