Activity Log - Version 2.1.7

Version Description

  • New! Now tracking when user download export file from the site.
Download this release

Release Info

Developer KingYes
Plugin Icon 128x128 Activity Log
Version 2.1.7
Comparing to
See all releases

Code changes from version 2.1.6 to 2.1.7

aryo-activity-log.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://wordpress.org/plugins/aryo-activity-log/
5
  Description: Get aware of any activities that are taking place on your dashboard! Imagine it like a black-box for your WordPress site. e.g. post was deleted, plugin was activated, user logged in or logged out - it's all these for you to see.
6
  Author: Yakir Sitbon, Maor Chasen, Ariel Klikstein
7
  Author URI: http://www.aryodigital.com
8
- Version: 2.1.6
9
  Text Domain: aryo-aal
10
  Domain Path: /language/
11
  License: GPLv2 or later
5
  Description: Get aware of any activities that are taking place on your dashboard! Imagine it like a black-box for your WordPress site. e.g. post was deleted, plugin was activated, user logged in or logged out - it's all these for you to see.
6
  Author: Yakir Sitbon, Maor Chasen, Ariel Klikstein
7
  Author URI: http://www.aryodigital.com
8
+ Version: 2.1.7
9
  Text Domain: aryo-aal
10
  Domain Path: /language/
11
  License: GPLv2 or later
classes/class-aal-activity-log-list-table.php CHANGED
@@ -59,29 +59,40 @@ class AAL_Activity_Log_List_Table extends WP_List_Table {
59
  }
60
 
