Version Description
- Added translate: German (de_DE) - Thanks to Robert Harm
- Added translate: Hebrew (he_IL)
- Plugin name instead of file name on activation/deactivation
- New Hooks:
- A widget is being deleted from a sidebar
- A plugin is being changed
- Theme Customizer (Thanks to Ohad Raz)
Download this release
Release Info
Developer | KingYes |
Plugin | Activity Log |
Version | 1.0.1 |
Comparing to | |
See all releases |
Version 1.0.1
- README.md +69 -0
- aryo-activity-log.php +77 -0
- classes/class-aal-activity-log-list-table.php +262 -0
- classes/class-admin-ui.php +53 -0
- classes/class-api.php +70 -0
- classes/class-hooks.php +341 -0
- classes/class-maintenance.php +40 -0
- classes/class-settings.php +123 -0
- language/activity-log.pot +155 -0
- language/aryo-aal-de_DE.mo +0 -0
- language/aryo-aal-de_DE.po +166 -0
- language/aryo-aal-he_IL.mo +0 -0
- language/aryo-aal-he_IL.po +167 -0
- language/aryo-aal.pot +162 -0
- language/strings.php +28 -0
- readme.txt +107 -0
- screenshot-1.jpg +0 -0
- screenshot-2.jpg +0 -0
- screenshot-3.jpg +0 -0
README.md
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[WordPress ARYO Activity Log](http://wordpress.org/plugins/aryo-activity-log/)
|
2 |
+
===============
|
3 |
+
|
4 |
+
Get aware of the activities that are taking place on your dashboard! Weather a post was deleted or a plugin was activated, it’s all there for you to see.
|
5 |
+
|
6 |
+
|
7 |
+
We all know that it’s relatively easy to analyze what your visitors are looking for while browsing your site. But there is really no easy way to know what registered users (say, with an Administrator account or even Editors) are doing on the dashboard of your site. How can you know if a post was deleted? or if a plugin was activated/deactivated? or if the active theme was changed?
|
8 |
+
If you have tens of users or more, you really can’t know who did it. This plugin tries to solve this issue by tracking what users do on the dashboard of your WordPress site.
|
9 |
+
|
10 |
+
__As of this moment, the plugin logs things when:__
|
11 |
+
|
12 |
+
|
13 |
+
Users
|
14 |
+
* A user logs in
|
15 |
+
* A user logs out
|
16 |
+
* A login has failed due to incorrect credentials
|
17 |
+
* A user updates their profile
|
18 |
+
* A new user account is being registered
|
19 |
+
* An existing user account is being deleted
|
20 |
+
|
21 |
+
Plugins
|
22 |
+
* A plugin is being activated
|
23 |
+
* A plugin is being deactivated
|
24 |
+
* A plugin is being changed
|
25 |
+
|
26 |
+
Themes
|
27 |
+
* A theme is being changed (Editor and Customizer)
|
28 |
+
|
29 |
+
Content
|
30 |
+
* A new post is being created
|
31 |
+
* A post is being updated
|
32 |
+
* A post changes status (draft, pending review, publish)
|
33 |
+
* A post is being deleted
|
34 |
+
|
35 |
+
Media
|
36 |
+
* An attachment is being uploaded
|
37 |
+
* An attachment is being edited
|
38 |
+
* An attachment is being deleted
|
39 |
+
|
40 |
+
Widgets
|
41 |
+
* A widget is being added to a sidebar
|
42 |
+
* A widget is being deleted from a sidebar
|
43 |
+
|
44 |
+
|
45 |
+
__Translators:__
|
46 |
+
|
47 |
+
* German (de_DE) - [Robert Harm](http://www.mapsmarker.com/)
|
48 |
+
* Hebrew (he_IL) - [ARYO Digital](http://www.aryodigital.com/)
|
49 |
+
|
50 |
+
|
51 |
+
|
52 |
+
The plugin does not require any kind of setup. It works out of the box (and that’s why we love it too).
|
53 |
+
|
54 |
+
We’re planning to add a lot more features in the upcoming releases. If you think we’re missing something big time, please post your suggestions in the plugin’s forum.
|
55 |
+
|
56 |
+
|
57 |
+
|
58 |
+
Developed by [Yakir Sitbon](http://www.yakirs.net/) and [Ariel Klikstein](http://www.arielk.net/) and [Maor Chasen](http://maorchasen.com/).
|
59 |
+
|
60 |
+
Brought to you by [ARYO Digital](http://www.aryodigital.com/).
|
61 |
+
|
62 |
+
|
63 |
+
## Screenshots
|
64 |
+
|
65 |
+
Here are some screenshots of this awesome plugin.
|
66 |
+
|
67 |
+
![Main Panel](https://raw.github.com/KingYes/wordpress-aryo-activity-log/master/screenshot-1.jpg)
|
68 |
+
![Settings Page](https://raw.github.com/KingYes/wordpress-aryo-activity-log/master/screenshot-2.jpg)
|
69 |
+
![Settings Page](https://raw.github.com/KingYes/wordpress-aryo-activity-log/master/screenshot-3.jpg)
|
aryo-activity-log.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: ARYO Activity Log
|
4 |
+
Plugin URI: http://wordpress.org/extend/plugins/activity-log
|
5 |
+
Description: Get aware of the activities that are taking place on your dashboard! Weather a post was deleted or a plugin was activated, it’s all these for you to see.
|
6 |
+
Author: Yakir Sitbon, Maor Chasen, Ariel Klikstein
|
7 |
+
Version: 1.0.1
|
8 |
+
Author URI: http://www.aryodigital.com
|
9 |
+
License: GPLv2 or later
|
10 |
+
|
11 |
+
|
12 |
+
This program is free software; you can redistribute it and/or
|
13 |
+
modify it under the terms of the GNU General Public License
|
14 |
+
as published by the Free Software Foundation; either version 2
|
15 |
+
of the License, or (at your option) any later version.
|
16 |
+
|
17 |
+
This program is distributed in the hope that it will be useful,
|
18 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
20 |
+
GNU General Public License for more details.
|
21 |
+
|
22 |
+
You should have received a copy of the GNU General Public License
|
23 |
+
along with this program; if not, write to the Free Software
|
24 |
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
25 |
+
*/
|
26 |
+
|
27 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
28 |
+
|
29 |
+
define( 'ACTIVITY_LOG_BASE', plugin_basename( __FILE__ ) );
|
30 |
+
|
31 |
+
include( 'classes/class-maintenance.php' );
|
32 |
+
include( 'classes/class-aal-activity-log-list-table.php' );
|
33 |
+
include( 'classes/class-settings.php' );
|
34 |
+
include( 'classes/class-admin-ui.php' );
|
35 |
+
include( 'classes/class-api.php' );
|
36 |
+
include( 'classes/class-hooks.php' );
|
37 |
+
|
38 |
+
// Probably we should put this in a separate file
|
39 |
+
class AAL_Main {
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @var AAL_Admin_Ui
|
43 |
+
*/
|
44 |
+
public $ui;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @var AAL_Hooks
|
48 |
+
*/
|
49 |
+
public $hooks;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* @var AAL_Settings
|
53 |
+
*/
|
54 |
+
public $settings;
|
55 |
+
|
56 |
+
public function load_textdomain() {
|
57 |
+
load_plugin_textdomain( 'aryo-aal', false, basename( dirname( __FILE__ ) ) . '/language' );
|
58 |
+
}
|
59 |
+
|
60 |
+
public function __construct() {
|
61 |
+
global $wpdb;
|
62 |
+
|
63 |
+
$this->ui = new AAL_Admin_Ui();
|
64 |
+
$this->hooks = new AAL_Hooks();
|
65 |
+
$this->settings = new AAL_Settings();
|
66 |
+
|
67 |
+
// set up our DB name
|
68 |
+
$wpdb->activity_log = $wpdb->prefix . 'aryo_activity_log';
|
69 |
+
|
70 |
+
add_action( 'plugins_loaded', array( &$this, 'load_textdomain' ) );
|
71 |
+
}
|
72 |
+
|
73 |
+
}
|
74 |
+
global $aal_main_class;
|
75 |
+
$aal_main_class = new AAL_Main();
|
76 |
+
|
77 |
+
// EOF
|
classes/class-aal-activity-log-list-table.php
ADDED
@@ -0,0 +1,262 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
4 |
+
|
5 |
+
if ( ! class_exists( 'WP_List_Table' ) )
|
6 |
+
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
|
7 |
+
|
8 |
+
|
9 |
+
class AAL_Activity_Log_List_Table extends WP_List_Table {
|
10 |
+
|
11 |
+
protected $_roles = array();
|
12 |
+
|
13 |
+
protected $_caps = array();
|
14 |
+
|
15 |
+
protected function _get_where_by_role() {
|
16 |
+
$allow_modules = array();
|
17 |
+
|
18 |
+
$user = get_user_by( 'id', get_current_user_id() );
|
19 |
+
if ( ! $user )
|
20 |
+
wp_die( 'No allowed here.' );
|
21 |
+
|
22 |
+
foreach ( $this->_roles as $key => $role ) {
|
23 |
+
if ( current_user_can( $key ) ) {
|
24 |
+
$allow_modules = array_merge( $allow_modules, $role );
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
if ( empty( $allow_modules ) )
|
29 |
+
wp_die( 'No allowed here.' );
|
30 |
+
|
31 |
+
$allow_modules = array_unique( $allow_modules );
|
32 |
+
|
33 |
+
$where = array();
|
34 |
+
foreach ( $allow_modules as $type )
|
35 |
+
$where[] .= '`object_type` = \'' . $type . '\'';
|
36 |
+
|
37 |
+
$user_cap = strtolower( key( $user->caps ) );
|
38 |
+
$allow_caps = $where_caps = array();
|
39 |
+
|
40 |
+
foreach ( $this->_caps as $key => $cap_allow ) {
|
41 |
+
if ( $key === $user_cap ) {
|
42 |
+
$allow_caps = array_merge( $allow_caps, $cap_allow );
|
43 |
+
break;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
if ( empty( $allow_caps ) )
|
48 |
+
wp_die( 'No allowed here.' );
|
49 |
+
|
50 |
+
$allow_caps = array_unique( $allow_caps );
|
51 |
+
foreach ( $allow_caps as $cap )
|
52 |
+
$where_caps[] .= '`user_caps` = \'' . $cap . '\'';
|
53 |
+
|
54 |
+
return 'AND (' . implode( ' OR ', $where ) . ') AND (' . implode( ' OR ', $where_caps ) . ')';
|
55 |
+
}
|
56 |
+
|
57 |
+
public function __construct() {
|
58 |
+
$this->_roles = array(
|
59 |
+
// admin
|
60 |
+
'manage_options' => array( 'Post', 'User', 'Options', 'Attachment', 'Plugin', 'Widget', 'Theme' ),
|
61 |
+
// editor
|
62 |
+
'edit_pages' => array( 'Post', 'Attachment' ),
|
63 |
+
);
|
64 |
+
|
65 |
+
$this->_caps = array(
|
66 |
+
'administrator' => array( 'administrator', 'editor', 'author', 'guest' ),
|
67 |
+
'editor' => array( 'editor', 'author', 'guest' ),
|
68 |
+
'author' => array( 'author', 'guest' ),
|
69 |
+
);
|
70 |
+
|
71 |
+
parent::__construct( array(
|
72 |
+
'singular' => 'activity',
|
73 |
+
) );
|
74 |
+
}
|
75 |
+
|
76 |
+
public function get_columns() {
|
77 |
+
$columns = array(
|
78 |
+
'type' => _x( 'Type', 'main table', 'aryo-aal' ),
|
79 |
+
'name' => _x( 'Name', 'main table', 'aryo-aal' ),
|
80 |
+
'action' => _x( 'Action', 'main table', 'aryo-aal' ),
|
81 |
+
'date' => _x( 'Date', 'main table', 'aryo-aal' ),
|
82 |
+
);
|
83 |
+
|
84 |
+
return $columns;
|
85 |
+
}
|
86 |
+
|
87 |
+
public function column_default( $item, $column_name ) {
|
88 |
+
$return = '';
|
89 |
+
|
90 |
+
switch ( $column_name ) {
|
91 |
+
case 'action' :
|
92 |
+
$return = __( $item->action, 'aryo-aal' );
|
93 |
+
break;
|
94 |
+
case 'date' :
|
95 |
+
$return = sprintf( '<strong>' . __( '%s ago', 'aryo-aal' ) . '</strong>', human_time_diff( $item->hist_time, current_time( 'timestamp' ) ) );
|
96 |
+
$return .= '<br />' . date( 'd/m/Y H:i', $item->hist_time );
|
97 |
+
break;
|
98 |
+
default :
|
99 |
+
if ( isset( $item->$column_name ) )
|
100 |
+
$return = $item->$column_name;
|
101 |
+
}
|
102 |
+
|
103 |
+
return $return;
|
104 |
+
}
|
105 |
+
|
106 |
+
public function column_type( $item ) {
|
107 |
+
$return = __( $item->object_type, 'aryo-aal' );
|
108 |
+
|
109 |
+
if ( ! empty( $item->object_subtype ) ) {
|
110 |
+
$pt = get_post_type_object( $item->object_subtype );
|
111 |
+
$label = ! empty( $pt->label ) ? $pt->label : $item->object_subtype;
|
112 |
+
$return .= sprintf( '<span class="aal-pt" title="%s">%s</span>', $label, $item->object_subtype );
|
113 |
+
}
|
114 |
+
|
115 |
+
$user = false;
|
116 |
+
$return .= '<br />' . __( 'by ', 'aryo-aal' );
|
117 |
+
if ( ! empty( $item->user_id ) )
|
118 |
+
$user = get_user_by( 'id', $item->user_id );
|
119 |
+
|
120 |
+
if ( $user )
|
121 |
+
$return .= '<a href="user-edit.php?user_id=' . absint( $user->ID ) . '">' . esc_html( $user->user_login ) . '</a>';
|
122 |
+
else
|
123 |
+
$return .= __( 'Guest', 'aryo-aal' );
|
124 |
+
|
125 |
+
$return .= ' (<code>' . $item->hist_ip . '</code>)';
|
126 |
+
|
127 |
+
return $return;
|
128 |
+
}
|
129 |
+
|
130 |
+
public function column_name( $item ) {
|
131 |
+
switch ( $item->object_type ) {
|
132 |
+
case 'Post' :
|
133 |
+
$return = '<a href="post.php?post=' . $item->object_id . '&action=edit">' . $item->object_name . '</a>';
|
134 |
+
break;
|
135 |
+
|
136 |
+
default :
|
137 |
+
$return = $item->object_name;
|
138 |
+
}
|
139 |
+
|
140 |
+
return $return;
|
141 |
+
}
|
142 |
+
|
143 |
+
public function extra_tablenav( $which ) {
|
144 |
+
global $wpdb;
|
145 |
+
|
146 |
+
if ( 'top' !== $which )
|
147 |
+
return;
|
148 |
+
|
149 |
+
echo '<div class="alignleft actions">';
|
150 |
+
|
151 |
+
$users = $wpdb->get_results( $wpdb->prepare(
|
152 |
+
'SELECT * FROM `%1$s`
|
153 |
+
WHERE 1 = 1
|
154 |
+
' . $this->_get_where_by_role() . '
|
155 |
+
GROUP BY `user_id`
|
156 |
+
ORDER BY `user_id`
|
157 |
+
;',
|
158 |
+
$wpdb->activity_log
|
159 |
+
) );
|
160 |
+
|
161 |
+
if ( $users ) {
|
162 |
+
if ( ! isset( $_REQUEST['usershow'] ) )
|
163 |
+
$_REQUEST['usershow'] = '';
|
164 |
+
|
165 |
+
$output = array();
|
166 |
+
foreach ( $users as $_user ) {
|
167 |
+
if ( 0 === (int) $_user->user_id ) {
|
168 |
+
$output[0] = __( 'Guest', 'aryo-aal' );
|
169 |
+
continue;
|
170 |
+
}
|
171 |
+
|
172 |
+
$user = get_user_by( 'id', $_user->user_id );
|
173 |
+
if ( $user )
|
174 |
+
$output[ $user->ID ] = $user->user_nicename;
|
175 |
+
}
|
176 |
+
|
177 |
+
if ( ! empty( $output ) ) {
|
178 |
+
echo '<select name="usershow" id="hs-filter-usershow">';
|
179 |
+
printf( '<option value="">%s</option>', __( 'All Users', 'aryo-aal' ) );
|
180 |
+
foreach ( $output as $key => $value ) {
|
181 |
+
printf( '<option value="%s"%s>%s</option>', $key, selected( $_REQUEST['usershow'], $key, false ), $value );
|
182 |
+
}
|
183 |
+
echo '</select>';
|
184 |
+
}
|
185 |
+
}
|
186 |
+
|
187 |
+
$types = $wpdb->get_results( $wpdb->prepare(
|
188 |
+
'SELECT * FROM `%1$s`
|
189 |
+
WHERE 1 = 1
|
190 |
+
' . $this->_get_where_by_role() . '
|
191 |
+
GROUP BY `object_type`
|
192 |
+
ORDER BY `object_type`
|
193 |
+
;',
|
194 |
+
$wpdb->activity_log
|
195 |
+
) );
|
196 |
+
|
197 |
+
if ( $types ) {
|
198 |
+
if ( ! isset( $_REQUEST['typeshow'] ) )
|
199 |
+
$_REQUEST['typeshow'] = '';
|
200 |
+
|
201 |
+
$output = array();
|
202 |
+
foreach ( $types as $type )
|
203 |
+
$output[] = sprintf( '<option value="%1$s"%2$s>%1$s</option>', $type->object_type, selected( $_REQUEST['typeshow'], $type->object_type, false ) );
|
204 |
+
|
205 |
+
echo '<select name="typeshow" id="hs-filter-typeshow">';
|
206 |
+
printf( '<option value="">%s</option>', __( 'All Types', 'aryo-aal' ) );
|
207 |
+
echo implode( '', $output );
|
208 |
+
echo '</select>';
|
209 |
+
}
|
210 |
+
|
211 |
+
if ( $users || $types )
|
212 |
+
submit_button( __( 'Filter', 'aryo-aal' ), 'button', false, false, array( 'id' => 'activity-query-submit' ) );
|
213 |
+
|
214 |
+
echo '</div>';
|
215 |
+
}
|
216 |
+
|
217 |
+
public function prepare_items() {
|
218 |
+
global $wpdb;
|
219 |
+
|
220 |
+
/** @todo: add setting page with this value. */
|
221 |
+
$items_per_page = 20;
|
222 |
+
$this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() );
|
223 |
+
$where = ' WHERE 1=1';
|
224 |
+
|
225 |
+
if ( ! empty( $_REQUEST['typeshow'] ) ) {
|
226 |
+
$where .= $wpdb->prepare( ' AND `object_type` = \'%s\'', $_REQUEST['typeshow'] );
|
227 |
+
}
|
228 |
+
|
229 |
+
if ( isset( $_REQUEST['usershow'] ) && '' !== $_REQUEST['usershow'] ) {
|
230 |
+
$where .= $wpdb->prepare( ' AND `user_id` = %d', $_REQUEST['usershow'] );
|
231 |
+
}
|
232 |
+
|
233 |
+
$offset = ( $this->get_pagenum() - 1 ) * $items_per_page;
|
234 |
+
|
235 |
+
$total_items = $wpdb->get_var( $wpdb->prepare(
|
236 |
+
'SELECT COUNT(`histid`) FROM `%1$s`
|
237 |
+
' . $where . '
|
238 |
+
' . $this->_get_where_by_role(),
|
239 |
+
$wpdb->activity_log,
|
240 |
+
$offset,
|
241 |
+
$items_per_page
|
242 |
+
) );
|
243 |
+
|
244 |
+
$this->items = $wpdb->get_results( $wpdb->prepare(
|
245 |
+
'SELECT * FROM `%1$s`
|
246 |
+
' . $where . '
|
247 |
+
' . $this->_get_where_by_role() . '
|
248 |
+
ORDER BY `hist_time` DESC
|
249 |
+
LIMIT %2$d, %3$d;',
|
250 |
+
$wpdb->activity_log,
|
251 |
+
$offset,
|
252 |
+
$items_per_page
|
253 |
+
) );
|
254 |
+
|
255 |
+
$this->set_pagination_args( array(
|
256 |
+
'total_items' => $total_items,
|
257 |
+
'per_page' => $items_per_page,
|
258 |
+
'total_pages' => ceil( $total_items / $items_per_page )
|
259 |
+
) );
|
260 |
+
}
|
261 |
+
|
262 |
+
}
|
classes/class-admin-ui.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
4 |
+
|
5 |
+
class AAL_Admin_Ui {
|
6 |
+
|
7 |
+
public function create_admin_menu() {
|
8 |
+
add_dashboard_page( __( 'Activity Log', 'aryo-aal' ), __( 'Activity Log', 'aryo-aal' ), 'edit_pages', 'activity_log_page', array( &$this, 'activity_log_page_func' ) );
|
9 |
+
}
|
10 |
+
|
11 |
+
public function activity_log_page_func() {
|
12 |
+
$activity_table = new AAL_Activity_Log_List_Table();
|
13 |
+
$activity_table->prepare_items();
|
14 |
+
|
15 |
+
?>
|
16 |
+
<div class="wrap">
|
17 |
+
<?php screen_icon(); ?>
|
18 |
+
<h2><?php _e( 'Activity Log', 'aryo-aal' ); ?></h2>
|
19 |
+
|
20 |
+
<form id="activity-filter" method="get">
|
21 |
+
<input type="hidden" name="page" value="<?php echo $_REQUEST['page'] ?>" />
|
22 |
+
<?php $activity_table->display(); ?>
|
23 |
+
</form>
|
24 |
+
</div>
|
25 |
+
|
26 |
+
<?php /* @todo move to a separate file */ ?>
|
27 |
+
<style>
|
28 |
+
|
29 |
+
.aal-pt {
|
30 |
+
color: white;
|
31 |
+
padding: 1px 5px;
|
32 |
+
margin-left: 5px;
|
33 |
+
font-size: 0.8em;
|
34 |
+
border-radius: 3px;
|
35 |
+
background: #1e5799;
|
36 |
+
font-family: Consolas,Monaco,monospace;
|
37 |
+
background: -moz-linear-gradient(top, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%);
|
38 |
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#1e5799), color-stop(50%,#2989d8), color-stop(51%,#207cca), color-stop(100%,#7db9e8));
|
39 |
+
background: -webkit-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);
|
40 |
+
background: -o-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);
|
41 |
+
background: -ms-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);
|
42 |
+
background: linear-gradient(to bottom, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);
|
43 |
+
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 );
|
44 |
+
}
|
45 |
+
|
46 |
+
</style>
|
47 |
+
<?php
|
48 |
+
}
|
49 |
+
|
50 |
+
public function __construct() {
|
51 |
+
add_action( 'admin_menu', array( &$this, 'create_admin_menu' ) );
|
52 |
+
}
|
53 |
+
}
|
classes/class-api.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
4 |
+
|
5 |
+
class AAL_API {
|
6 |
+
|
7 |
+
protected function _delete_old_items() {
|
8 |
+
global $wpdb;
|
9 |
+
|
10 |
+
$logs_lifespan = absint( AAL_Settings::get_option( 'logs_lifespan' ) );
|
11 |
+
if ( empty( $logs_lifespan ) )
|
12 |
+
return;
|
13 |
+
|
14 |
+
$wpdb->query( $wpdb->prepare(
|
15 |
+
'DELETE FROM `%1$s`
|
16 |
+
WHERE `hist_time` < %2$d',
|
17 |
+
$wpdb->activity_log,
|
18 |
+
strtotime( '-' . $logs_lifespan . ' days', current_time( 'timestamp' ) )
|
19 |
+
) );
|
20 |
+
}
|
21 |
+
|
22 |
+
public static function insert( $args ) {
|
23 |
+
global $wpdb;
|
24 |
+
|
25 |
+
$args = wp_parse_args( $args, array(
|
26 |
+
'action' => '',
|
27 |
+
'object_type' => '',
|
28 |
+
'object_subtype' => '',
|
29 |
+
'object_name' => '',
|
30 |
+
'object_id' => '',
|
31 |
+
'hist_ip' => $_SERVER['REMOTE_ADDR'],
|
32 |
+
'hist_time' => current_time( 'timestamp' ),
|
33 |
+
) );
|
34 |
+
|
35 |
+
$user = get_user_by( 'id', get_current_user_id() );
|
36 |
+
if ( $user ) {
|
37 |
+
$args['user_caps'] = strtolower( key( $user->caps ) );
|
38 |
+
if ( empty( $args['user_id'] ) )
|
39 |
+
$args['user_id'] = $user->ID;
|
40 |
+
} else {
|
41 |
+
$args['user_caps'] = 'guest';
|
42 |
+
if ( empty( $args['user_id'] ) )
|
43 |
+
$args['user_id'] = 0;
|
44 |
+
}
|
45 |
+
|
46 |
+
$wpdb->insert( $wpdb->activity_log,
|
47 |
+
array(
|
48 |
+
'action' => $args['action'],
|
49 |
+
'object_type' => $args['object_type'],
|
50 |
+
'object_subtype' => $args['object_subtype'],
|
51 |
+
'object_name' => $args['object_name'],
|
52 |
+
'object_id' => $args['object_id'],
|
53 |
+
'user_id' => $args['user_id'],
|
54 |
+
'user_caps' => $args['user_caps'],
|
55 |
+
'hist_ip' => $args['hist_ip'],
|
56 |
+
'hist_time' => $args['hist_time'],
|
57 |
+
),
|
58 |
+
array( "%s", "%s", "%s", "%s", "%d", "%d", "%s", "%s", "%d" )
|
59 |
+
);
|
60 |
+
|
61 |
+
// Remove old items.
|
62 |
+
self::_delete_old_items();
|
63 |
+
do_action( 'aal_insert_log', $args );
|
64 |
+
}
|
65 |
+
|
66 |
+
}
|
67 |
+
|
68 |
+
function aal_insert_log( $args = array() ) {
|
69 |
+
AAL_API::insert( $args );
|
70 |
+
}
|
classes/class-hooks.php
ADDED
@@ -0,0 +1,341 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
4 |
+
|
5 |
+
class AAL_Hooks {
|
6 |
+
|
7 |
+
protected function _add_log_attachment( $action, $attachment_id ) {
|
8 |
+
$post = get_post( $attachment_id );
|
9 |
+
|
10 |
+
aal_insert_log( array(
|
11 |
+
'action' => $action,
|
12 |
+
'object_type' => 'Attachment',
|
13 |
+
'object_subtype' => $post->post_type,
|
14 |
+
'object_id' => $attachment_id,
|
15 |
+
'object_name' => get_the_title( $post->ID ),
|
16 |
+
) );
|
17 |
+
}
|
18 |
+
|
19 |
+
protected function _add_log_plugin( $action, $plugin_name ) {
|
20 |
+
// Get plugin name if is a path
|
21 |
+
if ( false !== strpos( $plugin_name, '/' ) ) {
|
22 |
+
$plugin_dir = explode( '/', $plugin_name );
|
23 |
+
$plugin_data = array_shift( array_values( get_plugins( '/' . $plugin_dir[0] ) ) );
|
24 |
+
$plugin_name = $plugin_data['Name'];
|
25 |
+
}
|
26 |
+
|
27 |
+
aal_insert_log( array(
|
28 |
+
'action' => $action,
|
29 |
+
'object_type' => 'Plugin',
|
30 |
+
'object_id' => 0,
|
31 |
+
'object_name' => $plugin_name,
|
32 |
+
) );
|
33 |
+
}
|
34 |
+
|
35 |
+
public function init() {
|
36 |
+
// User
|
37 |
+
add_filter( 'wp_login_failed', array( &$this, 'hooks_wrong_password' ) );
|
38 |
+
add_action( 'wp_login', array( &$this, 'hooks_wp_login' ), 10, 2 );
|
39 |
+
add_action( 'wp_logout', array( &$this, 'hooks_wp_logout' ) );
|
40 |
+
add_action( 'delete_user', array( &$this, 'hooks_delete_user' ) );
|
41 |
+
add_action( 'user_register', array( &$this, 'hooks_user_register' ) );
|
42 |
+
add_action( 'profile_update', array( &$this, 'hooks_profile_update' ) );
|
43 |
+
|
44 |
+
// Plugins
|
45 |
+
add_action( 'activated_plugin', array( &$this, 'hooks_activated_plugin' ) );
|
46 |
+
add_action( 'deactivated_plugin', array( &$this, 'hooks_deactivated_plugin' ) );
|
47 |
+
add_filter( 'wp_redirect', array( &$this, 'hooks_plugin_modify' ), 10, 2 );
|
48 |
+
|
49 |
+
// Theme
|
50 |
+
add_filter( 'wp_redirect', array( &$this, 'hooks_theme_modify' ), 10, 2 );
|
51 |
+
|
52 |
+
// Theme customizer
|
53 |
+
add_action( 'customize_save', array( &$this, 'hooks_theme_customizer_modified' ) );
|
54 |
+
//add_action( 'customize_preview_init', array( &$this, 'hooks_theme_customizer_modified' ) );
|
55 |
+
|
56 |
+
// Options
|
57 |
+
add_action( 'updated_option', array( &$this, 'hooks_updated_option' ), 10, 3 );
|
58 |
+
|
59 |
+
}
|
60 |
+
|
61 |
+
public function admin_init() {
|
62 |
+
// Posts
|
63 |
+
add_action( 'transition_post_status', array( &$this, 'hooks_transition_post_status' ), 10, 3 );
|
64 |
+
add_action( 'delete_post', array( &$this, 'hooks_delete_post' ) );
|
65 |
+
|
66 |
+
// Attachments
|
67 |
+
add_action( 'add_attachment', array( &$this, 'hooks_add_attachment' ) );
|
68 |
+
add_action( 'edit_attachment', array( &$this, 'hooks_edit_attachment' ) );
|
69 |
+
add_action( 'delete_attachment', array( &$this, 'hooks_delete_attachment' ) );
|
70 |
+
|
71 |
+
// Widgets
|
72 |
+
add_filter( 'widget_update_callback', array( &$this, 'hooks_widget_update_callback' ), 9999, 4 );
|
73 |
+
add_filter( 'sidebar_admin_setup', array( &$this, 'hooks_widget_delete' ) ); // Widget delete.
|
74 |
+
}
|
75 |
+
|
76 |
+
public function hooks_delete_attachment( $attachment_id ) {
|
77 |
+
$this->_add_log_attachment( 'deleted', $attachment_id );
|
78 |
+
}
|
79 |
+
|
80 |
+
public function hooks_edit_attachment( $attachment_id ) {
|
81 |
+
$this->_add_log_attachment( 'updated', $attachment_id );
|
82 |
+
}
|
83 |
+
|
84 |
+
public function hooks_add_attachment( $attachment_id ) {
|
85 |
+
$this->_add_log_attachment( 'added', $attachment_id );
|
86 |
+
}
|
87 |
+
|
88 |
+
public function hooks_deactivated_plugin( $plugin_name ) {
|
89 |
+
$this->_add_log_plugin( 'deactivated', $plugin_name );
|
90 |
+
}
|
91 |
+
|
92 |
+
public function hooks_activated_plugin( $plugin_name ) {
|
93 |
+
$this->_add_log_plugin( 'activated', $plugin_name );
|
94 |
+
}
|
95 |
+
|
96 |
+
public function hooks_profile_update( $user_id ) {
|
97 |
+
$user = get_user_by( 'id', $user_id );
|
98 |
+
|
99 |
+
aal_insert_log( array(
|
100 |
+
'action' => 'updated',
|
101 |
+
'object_type' => 'User',
|
102 |
+
'object_id' => $user->ID,
|
103 |
+
'object_name' => $user->user_nicename,
|
104 |
+
) );
|
105 |
+
}
|
106 |
+
|
107 |
+
public function hooks_user_register( $user_id ) {
|
108 |
+
$user = get_user_by( 'id', $user_id );
|
109 |
+
|
110 |
+
aal_insert_log( array(
|
111 |
+
'action' => 'created',
|
112 |
+
'object_type' => 'User',
|
113 |
+
'object_id' => $user->ID,
|
114 |
+
'object_name' => $user->user_nicename,
|
115 |
+
) );
|
116 |
+
}
|
117 |
+
|
118 |
+
public function hooks_delete_user( $user_id ) {
|
119 |
+
$user = get_user_by( 'id', $user_id );
|
120 |
+
|
121 |
+
aal_insert_log( array(
|
122 |
+
'action' => 'deleted',
|
123 |
+
'object_type' => 'User',
|
124 |
+
'object_id' => $user->ID,
|
125 |
+
'object_name' => $user->user_nicename,
|
126 |
+
) );
|
127 |
+
}
|
128 |
+
|
129 |
+
public function hooks_wrong_password( $username ) {
|
130 |
+
aal_insert_log( array(
|
131 |
+
'action' => 'wrong_password',
|
132 |
+
'object_type' => 'User',
|
133 |
+
'user_id' => 0,
|
134 |
+
'object_id' => 0,
|
135 |
+
'object_name' => $username,
|
136 |
+
) );
|
137 |
+
}
|
138 |
+
|
139 |
+
public function hooks_wp_login( $user_login, $user ) {
|
140 |
+
aal_insert_log( array(
|
141 |
+
'action' => 'logged_in',
|
142 |
+
'object_type' => 'User',
|
143 |
+
'user_id' => $user->ID,
|
144 |
+
'object_id' => $user->ID,
|
145 |
+
'object_name' => $user->user_nicename,
|
146 |
+
) );
|
147 |
+
}
|
148 |
+
|
149 |
+
public function hooks_wp_logout() {
|
150 |
+
$user = wp_get_current_user();
|
151 |
+
|
152 |
+
aal_insert_log( array(
|
153 |
+
'action' => 'logged_out',
|
154 |
+
'object_type' => 'User',
|
155 |
+
'user_id' => $user->ID,
|
156 |
+
'object_id' => $user->ID,
|
157 |
+
'object_name' => $user->user_nicename,
|
158 |
+
) );
|
159 |
+
}
|
160 |
+
|
161 |
+
public function hooks_transition_post_status( $new_status, $old_status, $post ) {
|
162 |
+
$action = '';
|
163 |
+
|
164 |
+
if ( 'auto-draft' === $old_status && ( 'auto-draft' !== $new_status && 'inherit' !== $new_status ) ) {
|
165 |
+
// page created
|
166 |
+
$action = 'created';
|
167 |
+
}
|
168 |
+
elseif ( 'auto-draft' === $new_status || ( 'new' === $old_status && 'inherit' === $new_status ) ) {
|
169 |
+
// nvm.. ignore it.
|
170 |
+
return;
|
171 |
+
}
|
172 |
+
elseif ( 'trash' === $new_status ) {
|
173 |
+
// page was deleted.
|
174 |
+
$action = 'deleted';
|
175 |
+
}
|
176 |
+
else {
|
177 |
+
// page updated. i guess.
|
178 |
+
$action = 'updated';
|
179 |
+
}
|
180 |
+
|
181 |
+
if ( wp_is_post_revision( $post->ID ) )
|
182 |
+
return;
|
183 |
+
|
184 |
+
aal_insert_log( array(
|
185 |
+
'action' => $action,
|
186 |
+
'object_type' => 'Post',
|
187 |
+
'object_subtype' => $post->post_type,
|
188 |
+
'object_id' => $post->ID,
|
189 |
+
'object_name' => _draft_or_post_title( $post->ID ),
|
190 |
+
) );
|
191 |
+
}
|
192 |
+
|
193 |
+
public function hooks_delete_post( $post_id ) {
|
194 |
+
if ( wp_is_post_revision( $post_id ) )
|
195 |
+
return;
|
196 |
+
|
197 |
+
$post = get_post( $post_id );
|
198 |
+
|
199 |
+
if ( in_array( $post->post_status, array( 'auto-draft', 'inherit' ) ) )
|
200 |
+
return;
|
201 |
+
|
202 |
+
aal_insert_log( array(
|
203 |
+
'action' => 'deleted',
|
204 |
+
'object_type' => 'Post',
|
205 |
+
'object_subtype' => $post->post_type,
|
206 |
+
'object_id' => $post->ID,
|
207 |
+
'object_name' => _draft_or_post_title( $post->ID ),
|
208 |
+
) );
|
209 |
+
}
|
210 |
+
|
211 |
+
public function hooks_widget_update_callback( $instance, $new_instance, $old_instance, WP_Widget $widget ) {
|
212 |
+
$aal_args = array(
|
213 |
+
'action' => 'updated',
|
214 |
+
'object_type' => 'Widget',
|
215 |
+
'object_subtype' => 'sidebar_unknown',
|
216 |
+
'object_id' => 0,
|
217 |
+
'object_name' => $widget->id_base,
|
218 |
+
);
|
219 |
+
|
220 |
+
if ( ! empty( $_REQUEST['sidebar'] ) )
|
221 |
+
$aal_args['object_subtype'] = strtolower( $_REQUEST['sidebar'] );
|
222 |
+
|
223 |
+
/** @todo: find any way to widget deleted detected */
|
224 |
+
/*if ( isset( $_REQUEST['delete_widget'] ) && '1' === $_REQUEST['delete_widget'] ) {
|
225 |
+
$aal_args['action'] = 'deleted';
|
226 |
+
}*/
|
227 |
+
|
228 |
+
aal_insert_log( $aal_args );
|
229 |
+
|
230 |
+
// We are need return the instance, for complete the filter.
|
231 |
+
return $instance;
|
232 |
+
}
|
233 |
+
|
234 |
+
public function hooks_widget_delete() {
|
235 |
+
// A reference: http://grinninggecko.com/hooking-into-widget-delete-action-in-wordpress/
|
236 |
+
if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && ! empty( $_REQUEST['widget-id'] ) ) {
|
237 |
+
if ( isset( $_REQUEST['delete_widget'] ) && 1 === (int) $_REQUEST['delete_widget'] ) {
|
238 |
+
aal_insert_log( array(
|
239 |
+
'action' => 'deleted',
|
240 |
+
'object_type' => 'Widget',
|
241 |
+
'object_subtype' => strtolower( $_REQUEST['sidebar'] ),
|
242 |
+
'object_id' => 0,
|
243 |
+
'object_name' => $_REQUEST['id_base'],
|
244 |
+
) );
|
245 |
+
}
|
246 |
+
}
|
247 |
+
}
|
248 |
+
|
249 |
+
public function hooks_theme_modify( $location, $status ) {
|
250 |
+
if ( false !== strpos( $location, 'theme-editor.php?file=' ) ) {
|
251 |
+
if ( ! empty( $_POST ) && 'update' === $_POST['action'] ) {
|
252 |
+
$aal_args = array(
|
253 |
+
'action' => 'file_updated',
|
254 |
+
'object_type' => 'Theme',
|
255 |
+
'object_subtype' => 'theme_unknown',
|
256 |
+
'object_id' => 0,
|
257 |
+
'object_name' => 'file_unknown',
|
258 |
+
);
|
259 |
+
|
260 |
+
if ( ! empty( $_POST['file'] ) )
|
261 |
+
$aal_args['object_name'] = $_POST['file'];
|
262 |
+
|
263 |
+
if ( ! empty( $_POST['theme'] ) )
|
264 |
+
$aal_args['object_subtype'] = $_POST['theme'];
|
265 |
+
|
266 |
+
aal_insert_log( $aal_args );
|
267 |
+
}
|
268 |
+
}
|
269 |
+
|
270 |
+
// We are need return the instance, for complete the filter.
|
271 |
+
return $location;
|
272 |
+
}
|
273 |
+
|
274 |
+
public function hooks_plugin_modify( $location, $status ) {
|
275 |
+
if ( false !== strpos( $location, 'plugin-editor.php' ) ) {
|
276 |
+
if ( ( ! empty( $_POST ) && 'update' === $_REQUEST['action'] ) ) {
|
277 |
+
$aal_args = array(
|
278 |
+
'action' => 'file_updated',
|
279 |
+
'object_type' => 'Plugin',
|
280 |
+
'object_subtype' => 'plugin_unknown',
|
281 |
+
'object_id' => 0,
|
282 |
+
'object_name' => 'file_unknown',
|
283 |
+
);
|
284 |
+
|
285 |
+
if ( ! empty( $_REQUEST['file'] ) ) {
|
286 |
+
$aal_args['object_name'] = $_REQUEST['file'];
|
287 |
+
// Get plugin name
|
288 |
+
$plugin_dir = explode( '/', $_REQUEST['file'] );
|
289 |
+
$plugin_data = array_shift( array_values( get_plugins( '/' . $plugin_dir[0] ) ) );
|
290 |
+
|
291 |
+
$aal_args['object_subtype'] = $plugin_data['Name'];
|
292 |
+
}
|
293 |
+
aal_insert_log( $aal_args );
|
294 |
+
}
|
295 |
+
}
|
296 |
+
|
297 |
+
// We are need return the instance, for complete the filter.
|
298 |
+
return $location;
|
299 |
+
}
|
300 |
+
|
301 |
+
public function hooks_theme_customizer_modified( $obj ) {
|
302 |
+
$aal_args = array(
|
303 |
+
'action' => 'updated',
|
304 |
+
'object_type' => 'Theme',
|
305 |
+
'object_subtype' => $obj->theme()->display( 'Name' ),
|
306 |
+
'object_id' => 0,
|
307 |
+
'object_name' => 'theme customizer',
|
308 |
+
);
|
309 |
+
|
310 |
+
if ( 'customize_preview_init' === current_filter() )
|
311 |
+
$aal_args['action'] = 'accessed';
|
312 |
+
|
313 |
+
aal_insert_log( $aal_args );
|
314 |
+
}
|
315 |
+
|
316 |
+
public function hooks_updated_option( $option, $oldvalue, $_newvalue ) {
|
317 |
+
$whitelist_options = apply_filters( 'aal_whitelist_options', array(
|
318 |
+
'siteurl',
|
319 |
+
'home',
|
320 |
+
'blogname',
|
321 |
+
'blogdescription',
|
322 |
+
'admin_email',
|
323 |
+
'avatar_default',
|
324 |
+
) );
|
325 |
+
|
326 |
+
if ( ! in_array( $option, $whitelist_options ) )
|
327 |
+
return;
|
328 |
+
|
329 |
+
// TODO: need to think about save old & new values.
|
330 |
+
aal_insert_log( array(
|
331 |
+
'action' => 'updated',
|
332 |
+
'object_type' => 'Options',
|
333 |
+
'object_name' => $option,
|
334 |
+
) );
|
335 |
+
}
|
336 |
+
|
337 |
+
public function __construct() {
|
338 |
+
add_action( 'init', array( &$this, 'init' ) );
|
339 |
+
add_action( 'admin_init', array( &$this, 'admin_init' ) );
|
340 |
+
}
|
341 |
+
}
|
classes/class-maintenance.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
4 |
+
|
5 |
+
class AAL_Maintenance {
|
6 |
+
|
7 |
+
public static function activate() {
|
8 |
+
global $wpdb;
|
9 |
+
|
10 |
+
$sql = "CREATE TABLE IF NOT EXISTS `{$wpdb->activity_log}` (
|
11 |
+
`histid` int(11) NOT NULL AUTO_INCREMENT,
|
12 |
+
`user_caps` varchar(70) NOT NULL DEFAULT 'guest',
|
13 |
+
`action` varchar(255) NOT NULL,
|
14 |
+
`object_type` varchar(255) NOT NULL,
|
15 |
+
`object_subtype` varchar(255) NOT NULL DEFAULT '',
|
16 |
+
`object_name` varchar(255) NOT NULL,
|
17 |
+
`object_id` int(11) NOT NULL DEFAULT '0',
|
18 |
+
`user_id` int(11) NOT NULL DEFAULT '0',
|
19 |
+
`hist_ip` varchar(55) NOT NULL DEFAULT '127.0.0.1',
|
20 |
+
`hist_time` int(11) NOT NULL DEFAULT '0',
|
21 |
+
PRIMARY KEY (`histid`)
|
22 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;";
|
23 |
+
|
24 |
+
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
25 |
+
dbDelta( $sql );
|
26 |
+
|
27 |
+
update_option( 'activity_log_db_version', '1.0' );
|
28 |
+
}
|
29 |
+
|
30 |
+
public static function uninstall() {
|
31 |
+
global $wpdb;
|
32 |
+
|
33 |
+
$wpdb->query( "DROP TABLE IF EXISTS $wpdb->activity_log" );
|
34 |
+
|
35 |
+
delete_option( 'activity_log_db_version' );
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
register_activation_hook( ACTIVITY_LOG_BASE, array( 'AAL_Maintenance', 'activate' ) );
|
40 |
+
register_uninstall_hook( ACTIVITY_LOG_BASE, array( 'AAL_Maintenance', 'uninstall' ) );
|
classes/class-settings.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
4 |
+
|
5 |
+
class AAL_Settings {
|
6 |
+
|
7 |
+
private $hook;
|
8 |
+
private $slug;
|
9 |
+
|
10 |
+
public function __construct() {
|
11 |
+
add_action( 'admin_menu', array( &$this, 'action_admin_menu' ) );
|
12 |
+
add_action( 'admin_init', array( &$this, 'register_settings' ) );
|
13 |
+
}
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Register the settings page
|
17 |
+
*
|
18 |
+
* @since 1.0
|
19 |
+
*/
|
20 |
+
public function action_admin_menu() {
|
21 |
+
$this->hook = add_options_page(
|
22 |
+
__( 'Activity Log Settings', 'aryo-aal' ), // <title> tag
|
23 |
+
__( 'Activity Log', 'aryo-aal' ), // menu label
|
24 |
+
'manage_options', // required cap to view this page
|
25 |
+
$this->slug = 'activity-log-settings', // page slug
|
26 |
+
array( &$this, 'display_settings_page' ) // callback
|
27 |
+
);
|
28 |
+
|
29 |
+
// this callback will initialize the settings for AAL
|
30 |
+
// add_action( "load-$this->hook", array( $this, 'register_settings' ) );
|
31 |
+
}
|
32 |
+
|
33 |
+
public function register_settings() {
|
34 |
+
// If no options exist, create them.
|
35 |
+
if ( ! get_option( $this->slug ) ) {
|
36 |
+
update_option( $this->slug, apply_filters( 'aal_default_options', array(
|
37 |
+
'logs_lifespan' => 'forever',
|
38 |
+
) ) );
|
39 |
+
}
|
40 |
+
|
41 |
+
// First, we register a section. This is necessary since all future options must belong to a
|
42 |
+
add_settings_section(
|
43 |
+
'general_settings_section', // ID used to identify this section and with which to register options
|
44 |
+
__( 'Display Options', 'aryo-aal' ), // Title to be displayed on the administration page
|
45 |
+
array( 'AAL_Settings_Fields', 'description' ), // Callback used to render the description of the section
|
46 |
+
$this->slug // Page on which to add this section of options
|
47 |
+
);
|
48 |
+
|
49 |
+
add_settings_field(
|
50 |
+
'logs_lifespan',
|
51 |
+
__( 'Keep logs for', 'aryo-aal' ),
|
52 |
+
array( 'AAL_Settings_Fields', 'select' ),
|
53 |
+
$this->slug,
|
54 |
+
'general_settings_section',
|
55 |
+
array(
|
56 |
+
'id' => 'logs_lifespan',
|
57 |
+
'page' => $this->slug,
|
58 |
+
'options' => array(
|
59 |
+
'' => __( 'Forever', 'aryo-aal' ),
|
60 |
+
'365' => __( 'A year', 'aryo-aal' ),
|
61 |
+
'90' => __( '6 months', 'aryo-aal' ),
|
62 |
+
'30' => __( 'A month', 'aryo-aal' ),
|
63 |
+
),
|
64 |
+
)
|
65 |
+
);
|
66 |
+
|
67 |
+
register_setting( 'aal-options', $this->slug );
|
68 |
+
}
|
69 |
+
|
70 |
+
public function display_settings_page() {
|
71 |
+
?>
|
72 |
+
<!-- Create a header in the default WordPress 'wrap' container -->
|
73 |
+
<div class="wrap">
|
74 |
+
|
75 |
+
<div id="icon-themes" class="icon32"></div>
|
76 |
+
<h2><?php _e( 'ARYO Activity Log Settings', 'aryo-aal' ); ?></h2>
|
77 |
+
|
78 |
+
<form method="post" action="options.php">
|
79 |
+
<?php
|
80 |
+
settings_fields( 'aal-options' );
|
81 |
+
do_settings_sections( $this->slug );
|
82 |
+
|
83 |
+
submit_button();
|
84 |
+
?>
|
85 |
+
</form>
|
86 |
+
|
87 |
+
</div><!-- /.wrap -->
|
88 |
+
<?php
|
89 |
+
}
|
90 |
+
|
91 |
+
public static function get_option( $key = '' ) {
|
92 |
+
$settings = get_option( 'activity-log-settings' );
|
93 |
+
return ! empty( $settings[ $key ] ) ? $settings[ $key ] : false;
|
94 |
+
}
|
95 |
+
|
96 |
+
}
|
97 |
+
|
98 |
+
final class AAL_Settings_Fields {
|
99 |
+
|
100 |
+
public static function description() {
|
101 |
+
?>
|
102 |
+
<p><?php _e( 'These are some basic settings for Activity Log.', 'aryo-aal' ); ?></p>
|
103 |
+
<?php
|
104 |
+
}
|
105 |
+
|
106 |
+
public static function select( $args ) {
|
107 |
+
extract( $args, EXTR_SKIP );
|
108 |
+
|
109 |
+
if ( empty( $options ) || empty( $id ) || empty( $page ) )
|
110 |
+
return;
|
111 |
+
|
112 |
+
?>
|
113 |
+
<select id="<?php echo esc_attr( $id ); ?>" name="<?php printf( '%s[%s]', esc_attr( $page ), esc_attr( $id ) ); ?>">
|
114 |
+
<?php foreach ( $options as $name => $label ) : ?>
|
115 |
+
<option value="<?php echo esc_attr( $name ); ?>" <?php selected( $name, (string) AAL_Settings::get_option( $id ) ); ?>>
|
116 |
+
<?php echo esc_html( $label ); ?>
|
117 |
+
</option>
|
118 |
+
<?php endforeach; ?>
|
119 |
+
</select>
|
120 |
+
<?php
|
121 |
+
}
|
122 |
+
|
123 |
+
}
|
language/activity-log.pot
ADDED
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2013
|
2 |
+
# This file is distributed under the same license as the package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/activity-log\n"
|
7 |
+
"POT-Creation-Date: 2013-05-23 07:35:20+00:00\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n"
|
12 |
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
+
|
15 |
+
#: classes/class-aal-activity-log-list-table.php:78
|
16 |
+
msgctxt "main table"
|
17 |
+
msgid "Type"
|
18 |
+
msgstr ""
|
19 |
+
|
20 |
+
#: classes/class-aal-activity-log-list-table.php:79
|
21 |
+
msgctxt "main table"
|
22 |
+
msgid "Name"
|
23 |
+
msgstr ""
|
24 |
+
|
25 |
+
#: classes/class-aal-activity-log-list-table.php:80
|
26 |
+
msgctxt "main table"
|
27 |
+
msgid "Action"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: classes/class-aal-activity-log-list-table.php:81
|
31 |
+
msgctxt "main table"
|
32 |
+
msgid "Date"
|
33 |
+
msgstr ""
|
34 |
+
|
35 |
+
#: classes/class-aal-activity-log-list-table.php:92
|
36 |
+
msgid "was "
|
37 |
+
msgstr ""
|
38 |
+
|
39 |
+
#: classes/class-aal-activity-log-list-table.php:95
|
40 |
+
msgid "%s ago"
|
41 |
+
msgstr ""
|
42 |
+
|
43 |
+
#: classes/class-aal-activity-log-list-table.php:116
|
44 |
+
msgid "by "
|
45 |
+
msgstr ""
|
46 |
+
|
47 |
+
#: classes/class-aal-activity-log-list-table.php:123
|
48 |
+
#: classes/class-aal-activity-log-list-table.php:168
|
49 |
+
msgid "Guest"
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
#: classes/class-aal-activity-log-list-table.php:179
|
53 |
+
msgid "All Users"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: classes/class-aal-activity-log-list-table.php:206
|
57 |
+
msgid "All Types"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: classes/class-aal-activity-log-list-table.php:211
|
61 |
+
msgid "Filter"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: classes/class-admin-ui.php:8 classes/class-admin-ui.php:18
|
65 |
+
#: classes/class-settings.php:23
|
66 |
+
msgid "Activity Log"
|
67 |
+
msgstr ""
|
68 |
+
|
69 |
+
#: classes/class-settings.php:22
|
70 |
+
msgid "Activity Log Settings"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: classes/class-settings.php:44
|
74 |
+
msgid "Display Options"
|
75 |
+
msgstr ""
|
76 |
+
|
77 |
+
#: classes/class-settings.php:51
|
78 |
+
msgid "Keep logs for"
|
79 |
+
msgstr ""
|
80 |
+
|
81 |
+
#: classes/class-settings.php:59
|
82 |
+
msgid "Forever"
|
83 |
+
msgstr ""
|
84 |
+
|
85 |
+
#: classes/class-settings.php:60
|
86 |
+
msgid "A year"
|
87 |
+
msgstr ""
|
88 |
+
|
89 |
+
#: classes/class-settings.php:61
|
90 |
+
msgid "6 months"
|
91 |
+
msgstr ""
|
92 |
+
|
93 |
+
#: classes/class-settings.php:62
|
94 |
+
msgid "A month"
|
95 |
+
msgstr ""
|
96 |
+
|
97 |
+
#: classes/class-settings.php:76
|
98 |
+
msgid "ARYO Activity Log Settings"
|
99 |
+
msgstr ""
|
100 |
+
|
101 |
+
#: classes/class-settings.php:102
|
102 |
+
msgid "These are some basic settings for Activity Log."
|
103 |
+
msgstr ""
|
104 |
+
|
105 |
+
#: language/strings.php:4
|
106 |
+
msgid "Post"
|
107 |
+
msgstr ""
|
108 |
+
|
109 |
+
#: language/strings.php:5
|
110 |
+
msgid "created"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: language/strings.php:6
|
114 |
+
msgid "updated"
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
#: language/strings.php:7
|
118 |
+
msgid "deleted"
|
119 |
+
msgstr ""
|
120 |
+
|
121 |
+
#: language/strings.php:10
|
122 |
+
msgid "Attachment"
|
123 |
+
msgstr ""
|
124 |
+
|
125 |
+
#: language/strings.php:11
|
126 |
+
msgid "added"
|
127 |
+
msgstr ""
|
128 |
+
|
129 |
+
#: language/strings.php:14
|
130 |
+
msgid "User"
|
131 |
+
msgstr ""
|
132 |
+
|
133 |
+
#: language/strings.php:15
|
134 |
+
msgid "logged_out"
|
135 |
+
msgstr ""
|
136 |
+
|
137 |
+
#: language/strings.php:16
|
138 |
+
msgid "logged_in"
|
139 |
+
msgstr ""
|
140 |
+
|
141 |
+
#: language/strings.php:17
|
142 |
+
msgid "wrong_password"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: language/strings.php:20
|
146 |
+
msgid "Plugin"
|
147 |
+
msgstr ""
|
148 |
+
|
149 |
+
#: language/strings.php:21
|
150 |
+
msgid "activated"
|
151 |
+
msgstr ""
|
152 |
+
|
153 |
+
#: language/strings.php:22
|
154 |
+
msgid "deactivated"
|
155 |
+
msgstr ""
|
language/aryo-aal-de_DE.mo
ADDED
Binary file
|
language/aryo-aal-de_DE.po
ADDED
@@ -0,0 +1,166 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2013
|
2 |
+
# This file is distributed under the same license as the package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: ARYO Activity Log\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/activity-log\n"
|
7 |
+
"POT-Creation-Date: 2013-05-27 22:28+0200\n"
|
8 |
+
"PO-Revision-Date: 2013-05-27 22:29+0200\n"
|
9 |
+
"Last-Translator: Yakir Sitbon <kingyes1@gmail.com>\n"
|
10 |
+
"Language-Team: Robert Harm <LL@li.org>\n"
|
11 |
+
"Language: de_DE\n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"X-Generator: Poedit 1.5.5\n"
|
16 |
+
|
17 |
+
#: ../classes/class-aal-activity-log-list-table.php:78
|
18 |
+
#, fuzzy
|
19 |
+
msgid "Type"
|
20 |
+
msgstr "Typ"
|
21 |
+
|
22 |
+
#: ../classes/class-aal-activity-log-list-table.php:79
|
23 |
+
#, fuzzy
|
24 |
+
msgid "Name"
|
25 |
+
msgstr "Name"
|
26 |
+
|
27 |
+
#: ../classes/class-aal-activity-log-list-table.php:80
|
28 |
+
#, fuzzy
|
29 |
+
msgid "Action"
|
30 |
+
msgstr "Aktion"
|
31 |
+
|
32 |
+
#: ../classes/class-aal-activity-log-list-table.php:81
|
33 |
+
#, fuzzy
|
34 |
+
msgid "Date"
|
35 |
+
msgstr "Datum"
|
36 |
+
|
37 |
+
#: ../classes/class-aal-activity-log-list-table.php:95
|
38 |
+
#, php-format
|
39 |
+
msgid "%s ago"
|
40 |
+
msgstr "vor %s"
|
41 |
+
|
42 |
+
#: ../classes/class-aal-activity-log-list-table.php:116
|
43 |
+
msgid "by "
|
44 |
+
msgstr "von"
|
45 |
+
|
46 |
+
#: ../classes/class-aal-activity-log-list-table.php:123
|
47 |
+
#: ../classes/class-aal-activity-log-list-table.php:168
|
48 |
+
msgid "Guest"
|
49 |
+
msgstr "Gast"
|
50 |
+
|
51 |
+
#: ../classes/class-aal-activity-log-list-table.php:179
|
52 |
+
msgid "All Users"
|
53 |
+
msgstr "Alle Benutzer"
|
54 |
+
|
55 |
+
#: ../classes/class-aal-activity-log-list-table.php:206
|
56 |
+
msgid "All Types"
|
57 |
+
msgstr "Alle Typen"
|
58 |
+
|
59 |
+
#: ../classes/class-aal-activity-log-list-table.php:212
|
60 |
+
msgid "Filter"
|
61 |
+
msgstr "Filter"
|
62 |
+
|
63 |
+
#: ../classes/class-admin-ui.php:8 ../classes/class-admin-ui.php:18
|
64 |
+
#: ../classes/class-settings.php:23
|
65 |
+
msgid "Activity Log"
|
66 |
+
msgstr "Aktivitätslog"
|
67 |
+
|
68 |
+
#: ../classes/class-settings.php:22
|
69 |
+
msgid "Activity Log Settings"
|
70 |
+
msgstr "Aktivitätslog-Einstellungen"
|
71 |
+
|
72 |
+
#: ../classes/class-settings.php:44
|
73 |
+
msgid "Display Options"
|
74 |
+
msgstr "Anzeigeoptionen"
|
75 |
+
|
76 |
+
#: ../classes/class-settings.php:51
|
77 |
+
msgid "Keep logs for"
|
78 |
+
msgstr "Logs aufbewahren für"
|
79 |
+
|
80 |
+
#: ../classes/class-settings.php:59
|
81 |
+
msgid "Forever"
|
82 |
+
msgstr "Für immer"
|
83 |
+
|
84 |
+
#: ../classes/class-settings.php:60
|
85 |
+
msgid "A year"
|
86 |
+
msgstr "1 Jahr"
|
87 |
+
|
88 |
+
#: ../classes/class-settings.php:61
|
89 |
+
msgid "6 months"
|
90 |
+
msgstr "6 Monate"
|
91 |
+
|
92 |
+
#: ../classes/class-settings.php:62
|
93 |
+
msgid "A month"
|
94 |
+
msgstr "1 Monat"
|
95 |
+
|
96 |
+
#: ../classes/class-settings.php:76
|
97 |
+
msgid "ARYO Activity Log Settings"
|
98 |
+
msgstr "ARYO Aktivitätslog-Einstellungen"
|
99 |
+
|
100 |
+
#: ../classes/class-settings.php:102
|
101 |
+
msgid "These are some basic settings for Activity Log."
|
102 |
+
msgstr "Basis-Einstellungen für das Aktivitätslog"
|
103 |
+
|
104 |
+
#: ../language/strings.php:4
|
105 |
+
msgid "Post"
|
106 |
+
msgstr "Beitrag"
|
107 |
+
|
108 |
+
#: ../language/strings.php:5
|
109 |
+
msgid "created"
|
110 |
+
msgstr "erstellt"
|
111 |
+
|
112 |
+
#: ../language/strings.php:6
|
113 |
+
msgid "updated"
|
114 |
+
msgstr "aktualisiert"
|
115 |
+
|
116 |
+
#: ../language/strings.php:7
|
117 |
+
msgid "deleted"
|
118 |
+
msgstr "gelöscht"
|
119 |
+
|
120 |
+
#: ../language/strings.php:10
|
121 |
+
msgid "Attachment"
|
122 |
+
msgstr "Anhang"
|
123 |
+
|
124 |
+
#: ../language/strings.php:11
|
125 |
+
msgid "added"
|
126 |
+
msgstr "hinzugefügt"
|
127 |
+
|
128 |
+
#: ../language/strings.php:14
|
129 |
+
msgid "User"
|
130 |
+
msgstr "Benutzer"
|
131 |
+
|
132 |
+
#: ../language/strings.php:15
|
133 |
+
msgid "logged_out"
|
134 |
+
msgstr "ausgeloggt"
|
135 |
+
|
136 |
+
#: ../language/strings.php:16
|
137 |
+
msgid "logged_in"
|
138 |
+
msgstr "eingeloggt"
|
139 |
+
|
140 |
+
#: ../language/strings.php:17
|
141 |
+
msgid "wrong_password"
|
142 |
+
msgstr "falsches_Passwort"
|
143 |
+
|
144 |
+
#: ../language/strings.php:20
|
145 |
+
msgid "Plugin"
|
146 |
+
msgstr "Plugin"
|
147 |
+
|
148 |
+
#: ../language/strings.php:21
|
149 |
+
msgid "activated"
|
150 |
+
msgstr "aktiviert"
|
151 |
+
|
152 |
+
#: ../language/strings.php:22
|
153 |
+
msgid "deactivated"
|
154 |
+
msgstr "deaktiviert"
|
155 |
+
|
156 |
+
#: ../language/strings.php:25
|
157 |
+
msgid "Widget"
|
158 |
+
msgstr "Widget"
|
159 |
+
|
160 |
+
#: ../language/strings.php:28
|
161 |
+
#, fuzzy
|
162 |
+
msgid "Options"
|
163 |
+
msgstr "Anzeigeoptionen"
|
164 |
+
|
165 |
+
#~ msgid "was "
|
166 |
+
#~ msgstr "war"
|
language/aryo-aal-he_IL.mo
ADDED
Binary file
|
language/aryo-aal-he_IL.po
ADDED
@@ -0,0 +1,167 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2013
|
2 |
+
# This file is distributed under the same license as the package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: ARYO Activity Log\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/activity-log\n"
|
7 |
+
"POT-Creation-Date: 2013-05-27 22:28+0200\n"
|
8 |
+
"PO-Revision-Date: 2013-05-27 22:31+0200\n"
|
9 |
+
"Last-Translator: Yakir Sitbon <kingyes1@gmail.com>\n"
|
10 |
+
"Language-Team: Yakir Sitbon & Arie Klikstein <aryodigital@gmail.com>\n"
|
11 |
+
"Language: he_IL\n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
16 |
+
"X-Generator: Poedit 1.5.5\n"
|
17 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
+
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;_x;_n:1,2;_c,_nc:4c,1,2\n"
|
19 |
+
"X-Poedit-Basepath: .\n"
|
20 |
+
"X-Poedit-SearchPath-0: ..\n"
|
21 |
+
|
22 |
+
#: ../classes/class-aal-activity-log-list-table.php:78
|
23 |
+
#, fuzzy
|
24 |
+
msgid "Type"
|
25 |
+
msgstr "סוג"
|
26 |
+
|
27 |
+
#: ../classes/class-aal-activity-log-list-table.php:79
|
28 |
+
#, fuzzy
|
29 |
+
msgid "Name"
|
30 |
+
msgstr "שם"
|
31 |
+
|
32 |
+
#: ../classes/class-aal-activity-log-list-table.php:80
|
33 |
+
#, fuzzy
|
34 |
+
msgid "Action"
|
35 |
+
msgstr "פעולה"
|
36 |
+
|
37 |
+
#: ../classes/class-aal-activity-log-list-table.php:81
|
38 |
+
#, fuzzy
|
39 |
+
msgid "Date"
|
40 |
+
msgstr "תאריך"
|
41 |
+
|
42 |
+
#: ../classes/class-aal-activity-log-list-table.php:95
|
43 |
+
#, php-format
|
44 |
+
msgid "%s ago"
|
45 |
+
msgstr "לפני %s"
|
46 |
+
|
47 |
+
#: ../classes/class-aal-activity-log-list-table.php:116
|
48 |
+
msgid "by "
|
49 |
+
msgstr "ע\"י"
|
50 |
+
|
51 |
+
#: ../classes/class-aal-activity-log-list-table.php:123
|
52 |
+
#: ../classes/class-aal-activity-log-list-table.php:168
|
53 |
+
msgid "Guest"
|
54 |
+
msgstr "אורח"
|
55 |
+
|
56 |
+
#: ../classes/class-aal-activity-log-list-table.php:179
|
57 |
+
msgid "All Users"
|
58 |
+
msgstr "כל המשתמשים"
|
59 |
+
|
60 |
+
#: ../classes/class-aal-activity-log-list-table.php:206
|
61 |
+
msgid "All Types"
|
62 |
+
msgstr "כל הסוגים"
|
63 |
+
|
64 |
+
#: ../classes/class-aal-activity-log-list-table.php:212
|
65 |
+
msgid "Filter"
|
66 |
+
msgstr "סינון"
|
67 |
+
|
68 |
+
#: ../classes/class-admin-ui.php:8 ../classes/class-admin-ui.php:18
|
69 |
+
#: ../classes/class-settings.php:23
|
70 |
+
msgid "Activity Log"
|
71 |
+
msgstr "יומן פעילות"
|
72 |
+
|
73 |
+
#: ../classes/class-settings.php:22
|
74 |
+
msgid "Activity Log Settings"
|
75 |
+
msgstr "הגדרות יומן פעילות"
|
76 |
+
|
77 |
+
#: ../classes/class-settings.php:44
|
78 |
+
msgid "Display Options"
|
79 |
+
msgstr "אפשרויות תצוגה"
|
80 |
+
|
81 |
+
#: ../classes/class-settings.php:51
|
82 |
+
msgid "Keep logs for"
|
83 |
+
msgstr "שמירת היסטוריית פעילות למשך"
|
84 |
+
|
85 |
+
#: ../classes/class-settings.php:59
|
86 |
+
msgid "Forever"
|
87 |
+
msgstr "לתמיד"
|
88 |
+
|
89 |
+
#: ../classes/class-settings.php:60
|
90 |
+
msgid "A year"
|
91 |
+
msgstr "שנה"
|
92 |
+
|
93 |
+
#: ../classes/class-settings.php:61
|
94 |
+
msgid "6 months"
|
95 |
+
msgstr "6 חודשים"
|
96 |
+
|
97 |
+
#: ../classes/class-settings.php:62
|
98 |
+
msgid "A month"
|
99 |
+
msgstr "חודש"
|
100 |
+
|
101 |
+
#: ../classes/class-settings.php:76
|
102 |
+
msgid "ARYO Activity Log Settings"
|
103 |
+
msgstr "הגדרות יומן פעילות"
|
104 |
+
|
105 |
+
#: ../classes/class-settings.php:102
|
106 |
+
msgid "These are some basic settings for Activity Log."
|
107 |
+
msgstr "אלו חלק מההגרות הבסיסיות של יומן הפעילות."
|
108 |
+
|
109 |
+
#: ../language/strings.php:4
|
110 |
+
msgid "Post"
|
111 |
+
msgstr "פוסט"
|
112 |
+
|
113 |
+
#: ../language/strings.php:5
|
114 |
+
msgid "created"
|
115 |
+
msgstr "נוצר"
|
116 |
+
|
117 |
+
#: ../language/strings.php:6
|
118 |
+
msgid "updated"
|
119 |
+
msgstr "עודכן"
|
120 |
+
|
121 |
+
#: ../language/strings.php:7
|
122 |
+
msgid "deleted"
|
123 |
+
msgstr "נמחק"
|
124 |
+
|
125 |
+
#: ../language/strings.php:10
|
126 |
+
msgid "Attachment"
|
127 |
+
msgstr "מדיה"
|
128 |
+
|
129 |
+
#: ../language/strings.php:11
|
130 |
+
msgid "added"
|
131 |
+
msgstr "נוסף"
|
132 |
+
|
133 |
+
#: ../language/strings.php:14
|
134 |
+
msgid "User"
|
135 |
+
msgstr "משתמש"
|
136 |
+
|
137 |
+
#: ../language/strings.php:15
|
138 |
+
msgid "logged_out"
|
139 |
+
msgstr "התנתק"
|
140 |
+
|
141 |
+
#: ../language/strings.php:16
|
142 |
+
msgid "logged_in"
|
143 |
+
msgstr "התחבר"
|
144 |
+
|
145 |
+
#: ../language/strings.php:17
|
146 |
+
msgid "wrong_password"
|
147 |
+
msgstr "סיסמה שגויה"
|
148 |
+
|
149 |
+
#: ../language/strings.php:20
|
150 |
+
msgid "Plugin"
|
151 |
+
msgstr "תוסף"
|
152 |
+
|
153 |
+
#: ../language/strings.php:21
|
154 |
+
msgid "activated"
|
155 |
+
msgstr "מופעל"
|
156 |
+
|
157 |
+
#: ../language/strings.php:22
|
158 |
+
msgid "deactivated"
|
159 |
+
msgstr "מכובה"
|
160 |
+
|
161 |
+
#: ../language/strings.php:25
|
162 |
+
msgid "Widget"
|
163 |
+
msgstr "וידג'טים"
|
164 |
+
|
165 |
+
#: ../language/strings.php:28
|
166 |
+
msgid "Options"
|
167 |
+
msgstr "הגדרות"
|
language/aryo-aal.pot
ADDED
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2013
|
2 |
+
# This file is distributed under the same license as the package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: ARYO Activity Log\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/activity-log\n"
|
7 |
+
"POT-Creation-Date: 2013-05-27 22:28+0200\n"
|
8 |
+
"PO-Revision-Date: 2013-05-27 22:28+0200\n"
|
9 |
+
"Last-Translator: Yakir Sitbon <kingyes1@gmail.com>\n"
|
10 |
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 1.5.5\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;_x;_n:1,2;_c,_nc:4c,1,2\n"
|
18 |
+
"X-Poedit-Basepath: .\n"
|
19 |
+
"X-Poedit-SearchPath-0: ..\n"
|
20 |
+
|
21 |
+
#: ../classes/class-aal-activity-log-list-table.php:78
|
22 |
+
msgid "Type"
|
23 |
+
msgstr ""
|
24 |
+
|
25 |
+
#: ../classes/class-aal-activity-log-list-table.php:79
|
26 |
+
msgid "Name"
|
27 |
+
msgstr ""
|
28 |
+
|
29 |
+
#: ../classes/class-aal-activity-log-list-table.php:80
|
30 |
+
msgid "Action"
|
31 |
+
msgstr ""
|
32 |
+
|
33 |
+
#: ../classes/class-aal-activity-log-list-table.php:81
|
34 |
+
msgid "Date"
|
35 |
+
msgstr ""
|
36 |
+
|
37 |
+
#: ../classes/class-aal-activity-log-list-table.php:95
|
38 |
+
#, php-format
|
39 |
+
msgid "%s ago"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: ../classes/class-aal-activity-log-list-table.php:116
|
43 |
+
msgid "by "
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: ../classes/class-aal-activity-log-list-table.php:123
|
47 |
+
#: ../classes/class-aal-activity-log-list-table.php:168
|
48 |
+
msgid "Guest"
|
49 |
+
msgstr ""
|
50 |
+
|
51 |
+
#: ../classes/class-aal-activity-log-list-table.php:179
|
52 |
+
msgid "All Users"
|
53 |
+
msgstr ""
|
54 |
+
|
55 |
+
#: ../classes/class-aal-activity-log-list-table.php:206
|
56 |
+
msgid "All Types"
|
57 |
+
msgstr ""
|
58 |
+
|
59 |
+
#: ../classes/class-aal-activity-log-list-table.php:212
|
60 |
+
msgid "Filter"
|
61 |
+
msgstr ""
|
62 |
+
|
63 |
+
#: ../classes/class-admin-ui.php:8 ../classes/class-admin-ui.php:18
|
64 |
+
#: ../classes/class-settings.php:23
|
65 |
+
msgid "Activity Log"
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: ../classes/class-settings.php:22
|
69 |
+
msgid "Activity Log Settings"
|
70 |
+
msgstr ""
|
71 |
+
|
72 |
+
#: ../classes/class-settings.php:44
|
73 |
+
msgid "Display Options"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: ../classes/class-settings.php:51
|
77 |
+
msgid "Keep logs for"
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: ../classes/class-settings.php:59
|
81 |
+
msgid "Forever"
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: ../classes/class-settings.php:60
|
85 |
+
msgid "A year"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: ../classes/class-settings.php:61
|
89 |
+
msgid "6 months"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: ../classes/class-settings.php:62
|
93 |
+
msgid "A month"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: ../classes/class-settings.php:76
|
97 |
+
msgid "ARYO Activity Log Settings"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: ../classes/class-settings.php:102
|
101 |
+
msgid "These are some basic settings for Activity Log."
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: ../language/strings.php:4
|
105 |
+
msgid "Post"
|
106 |
+
msgstr ""
|
107 |
+
|
108 |
+
#: ../language/strings.php:5
|
109 |
+
msgid "created"
|
110 |
+
msgstr ""
|
111 |
+
|
112 |
+
#: ../language/strings.php:6
|
113 |
+
msgid "updated"
|
114 |
+
msgstr ""
|
115 |
+
|
116 |
+
#: ../language/strings.php:7
|
117 |
+
msgid "deleted"
|
118 |
+
msgstr ""
|
119 |
+
|
120 |
+
#: ../language/strings.php:10
|
121 |
+
msgid "Attachment"
|
122 |
+
msgstr ""
|
123 |
+
|
124 |
+
#: ../language/strings.php:11
|
125 |
+
msgid "added"
|
126 |
+
msgstr ""
|
127 |
+
|
128 |
+
#: ../language/strings.php:14
|
129 |
+
msgid "User"
|
130 |
+
msgstr ""
|
131 |
+
|
132 |
+
#: ../language/strings.php:15
|
133 |
+
msgid "logged_out"
|
134 |
+
msgstr ""
|
135 |
+
|
136 |
+
#: ../language/strings.php:16
|
137 |
+
msgid "logged_in"
|
138 |
+
msgstr ""
|
139 |
+
|
140 |
+
#: ../language/strings.php:17
|
141 |
+
msgid "wrong_password"
|
142 |
+
msgstr ""
|
143 |
+
|
144 |
+
#: ../language/strings.php:20
|
145 |
+
msgid "Plugin"
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
+
#: ../language/strings.php:21
|
149 |
+
msgid "activated"
|
150 |
+
msgstr ""
|
151 |
+
|
152 |
+
#: ../language/strings.php:22
|
153 |
+
msgid "deactivated"
|
154 |
+
msgstr ""
|
155 |
+
|
156 |
+
#: ../language/strings.php:25
|
157 |
+
msgid "Widget"
|
158 |
+
msgstr ""
|
159 |
+
|
160 |
+
#: ../language/strings.php:28
|
161 |
+
msgid "Options"
|
162 |
+
msgstr ""
|
language/strings.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Post
|
4 |
+
__( 'Post', 'aryo-aal' );
|
5 |
+
__( 'created', 'aryo-aal' );
|
6 |
+
__( 'updated', 'aryo-aal' );
|
7 |
+
__( 'deleted', 'aryo-aal' );
|
8 |
+
|
9 |
+
// Attachment
|
10 |
+
__( 'Attachment', 'aryo-aal' );
|
11 |
+
__( 'added', 'aryo-aal' );
|
12 |
+
|
13 |
+
// User
|
14 |
+
__( 'User', 'aryo-aal' );
|
15 |
+
__( 'logged_out', 'aryo-aal' );
|
16 |
+
__( 'logged_in', 'aryo-aal' );
|
17 |
+
__( 'wrong_password', 'aryo-aal' );
|
18 |
+
|
19 |
+
// Plugin
|
20 |
+
__( 'Plugin', 'aryo-aal' );
|
21 |
+
__( 'activated', 'aryo-aal' );
|
22 |
+
__( 'deactivated', 'aryo-aal' );
|
23 |
+
|
24 |
+
// Widget
|
25 |
+
__( 'Widget', 'aryo-aal' );
|
26 |
+
|
27 |
+
// Options
|
28 |
+
__( 'Options', 'aryo-aal' );
|
readme.txt
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== ARYO Activity Log ===
|
2 |
+
Contributors: KingYes, Ariel.K, maor
|
3 |
+
Tags: admin, administration, activity, multisite, logging, logger, login, tracking, user, madeinisrael
|
4 |
+
Requires at least: 3.5
|
5 |
+
Tested up to: 3.5.1
|
6 |
+
Stable tag: 1.0.1
|
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.
|
10 |
+
|
11 |
+
== Description ==
|
12 |
+
|
13 |
+
<h3>Like being in control? Check this out.</h3>
|
14 |
+
|
15 |
+
We all know that it’s relatively easy to analyze what your visitors are looking for while browsing your site. But there is really no easy way to know what registered users (say, with an Administrator account or even Editors) are doing on the dashboard of your site. How can you know if a post was deleted? or if a plugin was activated/deactivated? or if the active theme was changed?
|
16 |
+
If you have tens of users or more, you really can’t know who did it. This plugin tries to solve this issue by tracking what users do on the dashboard of your WordPress site.
|
17 |
+
|
18 |
+
<strong>As of this moment, the plugin logs things when:</strong><br />
|
19 |
+
|
20 |
+
|
21 |
+
Users
|
22 |
+
|
23 |
+
* A user logs in
|
24 |
+
* A user logs out
|
25 |
+
* A login has failed due to incorrect credentials
|
26 |
+
* A user updates their profile
|
27 |
+
* A new user account is being registerd
|
28 |
+
* An existing user account is being deleted
|
29 |
+
|
30 |
+
Plugins
|
31 |
+
|
32 |
+
* A plugin is being activated
|
33 |
+
* A plugin is being deactivated
|
34 |
+
* A plugin is being changed
|
35 |
+
|
36 |
+
Themes
|
37 |
+
|
38 |
+
* A theme is being changed (Editor and Customizer)
|
39 |
+
|
40 |
+
Content
|
41 |
+
|
42 |
+
* A new post is being created
|
43 |
+
* A post is being updated
|
44 |
+
* A post changes status (draft, pending review, publish)
|
45 |
+
* A post is being deleted
|
46 |
+
|
47 |
+
Media
|
48 |
+
|
49 |
+
* An attachment is being uploaded
|
50 |
+
* An attachment is being edited
|
51 |
+
* An attachment is being deleted
|
52 |
+
|
53 |
+
Widgets
|
54 |
+
|
55 |
+
* A widget is being added to a sidebar
|
56 |
+
* A widget is being deleted from a sidebar
|
57 |
+
|
58 |
+
|
59 |
+
<strong>__Translators:</strong><br />
|
60 |
+
Hebrew (he_IL) - ARYO Digital
|
61 |
+
German (de_DE) - Robert Harm
|
62 |
+
|
63 |
+
The plugin does not require any kind of setup. It works out of the box (and that’s why we love it too).
|
64 |
+
|
65 |
+
We’re planning to add a lot more features in the upcoming releases. If you think we’re missing something big time, please post your suggestions in the plugin’s forum.
|
66 |
+
|
67 |
+
<strong>Contributions:</strong><br />
|
68 |
+
|
69 |
+
Would you like to like to cotribute to Activity Log? You are more than welcome to submit your pull requests on the [GitHub repo](https://github.com/KingYes/wordpress-aryo-activity-log). Also, if you have any notes about the code, please open a ticket on ths issue tracker.
|
70 |
+
|
71 |
+
|
72 |
+
== Installation ==
|
73 |
+
|
74 |
+
1. Upload plugin files to your plugins folder, or install using WordPress' built-in Add New Plugin installer
|
75 |
+
1. Activate the plugin
|
76 |
+
1. Go to the plugin settings page (under Settings > Activity Log)
|
77 |
+
1. Go to the log viewer page (under Dashboard > Activity Log)
|
78 |
+
|
79 |
+
== Screenshots ==
|
80 |
+
|
81 |
+
1. The log viewer page
|
82 |
+
2. The settings page
|
83 |
+
2. Looks as nicely in MP6
|
84 |
+
|
85 |
+
== Frequently Asked Questions ==
|
86 |
+
|
87 |
+
= Requirements =
|
88 |
+
* __Requires PHP5__ for list management functionality.
|
89 |
+
|
90 |
+
= What is the plugin license? =
|
91 |
+
|
92 |
+
* This plugin is released under a GPL license.
|
93 |
+
|
94 |
+
|
95 |
+
== Changelog ==
|
96 |
+
|
97 |
+
= 1.0.1 =
|
98 |
+
* Added translate: German (de_DE) - Thanks to [Robert Harm](http://www.mapsmarker.com/)
|
99 |
+
* Added translate: Hebrew (he_IL)
|
100 |
+
* Plugin name instead of file name on activation/deactivation
|
101 |
+
* <strong>New Hooks:</strong>
|
102 |
+
* A widget is being deleted from a sidebar
|
103 |
+
* A plugin is being changed
|
104 |
+
* Theme Customizer (Thanks to Ohad Raz)
|
105 |
+
|
106 |
+
= 1.0 =
|
107 |
+
* Blastoff!
|
screenshot-1.jpg
ADDED
Binary file
|
screenshot-2.jpg
ADDED
Binary file
|
screenshot-3.jpg
ADDED
Binary file
|