61
  public function __construct( $args = array() ) {
62
- parent::__construct( array(
63
- 'singular' => 'activity',
64
- 'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
65
- ) );
 
 
66
 
67
- $this->_roles = apply_filters( 'aal_init_roles', array(
68
- // admin
69
- 'manage_options' => array( 'Core', 'Post', 'Taxonomy', 'User', 'Options', 'Attachment', 'Plugin', 'Widget', 'Theme', 'Menu', 'Comments' ),
70
- // editor
71
- 'edit_pages' => array( 'Post', 'Taxonomy', 'Attachment', 'Comments' ),
72
- ) );
 
 
 
73
 
74
- $this->_caps = apply_filters( 'aal_init_caps', array(
75
- 'administrator' => array( 'administrator', 'editor', 'author', 'guest' ),
76
- 'editor' => array( 'editor', 'author', 'guest' ),
77
- 'author' => array( 'author', 'guest' ),
78
- ) );
 
 
 
79
 
80
- add_screen_option( 'per_page', array(
81
- 'default' => 50,
82
- 'label' => __( 'Activities', 'aryo-aal' ),
83
- 'option' => 'edit_aal_logs_per_page',
84
- ) );
 
 
 
85
 
86
  add_filter( 'set-screen-option', array( &$this, 'set_screen_option' ), 10, 3 );
87
  set_screen_options();
@@ -115,7 +126,7 @@ class AAL_Activity_Log_List_Table extends WP_List_Table {
115
  $return = ucwords( str_replace( '_', ' ', __( $item->action, 'aryo-aal' ) ) );
116
  break;
117
  case 'date' :
118
- $return = sprintf( '<strong>' . __( '%s ago', 'aryo-aal' ) . '</strong>', human_time_diff( $item->hist_time, current_time( 'timestamp' ) ) );
119
  $return .= '<br />' . date( 'd/m/Y', $item->hist_time );
120
  $return .= '<br />' . date( 'H:i', $item->hist_time );
121
  break;
@@ -160,7 +171,7 @@ class AAL_Activity_Log_List_Table extends WP_List_Table {
160
  public function column_label( $item ) {
161
  $return = '';
162
  if ( ! empty( $item->object_subtype ) ) {
163
- $pt = get_post_type_object( $item->object_subtype );
164
  $return = ! empty( $pt->label ) ? $pt->label : $item->object_subtype;
165
  }
166
  return $return;
@@ -184,6 +195,15 @@ class AAL_Activity_Log_List_Table extends WP_List_Table {
184
  $return = sprintf( '<a href="%s">%s #%d</a>', get_edit_comment_link( $item->object_id ), $item->object_name, $item->object_id );
185
  }
186
  break;
 
 
 
 
 
 
 
 
 
187
 
188
  case 'Options' :
189
  case 'Core' :
59
  }
60
 
61
  public function __construct( $args = array() ) {
62
+ parent::__construct(
63
+ array(
64
+ 'singular' => 'activity',
65
+ 'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
66
+ )
67
+ );
68
 
69
+ $this->_roles = apply_filters(
70
+ 'aal_init_roles',
71
+ array(
72
+ // admin
73
+ 'manage_options' => array( 'Core', 'Export', 'Post', 'Taxonomy', 'User', 'Options', 'Attachment', 'Plugin', 'Widget', 'Theme', 'Menu', 'Comments' ),
74
+ // editor
75
+ 'edit_pages' => array( 'Post', 'Taxonomy', 'Attachment', 'Comments' ),
76
+ )
77
+ );
78
 
79
+ $this->_caps = apply_filters(
80
+ 'aal_init_caps',
81
+ array(
82
+ 'administrator' => array( 'administrator', 'editor', 'author', 'guest' ),
83
+ 'editor' => array( 'editor', 'author', 'guest' ),
84
+ 'author' => array( 'author', 'guest' ),
85
+ )
86
+ );
87
 
88
+ add_screen_option(
89
+ 'per_page',
90
+ array(
91
+ 'default' => 50,
92
+ 'label' => __( 'Activities', 'aryo-aal' ),
93
+ 'option' => 'edit_aal_logs_per_page',
94
+ )
95
+ );
96
 
97
  add_filter( 'set-screen-option', array( &$this, 'set_screen_option' ), 10, 3 );
98
  set_screen_options();
126
  $return = ucwords( str_replace( '_', ' ', __( $item->action, 'aryo-aal' ) ) );
127
  break;
128
  case 'date' :
129
+ $return = sprintf( '<strong>' . __( '%s ago', 'aryo-aal' ) . '</strong>', human_time_diff( $item->hist_time, current_time( 'timestamp' ) ) );
130
  $return .= '<br />' . date( 'd/m/Y', $item->hist_time );
131
  $return .= '<br />' . date( 'H:i', $item->hist_time );
132
  break;
171
  public function column_label( $item ) {
172
  $return = '';
173
  if ( ! empty( $item->object_subtype ) ) {
174
+ $pt = get_post_type_object( $item->object_subtype );
175
  $return = ! empty( $pt->label ) ? $pt->label : $item->object_subtype;
176
  }
177
  return $return;
195
  $return = sprintf( '<a href="%s">%s #%d</a>', get_edit_comment_link( $item->object_id ), $item->object_name, $item->object_id );
196
  }
197
  break;
198
+
199
+ case 'Export' :
200
+ if ( 'all' === $item->object_name ) {
201
+ $return = __( 'All', 'aryo-aal' );
202
+ } else {
203
+ $pt = get_post_type_object( $item->object_name );
204
+ $return = ! empty( $pt->label ) ? $pt->label : $item->object_name;
205
+ }
206
+ break;
207
 
208
  case 'Options' :
209
  case 'Core' :
classes/class-aal-api.php CHANGED
@@ -78,15 +78,18 @@ class AAL_API {
78
  public function insert( $args ) {
79
  global $wpdb;
80
 
81
- $args = wp_parse_args( $args, array(
82
- 'action' => '',
83
- 'object_type' => '',
84
- 'object_subtype' => '',
85
- 'object_name' => '',
86
- 'object_id' => '',
87
- 'hist_ip' => $this->_get_ip_address(),
88
- 'hist_time' => current_time( 'timestamp' ),
89
- ) );
 
 
 
90
 
91
  $user = get_user_by( 'id', get_current_user_id() );
92
  if ( $user ) {
@@ -100,7 +103,8 @@ class AAL_API {
100
  }
101
 
102
  // TODO: Find better way to Multisite compatibility.
103
- if ( empty( $args['user_caps'] ) )
 
104
  $args['user_caps'] = 'administrator';
105
 
106
  // Make sure for non duplicate.
78
  public function insert( $args ) {
79
  global $wpdb;
80
 
81
+ $args = wp_parse_args(
82
+ $args,
83
+ array(
84
+ 'action' => '',
85
+ 'object_type' => '',
86
+ 'object_subtype' => '',
87
+ 'object_name' => '',
88
+ 'object_id' => '',
89
+ 'hist_ip' => $this->_get_ip_address(),
90
+ 'hist_time' => current_time( 'timestamp' ),
91
+ )
92
+ );
93
 
94
  $user = get_user_by( 'id', get_current_user_id() );
95
  if ( $user ) {
103
  }
104
 
105
  // TODO: Find better way to Multisite compatibility.
106
+ // Fallback for multisite with bbPress
107
+ if ( empty( $args['user_caps'] ) || 'bbp_participant' === $args['user_caps'] )
108
  $args['user_caps'] = 'administrator';
109
 
110
  // Make sure for non duplicate.
classes/class-aal-hooks.php CHANGED
@@ -20,6 +20,7 @@ class AAL_Hooks {
20
  include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-theme.php' );
21
  include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-widgets.php' );
22
  include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-core.php' );
 
23
  include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-comments.php' );
24
 
25
  new AAL_Hook_User();
@@ -32,6 +33,7 @@ class AAL_Hooks {
32
  new AAL_Hook_Theme();
33
  new AAL_Hook_Widgets();
34
  new AAL_Hook_Core();
 
35
  new AAL_Hook_Comments();
36
  }
37
  }
20
  include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-theme.php' );
21
  include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-widgets.php' );
22
  include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-core.php' );
23
+ include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-export.php' );
24
  include( plugin_dir_path( ACTIVITY_LOG__FILE__ ) . '/hooks/class-aal-hook-comments.php' );
25
 
26
  new AAL_Hook_User();
33
  new AAL_Hook_Theme();
34
  new AAL_Hook_Widgets();
35
  new AAL_Hook_Core();
36
+ new AAL_Hook_Export();
37
  new AAL_Hook_Comments();
38
  }
39
  }
hooks/class-aal-hook-core.php CHANGED
@@ -3,7 +3,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
 
4
  class AAL_Hook_Core extends AAL_Hook_Base {
5
 
6
- public function _core_updated_successfully( $wp_version ) {
7
  global $pagenow;
8
 
9
  // Auto updated
@@ -12,16 +12,18 @@ class AAL_Hook_Core extends AAL_Hook_Base {
12
  else
13
  $object_name = 'WordPress Updated';
14
 
15
- aal_insert_log( array(
16
- 'action' => 'updated',
17
- 'object_type' => 'Core',
18
- 'object_id' => 0,
19
- 'object_name' => $object_name,
20
- ) );
 
 
21
  }
22
 
23
  public function __construct() {
24
- add_action( '_core_updated_successfully', array( &$this, '_core_updated_successfully' ) );
25
 
26
  parent::__construct();
27
  }
3
 
4
  class AAL_Hook_Core extends AAL_Hook_Base {
5
 
6
+ public function core_updated_successfully( $wp_version ) {
7
  global $pagenow;
8
 
9
  // Auto updated
12
  else
13
  $object_name = 'WordPress Updated';
14
 
15
+ aal_insert_log(
16
+ array(
17
+ 'action' => 'updated',
18
+ 'object_type' => 'Core',
19
+ 'object_id' => 0,
20
+ 'object_name' => $object_name,
21
+ )
22
+ );
23
  }
24
 
25
  public function __construct() {
26
+ add_action( '_core_updated_successfully', array( &$this, 'core_updated_successfully' ) );
27
 
28
  parent::__construct();
29
  }
hooks/class-aal-hook-export.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
+
4
+ class AAL_Hook_Export extends AAL_Hook_Base {
5
+
6
+ public function hooks_export_wp( $args ) {
7
+ aal_insert_log(
8
+ array(
9
+ 'action' => 'downloaded',
10
+ 'object_type' => 'Export',
11
+ 'object_id' => 0,
12
+ 'object_name' => isset( $args['content'] ) ? $args['content'] : 'all',
13
+ )
14
+ );
15
+ }
16
+
17
+ public function __construct() {
18
+ add_action( 'export_wp', array( &$this, 'hooks_export_wp' ) );
19
+
20
+ parent::__construct();
21
+ }
22
+
23
+ }
language/aryo-aal.pot CHANGED
@@ -6,9 +6,9 @@
6
  #, fuzzy
7
  msgid ""
8
  msgstr ""
9
- "Project-Id-Version: aryo-activity-log 2.1.6\n"
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2014-08-08 11:23+0300\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,81 +21,85 @@ msgstr ""
21
  msgid "Cheatin&#8217; huh?"
22
  msgstr ""
23
 
24
- #: classes/class-aal-activity-log-list-table.php:82
25
  msgid "Activities"
26
  msgstr ""
27
 
28
- #: classes/class-aal-activity-log-list-table.php:92
29
  msgid "Date"
30
  msgstr ""
31
 
32
- #: classes/class-aal-activity-log-list-table.php:93
33
  msgid "Author"
34
  msgstr ""
35
 
36
- #: classes/class-aal-activity-log-list-table.php:94
37
  msgid "IP"
38
  msgstr ""
39
 
40
- #: classes/class-aal-activity-log-list-table.php:95
41
  msgid "Type"
42
  msgstr ""
43
 
44
- #: classes/class-aal-activity-log-list-table.php:96
45
  msgid "Label"
46
  msgstr ""
47
 
48
- #: classes/class-aal-activity-log-list-table.php:97
49
  msgid "Action"
50
  msgstr ""
51
 
52
- #: classes/class-aal-activity-log-list-table.php:98
53
  msgid "Description"
54
  msgstr ""
55
 
56
- #: classes/class-aal-activity-log-list-table.php:118
57
  #, php-format
58
  msgid "%s ago"
59
  msgstr ""
60
 
61
- #: classes/class-aal-activity-log-list-table.php:145
62
  msgid "Unknown"
63
  msgstr ""
64
 
65
- #: classes/class-aal-activity-log-list-table.php:151
66
- #: classes/class-aal-activity-log-list-table.php:236
67
  msgid "Guest"
68
  msgstr ""
69
 
70
- #: classes/class-aal-activity-log-list-table.php:247
 
 
 
 
71
  msgid "All Users"
72
  msgstr ""
73
 
74
- #: classes/class-aal-activity-log-list-table.php:274
75
  msgid "All Types"
76
  msgstr ""
77
 
78
- #: classes/class-aal-activity-log-list-table.php:285
79
  msgid "All Time"
80
  msgstr ""
81
 
82
- #: classes/class-aal-activity-log-list-table.php:286
83
  msgid "Today"
84
  msgstr ""
85
 
86
- #: classes/class-aal-activity-log-list-table.php:287
87
  msgid "Yesterday"
88
  msgstr ""
89
 
90
- #: classes/class-aal-activity-log-list-table.php:288
91
  msgid "Week"
92
  msgstr ""
93
 
94
- #: classes/class-aal-activity-log-list-table.php:289
95
  msgid "Month"
96
  msgstr ""
97
 
98
- #: classes/class-aal-activity-log-list-table.php:296
99
  msgid "Filter"
100
  msgstr ""
101
 
@@ -618,6 +622,14 @@ msgstr ""
618
  msgid "tag_base"
619
  msgstr ""
620
 
 
 
 
 
 
 
 
 
621
  #: notifications/abstract-class-aal-notification-base.php:99
622
  msgid "Object Type"
623
  msgstr ""
6
  #, fuzzy
7
  msgid ""
8
  msgstr ""
9
+ "Project-Id-Version: aryo-activity-log 2.1.7\n"
10
  "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2014-08-20 10:14+0300\n"
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
21
  msgid "Cheatin&#8217; huh?"
22
  msgstr ""
23
 
24
+ #: classes/class-aal-activity-log-list-table.php:92
25
  msgid "Activities"
26
  msgstr ""
27
 
28
+ #: classes/class-aal-activity-log-list-table.php:103
29
  msgid "Date"
30
  msgstr ""
31
 
32
+ #: classes/class-aal-activity-log-list-table.php:104
33
  msgid "Author"
34
  msgstr ""
35
 
36
+ #: classes/class-aal-activity-log-list-table.php:105
37
  msgid "IP"
38
  msgstr ""
39
 
40
+ #: classes/class-aal-activity-log-list-table.php:106
41
  msgid "Type"
42
  msgstr ""
43
 
44
+ #: classes/class-aal-activity-log-list-table.php:107
45
  msgid "Label"
46
  msgstr ""
47
 
48
+ #: classes/class-aal-activity-log-list-table.php:108
49
  msgid "Action"
50
  msgstr ""
51
 
52
+ #: classes/class-aal-activity-log-list-table.php:109
53
  msgid "Description"
54
  msgstr ""
55
 
56
+ #: classes/class-aal-activity-log-list-table.php:129
57
  #, php-format
58
  msgid "%s ago"
59
  msgstr ""
60
 
61
+ #: classes/class-aal-activity-log-list-table.php:156
62
  msgid "Unknown"
63
  msgstr ""
64
 
65
+ #: classes/class-aal-activity-log-list-table.php:162
66
+ #: classes/class-aal-activity-log-list-table.php:256
67
  msgid "Guest"
68
  msgstr ""
69
 
70
+ #: classes/class-aal-activity-log-list-table.php:201
71
+ msgid "All"
72
+ msgstr ""
73
+
74
+ #: classes/class-aal-activity-log-list-table.php:267
75
  msgid "All Users"
76
  msgstr ""
77
 
78
+ #: classes/class-aal-activity-log-list-table.php:294
79
  msgid "All Types"
80
  msgstr ""
81
 
82
+ #: classes/class-aal-activity-log-list-table.php:305
83
  msgid "All Time"
84
  msgstr ""
85
 
86
+ #: classes/class-aal-activity-log-list-table.php:306
87
  msgid "Today"
88
  msgstr ""
89
 
90
+ #: classes/class-aal-activity-log-list-table.php:307
91
  msgid "Yesterday"
92
  msgstr ""
93
 
94
+ #: classes/class-aal-activity-log-list-table.php:308
95
  msgid "Week"
96
  msgstr ""
97
 
98
+ #: classes/class-aal-activity-log-list-table.php:309
99
  msgid "Month"
100
  msgstr ""
101
 
102
+ #: classes/class-aal-activity-log-list-table.php:316
103
  msgid "Filter"
104
  msgstr ""
105
 
622
  msgid "tag_base"
623
  msgstr ""
624
 
625
+ #: language/strings.php:137
626
+ msgid "Export"
627
+ msgstr ""
628
+
629
+ #: language/strings.php:138
630
+ msgid "downloaded"
631
+ msgstr ""
632
+
633
  #: notifications/abstract-class-aal-notification-base.php:99
634
  msgid "Object Type"
635
  msgstr ""
language/strings.php CHANGED
@@ -131,4 +131,8 @@ __( 'uploads_use_yearmonth_folders', 'aryo-aal' );
131
  // Permalinks
132
  __( 'permalink_structure', 'aryo-aal' );
133
  __( 'category_base', 'aryo-aal' );
134
- __( 'tag_base', 'aryo-aal' );
 
 
 
 
131
  // Permalinks
132
  __( 'permalink_structure', 'aryo-aal' );
133
  __( 'category_base', 'aryo-aal' );
134
+ __( 'tag_base', 'aryo-aal' );
135
+
136
+ // Export
137
+ __( 'Export', 'aryo-aal' );
138
+ __( 'downloaded', 'aryo-aal' );
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === ARYO Activity Log ===
2
  Contributors: pojo.me, KingYes, ariel.k, maor
3
- Tags: access, administration, activity, community, event, monitor, multisite, multi-users, log, logger, audit log, login, network, stats, security, tracking, madeinisrael, woocommerce, notifications, email notifications
4
  Requires at least: 3.5
5
  Tested up to: 3.9.2
6
- Stable tag: 2.1.6
7
  License: GPLv2 or later
8
 
9
  Get aware of any activities that are taking place on your dashboard! Imagine it like a black-box for your WordPress site.
@@ -33,6 +33,7 @@ If you have tens of users or more, you really can’t know who did it. This plug
33
  * <strong>Menus</strong> - A menu is being updated
34
  * <strong>Setting</strong> - General, Writing, Reading, Discussion, Media, Permalinks
35
  * <strong>Options</strong> - Can be extend by east filter
 
36
  * <strong>WooCommerce</strong> - Few options updated (will be more soon)
37
  * <strong>bbPress</strong> - Forums, Topics, Replies, Taxonomies and other actions
38
  * and much more...
@@ -40,6 +41,7 @@ If you have tens of users or more, you really can’t know who did it. This plug
40
  <strong>New!</strong> You are now able to get email notifications once an event you have defined (via rules) has occured. This is useful in cases you must know right away when someone does something on your site.
41
 
42
  <h4>What people are saying</h4>
 
43
  * <em>“Thanks to this step, we’ve discovered that our site was undergoing a brute force attack”</em> - [artdriver.com](http://www.artdriver.com/wordpress-site-hacked-solution-time/)
44
  * <em>“Optimized code - The plugin itself is blazing fast and leaves almost no footprint on the server.”</em> - [freshtechtips.com](http://www.freshtechtips.com/2014/01/best-audit-trail-plugins-for-wordpress.html)
45
  * <em>“The plugin successful for activity log for WordPress.”</em> - [wp-tricks.co.il](http://www.wp-tricks.co.il/2013/08/%D7%99%D7%95%D7%9E%D7%9F-%D7%A4%D7%A2%D7%99%D7%9C%D7%95%D7%AA-%D7%9C%D7%95%D7%95%D7%A8%D7%93%D7%A4%D7%A8%D7%A1-aryo-activity-log/)
@@ -87,6 +89,9 @@ Would you like to like to contribute to Activity Log? You are more than welcome
87
 
88
  == Changelog ==
89
 
 
 
 
90
  = 2.1.6 =
91
  * Tested up to WordPress v3.9.2.
92
 
1
  === ARYO Activity Log ===
2
  Contributors: pojo.me, KingYes, ariel.k, maor
3
+ Tags: administration, activity, event, monitor, multisite, multi-users, log, logger, audit log, stats, security, tracking, woocommerce, notifications, email notifications
4
  Requires at least: 3.5
5
  Tested up to: 3.9.2
6
+ Stable tag: 2.1.7
7
  License: GPLv2 or later
8
 
9
  Get aware of any activities that are taking place on your dashboard! Imagine it like a black-box for your WordPress site.
33
  * <strong>Menus</strong> - A menu is being updated
34
  * <strong>Setting</strong> - General, Writing, Reading, Discussion, Media, Permalinks
35
  * <strong>Options</strong> - Can be extend by east filter
36
+ * <strong>Export</strong> - User download export file from the site
37
  * <strong>WooCommerce</strong> - Few options updated (will be more soon)
38
  * <strong>bbPress</strong> - Forums, Topics, Replies, Taxonomies and other actions
39
  * and much more...
41
  <strong>New!</strong> You are now able to get email notifications once an event you have defined (via rules) has occured. This is useful in cases you must know right away when someone does something on your site.
42
 
43
  <h4>What people are saying</h4>
44
+ * <em>“Best 10 Free WordPress Plugins of the Month – July 2014: Keeping tabs on what your users do with their access to the Dashboard”</em> - [ManageWp.com](https://managewp.com/best-free-wordpress-plugins-july-2014)
45
  * <em>“Thanks to this step, we’ve discovered that our site was undergoing a brute force attack”</em> - [artdriver.com](http://www.artdriver.com/wordpress-site-hacked-solution-time/)
46
  * <em>“Optimized code - The plugin itself is blazing fast and leaves almost no footprint on the server.”</em> - [freshtechtips.com](http://www.freshtechtips.com/2014/01/best-audit-trail-plugins-for-wordpress.html)
47
  * <em>“The plugin successful for activity log for WordPress.”</em> - [wp-tricks.co.il](http://www.wp-tricks.co.il/2013/08/%D7%99%D7%95%D7%9E%D7%9F-%D7%A4%D7%A2%D7%99%D7%9C%D7%95%D7%AA-%D7%9C%D7%95%D7%95%D7%A8%D7%93%D7%A4%D7%A8%D7%A1-aryo-activity-log/)
89
 
90
  == Changelog ==
91
 
92
+ = 2.1.7 =
93
+ * New! Now tracking when user download export file from the site.
94
+
95
  = 2.1.6 =
96
  * Tested up to WordPress v3.9.2.
97